我试着减小了Spring Boot的容量。(Wǒ shìzhe jiǎnxiǎole Spring Boot de róngliàng)

我自己的介绍

undefined
    • opengl-8080

 

    • 主に Qiita で技術メモを書いたり

 

    関西の SIer 勤務

Spring Boot是什么

    • Spring ベースのアプリケーションを簡単に作れるようにした仕組み・フレームワーク

 

    ビルド結果が単一の jar ファイルにまとめられる

单个罐的优点

(Only one option provided as requested)

    • AP サーバーが同梱されているので、環境ごとに AP サーバーを用意する必要がない

java -jar で起動できる楽さ

spring-boot.JPG

单一罐子的缺点

    AP サーバーも含め全ての依存ライブラリを内包するため、ファイルサイズが大きくなる
spring-boot.JPG

努力将瓶子的尺寸减小了一下。


结果

img1.JPG

结果

img2.JPG

尺寸比较

graph_2.JPG

你是怎么做到的?


在Java中,如何实现”Hello World”?


1.撰写代码.

public class Hello {
    public static void main(String... args) {
        System.out.println("Hello World");
    }
}

在Java编译器中进行编译

$ javac Hello.java

3. 生成一个Hello.class文件

after-javac.jpg

使用Java执行

$ java Hello
Hello World

请问您是否理解了呢?


undefined
编译前的源代码大小较小!

在中文中,有一个可以打开javac的API是标准的!

java-compiler.jpg

yaruo.jpg

改良版的jar机制。

|-LightweightJarExecutor.class  :
|   → 自分自身の jar の中からソースを取り出してコンパイル・実行するコード
|-...
`-src/        : Spring Boot および依存するライブラリのソース一式
  |-ch/       : logback
  |-com/      : jackson とか com.sun とか
  |-javax/    : javaee の標準 API
  |-META-INF/
  |-org/      : Spring, hibernate, JBoss, Tomcat, etc... 
  `-sample/   : Spring MVC の Hello World

启动时的操作

    1. 从自己的jar文件中提取源代码并将其复制到临时目录中

 

    1. 使用JavaCompiler在临时目录中编译输出的源代码

 

    1. 使用URLClassLoader从编译结果的输出目录中加载Spring Boot的主类(JarLauncher)

 

    执行JarLauncher的main()方法

正是即时编译!(不对)


按照现状来看,存在太多浪费,无法进行轻量化

lightweight-jar.jpg

废话1:评论

lightweight-jar.jpg

无效2:标注

lightweight-jar.jpg

不必要的3:私人的

lightweight-jar.jpg

四无用:空格+换行

lightweight-jar.jpg

精心打磨的简洁代码

lightweight-jar.jpg

成功将容量减少了5MB!

graph_2.JPG

选项一:启动时间较长

lightweight-jar.jpg

选项一:无法进行调试的补偿

lightweight-jar.jpg

请不要模仿好孩子。

广告
将在 10 秒后关闭
bannerAds