Это мой личный опыт, когда я пытаюсь подтолкнуть 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”