Історія версій Java

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Мова програмування Java мала декілька змін починаючи JDK 1.0, а також багато доповнень в класах та пакетах стандартної бібліотеки. Починаючи з J2SE розвитком Java управляють Java Community Proccess(JCP), які використовують Java Specification Requests (JSRs), щоб запропоновувати та вказувати доповнення та зміни у платформі Java. Мова визначається специфікацією JLS, змінами у JLS управляють JSR 901.

В доповнення до змін мови, найбільш драматичні зміни відбувалися у Java Class Library протягом багатьох років. Бібліотека виросла з декількох сотень класів в JDK 1.0 до більш ніж трьох тисяч в J2SE5. З'явилися нові API (Swing та Java2D), крім цього, багато класів та методів з JDK 1.0 застаріли. Деякі програми дозволяють перетворення програм на Java з однієї версії до іншої (наприклад Java 5.0 портована до 1.4).

Після релізу Java 7, Oracle пообіцяли повернутись до дворічного циклу випуску. Тим не менше, у 2013 Oracle оголосили, що вони бажають відкласти випуск Java 8 на один рік для того, щоб виправити помилки, пов'язані з безпекою Java.

Реліз Рік
JDK Beta 1995
JDK 1.0 1996
JDK 1.1 1997
J2SE 1.2 1998
J2SE 1.3 2000
J2SE 1.4 2002
J2SE 5.0 2004
Java SE 6 2006
Java SE 7 2011
Java SE 8 2014
Java SE 9 2017

JDK Alpha and Beta[ред.ред. код]

Перші альфа та бета-релізи Java у 1995 мали дуже нестабільні API та ABI. Браузер, що підтримував Java, мав назву WebRunner.

JDK 1.0[ред.ред. код]

Перша версія була випущена 23 січня 1996 року і називалася "дуб". Перша стабільна версія JDK 1.0.2 називалася Java 1.

JDK 1.1[ред.ред. код]

Основні доповнення в релізі 19 лютого 1997 року включали:

J2SE 1.2[ред.ред. код]

Кодове ім'я - Playground. Реліз відбувся у грудні 1998 року. Назва версії "J2SE" (Java 2 Platform, Standard Edition) замінив JDK, щоб відрізнити базову платформу J2EE (Java 2 Platform, Enterprise Edition) і J2ME (Java 2 Platform, Micro Edition). Це був дуже важливий реліз Java, так як він втричі збільшив розмір платформи Java до 1520 класів в 59 пакетах. Головні доповнення включали:

  • strictfp (ключове слово)
  • графічний API Swing був об'єднаний з основними класами
  • Віртуальна машина вперше була оснащена JIT компілятором
  • Java plug-in
  • Java IDL,  IDL реалізація для функціональної сумістності CORBA 
  • Колекції

J2SE 1.3[ред.ред. код]

Кодове ім'я Kestrel. Найбільш помітнми змнами в релізі 8 травня 2000 року були:

  • включена HotSpot JVM (HotSpot JVM вперше була випущена в квітні 1999 для J2SE 1.2 JVM)
  • RMI було змінено, щоб забезпечити підримтку сумісності CORBA
  • Java Naming and Directory Interface (JNDI) було включено до основих біблотек (раніше доступний як розширення)
  • Java Platform Debugger Architecture (JPDA)
  • JavaSound
  • Синтетичні прокі-класи

J2SE 1.4[ред.ред. код]

Кодове ім'я Merlin. Реліз 6 лютого 2002 року. Головні зміни включали:

  • Зміни мови
    • assert(вказане в JSR 41)
  • Покращення бібліотеки
    • Регулярні вирази за зразком регулярних виразів Perl
    • Замикання виключень дозволяє виключенням інкапсулювати інші виключення
    • Підтримка протоколу IPv6
    • Неблокуюче IO (названо New Input/Output, NIO) (вказано в JSR 51)
    • API для логування (вказано в JSR 47)
    • I/O API для зчитування та записку картинок в таких форматах як JPEG та PNG
    • Інтегрований XML парсер та XSLTпроцесор(JAXP) (вказано в JSR 5 та JSR 63)
    • Інтегровані розширення для безпеки та криптографії (JCEJSSEJAAS)
    • Java Web Start (вказано в JSR 56)
    • Preferences API (java.util.prefs)

J2SE 5.0[ред.ред. код]

Кодове ім'я Tiger. Реліз 30 вересня 2004 року був також пронумерований як 1.5. Ця версія була розроблена під JSR 176.

Було додано значну кількість нових можливостей:

  • Generics: забезпечують безпеку типів для колекцій та усувають необхідність приведення типів (вказано в JSR 14)
  • Метадані: також називаються аннотації, дозволяють додавати додаткову інформацію для класів, методів і т.д.
  • Autoboxing/unboxing: атоматичне приведення примітивних типів до їх обгорток(вказано в JSR 201)
  • Enumerations: впорядкований лист значень
  • Varargs: останній параметр може бути оголошений, використовуючи три точки (наприклад void drawtext(String... lines)). За допомогою цього метод може приймати будь-яку кількість параметрів.
  • Цикл for each: зроблений для перебору елементів коллекцій, що реалізовують інтерфейс Iterable (specified by JSR 201)
  • Покращена багатопоточність
  • Статичні імпорти

Також були покращення у основній бібліотеці:

  • Автоматична генерація заглушки для об'єктів RMI
  • Оновлено Swing
  • Інтрументи для парельного виконання програм в java.util.concurrent
  • Класс Scanner для зчитування даних з різних потоків та буферів

Java SE 6[ред.ред. код]

Кодове ім'я Mustang. Випущена 11 грудня 2006 року. Ця версія була розроблена під JSR 270.

Головні зміни включали:

  • Підтримка скриптів(JSR 223): API для інтеграції зі скриптовими мова програмування та вбудована інтеграція Mozilla JavaScript Rhino.
  • Покращення основної платформи та Swing.
  • Покращена підтримка веб-сервісів через JAX-WS (JSR 224).
  • JDBC 4.0 (JSR 221).
  • Java Compiler API (JSR 199): an API. що дозволяє програмі вибирати та викликати компілятор програмно.
  • Покращення JAXB до версії 2.0.
  • Підримка вбудованих аннотацій(JSR 269).
  • Покращення графічного інтерфейсу.
  • Покращення JVM: синхронізація та оптимізація компілятора

Java SE 7[ред.ред. код]

Java 7 (кодове ім'я Dolphin) стала доступною для розробників 28 липня 2011 року. 

Доповнення в Java 7 включали:

  • Підтримка JVM для динамічних мов
  • Стиснуті 64-бітні вказівники
  • Зміни згруповані під ім'я Coin:
    • Strings у switch
    • Автоматичне управління ресурсами в try
    • З'явився оператор <>
    • Спрощено оголошення методів зі змінною кількістю аргументів.
    • Бінарні цілі літерали
    • Нижнє підкреслення у числових літералах
    • Catching multiple exception types and rethrowing exceptions with improved type checking
  • Інструменти для паралельного програмування під JSR 166[
  • Нова файлова I/O бібліотека, що підримує різні файлові системи, метадані файлу та сиволічні посилання. З'явилися нові пакети: java.nio.file,java.nio.file.attribute and java.nio.file.spi
  • Timsort, що використовується, щоб відсортувати колекції та масиви об'єктів замість merge sort
  • XRender для Java 2D
  • Нові API для графіки
  • Підтримка нових мережевих протоколів, включаючи SCTP та Sockets Direct Protocol
  • Upstream оновлення до XML та Unicode
  • Набір правил для розгортування

Java SE 8[ред.ред. код]

Java 8 була випущена 18 березня 2014 року[джерело?].

На думку розробників мови програмування Java, 8-ма версія стала найбільшим кроком її еволюції. Порівняно невелика кількість нових засобів — лямба вирази, посилання на методи та функційні інтерфейси разом перетворили Java на багатопарадигмову мову програмування: на додачу до об'єктно-орієнтованого з'явилися елементи функційного програмування. Разом з мовою еволюції зазнали й супутні програмні бібліотеки[1]. Так, наприклад, в API для колекцій додано підтримку Stream API, завдяки чому можуть відбуватися масові операції над колекціями[2].

Ця версія включає:[3]

  • JSR 308: анотації для типів даних. Анотації можна виконати у всіх випадках використання змінних цього типу. Таким чином поліпшено перевірку правильності коду.
  • JSR 310: API для часу та дат
  • JSR 335: лямбда вирази та методи за замовченням (англ. default methods). Методи за замовченням дозволяють зберегти бінарну сумісність зі старим кодом при додаванні нових можливостей до інтерфейсів програмних бібліотек[2]
  • Посилання на методи: разом з лямбда виразами спрощують написання лямбда виразів[2]
  • Роботу з беззнаковими цілими числами (32- та 64- бітні java.lang.Integer та Long відповідно)[4]

Змін також зазнали

  • JSR 003: Java Management Extensions
  • JSR 114: JDBC Rowsets
  • JSR 160: JMX Remote API
  • JSR 173: Потокове API для XML (SAX)
  • JSR 199: Java Compiler API
  • JSR 206: Java API для обробки XML документів
  • JSR 221: JDBC 4.0
  • JSR 269: Pluggable Annotation-Processing API
  • Був замінений рушій для виконання скриптів JavaScript, замість Rhino обраний Nashorn[2]

У версії не було реалізовано модульність платформи Java, проте було вжито деяких заходів для полегшення її реалізації у наступних релізах[3]. Так, з'явилися «компактні профілі» (англ. Compact Profiles), які дозволяють реалізувати роботу програм на неповних реалізаціях платформи Java[2].

Java SE 9[ред.ред. код]

На JavaOne 2011 Oracle обговорювали функції, які вони збираються додати до Java 9, серед яких були: покращення підтримки багатогігабайтних куп, краща інтеграція машинного коду та JVM, що може сама себе налаштовувати. На початку 2016 реліз було перенесено на березень 2017.

  • JSR 294: Модульна організація JDK під проектом Jigsaw (Java Module System)
  • JSR 354: API для грошей та валюти
  • JEP 222: jshell(Java REPL)
  • Модуляризація

Були також плани додати автоматичне розпаралелювання, використовуючи OpenCL та реактивні потоки.

Java SE 10[ред.ред. код]

Є припущення представлення об'єктів без типів значення. Планується приблизно на 2018 рік.


  1. James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Alex Buckley (2015-02-13). Preface to the Java SE 8 Edition. The Java® Language Specification. Java SE 8 Edition. Oracle America, Inc. 
  2. а б в г д What's New in JDK 8. Oracle. Процитовано 3 березня 2017. 
  3. а б Mark Reinhold (2013/11/4). JSR 337: Java SE 8. Public Review Specification. Oracle and/or its affiliates. 
  4. Darcy (Jan 20, 2012). Unsigned Integer Arithmetic API now in JDK 8. Oracle.