Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java 11 что нового

Java 11: в ожидании удаления Java EE, JavaFX и CORBA

Поддержка CORBA, Java EE и JavaFX в Java 11 будет удалена, но на рассмотрении также находятся новые функции. Подтверждено 7 нововведений.

В Библиотеке программиста уже была статья о «плюшках» JDK 10. Что же Oracle готовит к выпуску Java 11? Релиз одиннадцатой версии состоится в сентябре 2018 г. Напомним, что Oracle выпускает обновленные версии каждые полгода, поэтому анонс Java 11 сразу после выпуска десятой – нормальная практика.

JDK 11 сулит потерю ряда функциональных возможностей для джавистов. Планируется удаление таких модулей, как Jakarta EE (ранее Java EE), CORBA и даже JavaFX (Swing при этом никуда не девается).

Это эталонная долгоиграющая реализация Java SE, в отличие от уже упомянутой Java 10. Именно поэтому 11-ая версия настроена на получение более широкой поддержки с предупреждениями о безопасности и патчами аж до 2026 года.

Давайте посмотрим, что войдет в обновленный функционал Java 11

Пока что в новой версии всего три новые функции, но в дальнейшем их будет больше. Планируют ввести:

  1. Epsilon – сборщик мусора «no-op». Он предназначен для обработки выделения памяти. Примерами использования данного сборщика являются тестирование производительности, интерфейса JVM и значения нагрузки (Memory Pressure). Epsilon также сможет использоваться в качестве инструмента для решения оперативных задач.
  2. Изменение коснется и синтаксиса локальной переменной лямбда-параметров. Он будет согласовывать синтаксисы объявления локальных переменных и формальных параметров в неявно типизированных выражениях. Благодаря такому подходу var сможет использоваться для объявления формальных параметров в неявно типизированных лямбда-выражениях.
  3. Новая форма пула CONSTANT_Dynamic (пул констант) и ее поддержка за счет расширения формата файла Java-класса. Суть в том, что будут уменьшены затраты и количество несоответствий в разработке новых форм.

А вот с чем придется попрощаться

Как вы помните, такие модули, как CORBA и Java EE, стали устаревшими с выходом Java Standard Edition 9. Oracle планировала их убрать из Java, и в 11-ой версии эта идея станет реальностью.

В декабре 2006-го была представлена Java SE 6, которая включила в себя стек web-сервисов и 4 технологии Java Enterprise Edition, среди которых оказались JAF, JAX-WS, Common Annotations for Java и JAXB. Время шло, и версии EE стремительно развивались, так что возникало несоответствие данных технологий, а техническая поддержка двух редакций только усложнялась. Вскоре, когда появились автономные версии Java Enterprise Edition на независимых ресурсах, было объявлено об отсутствии надобности включать их в JDK и Java SE.

Даже сейчас некоторые ПО, разработанные на базе JDK для API и инструментов Java EE, не запускаются и даже не компилируются. 6-8 версии повлияли на усиление несовместимости. В итоге представители Oracle сделали заявление о том, что разработчики могут развернуть альтернативные версии Enterprise Edition.

А вот архитектура CORBA и вовсе признана пережитком прошлого, так как ее истоки лежат в далеких 90-х. Oracle не выявила интереса к созданию современных приложений на базе CORBA, да и стоимость поддержки перевешивает получаемые преимущества.

На данный момент не существует версий CORBA, которые бы поддерживались независимыми разработчиками, да и вряд ли кто-то захочет взять на себя бремя поддержки API.

Что же касается JavaFX – модули будут удалены, и в дальнейших планах обновления, которое производится раз в 6 месяцев, они не появляются.

Вас также могут заинтересовать другие статьи по теме:

Что нового в Java 11

Даёшь пятилетку за полгода!

Давно прошли времена, когда релиза новой версии Java приходилось ждать годами. Теперь новые версии выходят раз в полгода. Буквально пару дней назад появилась Java 11. Официальная документация по этой версии доступна на сайте Oracle. Что же в ней нового? Давайте рассмотрим нововведения в Java 11, и как они смогут облегчить или отяжелить нашу жизнь.

Читать еще:  Код ошибки 0xc000007b

Все примеры ниже были проверены в JShell.

Содержание

Новые методы java.lang.String в Java 11

В Java раньше был метод trim, который убирал пробелы слева и справа в строке, но у него была проблема в том, что он убирал только пробелы. В Java 11 добавили новый метод strip , который возвращает строку, в которой убраны все невидимые символы в левой и правой частях строки. Невидимые символы в методе strip определяются с помощью Character . isWhitespace ( char ) :

Также существуют аналогичные методы для удаления невидимых символов в левой части строки и в правой части строки:

Также в Java 11 в классе String появилась отличная функция из isBlank , которая возвращает true , если строка пуста или состоит только из пробельных символов. Пробельные символы проверяются через Character . isWhitespace ( int ) . (похоже, что её скопировали из StringUtils в Apache Commons):

Так как начиная с Java 9 у нас строки делятся на те, что содержат только латинские символы, и на те, которые содержат символы других алфавитов, то внутри isBlank у нас две реализации: одна для строк с только латинскими символами, а вторая для строк с другими символами.

В Java 11 в класс строки также был добавлен метод repeat , который возвращает строку, содержащую исходную строку указанное количество раз:

Даёшь stream-ы в массы! В класс java . lang . String в Java 11 был добавлен новый метод lines ( ) , который возвращает все строки (разделённые символом перевода строки r или n или r n ) в Stream:

Var в лямбда-выражениях

В Java 10 был добавлен вывод типа с помощью var. Начиная с Java 11 var можно использовать и в лямбда выражениях. Например, раньше было:

Теперь можно писать так:

В таком виде от нашего var пользы, конечно, не очень много. Основная польза в том, что теперь мы можем применять аннотации к лямбда-параметрам, что раньше было недоступно из-за отсутствия типа:

Запуск программ, состоящих из одного файла

В Java 11 стало гораздо проще запускать программы, состоящие только из одного файла. Раньше последовательность действий была такой:

Теперь достаточно одной команды:

В данном случае будет автоматически распознано, что файл является исходным кодом Java. Он будет скомпилирован и запущен автоматически.

Если же нам нужно передать какие-нибудь аргументы, то аргументы JVM мы можем указать перед именем файла, а аргументы самой программы нужно указывать после имени файла.

HttpClient стал частью стандарта Java 11

До Java 9 Apache HttpClient была фактически стандартной библиотекой для отправки HTTP-запросов. В Java 9 HttpClient был включён в библиотеки, но только как модуль инкубатора. Начиная с Java 11 HttpClient является частью стандартных библиотек. Больше не нужно для этого подключать внешние зависимости. Сам HttpClient находится в пакете java . net . http .

Удалены устаревшие методы из java.lang.Thread

В Thread (который я когда-то описывал в статье про многопоточность в Java) уже давно болтаются устаревшие методы destroy ( ) и stop ( Throwable ) . Теперь они удалены.

В java.nio.file.Files добавлены новые методы

В java . nio . file . Files (я уже как-то описывал его в статье про NIO 2) добавлены методы для чтения содержимого файла в строки и для записи файла из строки.

Читает содержимое файла в строку. Файл расценивается, как содержащий текст в кодировке UTF-8.

Читает содержимое файла по пути path в строку в указанной кодировке.

Записывает последовательность символов csq в файл в кодировке UTF-8.

Записывает последовательность символов в файл с указанной кодировкой.

В java.util.function.Predicate добавлен метод not

Возвращает предикат, который является отрицанием исходного:

Читать еще:  Java run application

Epsilon Garbage Collector

Новый сборщик мусора. Я уже описывал некоторые из сборщиков мусора, которые существовали до этого ( Parallel GC, Serial GC, G1). Теперь ещё есть Epsilon Garbage Collector, который на самом деле не собирает мусор. По сути он не делает ничего. Предполагается использовать для замеров влияния сборщиков мусора на выполнение программы.

Сборщик мусора ZGC

Новый экспериментальный сборщик мусора, который выполняет почти все действия параллельно с выполнением основной программы. Не использует деление на поколения, вместо этого перехватывает чтение объекта из программы, всегда возвращая корректную ссылку.

Поддержка Unicode 10

Добавлена поддержка Unicode 10, который включает в себя символ биткоина и много других полезных символов.

Учтите, что начиная с Java 9 мы можем использовать символы Unicode в Properties-файлах, а значит, что мы теперь можем использовать в них символ биткоина.

Пример, записывающий символ биткоина в текстовый файл:

Зарелизилась Java 11 — что же там нового?

Парни, это случилось. Наконец-то зарелизилась следующая версия long-term support (LTS) версия Java 11 — https://blogs.oracle.com/java-platform-group/introducing-java-se-11. Что же хорошего там появилось?

В первую очередь, к сожалению, надо поговорить за плохие новости. Пришло время сказать: «Пока» — Ораклу. Увы, пацаны решили, что хватит за бесплатно поставлять LTS-версии Джавы. Теперь все длинные релизы будут только за деньги. Oracle просто позволит вам пользоваться 11-ой джавой до тех пор, пока не появится 12-ая версия, то есть, около 6 месяцев (примерно, до марта 2019 года, когда должен состояться релиз Java 12).

Как жить дальше? Если честно, не очень понятно. У нас есть ряд Java-вендоров: IBM, RedHat, Oracle, Azul и Excelsior JET (последние две ещё и из Новосибирска, респект пацанам, делают реальную работу). Ещё у нас есть OpenJDK — по факту, почти нолная копия версии Oracle Java. Бесплатно, как я понимаю, сейчас можно использовать только OpenJDK. Вроде как, Java 11 от OpenJDK будет доступна вплоть до Сентября 2022 года. Наверное, это сейчас единственный здравый вариант.

По поводу Фич. Их, на самом деле, довольно много. Ведь весь мир сидел на Java 8, а сейчас все начнут мигрировать на Java 11. Поэтому, по факту мы рассматриваем сразу 3 релиза. На самом деле, уже есть довольно много статей, которые описывают, что произошло за это время. Например, эта — https://winterbe.com/posts/2018/09/24/java-11-tutorial/, или эта — https://blog.codefx.org/java/java-11-migration-guide/.

Если кратко, то можно выделить следующие важные вещи:

  • Ключевое слово var для локальных переменных. Все, кто ревьюит код в браузере, заплакали в этом месте.
  • HttpClient, который был добавлен в инкубатор Java 9, теперь стал полноченной частью языка. С этого момента можно легко и просто писать HTTP-запросы синхронно, или асинхронно. Правда и раньше было можно: Апач, Нетфликс и КО уже давно сделали свои реализации клиентов.
  • Удобные фабричные методы для коллекций:
  • Несколько новых Garbage collectors (GC). Некоторые из них — забавные — Epsilon G, который никогда не освобождают память. Другие же — ZGC — очень конкурентное решение, способен работать с огромными Heap. Маленькое Латенси. В общем, ZGC — прямой конкурент Shenandoah Алексея Шепелёва.
  • Модули Java EE удалены из стандартной поставки java. Теперь их надо ставить отдельно. CORBA тоже удалена. JavaFX вы тоже не найдёте в Джаве (ставьте отдельно, если надо).

Ещё важно, что появилась возможность использовать GraalVM JIT буквально с помощью нескольких ключиков. Об этом часто любит рассказывать Олег Чирухин (парень, который щас херачит по 7 статей в неделю на хабр за джаву). Вроде как, использование этого JIT-а принесёт вам прирост перфоманса. Но это всё такое. надо тестить на ваших нагрузках. Кстати, есть и второй проповедующий Грааль в Рунете, тоже Олег — Oleg Šelajev. Так что, если у вас будут проблемы с Граалем, есть пацаны, с кем можно перетереть за это.

Читать еще:  Как исправить ошибку файловой системы

Конечно же, это далеко не полный список того, что появилось нового в Java 11. Есть масса оптимизаций в компиляторе, а также виртуальной машине, которые просто автоматически ускорят ваши программы. Кроме того, добавлются новые фичи, направленные на секьюрность. Например, поддержка TLS 1.3. Поэтому, в любом случае стоит обновляться, как бы это не было сейчас больно.

Java 11 что нового

Недавно корпорация Oracle объявила о выпуске релиза Java 11 LTS (Long Term Support) и формально это событие знаменует собой завершение монументального сдвига в экосистеме Java. Со сложностями перехода от Java 8 к модульному и гибкому JDK с шестимесячным циклом выпуска релизов, с новыми лицензионными соглашениями и долгосрочными моделями поддержки, мы вступили в новую эру!

Теперь кодовые базы должны следовать за нововведениями, и многие проекты перейдут с Java 8 непосредственно на Java 11. Если вы с этим согласны, то вы пришли в нужное место — это руководство по миграции сообщит вам все, что нужно знать при переходе с Java 8 на Java 11

Мы начнем с супер-быстрого тура по новому циклу релизов, лицензированию и поддержке прежде, чем обсуждать, как подготовить миграцию. И, наконец, как преодолеть четыре наиболее распространенных препятствия (если вы уже перешли на Java 9, можете пропустить, пройденную вами часть). Обратите внимание, что мы говорим о миграции, а не модуляции (это не требуется и должно быть отдельным шагом), поэтому мы не будем создавать какие-либо модули

Компания Oracle долго и тяжело работала над тем, чтобы Oracle JDK 11 и OpenJDK 11 стали практически идентичными с технической точки зрения — до такой степени, что наиболее важным отличием между ними является файл лицензии. Oracle подталкивает разработчиков к использованию OpenJDK, делая свой фирменный JDK коммерческим, то есть вы не можете использовать его в продакшен, не платя Oracle с первого дня запуска проекта(вы можете использовать Oracle JDK для разработки и тестирования)

Как следствие, теперь именно OpenJDK станет новым стандартом с полным набором функций, максимальной производительностью и бесплатной лицензией (GPL + CE), что будет отличным выбором! На следующей ступени идут бок о бок Oracle и другие производители со своими вариантами OpenJDK, для которых они продают долгосрочную поддержку

Oracle теперь выкладывает OpenJDK на jdk.java.net и, как уже упоминалось, публикует два обновления основной версии OpenJDK в год. Итак, что же будет происходить через шесть месяцев, если вы хотите остаться на какой-то определенной версии, при этом все еще получая обновления с исправлениями безопасности и ошибок?

Есть два варианта:

  • заплатить кому-нибудь за коммерческую поддержку
  • надеяться на бесплатную поддержку OpenJDK

Что касается коммерческой поддержки, то существуют различные вендоры, которые будут осуществлять долгосрочную коммерческую техподдержку для конкретных версий JDK:

  • Oracle
  • IBM
  • RedHat
  • Azul

Что же касается поддержки OpenJDK, в настоящее время идут многообещающие дискуссии о том, что обновления для каждого релиза будут находиться в публичном доступе не менее четырех лет после его выхода

Скорее всего, каждая версия c LTS получит свою управляющую компанию, которая будет отвечать за обновления, и похоже, что для Java 11 — это будет Red Hat. Это касается исходных кодов, но откуда мы сможем получить финальные бинарные файлы? Сайт https://adoptopenjdk.net/ готов к постоянному размещению на нем различных версий OpenJDK для всех существующих платформ

В совокупности мы получим бесплатную OpenJDK LTS, которая будет организована компаниями, хорошо известными в Java сообществе и постоянно обновляемые билды на сайте AdoptOpenJDK. И это было бы круто!

Ссылка на основную публикацию
Adblock
detector