J'ai essayé le framework Java "Quarkus"

introduction

Il existe plus d'opportunités pour exécuter des applications sur des conteneurs Docker. Le temps de démarrage est important lors du fonctionnement dans un conteneur. Lors de l'exécution de Java, il s'exécute sur la JVM, mais le démarrage de cette JVM prend un certain temps.

Quarkus a présenté cette fois-ci un framework qui réalise un démarrage rapide en créant un binaire natif à l'aide de GraalVM.

Environnement d'exécution

Conditions préalables

--Java 8 et plus --Maven 3.5.3 et supérieur

Configuration de Graal VM

Depuis ici graalvm-ce-1.0.0-rc13-macos-amd64.tar.gz Veuillez télécharger (à partir du 12 mars 2019).

Décompressez-le et placez le dossier entier dans / Library / Java / JavaVirtualMachines.

Définissez la variable d'environnement GraalVM (GRAALVM_HOME).

.bash_profile


GRAALVM_HOME=/Library/Java/JavaVirtualMachines/graalvm-ce-1.0.0-rc13-macos-amd64/Contents/Home

Créer un projet

$ mvn io.quarkus:quarkus-maven-plugin:0.11.0:create \
    -DprojectGroupId=jp.acme \
    -DprojectArtifactId=getting-started \
    -DclassName="org.acme.quickstart.GreetingResource" \
    -Dpath="/hello"

L'exécution de la commande ci-dessus créera un projet Maven comme indiqué ci-dessous.

quarkus.png

Lancement d'application

#Démarrer en mode développement
$ mvn compile quarkus:dev

Le rechargement à chaud peut être réalisé en démarrant en mode développement. Vérifiez le fonctionnement avec la commande suivante.

$ curl http://localhost:8080/hello

Build (génération binaire native)

$ mvn package -Pnative -Dnative-image.docker-build=true
option Contenu
-Pnative Spécifier lors de la génération d'un binaire exécutable nativement
-Dnative-image.docker-build=true Spécifiez lors de la génération d'un binaire natif qui correspond au système d'exploitation sur Docker

Puisque nous voulons le démarrer sur Docker cette fois, spécifiez également `` -Dnative-image.docker-build = true ''.

La construction prendra un certain temps, probablement parce qu'elle génère des binaires natifs.

Construction de Docker

$ docker build -f src/main/docker/Dockerfile -t <Nom de l'image> .

Démarrer le conteneur Docker

$ docker run -i --rm -p 8080:8080 <Nom de l'image>
2019-03-12 01:29:01,328 INFO  [io.quarkus](main) Quarkus 0.11.0 started in 0.004s. Listening on: http://0.0.0.0:8080
2019-03-12 01:29:01,328 INFO  [io.quarkus](main) Installed features: [cdi, resteasy]

Ce à quoi vous devez faire attention ici, c'est l'heure de démarrage. Si vous vérifiez le journal après le démarrage, il indique Quarkus 0.11.0 a démarré en 0.004s` ``. En d'autres termes, vous pouvez voir qu'il a été démarré en 0,004 seconde. Il est tôt.

en conclusion

En utilisant Quarkus, l'application sur le conteneur démarre extrêmement plus rapidement. Quarkus lui-même vient de sortir, donc je pense qu'il sera difficile de le mettre en pratique dans la production, mais à mesure que le développement progresse et que davantage d'informations seront disponibles, je pense qu'il y aura plus d'opportunités pour qu'il devienne pratique. J'attends ça avec impatience à l'avenir.

Vous pouvez également ajouter des extensions à Quarkus. Par exemple, la valeur par défaut est le CDI standard Java EE, mais le CDI basé sur Spring peut être utilisé. Nous partagerons également des informations tout en étudiant ce domaine.

référence

Recommended Posts

J'ai essayé le framework Java "Quarkus"
J'ai essayé le nouveau yuan à Java
J'ai essayé QUARKUS immédiatement
J'ai résumé le cadre de la collection.
J'ai essayé Drools (Java, InputStream)
J'ai essayé d'utiliser Java REPL
J'ai essayé le problème FizzBuzz
[Java] J'ai essayé d'implémenter la combinaison.
J'ai étudié le constructeur (java)
J'ai essayé la métaprogrammation avec Java
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
Une vue d'ensemble du framework Java natif de Kubernetes Quarkus
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
J'ai essayé de résumer les bases de kotlin et java
framework java
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
J'ai essayé d'expliquer la méthode
Considération sur le framework de persistance Java 2017 (1)
[Rails] J'ai essayé de supprimer l'application
J'ai essayé d'utiliser l'API Java8 Stream
J'ai essayé d'utiliser JWT en Java
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment
J'ai essayé d'utiliser le mémo Java LocalDate
J'ai essayé d'utiliser Google HttpClient de Java
Java14 est sorti, alors j'ai essayé d'enregistrer pour le moment
J'ai essayé le type d'entrée / sortie de Java Lambda ~ Map edition ~
J'ai essayé de traduire le message d'erreur lors de l'exécution d'Eclipse (Java)
J'ai essayé de résumer les méthodes de Java String et StringBuilder
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
J'ai essayé d'exécuter le formulaire FaaS compatible Java "Fn Project"
J'ai essayé d'afficher le calendrier sur la console Eclipse en utilisant Java.
J'ai essayé d'utiliser l'API Elasticsearch en Java
J'ai essayé de résumer les méthodes utilisées
Devinez le cadre de persistance Java 2017 (3) Reladomo
J'ai essayé le mappeur d'objets de Cassandra pour Java
J'ai essayé de résumer les expressions Java lambda
[jour: 5] J'ai résumé les bases de Java
J'ai essayé d'implémenter le modèle Iterator
J'ai essayé d'utiliser OpenCV avec Java + Tomcat
[Java] J'ai personnellement résumé la grammaire de base.
J'ai essayé de résumer l'API Stream
J'ai essayé la bibliothèque AutoValue avec Intellij
Je suis allé au Java Women's Club # 1
J'ai essayé l'examen d'entrée de Google (non officiel) [java]
[Introduction à Java] J'ai essayé de résumer les connaissances que j'estime essentielles
J'ai essayé Spring.
J'ai essayé de mettre Tomcat
Comparaison du framework Java
J'ai essayé youtubeDataApi.
J'ai essayé de refactoriser ①
J'ai essayé FizzBuzz.
J'ai essayé JHipster 5.1
[Java] Cadre de collection
J'ai essayé de mettre facilement Java sur mon Mac
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2