JDK 10: Новите неща в Java 10

JDK 10, изпълнение на Java Standard Edition 10, беше пуснато на 20 март 2018 г. Основните подобрения включват местни типове променливи, както и подобрения за събиране и компилация на боклук.

JDK 10 е планирано да бъде само краткосрочно издание, а публичните актуализации за JDK 10 трябва да приключат след шест месеца. Предстоящият JDK 11, който се очаква през септември, ще бъде версия за дългосрочна поддръжка (LTS) на Java. LTS изданията се излизат на всеки три години.

Oracle е определила шестмесечен каданс за изданията на Java. Имаше планове да назовем това надстройване и неговите наследници въз основа на годината и месеца на изданието, като първото издание ще се нарече Java 18.3. Но тези планове бяха отменени, след като бяха повдигнати възражения.

Къде да изтеглите Java JDK 10

Можете да изтеглите JDK 10 от уебсайта на Oracle.

Нови и подобрени функции в JDK 10

Основните характеристики на JDK 10 включват:

  • Локално извеждане на тип променлива, за да подобри езика Java, за да разшири извода на типа до декларации на локални променливи с инициализатори.
  • Паралелно пълно събиране на боклука за събирача на боклук G1, за да се подобрят най-лошите латентности.
  • Споделяне на данни от клас приложения за оптимизиране на времето за стартиране и отпечатъка. Съществуващата функция за споделяне на данни за клас е разширена, така че класовете на приложения могат да бъдат поставени в споделения архив.
  • Експериментален съвременен компилатор, Graal, може да се използва на платформата Linux / x64.
  • Информираност на Docker. Когато се изпълнява на Linux системи, Java Virtual Machine (JVM) ще знае дали работи в контейнер на Docker. Специфичната за контейнера информация - броят на централните процесори и общата памет, разпределени за контейнера - ще бъде извлечена от JVM, вместо да заявява операционната система. (Броят на процесорите, достъпни за процеса Java, се изчислява от определени набори, споделяния или квоти на процесори.)
  • Три нови опции на JVM, за да дадат на потребителите на контейнери на Docker по-голям контрол върху системната памет.
  • Отстраняване на грешка за коригиране на механизма за прикачване при опит за прикачване от хостов процес към Java процес, който е в контейнер на Docker.
  • По-кратко време за стартиране на инструмента jShell REPL, особено когато се използва стартов файл с много фрагменти.
  • Нови API за по-добро създаване на немодифицируеми колекции. Методите copyOf,, Set.copyOfи Map.copyOfсъздават нови екземпляри на колекция от съществуващи екземпляри. Нови методи toUnmodifiableList, toUnmodifiableSetи toUnmodifiableMapсе добавят към Collectorsкласа в пакет поток, което позволява на елементите на поток, които се събират в една unmodifiable събиране.
  • Локална променлива тип извод, за да се подобри езикът за разширяване на извода на типа до локални променливи. Целта е да се намали „церемонията“, свързана с кодирането, като същевременно се запази ангажиментът към безопасността на статичния тип.
  • Изчистен интерфейс за събиране на боклук за подобряване на изолирането на изходния код на различни събирачи на боклук. Целите на тези усилия включват по-добра модулност за вътрешен код за събиране на боклука във виртуалната машина HotSpot и улесняване на добавянето на нов събирач на боклук към HotSpot.
  • Паралелно пълно събиране на боклука за събирача на боклук G1. Целта е да се подобрят латентните случаи в най-лошия случай чрез прилагане на паралелизъм.
  • Разрешаване на HotSpot да разпределя купчината обекти на алтернативно устройство с памет, като модул памет NVDIMM, посочен от потребителя. Тази функция предвижда бъдещите системи да имат разнородна архитектура на паметта.
  • Активиране на Grall Java-базиран компилатор точно навреме, за да се използва експериментално на платформата Linux / x64.
  • Консолидиране на хранилищата на гората JDK в едно хранилище, за да се оптимизира развитието. Досега кодовата база беше разбита на множество репозитории, което може да доведе до проблеми с управлението на изходния код.
  • Споделяне на данни от клас на приложение, за да се намали отпечатъкът, като се споделят общи метаданни за клас в различни процеси. Подобрява се и времето за стартиране.
  • Локални ръкостискания за нишки, за изпълнение на обратно извикване на нишки, без да се извършва глобална VM safepoint. Отделни нишки могат да бъдат спрени вместо всички нишки или никакви нишки.
  • Предоставяне на набор по подразбиране на сертификати на корен на сертифициращ орган в JDK. Целта е да се предоставят коренни сертификати с отворен код в програмата Java SE Root CA на Oracle, за да се направи OpenJDK по-привлекателен за разработчиците.

Дългосрочната пътна карта на Java

Ето какво каза Oracle, което се разглежда за следващите и по-нови версии на Java SE:

  • Проектът Amber, който е инкубатор за по-малки, ориентирани към производителността езикови характеристики, които включват извод за локален променлив тип, за да намали церемонията, свързана с писането на Java код; усъвършенствани преброявания, за подобряване на изразителността на конструкцията на преброяването, като позволяват променливи на типа в изброявания и извършват по-рязка проверка на типа за константи на преброяване; и остатъци от ламбда, за да се увеличи използваемостта на ламбда и референции на методи.
  • Проектирайте Панама, за да свържете JVM и нативния код, включващ извикване на родна функция от JVM и достъп до данни от JVM.
  • Valhalla, проект за инкубатор за усъвършенствани Java VM и кандидати за езикови функции, включително типове стойности и обща специализация.
  • Project Loom, за да се намали сложността при писане на едновременни приложения. Планът призовава за добавяне на алтернативни реализации на нишки в потребителски режим, ограничени продължения и други конструкции, включващи манипулация на стека на повикванията. Основната цел на това предложение е да предложи алтернативно изпълнение на нишки, управлявано от планиращи програми, написани на Java. Моделът за програмиране на Java на обикновени нишки на Java ще бъде запазен, докато производителността се подобрява и отпечатъкът се намалява.

С новия шестмесечен график на пускане, функциите, които пропускат едно издание, може да се забавят само с шест месеца, когато излезе следващото издание. Освен обявеното за JDK 10, Oracle не се ангажира с това кога някоя от новите предложени функции действително ще бъде достъпна в Java.