Рубрики
Без рубрики

Современная Java для современного развития

Разрушение мифов о Яве. С тегами java, без сервера, helidon, graal.

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

  • Он тяжелый
  • Это медленно
  • Он не является современным

Итак, вот моя последняя попытка развеять все эти мифы с помощью специально разработанного запаса для любых будущих микроуслуг Java, которые я разрабатываю – OpenJDK11 , , Геликон МП , Грааль ВМ , и

Что такое Хелидон?

Helidon – это облегченная библиотека микросервисов для Java, которая позволяет писать быстрые, экономичные и масштабируемые Java-приложения. Он поставляется в двух вариантах – Helidon SE и Helidon MP. Я не уверен, что это значит, но я называю это “Суперэффективным” – да, он очень маленький и очень быстрый. Но Helidon SE может быть не для всех, так как он реактивный – во-первых, использует модель builder везде, где это возможно. Так что это может быть привлекательным для фанатиков Котлина.

Однако член парламента Геликона – это то, что крадет шоу. Он основан на стандартах и напрямую наследует спецификацию микропрофиля Jakarta EE . Хотя поначалу это может показаться не очень прибыльным, это означает, что ваше приложение стоит на плечах корпоративных гигантов, таких как Oracle WebLogic, IBM WebSphere и т.д. Микропрофиль также не зависит от поставщика. Таким образом, даже если вы запустите свое приложение с Helicon MP, вы можете легко перейти на IBM OpenLiberty , Payara Micro и т.д. Это действительно похвальная позиция, занятая Oracle, IBM, Payara и др. чтобы позволить разработчикам выбирать наилучшую платформу для своего приложения, вместо того, чтобы вводить блокировку поставщиков. Я предполагаю, что на данный момент миру больше не нужны блокировки.

Покажи мне код, да

Прямо к этому. Вот мой neo fetch вывод

И вот моя настройка Maven

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /maven/current
Java version: 11.0.7, vendor: Oracle Corporation, runtime: /java/11.0.7-open
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.6.14-300.fc32.x86_64", arch: "amd64", family: "unix"

Получить быструю настройку проекта Helidon MP так же просто, как бесстыдно использовать их стандартный архетип Maven

mvn archetype:generate -DinteractiveMode=false \
    -DarchetypeGroupId=io.helidon.archetypes \
    -DarchetypeArtifactId=helidon-quickstart-mp \
    -DarchetypeVersion=2.0.0-M3 \
    -DgroupId=io.helidon.examples \
    -DartifactId=helidon-quickstart-mp \
    -Dpackage=io.helidon.examples.quickstart.mp

Далее, пришло время оживить его

Поддержка HTTP/2

## Add the following line in resources/META-INF/microprofile-config.properties
server.experimental.http2.enable=true

Пользовательское изображение JRE

Если вы были проинформированы об одной из удивительных функций, включенных в JDK9, это утилита jlink , которая создает пользовательский образ JRE, достаточный для запуска вашего Java-приложения (работает как для пакетов JAR, так и для WAR!)

mvn package -Pjlink-image

Родное приложение Java!

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

Убедитесь, что вы установили переменную окружения GRAALVM_HOME в путь установки виртуальной машины Graal. Вот мой.

$ $GRAALVM_HOME/bin/java --version
openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02)
OpenJDK 64-Bit Server VM GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02, mixed mode, sharing)

Итак, GraalVM – это ваш готовый JDK, плюс некоторые потрясающие возможности полиглота. Для целей этой статьи мне пришлось установить расширение native-image для виртуальной машины Graal

$GRAALVM_HOME/bin/gu install native-image

Затем просто запустите Maven с профилем собственного изображения

mvn package -Pnative-image

Итак, позвольте мне рассказать вам, насколько тонкой мы сделали заявку во время этого процесса.

Все приведенные выше изображения являются стандартными для Джакарты, облачными и готовыми для Kubernetes!

Излишне говорить, что мне очень интересно посмотреть, какое будущее ждет микропрофильные нативные фреймворки. Надеюсь, этот пост пробудил ваш интерес к Хелидону и GraalVM. Не стесняйтесь оставлять свои комментарии или любые предложения!

Оригинал: “https://dev.to/munukutla/modern-java-for-the-modern-dev-5dd”