История версий Java SE
Ошибка скрипта: Модуля «Unsubst» не существует.
Ошибка скрипта: Модуля «Основная статья» не существует.Версии
Версия | Дата выпуска | Конец бесплатной поддержки | Конец LTS |
---|---|---|---|
Шаблон:Прекращено | 1995 | неизвестно | неизвестно |
Шаблон:Прекращено | январь 1996 | ||
Шаблон:Прекращено | февраль 1997 | ||
Шаблон:Прекращено | декабрь 1998 | ||
Шаблон:Прекращено | май 2000 | ||
Шаблон:Прекращено | февраль 2002 | октябрь 2008 | февраль 2013 |
Шаблон:Прекращено | сентябрь 2004 | ноябрь 2009 | апрель 2015 |
Шаблон:Прекращено | декабрь 2006 | апрель 2013 | декабрь 2018 |
Шаблон:Частично | июль 2011 | апрель 2015 | июль 2022 |
Шаблон:Частично | март 2014 |
|
март 2025 |
Шаблон:Прекращено[2][3][4] | сентябрь 2017 | Март 2018 (OpenJDK) | Шаблон:Нет1 |
Шаблон:Прекращено | март 2018 | Сентябрь 2018 (OpenJDK) | Шаблон:Нет1 |
Java SE 11 (LTS) | сентябрь 2018 | Сентябрь 2022[1] | сентябрь 2026 |
Шаблон:Прекращено | март 2019 | Сентябрь 2019 | Шаблон:Нет1 |
Java SE 13 | сентябрь 2019 | Март 2020 | Шаблон:Нет1 |
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-приложений с различными СУБД
- RMI (программный интерфейс вызова удаленных методов)
- ограниченная рефлексия (модификация во время выполнения невозможна, есть только наблюдение собственной структуры)
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 являются:
- Swing включен в спецификацию платформы Java 2
- Коллекции
- Policy файлы
- Цифровые сертификаты пользователя
- Библиотека Accessibility
- Java 2D
- Поддержка технологии drag-and-drop
- Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках
- Поддержка воспроизведения аудиофайлов нескольких популярных форматов
- Полная поддержка технологии CORBA
- Включение в JDK для Java 2 JIT-компилятора, улучшенная производительность
- Усовершенствования инструментальных средств JDK, включая поддержку профилирования Java-программ
J2SE 1.3 (8 мая 2000)[править]
Кодовое имя Kestrel. Ошибка скрипта: Модуля «Unsubst» не существует.
J2SE 1.4 (6 февраля 2002)[править]
Кодовое имя Merlin. Ошибка скрипта: Модуля «Unsubst» не существует.
J2SE 5.0 (30 сентября 2004)[править]
Кодовое имя Tiger. Спецификация Java 5 была выпущена в сентябре 2004 года. В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:
- Перечислимые типы (enum). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.
- Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.
- Перечисление может реализовывать интерфейсы.
- Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым.
- Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода.
- Средства обобщённого программирования (generics) — механизм, аналогичный Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
- Методы с неопределённым числом параметров.
- Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками (например, между int и Integer). Наличие такой возможности упрощает код, поскольку исключает необходимость в выполнении явных преобразований типов в очевидных случаях.
- Разрешён импорт статических методов и переменных.
- В язык введён цикл по коллекции объектов (итератор, foreach).
Java SE 6 (11 декабря 2006)[править]
Ошибка скрипта: Модуля «Основная статья» не существует.
Кодовое имя Mustang.
Ошибка скрипта: Модуля «Unsubst» не существует.
Java SE 7 (7 июля 2011)[править]
Java 7 (кодовое имя Dolphin[5]) это крупное обновление Java.[6]. Процесс разработки был разбит на 13 этапов; последний этап был достигнут 18 февраля 2011[7][8].
Новые возможности в Java 7[9]
- Поддержка виртуальной машиной динамических языков в рамках Мультиязыковой виртуальной машины
- Сжатые 64-битные указатели[10] Доступны в Java 6 с параметром -XX:+UseCompressedOops
- Изменения в рамках Project Coin.[11][12] Возможности, включенные в Project Coin:
- Строки в 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 г. | Данный релиз содержит:
|
Java SE 7
Update 2 |
12 декабря 2011 г. | Данный релиз содержит:
|
... | ||
Java SE 7
Update 80 |
14 апреля 2015 г. | Данный релиз содержит:
Это последний выпущенный общедоступный релиз Java SE 7 |
Java SE 8 (18 марта 2014)[править]
Вышла 18 марта 2014 года[23].
Новые возможности в Java 8
- Лямбда-выражения и аннотация @FunctionalInterface
- Возможность наличия у метода интерфейса реализации по умолчанию
- Аннотации типов
- JavaScript-движок Nashorn
- Base64 декодер (java.util.Base64)
- Date & Time API (java.time)
- Stream API – Возможность выполнения последовательности операций над элементами массива, а также возможность производить их параллельно (parallelStream);
- Добавлены операции над ассоциативными массивами (Map)
- Появились ссылки на метод или конструктор
- Появились предикаты, функции, поставщики (Фабрики объектов), опциональные значения, конструктор компаратора.
Java 9[править]
На Ошибка скрипта: Модуля «Не переведено» не существует. 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, Ошибка скрипта: Модуля «Не переведено» не существует.)[33][34][35]
- JEP 222: Ошибка скрипта: Модуля «Не переведено» не существует.: консоль Java (Java REPL)[36][37]
- JEP 295: Ahead-of-Time компилятор Ошибка скрипта: Модуля «Не переведено» не существует.[38]
- JEP 268: XML Catalog[39]
- JEP 266: обновления библиотек многопоточности;[40] включение в Java проекта Ошибка скрипта: Модуля «Не переведено» не существует.,[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 Шаблон:Realmonth 2017 года | Первый релиз |
Java SE 9.0.1[48] | 17 Шаблон:Realmonth 2017 года | Исправление 12 багов, переход на новую систему нумерации |
Java SE 9.0.4[49] | 16 января 2018 года | Финальный релиз; патчи безопасности и исправление критических ошибок |
Java 10[править]
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 | Highlights |
---|---|---|
Java SE 10 | 20 марта 2018 года | Первый релиз |
Java SE 10.0.1 | 17 апреля 2018 года | Патчи безопасности и исправление 5 багов |
Java SE 10.0.2 | 17 июля 2018 года | Финальный релиз; патчи безопасности, исправление 7 багов |
Java 11[править]
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 | Highlights |
---|---|---|
Java SE 11 | 28 июня 2018 года - 26 июля 2018 года | Рампдаун (в 2 фазах) |
Java SE 11.0.1 | 16 августа 2018 года | Первый релиз |
Java SE 11.0.2 | 30 августа 2018 года | Финальный релиз |
См. также[править]
Примечания[править]
- ↑ 1,0 1,1 Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ JDK7 Архивная копия от 10 июня 2007 на Wayback Machine, Sun.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.Ошибка скрипта: Модуля «unsubst» не существует.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ 40,0 40,1 Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Yesno' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
- ↑ Ошибка Lua в package.lua на строке 80: module 'Module:Languages' not found.
Ссылки[править]
This article "История версий Java SE" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:История версий Java SE. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.