[JAVA] Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Vorstellen
- opengl-8080
- Hauptsächlich technische Notizen in Qiita schreiben
- Arbeiten bei SIer in Kansai
Was ist Spring Boot?
--Mechanismus / Framework, das das Erstellen von Spring-basierten Anwendungen erleichtert
--Erstellungsergebnisse werden in einer einzigen JAR-Datei zusammengefasst
Vorteile eines einzelnen Glases
- Der AP-Server ist enthalten, sodass nicht für jede Umgebung ein AP-Server vorbereitet werden muss.
- Der Spaß, mit "Java-Jar" zu beginnen

Nachteile eines einzelnen Glases
- Da alle abhängigen Bibliotheken einschließlich des AP-Servers enthalten sind, wird die Dateigröße groß.

Ich habe versucht, die Glasgröße zu reduzieren
Ergebnis

Ergebnis

Größenvergleich

Wie hast du es gemacht?
Wie macht man Hello World in Java?
1. 1. Code schreiben
Hello.java
public class Hello {
public static void main(String... args) {
System.out.println("Hello World");
}
}
2. Kompilieren Sie mit Javac
$ javac Hello.java
3. 3. Hello.class wird generiert

4. Laufen Sie auf Java
$ java Hello
Hello World
Hast du verstanden?
Die Kapazität des Quellcodes vor dem Kompilieren ist geringer! div>
Die API für Javac ist Standard!

https://docs.oracle.com/javase/jp/8/docs/api/javax/tools/JavaCompiler.html

Wie das verbesserte Glas funktioniert
|-LightweightJarExecutor.class :
|→ Code, der die Quelle aus dem eigenen Jar extrahiert, kompiliert und ausführt
|-...
`-src/ :Spring Boot und eine Reihe von Quellen für abhängige Bibliotheken
|-ch/ : logback
|-com/ :Jackson oder Com.wie die Sonne
|-javax/ :Javaee Standard API
|-META-INF/
|-org/ : Spring, hibernate, JBoss, Tomcat, etc...
`-sample/ :Frühling MVC Hallo Welt
Verhalten beim Start
- Extrahieren Sie den Quellcode aus Ihrem eigenen JAR und kopieren Sie ihn in ein temporäres Verzeichnis
- Kompilieren Sie die Quellausgabe mit
JavaCompiler
in das temporäre Verzeichnis
- Laden Sie die Spring Boot-Hauptklasse (
JarLauncher
) mit URLClassLoader
vom Ausgabeziel des Kompilierungsergebnisses.
- Führen Sie die
main ()
Methode von JarLauncher
aus
Just In Time Kompilieren! (anders) </ span>
Wenn es so belassen wird, wie es ist, ist es verschwenderisch und kann nicht im Gewicht reduziert werden.

Nutzlos 1: Kommentar

Abfall 2: Anmerkung

Abfall 3: privat

Abfall 4: Leer + Zeilenumbruch

Verschwenderisch ausgefeilter und schlanker Code

Ergebnis Die Kapazität konnte um 5 MB reduziert werden! : grin :: thumbsup:

Entschädigung 1: Langsamer Start: unschuldig :: Daumen runter:

Kompensation 2: Debugging nicht möglich: joy :: thumbsdown:

Bitte ahme kein gutes Kind nach