Java8 против Java9

Java8 Vs Java9



Java 8 против Java 9: ​​улучшения в Java 9, о которых вам нужно знать

Многие разработчики обратятся к Java для создания приложений. Как мы все знаем, Java невероятно универсальна, проста в использовании, безопасна, надежна и, самое главное, не зависит от платформы. У Java более 6,5 миллионов разработчиков по всему миру. Таким образом, это идеальный язык для использования, поскольку справочных материалов также много.

Тем не менее, Java с годами продолжает расти и развиваться. Создано Sun Microsystems в 1995 году. , Java продолжает доказывать свою надежность. Предыдущая сборка Java, которая использовалась с 18 марта 2014 года, была Java SE 8. Когда она была представлена, критики сказали, что это произведение искусства, выпуск потоков изменений в API. Теперь на блоке новый ребенок. Наконец-то появилась свежая Java 9. Представлен 21 сентября 2017 г. Ожидается, что Java SE 9 изменит наш подход к работе и способ создания приложений разработчиками.







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



Итак, давайте посмотрим, что нового в Java 9.



Проект Jigsaw

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





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

JEP 222: jshell : Оболочка Java

В Java 9 есть новый инструмент цикла чтения-оценки-печати (REPL). Находясь в стадии развития под Право проекта эта функция наконец-то стала общедоступной. Эта новая функция представляет собой интерактивный инструмент, который используется для проверки выражений, операторов и объявлений, написанных на Java. Основная цель JShell API и инструмента - дать разработчику возможность протестировать упомянутые выше функции в состоянии оболочки. В первую очередь это быстрое кодирование и исследование, при котором выражения и утверждения не обязательно должны находиться внутри метода, а методы, в свою очередь, не должны находиться внутри класса. Таким образом, разработчик может быстро проанализировать фрагменты кода и посмотреть, принесут ли они желаемый эффект.



Инструмент jshell будет иметь интерфейс командной строки со следующими функциями:

  • Настраиваемое предопределенное определение и импорт.
  • История с возможностью редактирования
  • Автоматическое добавление необходимых конечных точек с запятой

Улучшения компилятора

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

Оглядываясь назад, можно сказать, что Java 8 использует JIT-компиляторы. Эти компиляторы работают быстро, но перед разогревом им требуется немного больше времени. Это может быть несущественным для небольших программ или приложений, потому что не так много кода для компиляции. Однако для более крупных приложений повествование совершенно иное. Разогрев, который необходим своевременному компилятору, означает, что некоторые методы не компилируются, что снижает производительность приложения.

Второй этап развертывания интеллектуальной компиляции - это улучшение переносимости и стабильности инструмента Javac. Улучшение этого инструмента позволяет использовать его непосредственно в JVM (виртуальной машине Java) в качестве настройки по умолчанию. Кроме того, инструмент был обобщен таким образом, что позволяет разработчикам использовать его даже вне среды JDK. Для разработчиков это очень важно, поскольку Java может использоваться в более крупных проектах, которые можно легко адаптировать, не беспокоясь о совместимости. Еще одно важное обновление - это обратная совместимость компилятора Javac, единственной функцией которого является компиляция приложений и программ, созданных с использованием Java 9, для работы в более старых версиях Java.

Лучшая поддержка JavaScript

Поскольку JavaScript продолжает набирать обороты и становится любимым для многих, JDK 9 сделал возможным встраивать JavaScript в приложения Java. Все это делается с помощью Проект носорог чьей основной целью было создание высокопроизводительной, но легкой среды выполнения JavaScript на Java. Это, конечно, было реализовано, когда они предоставили движок JavaScript в JDK версии 8. Теперь в версии 9 есть API синтаксического анализатора, целью которого является порядок синтаксиса ECMAScript Нэшорна. Этот API позволяет анализировать код ECMAScript серверными фреймворками и IDE без необходимости полагаться на внутренние классы реализации Project Nashorn.

G1 как сборщик мусора

Вопреки распространенному мнению, в Java есть не один, а четыре сборщика мусора. Эти сборщики мусора не созданы равными, и поэтому выбор неправильного означает проблемы с производительностью в приложении. В Java 8 сборщиком мусора по умолчанию был Parallel / Throughput Collector. Этот сборщик мусора был заменен его предшественником сборщиком мусора (G1). Поскольку сборщик G1 был разработан для эффективной поддержки кучи размером более 4 ГБ, он является идеальным сборщиком мусора как для небольших, так и для крупномасштабных приложений.

Обновления API

В этой новой версии комплекта для разработки Java было внесено несколько обновлений в API, и мы обсудим наиболее важные из них.

Самый первый - это обновления параллелизма Java 9, в которых есть Java.util.concurrent.Flow и CompletableFuture. Направлен на решение проблемы противодавления. Flow - это реализация Java Reactive Streams API который, по сути, направлен на решение проблемы противодавления. Обратное давление - это накопление данных, которое происходит, когда скорость входящих запросов превышает возможности обработки приложения. В конечном итоге это проблема, потому что приложение заканчивается буфером необработанных данных. Это обновление будет означать лучшую обработку тайм-аутов, задержек и подклассов.

Безопасность - это часть основной идентичности Java. Таким образом, поддержка недавно утвержденных HTTP 2.0 RFC - огромный плюс. HTTP 2.0 RFC был построен на основе Алгоритм Google SPDY который уже начал приносить свои плоды: скорость улучшилась с 11,81% до 47,7% по сравнению с предыдущим HTTP 1.1. Этот клиентский API является обновлением основных протоколов HTTP и HttpURLConnection API, что, мягко говоря, проблематично, поскольку оно было создано еще до HTTP 1.

Кэширование кода всегда было стратегией, используемой для ускорения и плавности приложений на протяжении многих лет. Однако у него есть свои ограничения, и это не осталось незамеченным. Обновление в Java 9 ясно показывает, что JDK 9 разделяет кешированные коды на более мелкие части, что улучшает общую производительность. JDK 9 использует специальные итераторы для пропуска кода, не относящегося к методам; разделить профилированный, непрофильный и неметодный код; и улучшение некоторых тестов для времени выполнения.

Преимущества Java 9

Для многих владельцев бизнеса нет разницы между Java 8 и 9. Однако для разработчика разница огромная. Это преимущества Java SE 9 по сравнению со своими предшественниками.

  • Скорость разработки будет значительно увеличена благодаря системе модулей, которыми не только легче управлять и отлаживать, но и многоразовыми, что означает, что вам не нужно писать весь код с нуля.
  • Повышение эффективности использования ресурсов для приложений за счет модульности, а также упрощение извлечения ресурсов, поскольку разработчики будут использовать только необходимые модули, а не всю JRE.
  • Анализ в реальном времени фрагментов кода, таких как микро тесты используется для изучения производительности небольших фрагментов кода.

Источники

http://openjdk.java.net/jeps/251
https://www.romexsoft.com/blog/java-8-vs-java-9/
https://blogs.oracle.com/java/features-in-java-8-and-9
https://dzone.com/articles/5-features-in-java-9-that-will-change-how-you-deve

Учебное пособие по Eclipse Java