Версии
Подробнее Версия, Дата выпуска ...
Версия |
Дата выпуска |
Конец бесплатной поддержки |
Конец LTS |
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 |
Java SE 7 |
июль 2011 |
апрель 2015 |
июль 2022 |
Java SE 8 (LTS) |
март 2014 |
- Январь 2019 (коммерческая лицензия Oracle)
- Декабрь 2020 (лицензия для персонального использования Oracle)
- Сентябрь 2023 (для AdoptOpenJDK[1])
|
март 2025 |
Java SE 9[2][3][4] |
сентябрь 2017 |
Март 2018 (OpenJDK) |
− |
Java SE 10 |
март 2018 |
Сентябрь 2018 (OpenJDK) |
− |
Java SE 11 (LTS) |
сентябрь 2018 |
Сентябрь 2022[1] |
сентябрь 2026 |
Java SE 12 |
март 2019 |
Сентябрь 2019 |
− |
Java SE 13 |
сентябрь 2019 |
Март 2020 |
− |
Java SE 14 |
март 2020 |
Сентябрь 2020 |
|
Java SE 15 |
сентябрь 2020 |
Март 2021 |
|
Java SE 16 |
март 2021 |
Сентябрь 2021 (OpenJDK) |
|
Java SE 17 (LTS) |
сентябрь 2021 |
Сентябрь 2030 |
|
Закрыть
Первый выпуск. Первой стабильной версией стала JDK 1.0.
Наиболее значимые дополнения:
- обширное изменение событий библиотеки AWT
- в язык добавлены внутренние классы
- JavaBeans (классы в языке Java, написанные по определённым правилам. Они используются для объединения нескольких объектов в один для удобной передачи данных)
- JDBC (соединение с базами данных) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД
- RMI (программный интерфейс вызова удаленных методов)
- ограниченная рефлексия (модификация во время выполнения невозможна, есть только наблюдение собственной структуры)
Кодовое имя Playground.
Следующей базовой версией Java стала версия Java 2, символизировавшая собой второе поколение. Первой версии Java 2 был присвоен номер 1.2. С появлением версии 2, SUN Microsystems стала выпускать Java в виде пакета J2SE (Java 2 Platform Standard Edition — Стандартная версия платформы Java 2) и теперь номера версий указываются применительно к этому продукту.
Java 2, или Java 2.0 — дальнейшее развитие и усовершенствование спецификации исходного стандарта языка и платформы Java, на который теперь принято ссылаться как на Java 1.0. В настоящее время спецификация платформы Java 2 продолжает интенсивно развиваться и обогащаться, пополняясь новыми возможностями, особенно из-за конкуренции с платформой .Net, перенявшей у Java ряд ключевых особенностей.
Основными усовершенствованиями Java 2 по сравнению с Java 1.0 являются:
- Swing включен в спецификацию платформы Java 2
- Коллекции
- Policy файлы
- Цифровые сертификаты пользователя
- Библиотека Accessibility
- Java 2D
- Поддержка технологии drag-and-drop
- Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках
- Поддержка воспроизведения аудиофайлов нескольких популярных форматов
- Полная поддержка технологии CORBA
- Включение в JDK для Java 2 JIT-компилятора, улучшенная производительность
- Усовершенствования инструментальных средств JDK, включая поддержку профилирования Java-программ
Кодовое имя Tiger.
Спецификация Java 5 была выпущена в сентябре 2004 года. В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:
- Перечислимые типы (enum). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.
- Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.
- Перечисление может реализовывать интерфейсы.
- Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым.
- Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода.
- Средства обобщённого программирования (generics) — механизм, аналогичный Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
- Методы с неопределённым числом параметров.
- Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками (например, между int и Integer). Наличие такой возможности упрощает код, поскольку исключает необходимость в выполнении явных преобразований типов в очевидных случаях.
- Разрешён импорт статических методов и переменных.
- В язык введён цикл по коллекции объектов (итератор, foreach).
Основная статья: История версий Java 6
Кодовое имя Mustang.
Java 7 (кодовое имя Dolphin[5]) это крупное обновление Java.[6]. Процесс разработки был разбит на 13 этапов; последний этап был достигнут 18 февраля 2011[7][8].
Новые возможности в Java 7[9]
- Строки в switch[13]
- Автоматическое управление ресурсами[14]
- Выведение типов при создании экземпляра обобщённого (generic) класса[15]
- Упрощен вызов метода с переменным числом аргументов[16]
- Поддержка подчеркиваний в качестве разделителей цифр для чисел (Возможность разбивать визуально числа на разряды, увеличивает удобочитаемость)
- Поддержка коллекций на уровне языка[17]
- Средства для параллельного исполнения в рамках JSR 166[18]
- Новая библиотека Ввода-вывода для улучшения платформонезависимости и поддержки метаданных и символьных ссылок. Пакеты: java.nio.file и java.nio.file.attribute[19][20]
- Поддержка алгоритмов эллиптической криптографии на уровне библиотеки.
- XRender для Java 2D, улучшающий управление возможностями современных GPU
- Новое графическое API, которое планировали выпустить в Java версии 6u10
- Расширение поддержки сетевых протоколов (включая SCTP и Sockets Direct Protocol) на уровне библиотеки
- Обновления в XML и Юникоде.
От Лямбда-функции, проекта Jigsaw и некоторых других возможностей проекта Coin в Java 7 было решено отказаться. Они будут отложены до Java 8.[21]
Обновления Java SE 7
Подробнее Релиз, Дата релиза ...
Релиз[22] |
Дата релиза |
Изменения |
Java SE 7
Update 1 |
18 октября 2011 г. |
Данный релиз содержит:
- исправления уязвимостей безопасности
- исправлено 6 ошибок
|
Java SE 7
Update 2 |
12 декабря 2011 г. |
Данный релиз содержит:
- Новый JVM (Java HotSpot Virtual Machine, версия 22), который повышает надёжность и производительность
- Поддержка Oracle Solaris 11
- Поддержка Firefox 5 и старше
- JavaFX входит в состав Java SE
|
... |
|
|
Java SE 7
Update 80 |
14 апреля 2015 г. |
Данный релиз содержит:
- исправления уязвимостей безопасности
- исправлено 104 ошибки
Это последний выпущенный общедоступный релиз Java SE 7 |
Закрыть
Вышла 18 марта 2014 года[23].
Новые возможности в Java 8
- Лямбда-выражения и аннотация @FunctionalInterface
- Возможность наличия у метода интерфейса реализации по умолчанию
- Аннотации типов
- JavaScript-движок Nashorn
- Base64 декодер (java.util.Base64)
- Date & Time API (java.time)
- Stream API – Возможность выполнения последовательности операций над элементами массива, а также возможность производить их параллельно (parallelStream);
- Добавлены операции над ассоциативными массивами (Map)
- Появились ссылки на метод или конструктор
- Появились предикаты, функции, поставщики (Фабрики объектов), опциональные значения, конструктор компаратора.
На JavaOne[англ.] 2011, Oracle обсудила возможности, которые возможно были бы выпущены к Java 9 в 2016.[24] Java 9 должна была поддерживать улучшенную поддержку многогигабайтных куч, лучшую интеграцию нативного кода, изменённый стандартный сборщик мусора (G1 с «укороченным временем отзыва»)[25] и самонастраиваемая[англ.] JVM.[26]
В начале 2016 релиз Java 9 был отложен на март 2017,[27] позже перенесён на июль 2017,[28] а потом перенесён на сентябрь 2017,[29] из-за спорного принятия проекта Jigsaw Исполнительный комитет Java,[30] который заставил Oracle исправить некоторые проблемы безопасности и критические технические вопросы. В последние дни июня 2017, Исполнительный комитет Java выразил единогласное согласие за систему модулей.[31]
Функции, добавленные в Java 9:
- JSR 376:[32] модульность в JDK (проект Jigsaw, система модулей в Java[англ.])[33][34][35]
- JEP 222: jshell[англ.]: консоль Java (Java REPL)[36][37]
- JEP 295: Ahead-of-Time компилятор Graal[англ.][38]
- JEP 268: XML Catalog[39]
- JEP 266: обновления библиотек многопоточности;[40] включение в Java проекта Reactive Streams[англ.],[41][42] включая класс Flow.[43]
- JEP 193: Variable Handles:[40] определение стандарта вызова эквивалентов различных операций java.util.concurrent.atomic и sun.misc.Unsafe.
- JEP 282: jlink (компоновщик Java):[44] создание инструмента, который может скомпоновать и оптимизировать комплект модулей с зависимостями в Runtime. Это позволяет создавать запускаемые файлы без дополнительных установок, даже JVM.
Первый RC Java 9 был выпущен 9 августа 2017.[45] Первый стабильный релиз был 21 сентября 2017[46]
Обновления Java 9
Подробнее Релиз, Дата релиза ...
Релиз |
Дата релиза |
Примечания |
Java SE 9[47] |
21 сентября 2017 года |
Первый релиз |
Java SE 9.0.1[48] |
17 октября 2017 года |
Исправление 12 багов, переход на новую систему нумерации |
Java SE 9.0.4[49] |
16 января 2018 года |
Финальный релиз; патчи безопасности и исправление критических ошибок |
Закрыть
OpenJDK 10 вышла 20 марта 2018 года, было добавлено 12 новых функций. Среди них:
- JEP 286: Автоматическое выведение типа локальных переменных[50]
- JEP 317: Экспериментальный Java-based JIT компилятор.[51] Это адаптация динамического компилятора Graal для платформы Linux x64
- JEP 310: Обмен информацией о классах приложения[52]
- JEP 322: Смена стратегии версионирования Java[53]
- JEP 307: Полностью параллельная сборка мусора для G1[54]
- JEP 304: Интерфейс Garbage-collector[55]
- JEP 314: Расширение с дополнительные языковыми тегами Unicode[56]
- JEP 319: Установка хранилища CA по умолчанию[57]
- JEP 312: Thread-local handshakes[58]
- JEP 316: Возможность размещения Heap на альтернативных устройствах памяти[59]
- JEP 313: Удаление утилиты для генерации нативных заголовков – javah[60]
- JEP 296: Объединение репозиториев JDK в один общий репозиторий[61]
Обновления Java 10
Подробнее Release, Release date ...
Release |
Release date |
Highlights |
Java SE 10 |
20 марта 2018 года |
Первый релиз |
Java SE 10.0.1 |
17 апреля 2018 года |
Патчи безопасности и исправление 5 багов |
Java SE 10.0.2 |
17 июля 2018 года |
Финальный релиз; патчи безопасности, исправление 7 багов |
Закрыть
OpenJDK 11 вышла 25 сентября 2018 года, было добавлено 17 новых функций. Среди них:
- JEP 181: Управление Nest-Based доступом[62]
- JEP 309: Динамические константы класса-файла[63]
- JEP 315: улучшение встроенных функций Aarch64[64]
- JEP 318: Epsilon: No-Op cборщик мусора[65]
- JEP 320: удаление модулей Java EE и CORBA[66]
- JEP 321: добавлен HTTP-клиент (стандартный)[67]
- JEP 323: синтаксис локальной переменной для лямбда-параметров[68]
- JEP 324: ключевое соглашение с Curve25519 и Curve448 [69]
- JEP 327: Unicode 10[70]
- JEP 328: Flight Recorder[71]
- JEP 329: криптографические алгоритмы ChaCha20 и Poly1305[72]
- JEP 330: Запуск однофайловых Source-Code программ[73]
- JEP 331: Low-Overhead Heap Profiling[74]
- JEP 332: безопасность транспортного уровня (TLS) 1.3[75]
- JEP 333: ZGC: экспериментальный сборщик мусора с масштабируемостью и Low-Latency[76]
- JEP 335: движок Nashorn JavaScript[77] объявлен устаревшим
- JEP 336: инструменты Pack200 и API[78]
Обновления Java 11
Подробнее Release, Release date ...
Release |
Release date |
Highlights |
Java SE 11 |
28 июня 2018 года - 26 июля 2018 года |
Рампдаун (в 2 фазах) |
Java SE 11.0.1 |
16 августа 2018 года |
Первый релиз |
Java SE 11.0.2 |
30 августа 2018 года |
Финальный релиз |
Закрыть
Miller, Alex Java 7 (неопр.). Дата обращения: 30 мая 2008. Архивировано 5 февраля 2012 года.