web-dev-qa-db-fra.com

Applications GraalVM et Spring

Le système GraalVM ne peut apparemment pas compiler une application Spring dans une image native.

Pouvons-nous compiler un sous-ensemble de l'application Spring - disons, en tant que bibliothèque distincte - puis l'utiliser avec le reste compilé à l'aide du compilateur javac habituel?

Ou peut-être si nous omettons certaines fonctionnalités de Spring de notre application?

D'autres possibilités?

12
user577736

La déclaration liminaire de cette question est un peu vague, il est donc difficile de la traiter correctement.

GraalVM peut absolument compiler des applications Spring. La distribution de GraalVM est très similaire à un JDK normal, elle comprend un utilitaire javac, un utilitaire Java, qui peut être ajouté au chemin et utilisé normalement. Vous pouvez configurer le $Java_HOME variable d'environnement pour pointer vers le répertoire dans lequel vous avez décompressé la distribution GraalVM, ajoutez $Java_HOME/bin vers le chemin d'accès et créez des applications Spring comme vous les générez habituellement, avec Maven ou Gradle, ou tout autre outil de génération.

GraalVM peut également exécuter des applications Spring, compilées par lui-même et d'autres JVM. Si vous êtes curieux, voici n exemple d'application Spring qui fonctionne non seulement sur GraalVM, mais utilise également R pour visualiser un tracé des données, en utilisant les capacités polyglottes de GraalVM.

Maintenant, je suppose que ce que vous vouliez dire, c'est la capacité de GraalVM à créer des images natives exécutables de certains Java . Actuellement, GraalVM ne peut pas créer d'images natives d'applications Spring normales. Il c'est parce que le processus de génération d'images natives GraalVM a quelques limitations vers lesquels Java programmes qu'il peut compiler. Peut-être que le problème principal est le chargement de classe dynamique que Spring fait.

Mise à jour: 17 mai 2019

Voici le framework de printemps page wiki pour le support des images natives GraalVM .

Le projet expérimental spring-boot-graal-feature , créé par Andy Clement, montre comment il est possible d'exécuter une application Spring Boot prête à l'emploi en tant qu'image native GraalVM. Il pourrait être utilisé comme base pour un éventuel soutien officiel à venir.

Dans l'ensemble, vous pouvez l'essayer, mais les choses peuvent ne pas fonctionner correctement comme prévu.

La réponse précédente est ci-dessous:

Il y a un projet spring-f , un micro-framework expérimental Kotlin basé sur une configuration fonctionnelle destiné à tester de nouvelles idées pour les futures versions de Spring Boot, qui est actuellement expérimenté avec la possibilité de être compilé en images natives par GraalVM.

Dans le même temps, l'équipe GraalVM étudie ce qui peut être fait pour simplifier la compilation des applications Spring en images natives et pour prendre en charge plus d'applications Spring qu'aujourd'hui. Certaines limitations resteront, vous pourrez donc toujours construire une application Spring qui ne fonctionnera pas comme une image native GraalVM, mais peut-être pourrez-vous construire des applications Spring qui fonctionneront également.
La feuille de route exacte de ces changements n'est actuellement pas claire.

Voici un ticket de suivi des problèmes SpringFramework que l'on peut suivre pour voir le développement.

32
Oleg Šelajev