История версий Java SE
Версия | Дата выпуска | Конец бесплатной поддержки | Конец 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 |
|
март 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 | − |
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.
Этот раздел не завершён. |
J2SE 1.4 (6 февраля 2002)
Кодовое имя Merlin.
Этот раздел не завершён. |
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.
Этот раздел не завершён. |
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
На 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 года | Финальный релиз; патчи безопасности и исправление критических ошибок |
Java 10
Java 11
Java 12
См. также
Примечания
- ↑ 1 2 AdoptOpenJDK (англ.).
- ↑ Shapiro, Alex (2017-09-21). "Oracle Announces Java SE 9 and Java EE 8". Oracle Press Releases (англ.). Архивировано 2 октября 2018. Дата обращения: 20 апреля 2019.
{{cite news}}
: Неизвестный параметр|deadlink=
игнорируется (|url-status=
предлагается) (справка) - ↑ "Компания Oracle выпустила Java SE 9 и Java EE 8". OpenNET. 2017-09-22. Архивировано 23 сентября 2017. Дата обращения: 20 апреля 2019.
- ↑ Release Notes for JDK 9 and JDK 9 Update Releases (англ.). Архивировано 20 апреля 2019 года.
- ↑ JDK7 Архивная копия от 10 июня 2007 на Wayback Machine, Sun.
- ↑ Flanagan, David The Open Road: Looking Ahead to Java 7 (8 сентября 2007). Дата обращения: 9 марта 2008. Архивировано 5 февраля 2012 года.
- ↑ JDK 7 at OpenJDK
- ↑ JDK 7
- ↑ Miller, Alex Java 7 . Дата обращения: 30 мая 2008. Архивировано 5 февраля 2012 года.
- ↑ Compressed oops in the Hotspot JVM . OpenJDK. Дата обращения: 16 апреля 2010. Архивировано из оригинала 31 августа 2009 года.
- ↑ Project Coin . Sun Microsystems. Дата обращения: 30 марта 2009. Архивировано 4 октября 2012 года.
- ↑ Darcy, Joseph D. Project Coin: Small Language Change Proposal Form Available (27 января 2009). Дата обращения: 30 марта 2009. Архивировано из оригинала 30 января 2009 года.
- ↑ Proposal: Strings in Switch
- ↑ Proposal: Automatic Resource Management
- ↑ Proposal: Improved Type Inference for Generic Instance Creation
- ↑ PROPOSAL: Simplified Varargs Method Invocation
- ↑ Darcy, Joseph D. Project Coin: The Final Five (Or So) . Дата обращения: 16 апреля 2010. (недоступная ссылка)
- ↑ Concurrency JSR-166 . Дата обращения: 16 апреля 2010. Архивировано 26 июля 2013 года.
- ↑ File I/O (Featuring NIO.2) (The Java™ Tutorials > Essential Classes > Basic I/O)
- ↑ Legacy File I/O Code (The Java™ Tutorials > Essential Classes > Basic I/O)
- ↑ Re-thinking JDK 7 (8 сентября 2010). Дата обращения: 20 сентября 2010. Архивировано из оригинала 24 сентября 2010 года.
- ↑ Java SE 7 Update Release Notes . www.oracle.com. Дата обращения: 23 апреля 2018.
- ↑ Java SE 9 Release Date . (недоступная ссылка)
- ↑ Andy Patrizio. Mark your calendar: Java 9 finally has a release date (англ.). Network World (7 мая 2015). Дата обращения: 12 ноября 2017.
- ↑ Uwe Schindler. Java 9’s new garbage collector: What’s changing? What’s staying? (англ.). jaxenter (26 июня 2015). Дата обращения: 12 ноября 2017.
- ↑ Eric Bruno. JavaOne: JavaFX 2, Java on iOS (англ.). Dr.Dobb's. Дата обращения: 12 ноября 2017.
- ↑ Euan Viveash (2016-01-05). "Java 9 Release Date Now March, 2017". FileHippo (англ.). Дата обращения: 12 ноября 2017.
- ↑ Simon Sharwood (2016-09-14). "JDK 9 release delayed another four months". The Register (англ.). Дата обращения: 12 ноября 2017.
- ↑ Christina Mercer (2017-09-26). "Java 9: Release date and new features". TechWorld (англ.). Дата обращения: 12 ноября 2017.
- ↑ Paul Krill (2017-05-09). "Java modularity specification opposed by Red Hat, IBM is voted down". InfoWorld?! (англ.). Дата обращения: 12 ноября 2017.
- ↑ Richard Chirgwin (2017-07-02). "Java 9 release back on track, community votes 'yes'". The Register (англ.). Дата обращения: 12 ноября 2017.
- ↑ JSR 376: JavaTM Platform Module System (англ.). Java Community Process. Дата обращения: 12 ноября 2017.
- ↑ Project Jigsaw (англ.). Дата обращения: 12 ноября 2017.
- ↑ Mark Reinhold. Java Module-System Requirements — DRAFT 12 (англ.) (19 апреля 2011). Дата обращения: 12 ноября 2017.
- ↑ Paul Krill (2012-07-18). "Project Jigsaw delayed until Java 9". InfoWorld?! (англ.). Дата обращения: 12 ноября 2017.
- ↑ JEP 222: jshell: The Java Shell (Read-Eval-Print Loop) (англ.). Дата обращения: 12 ноября 2017.
- ↑ Kulla (англ.). Дата обращения: 12 ноября 2017.
- ↑ JEP 295: Ahead-of-Time Compilation (англ.). Дата обращения: 12 ноября 2017.
- ↑ JEP 268: XML Catalogs (англ.). Дата обращения: 12 ноября 2017.
- ↑ 1 2 JEP 266: More Concurrency Updates (англ.). Дата обращения: 12 ноября 2017.
- ↑ Reactive Streams (англ.). Дата обращения: 12 ноября 2017.
- ↑ Doug Lea. [concurrency-interest] jdk9 Candidate classes Flow and SubmissionPublisher (англ.) (15 января 2015). Дата обращения: 12 ноября 2017.
- ↑ Abraham Marín Pérez (2015-01-01). "Reactive Streams Releases First Stable Version for JVM". InfoQ (англ.). Дата обращения: 12 ноября 2017.
- ↑ JEP 282: jlink: The Java Linker (англ.). Дата обращения: 12 ноября 2017.
- ↑ mark.reinhold. JDK 9: First Release Candidate (англ.) (9 августа 2017). Дата обращения: 12 ноября 2017.
- ↑ Christina Mercer (2017-09-26). "Java 9: Release date and new features". TechWorld[англ.] (англ.). Дата обращения: 12 ноября 2017.
- ↑ Java Development Kit 9 Release Notes (21 сентября 2017). Дата обращения: 12 ноября 2017.
- ↑ JDK 9.0.1 Release Notes (17 октября 2017). Дата обращения: 12 ноября 2017.
- ↑ Java™ SE Development Kit 9.0.4 Release Notes . www.oracle.com. Дата обращения: 5 февраля 2019.
Ссылки
- Java SE Naming and Versions (англ.)