Java Applet API долгие годы служил способом встраивания интерактивных Java-приложений в веб-браузеры. Однако с развитием интернета и изменением поддержки браузерами технологии Java-апплетов, необходимость в данном API значительно снизилась. В рамках JEP 504 было принято решение полностью удалить Applet API из стандарта Java начиная с релиза JDK 26. Этот шаг стал логичным этапом эволюции платформы и отражается на современном состоянии разработок на Java. История появления и развития Applet API берет начало с того времени, когда веб-браузеры активно поддерживали запуск Java-апплетов, предоставляя богатый функционал и интерактивность.
Однако вскоре браузеры начали отказываться от поддержки подобных технологий ввиду многочисленных проблем с безопасностью, производительностью и ограниченной масштабируемостью. Уже с JDK 9 началась постепенная депрецированная судьба Applet API, закрепленная в JEP 289. Этот процесс продолжился с JDK 17, когда API был декларирован устаревшим и нацеленным к удалению, о чем говорилось в JEP 398. Основной мотивацией полного удаления Applet API стала необратимая тенденция отказа от поддержки в браузерах, что делает технологию фактически недоступной и невостребованной. Апплеты перестали запускаться в популярных браузерах, а специальные инструменты вроде appletviewer, позволяющие запускать апплеты вне браузера, были удалены еще в JDK 11.
Также значительным фактором стал отказ от Security Manager в JDK 24, который ранее обеспечивал изоляцию и защиту запускаемых апплетов, что делало возможным безопасное исполнение непроверенного кода. Удаление Applet API предполагает исключение всего пакета java.applet, включающего основные классы такие как Applet, AppletContext, AppletStub и AudioClip. Помимо этого, под обновления подпадают java.beans.
AppletInitializer и javax.swing.JApplet, а также любые части API, связанные с этими классами, включая методы и поля в java.beans.Beans и javax.
swing.RepaintManager. Это означает, что весь функционал, связанный с поддержкой апплетов, будет полностью убран из JDK 26. Для разработчиков это означает необходимость пересмотра и обновления существующих приложений, которые ещё используют технологии апплетов. Все тесты, базирующиеся на Applet API, должны быть соответствующим образом изменены, отключены или удалены, и к настоящему времени большая часть этой работы уже проведена.
При этом приложения, продолжающие использовать устаревший API, скорее всего будут вынуждены оставаться на старых версиях JDK или переходить на более современные технологии. Важно отметить, что удаление Applet API не должно вызвать серьезных рисков для большинства пользователей и приложений, поскольку апплеты давно перестали быть жизнеспособным способом реализации интерактивности в вебе. Вместо этого, разработчики могут и должны использовать альтернативные решения в экосистеме Java. Для интерфейсных задач доступны различные компоненты и библиотеки, включая расширения AWT и Swing без использования JApplet. Кроме того, современный веб-разработчик может обратить внимание на технологии вроде Java Web Start (хотя и устаревшую), а также более современные фреймворки, использующие JavaScript, WebAssembly и REST API для взаимодействия с серверной частью на Java.
Также стоит обратить внимание на изменения, связанные с классом java.applet.AudioClip. Ранее методы getContent() в java.net.
URL и java.net.URLConnection могли возвращать объекты класса AudioClip при работе с аудиоконтентом. После удаления Applet API подобные сценарии перестанут работать, а разработчикам придется модернизировать код, чтобы не делать привязку к AudioClip, выбирая альтернативные стандарты для воспроизведения аудио. В целом, удаление Applet API из JDK 26 является важной вехой в развитии Java как современной платформы.
Это отражает стремление команды OpenJDK поддерживать удобный, безопасный и соответствующий текущим реалиям стек технологий, избавляясь от устаревших и невостребованных компонентов. Такой подход позволяет сосредоточиться на инновациях и улучшении производительности, а также безопасности и управляемости приложений. Для разработчиков, занимающихся поддержкой или миграцией старых проектов, важно понимать, что Applet API уже не является частью будущих релизов Java. Планируя обновления или разработку новых приложений, стоит придерживаться современных API и стандартов, а устаревшие технологии лучше заменить на более актуальные. Это позволит сохранить совместимость и использовать возможности новых версий платформы, а также повысить качество и безопасность программных продуктов.
Поскольку процесс удаления Applet API был тщательно проанализирован и поддержан сообществом совершенных экспертов, таких как Кевин Рашфорт и Виктор Дияков, разработчики могут быть уверены в отсутствии серьезных негативных последствий для большинства текущих сценариев применения Java. Удаление обеспечивает упрощение и оптимизацию платформы, освобождая ресурсы для внедрения новых функций и улучшения качества платформы. Разработка Java подчеркивает важность адаптации к меняющимся технологическим ландшафтам. История Applet API - пример устаревшей технологии, которая была релевантна в прошлом, но со временем утратила значимость в связи с изменением парадигм и предпочтений пользователей. Удаление устаревших компонентов - естественный и необходимый процесс, позволяющий не только освободить пространство в экосистеме, но и минимизировать потенциальные проблемы безопасности, которые тесно связаны с поддержкой унаследованного кода.
В качестве заключения следует подчеркнуть, что JEP 504 - это важный шаг развития Java, призванный обеспечить поддержку актуальной и безопасной среды для разработчиков и пользователей по всему миру. Владельцы приложений, использующих Applet API, должны заранее планировать стратегию миграции, ознакомившись с советами по альтернативам и актуальным инструментам. В конечном итоге, удаление Applet API поможет сделать экосистему Java более современной, эффективной и соответствующей требованиям сегодняшнего времени. .