[JAVA] J'ai essayé de réduire la capacité de Spring Boot
Auto-introduction
- opengl-8080
- Rédaction de notes techniques principalement en Qiita
--Travailler au SIer au Kansai
Qu'est-ce que Spring Boot?
--Mécanisme / cadre facilitant la création d'applications basées sur Spring
- Les résultats de construction sont combinés dans un seul fichier jar
Avantages d'un seul pot
- Le serveur AP est inclus, il n'est donc pas nécessaire de préparer un serveur AP pour chaque environnement.
- Le plaisir de commencer par
java -jar
Inconvénients d'un seul pot
- Puisque toutes les bibliothèques dépendantes, y compris le serveur AP, sont incluses, la taille du fichier devient importante.
J'ai essayé de réduire la taille du pot
résultat
résultat
Comparaison de taille
Comment avez-vous fait?
Comment faites-vous Hello World en Java?
1. 1. Ecrire le code
Hello.java
public class Hello {
public static void main(String... args) {
System.out.println("Hello World");
}
}
2. Compiler avec javac
$ javac Hello.java
3. 3. Hello.class est généré
4. Exécuter sur java
$ java Hello
Hello World
Avez-vous compris?
La capacité du code source avant compilation est plus petite! div>
L'API qui peut frapper javac est standard!
https://docs.oracle.com/javase/jp/8/docs/api/javax/tools/JavaCompiler.html
Comment fonctionne le pot amélioré
|-LightweightJarExecutor.class :
|→ Code qui extrait le source de son propre jar, le compile et l'exécute
|-...
`-src/ :Spring Boot et un ensemble de sources pour les bibliothèques dépendantes
|-ch/ : logback
|-com/ :jackson ou com.comme le soleil
|-javax/ :API standard javaee
|-META-INF/
|-org/ : Spring, hibernate, JBoss, Tomcat, etc...
`-sample/ :Spring MVC Hello World
Comportement au démarrage
- Extrayez le code source de votre propre fichier jar et copiez-le dans un répertoire temporaire
- Compilez la sortie source dans le répertoire temporaire en utilisant
JavaCompiler
- Chargez la classe principale Spring Boot (
JarLauncher
) depuis la destination de sortie du résultat de la compilation en utilisant ʻURLClassLoader`.
- Exécutez la méthode
main ()
de JarLauncher
Compilez juste à temps! (not) </ span>
S'il est laissé tel quel, il sera un gaspillage et ne pourra pas être réduit en poids.
Inutile 1: Commentaire
Déchets 2: Annotation
Déchets 3: privé
Déchets 4: blanc + saut de ligne
Code sophistiqué et allégé
Résultat Réussi à réduire la capacité de 5 Mo! : grin :: thumbsup:
Compensation 1: démarrage lent: innocent :: thumbsdown:
Compensation 2: impossible de déboguer: joy :: thumbsdown:
Veuillez ne pas imiter un bon enfant