Языка Java претерпел несколько изменений с JDK 1.0, а также многочисленных добавлений классов и пакетов в стандартной библиотеке . Начиная с J2SE 1.4, развитие языка Java регулируется процессом сообщества Java (JCP), который использует запросы спецификации Java (JSR) для предложения и определения дополнений и изменений в платформе Java . Язык указан в спецификации языка Java (JLS); изменения в JLS управляются в соответствии с JSR 901 .
Помимо языковых изменений, за прошедшие годы в библиотеку классов Java были внесены и другие изменения , которые выросли с нескольких сотен классов в JDK 1.0 до более трех тысяч в J2SE 5. Полностью новые API , такие как Swing и Java2D , были введены, и многие из исходных классов и методов JDK 1.0 устарели . Некоторые программы позволяют преобразовывать программы Java из одной версии платформы Java в более старую (например, Java 5.0, перенесенная на 1.4) (см. Инструменты резервного копирования Java ).
Что касается плана поддержки Oracle Java SE, [1] версия 11 является поддерживаемой в настоящее время версией долгосрочной поддержки (LTS) вместе с Java 8 LTS, в которой клиенты Oracle получат поддержку Oracle Premier. Последнее бесплатное общедоступное обновление программного обеспечения Java 8 LTS для коммерческого использования было выпущено Oracle в январе 2019 года, в то время как Oracle продолжает выпускать бесплатные общедоступные обновления Java 8 для разработки [1] и личного использования на неопределенный срок. [2] Поддержка Java 10, ранее поддерживавшейся версии быстрого выпуска, закончилась в сентябре 2018 г., в тот же день, когда началась поддержка Java 11. Java 7 больше не поддерживается публично. Для Java 11 долгосрочная поддержка Oracle не будет предоставляться общественности; вместо этого ожидается , что более широкое сообщество OpenJDK , такое как AdoptOpenJDK или другие, выполнит эту работу. [3]
Общая доступность Java 16 состоялась 16 марта 2021 г., и Java 17 сейчас также находится в разработке. [4]
Версия | Дата выпуска | Конец бесплатных общедоступных обновлений [1] [5] [6] [7] | Расширенная поддержка до |
---|---|---|---|
JDK Beta | 1995 г. | ? | ? |
JDK 1.0 | Январь 1996 г. | ? | ? |
JDK 1.1 | Февраль 1997 г. | ? | ? |
J2SE 1.2 | Декабрь 1998 г. | ? | ? |
J2SE 1.3 | Май 2000 г. | ? | ? |
J2SE 1.4 | Февраль 2002 г. | Октябрь 2008 г. | Февраль 2013 |
J2SE 5.0 | Сентябрь 2004 г. | Ноябрь 2009 г. | Апрель 2015 г. |
Java SE 6 | Декабрь 2006 г. | апрель 2013 | Декабрь 2018 г. Декабрь 2023 г., платная поддержка Zulu [8] |
Java SE 7 | Июль 2011 г. | Апрель 2015 г. | Июль 2022 г. |
Java SE 8 (LTS) | Март 2014 г. | Январь 2019 г. для Oracle (коммерческая) Декабрь 2030 г. для Oracle (некоммерческая) Декабрь 2030 г. для Zulu Не менее мая 2026 г. для AdoptOpenJDK Не менее мая 2026 г. для Amazon Corretto | Декабрь 2030 г. |
Java SE 9 | Сентябрь 2017 г. | Март 2018 для OpenJDK | N / A |
Java SE 10 | Март 2018 г. | Сентябрь 2018 для OpenJDK | N / A |
Java SE 11 (LTS) | Сентябрь 2018 г. | Сентябрь 2027 г. для Zulu Не менее октября 2024 г. для AdoptOpenJDK Не менее сентября 2027 г. для Amazon Corretto | Сентябрь 2026 г. или сентябрь 2027 г., например, Zulu [8]. |
Java SE 12 | Март 2019 г. | Сентябрь 2019 для OpenJDK | N / A |
Java SE 13 | Сентябрь 2019 | Март 2020 для OpenJDK | N / A |
Java SE 14 | Март 2020 г. | Сентябрь 2020 для OpenJDK | N / A |
Java SE 15 | Сентябрь 2020 г. | Март 2021 г. для OpenJDK, март 2023 г. для Zulu [8] | N / A |
Java SE 16 | Март 2021 г. | Сентябрь 2021 г. для OpenJDK | N / A |
Java SE 17 (LTS) | Сентябрь 2021 г. | Сентябрь 2030 года для зулусов | TBA |
Легенда: Старая версия Старая версия, все еще поддерживается Последняя версия Будущий выпуск |
История
В сентябре 2017 года Марк Рейнхольд, главный архитектор платформы Java, предложил изменить последовательность выпусков на «один выпуск функции каждые шесть месяцев» вместо текущего двухлетнего графика [9] [10], и позже предложение вступило в силу. .
JDK 1.0
Первая версия была выпущена 23 января 1996 года. [11] [12] Первая стабильная версия, JDK 1.0.2, называется Java 1. [12]
JDK 1.1
Основные дополнения к выпуску от 19 февраля 1997 г. включали: [13]
- обширное переоснащение модели событий AWT
- внутренние классы добавлены в язык
- JavaBeans
- JDBC
- RMI
- отражение, которое поддерживало только интроспекцию, никакие изменения во время выполнения были невозможны. (Возможность отражающего изменения объектов была добавлена в J2SE 1.2 путем введения класса AccessibleObject и его подклассов, таких как класс Field .)
- Компилятор JIT (Just In Time) на платформах Microsoft Windows, разработанный для JavaSoft компанией Symantec
- Интернационализация и поддержка Unicode от Taligent [14]
J2SE 1.2
Codename Playground
Выпуск от 8 декабря 1998 г. и последующие выпуски через J2SE 5.0 были ретроспективно переименованы в Java 2, а название версии «J2SE» ( Java 2 Platform, Standard Edition ) заменило JDK, чтобы отличить базовую платформу от J2EE ( Java 2 Platform, Enterprise Edition ) и J2ME ( платформа Java 2, Micro Edition ). Это был очень важный выпуск Java, поскольку он утроил размер платформы Java до 1520 классов в 59 пакетах. Основные дополнения: [15]
strictfp
ключевое слово- Качели графический API был интегрирован в основные классы
- JVM Sun был оснащен JIT компилятором в первый раз
- Плагин Java
- Java IDL , реализация IDL для взаимодействия с CORBA
- Рамки коллекций
J2SE 1.3
Кодовое имя пустельга
Наиболее заметными изменениями в версии от 8 мая 2000 г. были: [16] [17]
- Включена JVM HotSpot (JVM HotSpot была впервые выпущена в апреле 1999 г. для J2SE 1.2 JVM)
- RMI был изменен для поддержки дополнительной совместимости с CORBA.
- Интерфейс именования и каталогов Java (JNDI) включен в основные библиотеки (ранее был доступен как расширение)
- Архитектура отладчика платформы Java (JPDA)
- JavaSound
- Синтетические прокси-классы
J2SE 1.4
Кодовое имя Мерлин
Выпуск от 6 февраля 2002 г. был первым выпуском платформы Java, разработанной в рамках процесса сообщества Java как JSR 59 . Основные изменения включали: [18] [19]
- Изменения языка
assert
ключевое слово (указано в JSR 41 )
- Улучшения библиотеки
- Регулярные выражения смоделированных после Perl регулярных выражений
- Цепочка исключений позволяет исключению инкапсулировать исходное исключение нижнего уровня
- Поддержка интернет-протокола версии 6 ( IPv6 )
- Неблокирующий ввод-вывод (Java) (с именем NIO) (указан в JSR 51 )
- Logging API (указано в JSR 47 )
- API ввода-вывода изображений для чтения и записи изображений в таких форматах, как JPEG и PNG.
- Интегрированный синтаксический анализатор XML и процессор XSLT ( JAXP ) (указанный в JSR 5 и JSR 63 )
- Встроенные расширения безопасности и криптографии ( JCE , JSSE , JAAS )
- Включена Java Web Start (Java Web Start впервые была выпущена в марте 2001 года для J2SE 1.3) (указана в JSR 56 )
- API настроек (
java.util.prefs
)
Публичная поддержка и обновления безопасности для Java 1.4 закончились в октябре 2008 года. Платные обновления безопасности для клиентов Oracle закончились в феврале 2013 года. [20]
J2SE 5.0
Кодовое имя Тигр
Релиз от 30 сентября 2004 г. изначально имел номер 1.5, который до сих пор используется в качестве внутреннего номера версии. Номер был изменен на «лучше отражает уровень зрелости, стабильности, масштабируемости и безопасности J2SE». [21] Эта версия была разработана под JSR 176 .
J2SE 5.0 вступил в период окончания периода публичных обновлений 8 апреля 2008 г .; с 3 ноября 2009 г. обновления больше не доступны для широкой публики. Обновления были доступны для платных клиентов Oracle до мая 2015 г. [1]
Tiger добавил ряд важных новых языковых функций: [22] [23]
- Generics : обеспечивает безопасность типов во время компиляции (статическую) для коллекций и устраняет необходимость в большинстве типов (преобразование типов) (определяется JSR 14 )
- Метаданные : также называемые аннотациями ; позволяет помечать языковые конструкции, такие как классы и методы, с дополнительными данными, которые затем могут обрабатываться утилитами, поддерживающими метаданные (указанными в JSR 175 )
- Autoboxing / unboxing: автоматические преобразования между примитивными типами (такими как
int
) и примитивными классами-оболочками (такими какInteger
) (заданными JSR 201 ) - Перечисления :
enum
ключевое слово создает типизированный , упорядоченный список значений (напримерDay.MONDAY
,Day.TUESDAY
и т.д.); ранее это могло быть достигнуто только с помощью нетипизированных постоянных целых чисел или вручную созданных классов (шаблон типизированного перечисления) (указанный в JSR 201 ) - Varargs : последний параметр метода теперь может быть объявлен с использованием имени типа, за которым следует три точки (например
void drawtext(String... lines)
); в вызывающем коде может использоваться любое количество параметров этого типа, и затем они помещаются в массив для передачи методу, или, альтернативно, вызывающий код может передать массив этого типа. - Расширенный
for each
цикл:for
синтаксис цикла расширен специальным синтаксисом для перебора каждого члена массива или любогоIterable
, например стандартныхCollection
классов (указанных в JSR 201 ) - Улучшена семантика выполнения многопоточных программ Java; новая модель памяти Java решает проблемы сложности, эффективности и производительности предыдущих спецификаций [24]
- Статический импорт
Также были внесены следующие улучшения в стандартные библиотеки:
- Автоматическая генерация заглушки для объектов RMI
- Swing : новый внешний вид с возможностью смены скинов , называемый синтезатором.
- В параллельности утилиты в пакете [25]java.util.concurrent
- Класс сканера для анализа данных из различных входных потоков и буферов
Java 5 - это последний выпуск Java, официально поддерживающий Microsoft Windows 98 и Windows ME , [26] в то время как Windows Vista была новейшей версией Windows, на которой J2SE 5 поддерживалась до того, как Java 5 закончился в октябре 2009 года. . [20]
Java 5 Update 5 (1.5.0_05) - это последний выпуск Java, работающий в Windows 95 (с установленным Internet Explorer 5.5 ) и Windows NT 4.0 . [27]
Java 5 была впервые доступна в Apple Mac OS X 10.4 (Tiger) [28] и была версией Java по умолчанию, установленной в Apple Mac OS X 10.5 (Leopard).
Публичная поддержка и обновления безопасности для Java 1.5 закончились в ноябре 2009 года. Платные обновления безопасности для клиентов Oracle закончились в апреле 2015 года.
Изменение версий
Эта версия представила новую систему управления версиями для языка Java, хотя старая система управления версиями продолжала использоваться для библиотек разработчиков:
Оба номера версии «1.5.0» и «5.0» используются для обозначения этого выпуска Java 2 Platform Standard Edition. Версия «5.0» - это версия продукта, а «1.5.0» - версия для разработчика. Число «5.0» используется для лучшего отражения уровня зрелости, стабильности, масштабируемости и безопасности J2SE.
- Версия 1.5.0 или 5.0?[29]
Это соответствие продолжалось и в более поздних выпусках (Java 6 = JDK 1.6, Java 7 = JDK 1.7 и т. Д.).
Обновления Java 5
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 5 | 2004-10-04 | Метаданные, общие типы, автоматическая упаковка и автоматическая распаковка примитивных типов, расширенный for цикл, нумерованные типы, статический импорт, форматированный ввод-вывод, varargs и утилиты параллелизма. Уменьшено время запуска и объем памяти. Совместное использование данных только для чтения между несколькими запущенными JVM. Удаленный мониторинг и управление. Новый API профилирования JVM. Программная генерация трассировки стека. Поддержка XML 1.1 с пространствами имен, XML-схемой, SAX 2.0.2, DOM Level 3 и XSLT с помощью быстрого компилятора XSLTC. Поддержка Unicode 4.0. |
Java SE 5 (обновление 1) | 2004-12-25 | Исправлено 50 ошибок. |
Java SE 5 (обновление 2) | 2005-03-16 | Исправлено несколько сбоев. Программа теперь скомпилирована с лучшей оптимизацией. Исправлены ошибки календаря и другие исправления. |
Java SE 5 (обновление 3) | 2005-05-03 | В этом выпуске исправлено несколько ошибок, включая сбои плагина Linux Mozilla. |
Java SE 5 (обновление 4) | 2005-07-04 | С выпуском поддержка J2SE для 64-разрядной версии Windows перешла от версии-кандидата к окончательной версии. Эта версия работает на компьютерах с 64-разрядным режимом AMD64 / EM64T с Windows Server 2003 x64 Editions. |
Java SE 5 (обновление 5) | 2005-09-18 | Исправлено несколько ошибок и улучшена производительность. Последний выпуск для Windows 95 и Windows NT 4.0. |
Java SE 5 (обновление 6) | 2005-12-07 | До этого обновления апплет или приложение могло указывать версию JRE, на которой оно будет работать. Это изменилось. Все апплеты выполняются с последней версией JRE. |
Java SE 5 (обновление 7) | 2006-05-29 | Исправлено несколько ошибок и улучшена производительность. |
Java SE 5 (обновление 8) | 2006-08-13 | Исправлено несколько ошибок и улучшена производительность. |
Java SE 5 (обновление 9) | 2006-11-12 | В этом выпуске исправлено несколько незначительных ошибок. |
Java SE 5 (обновление 10) | 2006-12-22 | Была добавлена реализация средства уведомления о событиях ввода-вывода epoll, поддерживаемая Linux 2.6. Исправлено множество ошибок. |
Java SE 5 (обновление 11) | 2007-03-08 | Исправлено несколько ошибок и улучшена производительность. |
Java SE 5 (обновление 12) | 2007-06-11 | |
Java SE 5 (обновление 13) | 2007-10-05 | Исправлены множественные уязвимости безопасности в Java Web Start, связанные с доступом к локальным файлам. Исправлена уязвимость безопасности в JRE, позволяющая обойти ограничения доступа к сети. Исправлено несколько других проблем с безопасностью и мелких ошибок. |
Java SE 5 (обновление 14) | ||
Java SE 5 (обновление 15) | 2008-03-06 | Было исправлено несколько сбоев из-за выхода за пределы буфера кучи, а также несколько других ошибок. Теперь включены новые корневые сертификаты от AOL, DigiCert и TrustCenter. |
Java SE 5 (обновление 16) | 2008-07-23 | В этом выпуске исправлены несколько недостатков безопасности, таких как уязвимости DoS, переполнение буфера и другие ошибки, которые могли привести к сбоям или давали апплетам доступ к определенным системным ресурсам. Эти уязвимости были обнаружены в Java Web Start, в агенте управления Java Management Extensions (JMX) и в функциях обработки XML-данных. |
Java SE 5 (обновление 17) | 2008-12-03 | Реализация кодировки UTF-8 была обновлена для обработки не самой короткой формы байтовых последовательностей UTF-8, что привело к несовместимости с предыдущими выпусками. Добавлены новые корневые сертификаты. Исправлено множество ошибок. |
Java SE 5 (обновление 18) | 2009-03-25 | Решено несколько проблем с безопасностью. Поведение функции JNDI для хранения и извлечения объектов Java в каталоге LDAP было немного изменено. Добавлено пять новых корневых сертификатов. Исправлено множество ошибок. |
Java SE 5 (обновление 19) | 2009-05-29 | Добавлена поддержка нескольких конфигураций системы. Добавлена поддержка сервисных тегов. Исправлено множество ошибок, в том числе несколько сбоев и утечек памяти. |
Java SE 5 (обновление 20) | 2009-08-06 | Было устранено несколько уязвимостей безопасности, таких как потенциальный доступ к системе со стороны ненадежных апплетов и целочисленные переполнения при обработке изображений и в Unpack200. Добавлено несколько новых корневых сертификатов. Исправлено множество других мелких ошибок. |
Java SE 5 (обновление 21) | 2009-09-09 | Исправлено множество мелких ошибок. |
Java SE 5 (обновление 22) | 2009-11-04 | Этот выпуск знаменует окончание срока службы (EOSL) для Java 5 и является его последней общедоступной версией. Было исправлено несколько уязвимостей системы безопасности, о которых сообщалось как Sun Alerts 269868, 270474, 270475 и 270476. Исправлено несколько других ошибок. Кроме того, были добавлены два новых корневых сертификата. |
Java SE 5 (обновление 23) | 2010-01-13 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 32 исправления безопасности. |
Java SE 5 (обновление 24) | 2010-04-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 2 исправления безопасности. |
Java SE 5 (обновление 25) | 2010-07-07 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 26 исправлений безопасности. |
Java SE 5 (обновление 26) | 2010-10-12 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 2 исправления безопасности. |
Java SE 5 (обновление 27) | 2010-12-08 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 22 исправления безопасности. |
Java SE 5 (обновление 28) | 2011-02-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 22 исправления безопасности [30] |
Java SE 5 (обновление 29) | 2011-03-21 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 21 исправление безопасности. |
Java SE 5 (обновление 30) | 2011-06-07 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 1 исправление безопасности. |
Java SE 5 (обновление 31) | 2011-08-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 10 исправлений безопасности. |
Java SE 5 (обновление 32) | 2011-10-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 20 исправлений безопасности [31] |
Java SE 5 (обновление 33) | 2011-12-12 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 21 исправление безопасности. |
Java SE 5 (обновление 34) | 2012-02-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 14 исправлений безопасности [32] |
Java SE 5 (обновление 35) | 2012-04-26 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 5 исправлений безопасности. |
Java SE 5 (обновление 36) | 2012-06-12 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 14 исправлений безопасности [33] |
Java SE 5 (обновление 38) | 2012-08-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 30 исправлений безопасности [34] |
Java SE 5 (обновление 39) | 2013-02-19 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 50 исправлений безопасности [35] |
Java SE 5 (обновление 40) | 2013-02-19 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 5 исправлений безопасности [36] |
Java SE 5 (обновление 41) | 2013-03-04 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 2 исправления безопасности [37] |
Java SE 5 (обновление 45) | 2013-04-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 42 исправления безопасности [38] |
Java SE 5 (обновление 51) | 2013-06-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 40 исправлений безопасности [39] |
Java SE 5 (обновление 55) | 2013-10-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 51 исправление безопасности [40] |
Java SE 5 (обновление 61) | 2014-01-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 36 исправлений безопасности [41] |
Java SE 5 (обновление 65) | 2014-04-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 37 исправлений безопасности [42] |
Java SE 5 (обновление 71) | 2014-07-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 20 исправлений безопасности [43] |
Java SE 5 (обновление 75) | 2014-10-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 25 исправлений безопасности [44] |
Java SE 5 (обновление 81) | 2015-01-21 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 19 исправлений безопасности [45] |
Java SE 5 (обновление 85) | 2015-04-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 14 исправлений безопасности [46] |
Java SE 6
Кодовое имя Мустанг
В версии, выпущенной 11 декабря 2006 года, Sun заменила имя «J2SE» на Java SE и удалила «.0» из номера версии. [47] Внутренняя нумерация для разработчиков остается 1.6.0. [48]
Эта версия была разработана под JSR 270 .
На этапе разработки новые сборки, включая улучшения и исправления ошибок, выпускались примерно еженедельно. Бета-версии были выпущены в феврале и июне 2006 г., а окончательный выпуск состоялся 11 декабря 2006 г.
Основные изменения, внесенные в эту версию: [49] [50]
- Прекращена поддержка старых версий Win9x; неофициально Java 6 Update 7 была последней версией Java, работающей с этими версиями Windows. [ необходима цитата ] Это считается [ кем? ] в связи с крупными изменениями в обновлении 10.
- Поддержка языка сценариев ( JSR 223 ): общий API для тесной интеграции с языками сценариев и встроенная интеграция Mozilla JavaScript Rhino .
- Значительные улучшения производительности базовой платформы [51] [52] и Swing .
- Улучшенная поддержка веб-сервисов через JAX-WS ( JSR 224 ).
- Поддержка JDBC 4.0 ( JSR 221 ).
- Java Compiler API ( JSR 199 ): API, позволяющий Java-программе выбирать и вызывать Java-компилятор программно.
- Обновление JAXB до версии 2.0: включая интеграцию парсера StAX .
- Поддержка подключаемых аннотаций ( JSR 269 ). [53]
- Многие улучшения графического интерфейса , такие как интеграция SwingWorker в API, сортировка и фильтрация таблиц и настоящая двойная буферизация Swing (устранение эффекта серой зоны).
- Улучшения JVM включают: оптимизацию синхронизации и производительности компилятора , новые алгоритмы и обновления существующих алгоритмов сборки мусора , а также производительность запуска приложений.
Java 6 можно установить в Mac OS X 10.5 (Leopard), работающем на компьютерах с 64-разрядными процессорами (Core 2 Duo и выше). [54] Java 6 также поддерживается как 32-битными, так и 64-битными машинами под управлением Mac OS X 10.6 (Snow Leopard).
Срок поддержки Java 6 подошел к концу в феврале 2013 года, когда все общедоступные обновления, включая обновления безопасности, должны были быть остановлены. [55] [56] Oracle выпустила еще два обновления для Java 6 в марте и апреле 2013 года, в которых были исправлены некоторые уязвимости системы безопасности. [57] [58]
Обновления Java 6
После выпуска Java 6 Sun, а затем Oracle выпустили несколько обновлений, которые, хотя и не изменили общедоступный API, улучшили удобство использования конечным пользователем или исправили ошибки. [59]
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 6 | 2006-12-23 | В этом выпуске добавлено множество улучшений в области веб-служб, сценариев, баз данных, подключаемых аннотаций и безопасности, а также качества, совместимости и стабильности. JConsole теперь официально поддерживается. Добавлена поддержка Java DB. |
Java SE 6, обновление 1 | 2007-05-07 | |
Java SE 6 (обновление 2) | 2007-07-03 | |
Java SE 6, обновление 3 | 2007-10-03 | |
Java SE 6 (обновление 4) | 2008-01-14 | HotSpot ВМ 10 |
Java SE 6 (обновление 5) | 2008-03-05 | Устранено несколько недостатков безопасности. Теперь включены новые корневые сертификаты от AOL, DigiCert и TrustCenter. |
Java SE 6 (обновление 6) | 2008-04-16 | Был введен обходной путь для печально известной проблемы утверждения блокировки Xlib / XCB. Исправлена утечка памяти при использовании аутентификации Kerberos с LoginContext. Исправлено несколько других ошибок. |
Java SE 6 (обновление 7) [60] | Неофициально, Java SE 6 Update 7 (1.6.0.7) является последней версией Java, которая, как было показано, работает с операционными системами семейства Win9x [ необходима ссылка ] | |
Java SE 6 (обновление 10) [61] | 2008-10-15 | HotSpot VM 11. Основные изменения в этом обновлении:
|
Java SE 6 (обновление 11) [63] | 2008-12-03 | 13 исправлений безопасности [64] |
Java SE 6 (обновление 12) [65] | 2008-12-12 | Никаких исправлений безопасности; 64-битный плагин Java (только для 64-битных веб-браузеров); Поддержка Windows Server 2008 ; улучшения производительности графики и приложений JavaFX |
Java SE 6 (обновление 13) [66] | 2009-03-24 | 7 исправлений безопасности, JNDI сохраняет и извлекает объекты Java в LDAP, слегка изменен, JMX Change (createMBeanunregisterMBean), добавлены 4 новых корневых сертификата |
Java SE 6 (обновление 14) [67] | 2009-05-28 | HotSpot VM 14. Этот выпуск включает обширные обновления производительности для JIT-компилятора, сжатые указатели для 64-битных машин, а также поддержку сборщика мусора G1 (Garbage First) с малой паузой. [68] [69] Эта Некоторые разработчики заметили проблему, появившуюся в этом выпуске, из-за которой отладчики случайно пропускают точки останова. [71] У Sun есть соответствующая ошибка, которая отслеживает проблему. Обходной путь применяется к виртуальным машинам клиента и сервера. [72] Использование |
Java SE 6 (обновление 15) | 2009-08-04 | Добавлена функция исправления на месте [73] |
Java SE 6 (обновление 16) | 2009-08-11 | Исправлена проблема, появившаяся в обновлении 14, из-за которой отладчики пропускали точки останова [74] |
Java SE 6 (обновление 17) [75] | 2009-11-04 | Исправления безопасности; два новых корневых сертификата |
Java SE 6 (обновление 18) [76] | 2010-01-13 | Никаких исправлений безопасности; Hotspot VM 16; поддержка Ubuntu 8.04 LTS Desktop Edition, SLES 11, Windows 7 , Red Hat Enterprise Linux 5.3, Firefox 3.6, VisualVM 1.2; обновленная БД Java; много улучшений производительности |
Java SE 6 (обновление 19) [77] | 2010-03-30 | Исправления безопасности; изменения корневого сертификата: семь новых, три удаленных, пять замененных более надежными алгоритмами подписи; временное исправление для атаки повторного согласования TLS |
Java SE 6 (обновление 20) [78] | 2010-04-15 | 2 исправления безопасности |
Java SE 6 (обновление 21) [79] | 2010-07-07 | Никаких исправлений безопасности; Hotspot VM 17; поддержка Red Hat Enterprise Linux 5.4 и 5.5, Oracle Enterprise Linux 4.8, 5.4, 5.5; Поддержка Google Chrome 4; поддержка настраиваемых индикаторов хода загрузки; VisualVM 1.2.2 |
Java SE 6 (обновление 22) [80] | 2010-10-12 | 29 исправлений безопасности; RFC 5746 поддержка |
Java SE 6 (обновление 23) [81] | 2010-12-08 | Никаких исправлений безопасности; Hotspot VM 19; лучшая поддержка языков с письмом справа налево |
Java SE 6 (обновление 24) [82] | 2011-02-15 | 21 исправление безопасности; обновленная БД Java |
Java SE 6 (обновление 25) | 2011-03-21 | Никаких исправлений безопасности; Hotspot VM 20; поддержка Internet Explorer 9 , Firefox 4 и Chrome 10; улучшенный BigDecimal; включает в себя «многоуровневую» компиляцию в серверной виртуальной машине, которая позволяет ей запускаться быстро, как и клиентская виртуальная машина, при достижении более высокой пиковой производительности (эта функция включается путем указания параметров -server и -XX:+TieredCompilation команды) [83] |
Java SE 6 (обновление 26) [84] | 2011-06-07 | 17 новых исправлений безопасности; [85] последняя версия, совместимая с Windows Vista SP1 |
Java SE 6 (обновление 27) [86] | 2011-08-16 | Никаких исправлений безопасности; сертификация для Firefox 5 |
Java SE 6 (обновление 29) [87] | 2011-10-18 | 20 исправлений безопасности, различные исправления ошибок [88] |
Java SE 6 (обновление 30) [89] | 2011-12-12 | Никаких исправлений безопасности; исправление регрессии SSL в обновлении 29; поддержка Red Hat Enterprise Linux 6 |
Java SE 6 (обновление 31) [90] | 2012-02-14 | 14 исправлений безопасности и одно исправление ошибки; последняя версия надежно работает для Windows 2000 [91] |
Java SE 6 (обновление 32) [92] | 2012-04-26 | Никаких исправлений безопасности, различные исправления ошибок |
Java SE 6 (обновление 33) [93] | 2012-06-12 | 14 исправлений безопасности, улучшена загрузка файла конфигурации виртуальной машины. |
Java SE 6 (обновление 34) [94] | 2012-08-14 | Никаких исправлений безопасности, различные исправления ошибок |
Java SE 6 (обновление 35) [95] | 2012-08-30 | Содержит исправление для обеспечения безопасности [96] |
Java SE 6 (обновление 37) [97] | 2012-10-16 | 30 исправлений безопасности |
Java SE 6 (обновление 38) [98] | 2012-12-11 | Различные исправления ошибок [99] |
Java SE 6 (обновление 39) [100] | 2013-02-01 | 50 исправлений безопасности |
Java SE 6 (обновление 41) [101] | 2013-02-19 | 5 исправлений безопасности |
Java SE 6 (обновление 43) [102] | 2013-03-04 | 2 исправления безопасности |
Java SE 6 (обновление 45) [103] | 2013-04-16 | 42 исправления безопасности; [104] другие изменения; [103] финальное публичное обновление. [105] |
Java SE 6 (обновление 51) [106] | 2013-06-18 | Не общедоступно, доступно только в рамках программы поддержки Java SE и в Apple Update для OS X Snow Leopard, Lion и Mountain Lion; до 40 исправлений безопасности [107] |
Java SE 6 (обновление 65) [108] | 2013-10-15 | Не общедоступно, доступно только в рамках программы поддержки Java SE и в Apple Update для OS X Snow Leopard, Lion и Mountain Lion; не менее 11 критических исправлений безопасности [109] |
Java SE 6 (обновление 71) [110] | 2014-01-14 | Недоступно для публичной загрузки; 33 исправления [111] |
Java SE 6 (обновление 75) [112] | 2014-04-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10 под номером. # 54; 25 исправлений безопасности [113] |
Java SE 6 (обновление 81) [114] | 2014-07-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 11 исправлений безопасности [115] |
Java SE 6 (обновление 85) [116] | 2014-10-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 18 исправлений безопасности [117] |
Java SE 6 (обновление 91) [118] | 2015-01-21 | Версии Linux x64 и Windows i586 доступны как эталонная реализация Java SE 6. [119] Другие версии доступны только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 15 исправлений безопасности [120] |
Java SE 6 (обновление 95) | 2015-04-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 14 исправлений безопасности [121] |
Java SE 6 (обновление 101) | 2015-07-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 18 исправлений безопасности [122] Сертификация для IE 10 и 11 была введена в 1.6.0_101 |
Java SE 6 (обновление 105) | 2015-10-20 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 17 исправлений безопасности [123] |
Java SE 6 (обновление 111) | 2016-01-20 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 13 исправлений безопасности [124] |
Java SE 6 (обновление 113) | 2016-02-05 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 1 исправление безопасности [125] |
Java SE 6 (обновление 115) | 2016-04-21 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 8 исправлений безопасности [126] |
Java SE 6 (обновление 121) | 2016-07-19 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 15 исправлений безопасности [127] |
Java SE 6 (обновление 131) | 2016-10-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 13 исправлений безопасности [128] |
Java SE 6 (обновление 141) | 2017-01-17 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 17 исправлений безопасности [129] |
Java SE 6 (обновление 151) | 2017-04-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 10 исправлений безопасности [130] |
Java SE 6 (обновление 161) | 2017-07-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 5 исправлений безопасности [131] |
Java SE 6 (обновление 171) | 2017-10-20 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 7 исправлений безопасности [132] |
Java SE 6 (обновление 181) | 2018-01-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 12 исправлений безопасности [133] |
Java SE 6 (обновление 191) | 2018-04-17 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 7 исправлений безопасности [134] |
Java SE 6 (обновление 201) | 2018-07-17 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 3 исправления безопасности [135] |
Java SE 6 (обновление 211) | 2018-10-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 8 исправлений безопасности [136] |
Java SE 7
Java 7 (кодовое имя Dolphin [137] ) - это крупное обновление, которое было выпущено 7 июля 2011 г. [138] и стало доступным для разработчиков 28 июля 2011 г. [139] Период разработки был разбит на тринадцать этапов; 6 июня 2011 года завершился последний из тринадцати этапов. [139] [140] В среднем за один этап выпускалось 8 сборок (которые обычно включали улучшения и исправления ошибок). В списке возможностей проекта OpenJDK 7 перечислены многие изменения.
Дополнения в Java 7 включают: [141]
- Поддержка JVM для динамических языков с новым
invokedynamic
байт-кодом под JSR-292, [142] после работы по созданию прототипа, которая в настоящее время выполняется на многоязыковой виртуальной машине. - Сжатые 64-битные указатели [143] (доступны в Java 6 с
-XX:+UseCompressedOops
) [144] - Эти небольшие языковые изменения (сгруппированы в рамках проекта под названием Coin): [145]
- Строки в переключателе [146]
- Автоматическое управление ресурсами в инструкции try [147]
- Улучшенный вывод типа для создания универсального экземпляра, также известного как ромбовидный оператор <> [148]
- Упрощенное объявление метода varargs [149]
- Целочисленные двоичные литералы [150]
- Разрешение подчеркивания в числовых литералах [151]
- Перехват нескольких типов исключений и повторное генерирование исключений с улучшенной проверкой типов [152]
- Утилиты параллелизма под JSR 166 [153]
- Новая библиотека файлового ввода-вывода (определенная JSR 203), добавляющая поддержку нескольких файловых систем, метаданных файлов и символических ссылок. Новые пакеты
java.nio.file
,java.nio.file.attribute
иjava.nio.file.spi
[154] [155] - Timsort используется для сортировки коллекций и массивов объектов вместо сортировки слиянием.
- Поддержка на уровне библиотеки алгоритмов криптографии с эллиптическими кривыми
- XRender трубопровод для Java 2D, что улучшает управляемость возможностей , характерных для современных графических процессоров
- Новые API платформы для графических функций, изначально реализованные в версии 6u10 как неподдерживаемые API [156]
- Расширенная поддержка на уровне библиотеки новых сетевых протоколов, включая SCTP и протокол Sockets Direct.
- Upstream обновления XML и Unicode
- Наборы правил развертывания Java [157]
Lambda (реализация лямбда-функций в Java), Jigsaw (реализация модулей в Java ) и часть Coin были исключены из Java 7 и выпущены как часть Java 8 (за исключением Jigsaw , выпущенного в Java 9). [158] [159]
Java 7 была версией по умолчанию для загрузки на java.com с апреля 2012 года до выпуска Java 8. [160]
Обновления Java 7
Oracle выпускала общедоступные обновления для семейства Java 7 ежеквартально [161] до апреля 2015 года, когда продукт достиг конца своей публичной доступности. [162] Дальнейшие обновления для JDK 7, которые планируется продлить до июля 2022 года, доступны только для клиентов с контрактом на поддержку. [163]
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 7 [164] | 2011-07-28 | Первый выпуск; HotSpot VM 21 |
Java SE 7 (обновление 1) [165] | 2011-10-18 | 20 исправлений безопасности, исправления других ошибок |
Java SE 7 (обновление 2) [166] | 2011-12-12 | Никаких исправлений безопасности; HotSpot VM 22; повышение надежности и производительности; поддержка Solaris 11 и Firefox 5 и новее; JavaFX включен в Java SE JDK, улучшения для веб-приложений |
Java SE 7 (обновление 3) [167] | 2012-02-14 | 14 исправлений безопасности [168] |
Java SE 7 (обновление 4) [169] | 2012-04-26 | Нет обновлений безопасности; HotSpot VM 23; Поддержка JDK для Mac OS X |
Java SE 7 (обновление 5) [170] | 2012-06-12 | 14 исправлений безопасности [171] |
Java SE 7 (обновление 6) [172] | 2012-08-14 | JavaFX и Java Access Bridge включены в установку Java SE JDK и JRE, поддержка JavaFX для сенсорных мониторов и сенсорных панелей, поддержка JavaFX для Linux, поддержка JDK и JRE для Mac OS X, JDK для Linux на ARM [173] |
Java SE 7 (обновление 7) [174] | 2012-08-30 | 4 исправления безопасности [96] |
Java SE 7 (обновление 9) [175] | 2012-10-16 | 30 исправлений уязвимостей безопасности [176] |
Java SE 7 (обновление 10) [177] | 2012-12-11 | Новые функции безопасности, такие как возможность отключить любое приложение Java от запуска в браузере и новые диалоговые окна, предупреждающие вас, когда JRE небезопасна, и исправления ошибок. |
Java SE 7 (обновление 11) [178] | 2013-01-13 | Olson Data 2012i; исправление проблем с регистрацией плагина в системах с установленной автономной версией JavaFX, исправления безопасности для CVE - 2013-0422 ; [179] уровень безопасности по умолчанию для Java-апплетов и веб-приложений был увеличен с «Среднего» до «Высокого». |
Java SE 7 (обновление 13) [180] | 2013-02-01 | 50 исправлений безопасности |
Java SE 7 (обновление 15) [181] | 2013-02-19 | 5 исправлений безопасности |
Java SE 7 (обновление 17) [182] | 2013-03-04 | 2 исправления безопасности |
Java SE 7 (обновление 21) [183] | 2013-04-16 | Множественные изменения, включая 42 исправления безопасности, новую серверную JRE, которая не включает подключаемый модуль, и JDK для Linux на ARM. |
Java SE 7 (обновление 25) [184] | 2013-06-18 | Множественные изменения, включая 40 исправлений безопасности [107] [185] |
Java SE 7 (обновление 40) [186] | 2013-09-10 | 621 исправления ошибок, [187] Новые функции безопасности, hardfloat ARM , Java ЦУП 5.2 и Retina Display поддержки [188] |
Java SE 7 (обновление 45) [189] | 2013-10-15 | 51 исправление безопасности; [109] защита от несанкционированного распространения приложений Java; восстановить подсказки безопасности; Изменения JAXP; TimeZone.set Изменение по умолчанию |
Java SE 7 (обновление 51) [190] | 2014-01-14 | 36 исправлений безопасности; блокировать апплеты JAVA без манифеста (например, удаленная консоль - Java-апплет - карта IBM IMM, карта HP iLO), даже если диалоговое окно с предупреждением содержит предложение «будет заблокировано в следующей версии», [191] [192] 17 исправлений ошибок |
Java SE 7 (обновление 55) [193] | 2014-04-15 | 37 исправлений безопасности, [113] 19 исправлений ошибок [194] |
Java SE 7 (обновление 60) [195] | 2014-05-28 | Java Mission Control 5.3, [196] 130 исправлений [197] |
Java SE 7 (обновление 65) [198] | 2014-07-15 | 18 исправлений ошибок [199] |
Java SE 7 (обновление 67) [200] | 2014-08-04 | 1 исправление ошибки [200] |
Java SE 7 (обновление 71) [201] | 2014-10-14 | 16 исправлений ошибок [202] |
Java SE 7 (обновление 72) [203] | 2014-10-14 | Та же дата выпуска обновления 71, что и соответствующее обновление набора исправлений (PSU) для Java SE 7, [204] 36 исправлений ошибок [205] |
Java SE 7 (обновление 75) [206] | 2015-01-20 | 12 исправлений ошибок, [207] SSLv3 отключен по умолчанию |
Java SE 7 (обновление 76) [208] | 2015-01-20 | Та же дата выпуска обновления 75, что и соответствующее обновление набора исправлений (PSU) для Java SE 7, [204] 97 исправлений ошибок [209] |
Java SE 7 (обновление 79) [210] | 2015-04-14 | 21 исправление безопасности, 6 исправлений ошибок, [211] |
Java SE 7 (обновление 80) [212] | 2015-04-14 | Последний публичный выпуск Java 7; та же дата выпуска обновления 79, что и соответствующее обновление набора исправлений (PSU) для Java SE 7, 104 исправления ошибок [213] |
Java SE 7 (обновление 85) | 2015-07-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 25 исправлений безопасности [214] |
Java SE 7 (обновление 91) | 2015-10-20 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 20 исправлений безопасности [215] |
Java SE 7 (обновление 95) | 2016-01-19 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 8 исправлений безопасности [216] |
Java SE 7 (обновление 97) | 2016-02-05 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 1 исправление безопасности [125] |
Java SE 7 (обновление 99) | 2016-03-23 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 1 исправление безопасности [217] |
Java SE 7 (обновление 101) | 2016-04-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 22 исправления безопасности [218] |
Java SE 7 (обновление 111) | 2016-07-19 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 36 исправлений безопасности [127] |
Java SE 7 (обновление 121) | 2016-10-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 32 исправления безопасности [128] |
Java SE 7 (обновление 131) | 2017-01-17 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 34 исправления безопасности [129] |
Java SE 7 (обновление 141) | 2017-04-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 8 исправлений безопасности [219] |
Java SE 7 (обновление 151) | 2017-07-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 4 исправления безопасности [131] |
Java SE 7 (обновление 161) | 2017-10-20 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 4 исправления безопасности [132] |
Java SE 7 (обновление 171) | 2018-01-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 51 исправление безопасности [133] |
Java SE 7 (обновление 181) | 2018-04-17 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 12 исправлений безопасности [134] |
Java SE 7 (обновление 191) | 2018-07-17 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 9 исправлений безопасности [135] |
Java SE 7 (обновление 201) | 2018-10-18 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 13 исправлений безопасности [136] |
Java SE 7 (обновление 211) | 2019-01-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 5 исправлений безопасности [220] |
Java SE 7 (обновление 221) | 2019-04-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 5 исправлений безопасности [221] |
Java SE 7 (обновление 231) | 2019-07-16 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 6 исправлений безопасности [222] |
Java SE 7 (обновление 241) | 2019-10-15 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 15 исправлений безопасности [223] |
Java SE 7 (обновление 251) | 2020-01-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 12 исправлений безопасности [224] |
Java SE 7 (обновление 261) | 2020-04-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 15 исправлений безопасности [225] |
Java SE 7 (обновление 271) | 2020-07-14 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 11 исправлений безопасности [226] |
Java SE 7 (обновление 281) | 2020-10-20 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 8 исправлений безопасности [227] |
Java SE 7 (обновление 291) | 2021-01-19 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 1 исправление безопасности [228] |
Java SE 7 (обновление 301) | 2021-04-12 | Не является общедоступным, доступно только через программу поддержки Java SE и в кластере рекомендованных наборов исправлений Solaris 10; 11 исправлений безопасности [229] |
Java SE 8
Java 8 была выпущена 18 марта 2014 г. [230] [231] и включала некоторые функции, которые были запланированы для Java 7, но позже отложены. [232]
Работа над функциями была организована в рамках предложений по расширению JDK (JEP) . [233]
- JSR 335, JEP 126: поддержка на уровне языка лямбда-выражений (официально лямбда-выражения; неофициально - замыкания ) в рамках проекта Lambda [234] и методов по умолчанию (методы виртуального расширения ) [235] [236] [237], которые позволяют добавлять методов для интерфейсов без нарушения существующих реализаций. В сообществе Java продолжались дискуссии о том, следует ли добавлять поддержку лямбда-выражений. [238] [239] Sun позже объявила, что лямбда-выражения будут включены в Java, и попросила сообщество внести вклад в улучшение этой функции. [240] Поддержка лямбда-выражений также позволяет выполнять операции в функциональном стиле с потоками элементов, такие как преобразования коллекций в стиле MapReduce . Методы по умолчанию позволяют автору API добавлять новые методы в интерфейс, не нарушая старый код, используя его. Хотя это не было их основной целью, [235] методы по умолчанию также допускают множественное наследование поведения (но не состояния).
- JSR 223, JEP 174: Project Nashorn, a JavaScript runtime which allows developers to embed JavaScript code within applications
- JSR 308, JEP 104: Annotation on Java types[241]
- Unsigned integer arithmetic[242]
- JSR 337, JEP 120: Repeating annotations[243]
- JSR 310, JEP 150: Date and time API[244]
- JEP 178: Statically-linked JNI libraries[245]
- JEP 153: Launch JavaFX applications (direct launching of JavaFX application JARs)[246]
- JEP 122: Remove the permanent generation[247]
Java 8 is not supported on Windows XP[248] but as of JDK 8 update 25, it can still be installed and run under Windows XP.[249] Previous updates of JDK 8 could be run under XP by downloading archived zip format file and unzipping it for the executable.The last version of Java 8 could run on XP is update 251.But the its components compatibility starts to break on unsupported OS in early build during Java 8 updates development.[citation needed]
From October 2014, Java 8 was the default version to download (and then again the download replacing Java 9) from the official website.[250] "Oracle will continue to provide Public Updates and auto updates of Java SE 8, Indefinitely for Personal Users".[2]
Java 8 updates
Release | Release date | Highlights |
---|---|---|
Java SE 8 | 2014-03-18 | Initial release |
Java SE 8 Update 5[251] | 2014-04-15 | Using "* " in Caller-Allowable-Codebase attribute; 11 bug fixes |
Java SE 8 Update 11[252] | 2014-07-15 | Java Dependency Analysis Tool (jdeps); Java Control Panel option to disable sponsors; JAR file attribute – Entry-Point; JAXP processing limit property – maxElementDepth; 18 security bug fixes,[253] 15 bug fixes |
Java SE 8 Update 20[254] | 2014-08-19 | 669 bug fixes,[255] JMC 5.4, String deduplication (disabled by default) |
Java SE 8 Update 25[256] | 2014-10-14 | 10 bug fixes |
Java SE 8 Update 31[257] | 2015-01-19 | 26 bug fixes; SSLv3 (disabled by default) |
Java SE 8 Update 40[258] | 2015-03-03 | 645 bug fixes,[259] Added the notion of "memory pressure" to help indicate how much of system's memory is still available (low pressure = high memory, high pressure = low memory) |
Java SE 8 Update 45[260] | 2015-04-14 | 13 bug fixes |
Java SE 8 Update 51[261] | 2015-07-14 | Added support for native sandbox on Windows platforms (disabled by default); also, 25 security fixes, 14 bug fixes |
Java SE 8 Update 60[262] | 2015-08-18 | 480 bug fixes[263] |
Java SE 8 Update 65[264] | 2015-10-20 | 25 security fixes, 3 bug fixes |
Java SE 8 Update 66[265] | 2015-11-16 | 15 bug fixes |
Java SE 8 Update 71[266] | 2016-01-19 | 8 security fixes, 5 bug fixes[267] |
Java SE 8 Update 72 | 2016-01-19 | 8 security fixes, 5 bug fixes, several enhancements |
Java SE 8 Update 73[268] | 2016-02-03 | 1 security fix |
Java SE 8 Update 74[269] | 2016-02-03 | 1 security fix |
Java SE 8 Update 77[270] | 2016-03-23 | 1 security fix |
Java SE 8 Update 91[271] | 2016-04-19 | 9 security fixes, 4 bug fixes and enhancements |
Java SE 8 Update 92[272] | 2016-04-19 | Security and bug fixes from 8u91, plus 76 additional bug fixes; the ExitOnOutOfMemoryError and CrashOnOutOfMemoryError flags have been introduced |
Java SE 8 Update 101[273] | 2016-07-19 | Security and bug fixes from 8u92, plus 9 additional bug fixes |
Java SE 8 Update 102[274] | 2016-07-19 | Security and bug fixes from 8u101, plus 118 additional bug fixes |
Java SE 8 Update 111[275] | 2016-10-18 | 7 Security fixes and 9 bug fixes |
Java SE 8 Update 112[276] | 2016-10-18 | Additional features and 139 bug fixes over 8u111 |
Java SE 8 Update 121[277] | 2017-01-17 | 3 additional features, 5 changes, and 11 bug fixes over 8u112. |
Java SE 8 Update 131[278] | 2017-04-18 | 4 changes and 42 bug fixes (2 notable). |
Java SE 8 Update 141[279] | 2017-07-18 | Additional feature, 3 changes and 12 bug fixes. |
Java SE 8 Update 144[280] | 2017-07-26 | 32 Security fixes and bug fixes from 8u141. |
Java SE 8 Update 151[281] | 2017-10-17 | 22 Security fixes, 2 notes, 1 certificate revocation, 1 new feature, 6 changes and 24 bug fixes from 8u144. |
Java SE 8 Update 152[282] | 2017-10-17 | Security fixes, 1 new feature, 1 change and 238 bug fixes from 8u151 (1 notable). |
Java SE 8 Update 161[283] | 2018-01-16 | 21 Security fixes, 3 new features, 9 changes and 1 bug fix from 8u152. |
Java SE 8 Update 162[284] | 2018-01-16 | Security fixes, 63 bug fixes. |
Java SE 8 Update 171[285] | 2018-04-17 | Security fixes, bug fixes. |
Java SE 8 Update 172[286] | 2018-04-17 | Security fixes, bug fixes. |
Java SE 8 Update 181[287] | 2018-07-17 | Security fixes, bug fixes. |
Java SE 8 Update 191[288] | 2018-10-16 | New features, changes, bug fixes, security fixes. |
Java SE 8 Update 192[289] | 2018-10-16 | New features, changes, bug fixes. |
Java SE 8 Update 201[290] | 2019-01-15 | New features, changes, bug fixes. |
Java SE 8 Update 202[291] | 2019-01-15 | New features, changes, bug fixes. |
Java SE 8 Update 211[292] | 2019-04-16 | New features, changes, bug fixes. License Update. |
Java SE 8 Update 212[293] | 2019-04-16 | New features (e.g. 5 currency symbols, including for Bitcoin and "New Japanese Era Name Reiwa"[293]), changes, bug fixes. License Update. |
Java SE 8 Update 221[294] | 2019-07-16 | New features, changes, bug fixes. |
Java SE 8 Update 231[295] | 2019-10-15 | New features, changes, bug fixes and 18 security fixes. |
Java SE 8 Update 241[296] | 2020-01-14 | New features, changes, bug fixes. |
Java SE 8 Update 251[297] | 2020-04-14 | New features, changes, bug fixes.The last version that was shown to be working on Windows XP unofficially. |
Java SE 8 Update 261[298] | 2020-07-14 | New features, changes, bug fixes. |
Java SE 8 Update 271[299] | 2020-10-20 | New features, changes, bug fixes. |
Java SE 8 Update 281[300] | 2021-01-19 | New features, changes, bug fixes. |
Java SE 8 Update 291[301] | 2021-04-20 | New features, changes, bug fixes. |
Java SE 9
Java SE 9 was made available on September 21, 2017,[302] due to controversial acceptance of the current implementation of Project Jigsaw by Java Executive Committee,[303] which led Oracle to fix some open issues and concerns, and to refine some critical technical questions. In the last days of June 2017, Java Community Process expressed nearly unanimous consensus on the proposed Module System scheme.[304]
- JSR 376: Modularization of the JDK under Project Jigsaw (Java Platform Module System)[159]
- JavaDB was removed from JDK[305]
- JEP 193: Variable handles : define a standard means to invoke the equivalents of various
java.util.concurrent.atomic
andsun.misc.Unsafe
operations - JEP 213: Milling Project Coin : Allow @SafeVarargs on private instance methods; Allow effectively-final variables to be used as resources in the try-with-resources statement; Allow diamond with anonymous classes if the argument type of the inferred type is denotable; Complete the removal, begun in Java SE 8, of underscore from the set of legal identifier names; Support for private methods in interfaces
- JEP 222: jshell: The Java Shell (Read-Eval-Print Loop) : JShell is a REPL command-line interface for the Java language.[306]
- JEP 254: Compact Strings
- JEP 263: HiDPI graphics: automatic scaling and sizing
- JEP 266: More concurrency updates : It includes a Java implementation of Reactive Streams,[307] including a new
Flow
class[308] that included the interfaces previously provided by Reactive Streams[309] - JEP 268: XML catalogs
- JEP 282: jlink: The Java Linker : create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image. It effectively allows to produce a fully usable executable including the JVM to run it
- JEP 295: Ahead-of-Time Compilation : Ahead-of-time compilation provided by GraalVM.
The first Java 9 release candidate was released on August 9, 2017.[310] The first stable release of Java 9 was on September 21, 2017.[311]
History
At JavaOne 2011, Oracle discussed features they hoped to release for Java 9 in 2016.[312] Java 9 should include better support for multi-gigabyte heaps, better native code integration, a different default garbage collector (G1, for "shorter response times")[313] and a self-tuning JVM.[314] In early 2016, the release of Java 9 was rescheduled for March 2017[315] and later again postponed four more months to July 2017.[316]
Java 9 updates
Release | Release date | Highlights |
---|---|---|
Java SE 9[317] | 2017-09-21 | Initial release |
Java SE 9.0.1[318] | 2017-10-17 | October 2017 security fixes and critical bug fixes |
Java SE 9.0.4[319] | 2018-01-16 | Final release for JDK 9; January 2018 security fixes and critical bug fixes |
Java SE 10
OpenJDK 10 was released on March 20, 2018, with twelve new features confirmed.[320] Among these features were:
- JEP 286: Local-Variable Type Inference
- JEP 296: Consolidate the JDK Forest into a Single Repository
- JEP 304: Garbage-Collector Interface
- JEP 307: Parallel Full GC for G1
- JEP 310: Application Class-Data Sharing
- JEP 312: Thread-Local Handshakes
- JEP 313: Remove the Native-Header Generation Tool (javah)
- JEP 314: Additional Unicode Language-Tag Extensions
- JEP 316: Heap Allocation on Alternative Memory Devices
- JEP 317: Experimental Java-Based JIT Compiler
- JEP 319: Root Certificates
- JEP 322: Time-Based Release Versioning
The first of these JEP 286 Local-Variable Type Inference, allows the var
keyword to be used for local variables with the actual type calculated by the compiler. So we can do
var list = new ArrayList<String>(); // infers ArrayList var stream = list.stream(); // infers Stream
Java 10 updates
Release | Release date | Highlights |
---|---|---|
Java SE 10[321] | 2018-03-20 | Initial release |
Java SE 10.0.1[322] | 2018-04-17 | Security fixes, 5 bug fixes[323] |
Java SE 10.0.2[324] | 2018-07-17 | Final release for JDK 10. Security fixes, 7 bug fixes[325] |
Java SE 11
JDK 11 was released on September 25, 2018 and the version is currently open for bug fixes. It offers LTS, or Long Term Support. Among others, Java 11 includes a number of new features, such as:[326]
- JEP 181: Nest-Based Access Control
- JEP 309: Dynamic Class-File Constants
- JEP 315: Improve Aarch64 Intrinsics
- JEP 318: Epsilon: A No-Op Garbage Collector
- JEP 320: Remove the Java EE and CORBA Modules
- JEP 321: HTTP Client (Standard)
- JEP 323: Local-Variable Syntax for Lambda Parameters
- JEP 324: Key Agreement with Curve25519 and Curve448
- JEP 327: Unicode 10
- JEP 328: Flight Recorder
- JEP 329: ChaCha20 and Poly1305 Cryptographic Algorithms
- JEP 330: Launch Single-File Source-Code Programs
- JEP 331: Low-Overhead Heap Profiling
- JEP 332: Transport Layer Security (TLS) 1.3
- JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
- JEP 335: Deprecate the Nashorn JavaScript Engine
- JEP 336: Deprecate the Pack200 Tools and API
A number of features from previous releases were dropped; in particular, Java applets and Java Web Start are no longer available. JavaFX, Java EE and CORBA modules have been removed from JDK[327]
Java 11 updates
Release | Release date | Highlights |
---|---|---|
Java SE 11[328] | 2018-09-25 | Initial release |
Java SE 11.0.1[329] | 2018-10-16 | Security & bug fixes |
Java SE 11.0.2[330] | 2019-01-15 | Security & bug fixes |
Java SE 11.0.3[331] | 2019-04-16 | New features, Security & bug fixes |
Java SE 11.0.4[332] | 2019-07-16 | New features, Security & bug fixes; HotSpot Windows OS Detection Correctly Identifies Windows Server 2019 |
Java SE 11.0.5[333] | 2019-10-15 | New features, Security & bug fixes |
Java SE 11.0.6[334] | 2020-01-14 | New features, Security & bug fixes |
Java SE 11.0.7[335] | 2020-04-14 | New features, Security & bug fixes |
Java SE 11.0.8[336] | 2020-07-14 | New features, Security & bug fixes |
Java SE 11.0.9[337] | 2020-10-20 | New features, Security & bug fixes |
Java SE 11.0.10[338] | 2021-01-19 | New features, Security & bug fixes |
Java SE 11.0.11[339] | 2021-04-20 | New features, Security & bug fixes |
Java SE 12
JDK 12 was released on March 19, 2019. Among others, Java 12 includes a number of new features, such as:[340]
- JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
- JEP 230: Microbenchmark Suite
- JEP 325: Switch Expressions (Preview)
- JEP 334: JVM Constants API
- JEP 340: One AArch64 Port, Not Two
- JEP 341: Default CDS Archives
- JEP 344: Abortable Mixed Collections for G1
- JEP 346: Promptly Return Unused Committed Memory from G1
The preview feature Jep 325 extends the switch
statement so it can be also be used as expression, and add a new form of case label where the right hand side is a expression. No break statement is needed. For complex expressions a yield
statement can be used. This becomes standard in Java SE 14.
int ndays = switch(month) { case JAN, MAR, MAY, JUL, AUG, OCT, DEC -> 31; case APR, JUN, SEP, NOV -> 30; case FEB -> { if(year % 400 ==0) yield 29; else if(year % 100 == 0) yield 28; else if(year % 4 ==0) yield 29; else yield 28; }};
Java 12 updates
Release | Release date | Highlights |
---|---|---|
Java SE 12[341] | 2019-03-19 | Initial release |
Java SE 12.0.1[342] | 2019-04-16 | New Japanese Era Name & Security fixes |
Java SE 12.0.2[343] | 2019-07-16 | Removed some root CA certificates |
Java SE 13
JDK 13 was released on September 17, 2019. Java 13 includes the following new features, as well as "hundreds of smaller enhancements and thousands of bug fixes".[344]
- JEP 350: Dynamic CDS Archives
- JEP 351: ZGC: Uncommit Unused Memory
- JEP 353: Reimplement the Legacy Socket API
- JEP 354: Switch Expressions (Preview)
- JEP 355: Text Blocks (Preview)
JEP 355 Text Blocks allows multiline string literals:
String html = """ en"> Hello, world