Языка 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 г. для зулусов, [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 , среда выполнения JavaScript, которая позволяет разработчикам встраивать код JavaScript в приложения.
- JSR 308, JEP 104: Аннотация к типам Java [241]
- Беззнаковая целочисленная арифметика [242]
- JSR 337, JEP 120: повторяющиеся аннотации [243]
- JSR 310, JEP 150: API даты и времени [244]
- JEP 178: Статически связанные библиотеки JNI [245]
- JEP 153: Запуск приложений JavaFX (прямой запуск JAR-файлов приложений JavaFX) [246]
- JEP 122: Удалить постоянное поколение [247]
Java 8 не поддерживается в Windows XP [248], но после обновления 25 для JDK 8 ее можно установить и запустить под Windows XP. [249] Предыдущие обновления JDK 8 можно было запустить под XP, загрузив заархивированный файл в формате zip и разархивировав его для исполняемого файла. Последней версией Java 8, которая могла работать на XP, является обновление 251. Но совместимость его компонентов начинает нарушаться при неподдерживаемых версиях. ОС в ранней сборке во время разработки обновлений Java 8. [ необходима цитата ]
С октября 2014 года Java 8 была версией по умолчанию для загрузки (а затем снова для загрузки, заменяющей Java 9) с официального сайта. [250] «Oracle будет продолжать предоставлять публичные обновления и автоматические обновления Java SE 8 бессрочно для личных пользователей». [2]
Обновления Java 8
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 8 | 2014-03-18 | Первый выпуск |
Java SE 8 (обновление 5) [251] | 2014-04-15 | Использование " * " в Caller-Allowable-Codebase атрибуте; 11 исправлений ошибок |
Java SE 8 (обновление 11) [252] | 2014-07-15 | Инструмент анализа зависимостей Java (jdeps); Возможность отключения спонсоров в панели управления Java; Атрибут файла JAR - точка входа; Свойство ограничения обработки JAXP - maxElementDepth; 18 исправлений ошибок безопасности, [253] 15 исправлений ошибок |
Java SE 8 (обновление 20) [254] | 2014-08-19 | 669 исправлений ошибок, [255] JMC 5.4, дедупликация строк (по умолчанию отключено) |
Java SE 8 (обновление 25) [256] | 2014-10-14 | 10 исправлений ошибок |
Java SE 8 (обновление 31) [257] | 2015-01-19 | 26 исправлений ошибок; SSLv3 (по умолчанию отключен) |
Java SE 8 (обновление 40) [258] | 2015-03-03 | 645 исправлений ошибок, [259] Добавлено понятие «нехватка памяти», чтобы помочь указать, какой объем системной памяти все еще доступен (низкое давление = большой объем памяти, высокое давление = мало памяти). |
Java SE 8 (обновление 45) [260] | 2015-04-14 | 13 исправлений ошибок |
Java SE 8 (обновление 51) [261] | 2015-07-14 | Добавлена поддержка собственной песочницы на платформах Windows (по умолчанию отключена); также 25 исправлений безопасности, 14 исправлений ошибок |
Java SE 8 (обновление 60) [262] | 2015-08-18 | 480 исправлений ошибок [263] |
Java SE 8 (обновление 65) [264] | 2015-10-20 | 25 исправлений безопасности, 3 исправления ошибок |
Java SE 8 (обновление 66) [265] | 2015-11-16 | 15 исправлений ошибок |
Java SE 8 (обновление 71) [266] | 2016-01-19 | 8 исправлений безопасности, 5 исправлений ошибок [267] |
Java SE 8 (обновление 72) | 2016-01-19 | 8 исправлений безопасности, 5 исправлений ошибок, несколько улучшений |
Java SE 8 (обновление 73) [268] | 2016-02-03 | 1 исправление безопасности |
Java SE 8 (обновление 74) [269] | 2016-02-03 | 1 исправление безопасности |
Java SE 8 (обновление 77) [270] | 2016-03-23 | 1 исправление безопасности |
Java SE 8 (обновление 91) [271] | 2016-04-19 | 9 исправлений безопасности, 4 исправления ошибок и улучшения |
Java SE 8 (обновление 92) [272] | 2016-04-19 | Безопасность и исправления ошибок из 8u91, а также 76 дополнительных исправлений ошибок; ExitOnOutOfMemoryError и CrashOnOutOfMemoryError флаги были введены |
Java SE 8 (обновление 101) [273] | 2016-07-19 | Безопасность и исправления ошибок из 8u92, а также 9 дополнительных исправлений ошибок |
Java SE 8 (обновление 102) [274] | 2016-07-19 | Безопасность и исправления ошибок из 8u101, а также 118 дополнительных исправлений ошибок |
Java SE 8 (обновление 111) [275] | 2016-10-18 | 7 исправлений безопасности и исправлений 9 ошибок |
Java SE 8 (обновление 112) [276] | 2016-10-18 | Дополнительные функции и 139 исправлений ошибок по сравнению с 8u111 |
Java SE 8 (обновление 121) [277] | 2017-01-17 | 3 дополнительных функции, 5 изменений и 11 исправлений ошибок по сравнению с 8u112. |
Java SE 8 (обновление 131) [278] | 2017-04-18 | 4 изменения и 42 исправления ошибок (2 заметных). |
Java SE 8 (обновление 141) [279] | 2017-07-18 | Дополнительная функция, 3 изменения и 12 исправлений ошибок. |
Java SE 8 (обновление 144) [280] | 2017-07-26 | 32 Исправления безопасности и исправления ошибок из 8u141. |
Java SE 8 (обновление 151) [281] | 2017-10-17 | 22 исправления безопасности, 2 примечания, 1 отзыв сертификата, 1 новая функция, 6 изменений и 24 исправления ошибок из 8u144. |
Java SE 8 (обновление 152) [282] | 2017-10-17 | Исправления безопасности, 1 новая функция, 1 изменение и 238 исправлений ошибок из 8u151 (1 заметная). |
Java SE 8 (обновление 161) [283] | 2018-01-16 | 21 исправление безопасности, 3 новые функции, 9 изменений и 1 исправление ошибки из 8u152. |
Java SE 8 (обновление 162) [284] | 2018-01-16 | Исправления безопасности, исправления 63 ошибок. |
Java SE 8 (обновление 171) [285] | 2018-04-17 | Исправления безопасности, исправления ошибок. |
Java SE 8 (обновление 172) [286] | 2018-04-17 | Исправления безопасности, исправления ошибок. |
Java SE 8 (обновление 181) [287] | 2018-07-17 | Исправления безопасности, исправления ошибок. |
Java SE 8 (обновление 191) [288] | 2018-10-16 | Новые функции, изменения, исправления ошибок, исправления безопасности. |
Java SE 8 (обновление 192) [289] | 2018-10-16 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 201) [290] | 2019-01-15 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 202) [291] | 2019-01-15 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 211) [292] | 2019-04-16 | Новые функции, изменения, исправления ошибок. Обновление лицензии . |
Java SE 8 (обновление 212) [293] | 2019-04-16 | Новые функции (например, 5 символов валюты, в том числе для Биткойна и «Новая японская эра Имя Рейва » [293] ), изменения, исправления ошибок. Обновление лицензии . |
Java SE 8 (обновление 221) [294] | 2019-07-16 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 231) [295] | 2019-10-15 | Новые функции, изменения, исправления ошибок и 18 исправлений безопасности. |
Java SE 8 (обновление 241) [296] | 2020-01-14 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 251) [297] | 2020-04-14 | Новые функции, изменения, исправления ошибок. Последняя версия, которая, как было показано, неофициально работает на Windows XP. |
Java SE 8 (обновление 261) [298] | 2020-07-14 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 271) [299] | 2020-10-20 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 281) [300] | 2021-01-19 | Новые функции, изменения, исправления ошибок. |
Java SE 8 (обновление 291) [301] | 2021-04-20 | Новые функции, изменения, исправления ошибок. |
Java SE 9
Java SE 9 была доступна 21 сентября 2017 г. [302] из-за неоднозначного принятия текущей реализации Project Jigsaw Исполнительным комитетом Java [303], что привело к тому, что Oracle исправила некоторые нерешенные проблемы и проблемы, а также уточнила некоторые критические технические вопросы. В последние дни июня 2017 года Java Community Process практически единодушно согласился с предложенной схемой модульной системы. [304]
- JSR 376: Модуляризация JDK в рамках Project Jigsaw ( система модулей платформы Java ) [159]
- JavaDB был удален из JDK [305]
- СЭП 193: Переменные ручки : определить стандартные средства для вызова эквивалентов различных
java.util.concurrent.atomic
иsun.misc.Unsafe
операций - JEP 213: Milling Project Coin : разрешить @SafeVarargs для методов частного экземпляра; Разрешить использование переменных с эффективным окончанием в качестве ресурсов в операторе try-with-resources; Разрешить ромб с анонимными классами, если тип аргумента предполагаемого типа является обозначаемым; Завершите удаление, начатое в Java SE 8, подчеркивания из набора имен допустимых идентификаторов; Поддержка частных методов в интерфейсах
- JEP 222: jshell: оболочка Java (цикл чтения-вычисления-печати) : JShell - это интерфейс командной строки REPL для языка Java. [306]
- JEP 254: Компактные струны
- JEP 263: Графика HiDPI: автоматическое масштабирование и изменение размера
- СЭП 266: Больше обновления параллелизма : Она включает в себя реализацию Java в Reactive Streams , [307] в том числе нового
Flow
класса [308] , который включал интерфейсы ранее предоставленные Reactive Streams [309] - JEP 268: XML-каталоги
- JEP 282: jlink: Java Linker : создание инструмента, который может собирать и оптимизировать набор модулей и их зависимости в настраиваемый образ времени выполнения. Это эффективно позволяет создать полностью пригодный для использования исполняемый файл, включая JVM для его запуска.
- JEP 295: Опережающая компиляция : опережающая компиляция, предоставляемая GraalVM .
Первый кандидат на выпуск Java 9 был выпущен 9 августа 2017 года. [310] Первый стабильный выпуск Java 9 был выпущен 21 сентября 2017 года. [311]
История
На JavaOne 2011 Oracle обсудила функции, которые они надеются выпустить для Java 9 в 2016 году. [312] Java 9 должна включать лучшую поддержку многогигабайтных куч, лучшую интеграцию с собственным кодом, другой сборщик мусора по умолчанию ( G1 , для «более короткого времени ответа» ") [313] и самонастраивающаяся JVM. [314] В начале 2016 года выпуск Java 9 был перенесен на март 2017 года [315], а позже снова отложен еще на четыре месяца до июля 2017 года. [316]
Обновления Java 9
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 9 [317] | 2017-09-21 | Первый выпуск |
Java SE 9.0.1 [318] | 2017-10-17 | Исправления безопасности и критические ошибки за октябрь 2017 г. |
Java SE 9.0.4 [319] | 2018-01-16 | Финальный выпуск для JDK 9; Исправления безопасности и критические ошибки за январь 2018 г. |
Java SE 10
OpenJDK 10 был выпущен 20 марта 2018 года с подтвержденными двенадцатью новыми функциями. [320] Среди этих функций были:
- JEP 286: Определение типа локальной переменной
- JEP 296: объединить лес JDK в единый репозиторий
- JEP 304: Интерфейс сборщика мусора
- JEP 307: полный параллельный сборщик мусора для G1
- JEP 310: Совместное использование данных классов приложений
- JEP 312: локальные рукопожатия потока
- JEP 313: удалить инструмент создания собственных заголовков (javah)
- JEP 314: Дополнительные расширения тегов языка Unicode
- JEP 316: Распределение кучи на альтернативных устройствах памяти
- JEP 317: экспериментальный JIT-компилятор на основе Java
- JEP 319: корневые сертификаты
- JEP 322: Управление версиями выпуска на основе времени
Первый из этих выводов типа локальной переменной JEP 286 позволяет использовать var
ключевое слово для локальных переменных с фактическим типом, вычисленным компилятором. Итак, мы можем сделать
var list = new ArrayList < String > (); // выводит ArrayList var stream = list . поток (); // выводит Stream
Обновления Java 10
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 10 [321] | 2018-03-20 | Первый выпуск |
Java SE 10.0.1 [322] | 2018-04-17 | Исправления безопасности, 5 исправлений ошибок [323] |
Java SE 10.0.2 [324] | 2018-07-17 | Финальный выпуск для JDK 10. Исправления безопасности, 7 исправлений ошибок [325] |
Java SE 11
JDK 11 был выпущен 25 сентября 2018 г., и в настоящее время эта версия открыта для исправления ошибок. Он предлагает LTS или долгосрочную поддержку. Среди прочего, Java 11 включает ряд новых функций, таких как: [326]
- JEP 181: Контроль доступа на основе гнезд
- JEP 309: динамические константы файлов классов
- JEP 315: Улучшение встроенных функций Aarch64
- JEP 318: Эпсилон: сборщик мусора без использования
- JEP 320: удаление модулей Java EE и CORBA
- JEP 321: HTTP-клиент (стандартный)
- JEP 323: Синтаксис локальной переменной для лямбда-параметров
- JEP 324: ключевое соглашение с Curve25519 и Curve448
- JEP 327: Юникод 10
- JEP 328: Бортовой регистратор
- JEP 329: криптографические алгоритмы ChaCha20 и Poly1305
- JEP 330: Запуск однофайловых программ с исходным кодом
- JEP 331: Профилирование кучи с низкими накладными расходами
- JEP 332: Безопасность транспортного уровня (TLS) 1.3
- JEP 333: ZGC: масштабируемый сборщик мусора с малой задержкой (экспериментальный)
- JEP 335: отказ от ядра JavaScript Nashorn
- JEP 336: устарели инструменты и API Pack200
Ряд функций из предыдущих выпусков был удален; в частности, Java-апплеты и Java Web Start больше не доступны. Модули JavaFX , Java EE и CORBA были удалены из JDK [327]
Обновления Java 11
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 11 [328] | 2018-09-25 | Первый выпуск |
Java SE 11.0.1 [329] | 2018-10-16 | Безопасность и исправления ошибок |
Java SE 11.0.2 [330] | 2019-01-15 | Безопасность и исправления ошибок |
Java SE 11.0.3 [331] | 2019-04-16 | Новые функции, безопасность и исправления ошибок |
Java SE 11.0.4 [332] | 2019-07-16 | Новые функции, безопасность и исправления ошибок; Функция обнаружения ОС Windows HotSpot правильно определяет Windows Server 2019 |
Java SE 11.0.5 [333] | 2019-10-15 | Новые функции, безопасность и исправления ошибок |
Java SE 11.0.6 [334] | 2020-01-14 | Новые функции, безопасность и исправления ошибок |
Java SE 11.0.7 [335] | 2020-04-14 | Новые функции, безопасность и исправления ошибок |
Java SE 11.0.8 [336] | 2020-07-14 | Новые функции, безопасность и исправления ошибок |
Java SE 11.0.9 [337] | 2020-10-20 | Новые функции, безопасность и исправления ошибок |
Java SE 11.0.10 [338] | 2021-01-19 | Новые функции, безопасность и исправления ошибок |
Java SE 11.0.11 [339] | 2021-04-20 | Новые функции, безопасность и исправления ошибок |
Java SE 12
JDK 12 был выпущен 19 марта 2019 г. Среди прочего, Java 12 включает ряд новых функций, таких как: [340]
- JEP 189: Шенандоа: сборщик мусора с малым временем паузы (экспериментальный)
- JEP 230: Пакет Microbenchmark
- JEP 325: Switch Expressions (предварительная версия)
- JEP 334: API констант JVM
- JEP 340: один порт AArch64, а не два
- JEP 341: Архивы CDS по умолчанию
- JEP 344: прерывание смешанных коллекций для G1
- JEP 346: незамедлительно вернуть неиспользованную выделенную память из G1
Функция предварительного просмотра Jep 325 расширяет switch
оператор, так что его также можно использовать как выражение, и добавляет новую форму метки case, где правая часть является выражением. Оператор разрыва не требуется. Для сложных выражений yield
можно использовать оператор. Это становится стандартом в Java SE 14.
int ndays = переключатель ( месяц ) { case JAN , MAR , MAY , JUL , AUG , OCT , DEC -> 31 ; case APR , JUN , SEP , NOV -> 30 ; case FEB -> { if ( year % 400 == 0 ) yield 29 ; иначе, если ( год % 100 == 0 ) yield 28 ; иначе, если ( год % 4 == 0 ) yield 29 ; иначе выход 28 ; } };
Обновления Java 12
Релиз | Дата выпуска | Особенности |
---|---|---|
Java SE 12 [341] | 2019-03-19 | Первый выпуск |
Java SE 12.0.1 [342] | 2019-04-16 | Новое название японской эры и исправления безопасности |
Java SE 12.0.2 [343] | 2019-07-16 | Удалены некоторые сертификаты корневого ЦС |
Java SE 13
JDK 13 был выпущен 17 сентября 2019 года. Java 13 включает следующие новые функции, а также «сотни небольших улучшений и тысячи исправлений ошибок». [344]
- JEP 350: динамические архивы CDS
- JEP 351: ZGC: разблокировать неиспользуемую память
- JEP 353: переопределить устаревший API сокетов
- JEP 354: Switch Expressions (предварительная версия)
- JEP 355: Текстовые блоки (предварительная версия)
JEP 355 Text Blocks позволяет использовать многострочные строковые литералы:
String html = "" " ru "> Привет, мир