Декабрь 2020 (лицензия для персонального использования Oracle)
Сентябрь 2023 (для AdoptOpenJDK
)
март 2025
Java SE 9
сентябрь 2017
Март 2018 (OpenJDK)
−
Java SE 10
март 2018
Сентябрь 2018 (OpenJDK)
−
Java SE 11 (LTS)
сентябрь 2018
Сентябрь 2022
сентябрь 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 (23 января 1996)
Первый выпуск. Первой стабильной версией стала JDK 1.0.
JDK 1.1 (19 февраля 1997)
Наиболее значимые дополнения:
обширное изменение событий библиотеки AWT
в язык добавлены внутренние классы
JavaBeans (классы в языке Java, написанные по определённым правилам. Они используются для объединения нескольких объектов в один для удобной передачи данных)
JDBC (соединение с базами данных) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД
ограниченная рефлексия (модификация во время выполнения невозможна, есть только наблюдение собственной структуры)
J2SE 1.2 (8 декабря 1998)
Кодовое имя
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 являются:
Кодовое имя
Tiger
.
Спецификация Java 5 была выпущена в сентябре 2004 года. В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:
Перечислимые типы
(enum). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.
Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.
Перечисление может реализовывать интерфейсы.
Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым.
Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода.
Средства обобщённого программирования (generics) — механизм, аналогичный
Eiffel
(позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
Методы с неопределённым числом параметров.
Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками (например, между int и Integer). Наличие такой возможности упрощает код, поскольку исключает необходимость в выполнении явных преобразований типов в очевидных случаях.
Java 7 (кодовое имя
Dolphin
) это крупное обновление Java.
. Процесс разработки был разбит на 13 этапов; последний этап был достигнут 18 февраля 2011
.
Сжатые 64-битные указатели
Доступны в Java 6 с параметром
Изменения в рамках
Project Coin
.
Возможности, включенные в Project Coin:
Строки в switch
Автоматическое управление ресурсами
Выведение типов при создании экземпляра обобщённого (generic) класса
Упрощен вызов метода с переменным числом аргументов
Поддержка подчеркиваний в качестве разделителей цифр для чисел (Возможность разбивать визуально числа на разряды, увеличивает удобочитаемость)
Поддержка коллекций на уровне языка
Средства для параллельного исполнения в рамках JSR 166
Новая библиотека
Ввода-вывода
для улучшения платформонезависимости и поддержки метаданных и символьных ссылок. Пакеты: java.nio.file и java.nio.file.attribute
Stream API – Возможность выполнения последовательности операций над элементами массива, а также возможность производить их параллельно (parallelStream);
Добавлены операции над ассоциативными массивами (Map)
Появились ссылки на метод или конструктор
Появились предикаты, функции, поставщики (Фабрики объектов), опциональные значения, конструктор компаратора.
Java 9
На
2011, Oracle обсудила возможности, которые возможно были бы выпущены к Java 9 в 2016.
Java 9 должна была поддерживать улучшенную поддержку многогигабайтных куч, лучшую интеграцию
нативного кода
, изменённый стандартный
сборщик мусора
(G1 с «укороченным временем отзыва»)
и
JVM.
В начале 2016 релиз Java 9 был отложен на март 2017,
позже перенесён на июль 2017,
а потом перенесён на сентябрь 2017,
из-за спорного принятия проекта Jigsaw Исполнительный комитет Java,
который заставил Oracle исправить некоторые проблемы безопасности и критические технические вопросы. В последние дни июня 2017, Исполнительный комитет Java выразил единогласное согласие за систему модулей.
JEP 266: обновления библиотек многопоточности;
включение в Java проекта
,
включая класс
Flow
.
JEP 193: Variable Handles:
определение стандарта вызова эквивалентов различных операций
java.util.concurrent.atomic
и
sun.misc.Unsafe
.
JEP 282: jlink (
компоновщик
Java):
создание инструмента, который может скомпоновать и оптимизировать комплект модулей с зависимостями в Runtime. Это позволяет создавать запускаемые файлы без дополнительных установок, даже JVM.
Первый
RC
Java 9 был выпущен 9 августа 2017.
Первый стабильный релиз был 21 сентября 2017
Обновления Java 9
Релиз
Дата релиза
Примечания
Java SE 9
21 сентября 2017 года
Первый релиз
Java SE 9.0.1
17 октября 2017 года
Исправление 12 багов, переход на новую систему нумерации
Java SE 9.0.4
16 января 2018 года
Финальный релиз; патчи безопасности и исправление критических ошибок
Java 10
OpenJDK 10 вышла 20 марта 2018 года, было добавлено 12 новых функций. Среди них:
JEP 286: Автоматическое выведение типа локальных переменных
JEP 317: Экспериментальный Java-based JIT компилятор.
Это адаптация динамического компилятора
Graal
для платформы
Linux x64
JEP 310: Обмен информацией о классах приложения
JEP 322: Смена стратегии версионирования Java
JEP 307: Полностью параллельная сборка мусора для G1
JEP 304: Интерфейс Garbage-collector
JEP 314: Расширение с дополнительные языковыми тегами Unicode