[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
![spring-boot.JPG](https://qiita-image-store.s3.amazonaws.com/0/28302/a9ceaa24-9136-040a-63ae-c7d4d90be147.jpeg)
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.
![spring-boot.JPG](https://qiita-image-store.s3.amazonaws.com/0/28302/701ff7a6-d1b3-fba5-461f-119c50f62966.jpeg)
J'ai essayé de réduire la taille du pot
résultat
![img1.JPG](https://qiita-image-store.s3.amazonaws.com/0/28302/5d52d512-dddd-ecc9-6283-acf8648a1dec.jpeg)
résultat
![img2.JPG](https://qiita-image-store.s3.amazonaws.com/0/28302/08610143-204c-2996-2474-973e69396a07.jpeg)
Comparaison de taille
![graph_2.JPG](https://qiita-image-store.s3.amazonaws.com/0/28302/11ffed6e-3538-14f3-db03-ca505bd92110.jpeg)
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é
![after-javac.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/c5311fd4-2624-fcba-2f23-803b4a1cb500.jpeg)
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!
![java-compiler.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/d0afe723-a380-c7b6-a367-4312c3527e47.jpeg)
https://docs.oracle.com/javase/jp/8/docs/api/javax/tools/JavaCompiler.html
![yaruo.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/7f7c34cd-3731-60fb-1751-6910157f15d2.jpeg)
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.
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/06a1107f-e9d7-f8b4-7696-6fd7f477365f.jpeg)
Inutile 1: Commentaire
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/102f112f-b029-f726-963d-bdc5c8f16e07.jpeg)
Déchets 2: Annotation
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/effc60b1-deed-1eb6-5ad7-da5fafe1b964.jpeg)
Déchets 3: privé
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/82defb90-bcfe-6bba-3f6b-6f88091b3b0c.jpeg)
Déchets 4: blanc + saut de ligne
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/ac9f2e82-ae13-59b5-12c1-d45f211fa283.jpeg)
Code sophistiqué et allégé
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/29736de4-838a-154a-8601-a46efa61e46e.jpeg)
Résultat Réussi à réduire la capacité de 5 Mo! : grin :: thumbsup:
![graph_2.JPG](https://qiita-image-store.s3.amazonaws.com/0/28302/11ffed6e-3538-14f3-db03-ca505bd92110.jpeg)
Compensation 1: démarrage lent: innocent :: thumbsdown:
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/7c7ce1e8-15fa-8c64-24f6-897e7f5161d6.jpeg)
Compensation 2: impossible de déboguer: joy :: thumbsdown:
![lightweight-jar.jpg](https://qiita-image-store.s3.amazonaws.com/0/28302/46374c2f-99c2-9473-000e-10e385cce55d.jpeg)
Veuillez ne pas imiter un bon enfant