Apple отказывается от Java в пользу языка программирования собственной разработки
Apple постепенно отказывается от Java, Проект системы мониторинга пользовательских паролей переписан на Swift, поскольку Java больше не удовлетворяет его производительность при решении ресурсоемких задач, особенно в части сборки мусора. Переход на Swift, который развивает сама Apple, позволил радикальным образом умерить «апетит» сервиса к памяти и другим ресурсам.С Java на Swift
Команда разработчиков из Apple переписала с нуля систему мониторинга паролей пользователей, использующую технологии Java, на языке программирования Swift, пишет DevClass.
Система мониторинга паролей Apple отвечает за работу одноименной функции приложения – менеджера паролей «Пароли» (Passwords), доступного пользователям устройств компании, работающих под управлением iOS 18. Она применяется для сопоставления паролей, сохраненных пользователем в приложении, со списком найденных кодовых фраз, которые тем или иным образом утекли в Сеть.
Серверная часть приложения получает «миллиарды запросов в день от устройств по всему миру», отмечают разработчики. Сервис работает под управлением Linux и постоянно выполняет множество ресурсоемких операций, таких как шифрование.
Разработчики считают, что подход к управлению памятью, реализованный в Java, более не соответствует «растущим требованиям» и «целевым показателям эффективности», предъявляемым к разрабатываемому ими ПО. Перевод данного конкретной системы на Swift, по оценке разработчиков, позволил добиться 50-процентной экономии вычислительных ресурсов, снижения потребления памяти на 90% и 40-процентного повышения пропускной способности.
Основные проблемы
Основные претензии разработчиков Apple адресованы сборщику мусора Java. Сборщик мусора – часть системы управления памятью, которая автоматически освобождает участки памяти от более ненужной информации. Несмотря на все улучшения, которые были привнесены в сборщик, его производительность, по мнению инженеров Apple, все еще страдает от некоторых изъянов. В частности, он приостанавливает свою работу под большой нагрузкой и потребляет «лишние» ресурсы.
Другой проблема была связана с масштабированием инфраструктуры. Нагрузка на сервис Apple существенно меняется в течение дня, и компания вынуждена постоянно масштабировать вычислительные ресурсы, используемые бэкендом для обработки запросов. При развертывании дополнительной инфраструктуры больше значение имеет скорость инициализации новой среды. В этом плане языки вроде Java могут проявлять себя не лучшим образом, и для решения проблемы задержек разрабатываются дополнительные инструменты, такие как SnapStart от AWS.
Выбор пал на Swift
Рассмотрев различные альтернативы, команда разработчиков Apple приняла решение переписать сервис на языке программирования Swift, который в компании считают более современной альтернативой Objective-C. Кроме того, для упрощения разработки использовался фреймворк с открытым исходным кодом Vapor, также написанный на Swift.
Как и Java, Swift предлагает автоматическое управление памятью, однако в отличие от детища Sun Microsystems, в нем данный механизм реализован с использованием алгоритма автоматического подсчета ссылок (Automatic Reference Count; ARC), отмечает DevClass. Оба метода имеют свои преимущества и недостатки, в конкретном случае с сервисом Apple переход на последний принес ощутимый выигрыш. Разработчики отмечают снижения объема потребляемой памяти на 90%, а также двукратное сокращение количества потребляемых аппаратных ресурсов сервисом, использующим Kubernetes, системы управления кластером контейнеров.
Переписанное веб-приложение получилось гораздо более компактным и с точки зрения объема программного кода. Разработчики утверждают, что новый порт содержит на 85% меньше строк кода по сравнению с реализацией на Java. Как отмечает DevClass, возможно, именно этот фактор в более значительной степени повлиял на конечный результат.
Команда разработчиков определила аспекты Swift, которые привели к получению более чистого и лаконичного кода, включая использование протоколов (интерфейсов) вместо механизма наследования классов; конструкций async/await, обеспечивающих структурированный параллелизм.
Переход на Swift или более качественный код?
Как отмечает DevClass, вероятно, добиться оптимизации сервиса разработчикам Apple удалось не только за счет переноса составляющего его кода на Swift, но и благодаря более высокому качеству нового кода в сравнении со старым.
Программа на Swift компилируется в нативный код – набор машинных инструкций, которые выполняются непосредственно процессором устройства.

В свою очередь среда выполнения Java (JRE) располагает виртуальной машиной Java (JVM), которая «на лету» преобразует байт-код (промежуточное – между исходным и машинным кодом – представление программы). Байт-код получают при помощи компилятора Javac.
При использовании такого механизма неизбежно возникают накладные расходы ресурсов, негативно сказывающиеся на производительности итогового приложения. Другими словами, во многих случаях производительность нативного кода, вероятно, будет более высокой по сравнению с таковой байт-кода. Однако Java обеспечивает лучшую переносимость – написанное на этом языке программирования приложение в общем случае быстрее и проще портировать на множество различных программно-аппаратных платформ.
Все еще не слишком популярный язык
В Apple намекают, что к Swift команда разработчиков пришла не сразу и рассматривала альтернативы, но в конце концов все же решила остановиться именно на нем. Приниматься во внимание при этом могли не только объективные преимущества языка, но и другие факторы. Swift – собственная разработка Apple, которую компания активно продвигает, поэтому нельзя исключать, что на решение команды в какой-то мере повлияло и это обстоятельство. Как отмечает DevClass, добиться сравнимого уровня оптимизации, скорее всего, удалось бы и с помощью языков программирования Go или Kotlin.
Согласно результатам опроса, проведенного компанией JetBrains в рамках подготовки отчета State of Developer Ecosystem 2023, популярность языка программирования Objective-C, который используется для создания программ под операционные системы Apple iOS и macOS, достигла рекордно низкого уровня. В то же время был зафиксирован рост интереса к Swift.
По данным рейтинга TIOBE, в мае 2025 г. Swift занимал 23 место среди всех языков программирования по уровню популярности с рейтингом 0,77%. Аналогичный рейтинг, к примеру, имели Ruby, Prolog и Lisp. Вышеупомянутый Kotlin оказался на 25 позиции. Java по-прежнему остается из самых востребованных языков и надежно закрепилась на четвертом месте рейтинга TIOBE, опередив C#, JavaScript и Go. Выше Java расположились C, C++ и Python.