原創(chuàng)文章,轉(zhuǎn)載請注明出處!
源碼地址:
介紹
GraalVM最佳實踐,使用Java開發(fā)CLI、Desktop(JavaFX)、Web(SpringBoot)項目,并使用native-image技術(shù)把Java代碼靜態(tài)編譯為獨立可執(zhí)行文件(本機映像)。
GraalVM讓Java再次變得強大,使用native-image把程序編譯為目標平臺的可執(zhí)行文件,脫離jvm直接運行,啟動速度飛快,內(nèi)存負載也很低。
模塊概覽
體驗我已經(jīng)編譯好的可執(zhí)行文件(Windows、Linux、Mac),點此下載。
下面的性能測試結(jié)果是在我本機Windows上測試的,測試結(jié)果與機器配置有關(guān),尤其是
native-image編譯耗時。
| ↓標簽 \ 模塊→ | cli-normal | desktop-javafx | web-springboot |
|---|---|---|---|
| 模塊描述 | 命令行應(yīng)用(無框架) | 桌面應(yīng)用(JavaFx) | Web應(yīng)用(SpringBoot) |
| JDK | 8 or 11+ | 11+ | 8 or 11+ |
| GraalVM | CE-21.0.0.2+ | CE-21.0.0.2+ | CE-21.0.0.2+ |
| Maven Plugin | native-image-maven-plugin | client-maven-plugin | native-image-maven-plugin |
| 啟動耗時(jvm) | 0.713s | 2.555s | 1.793s |
| 啟動耗時(native-image) | 0.047s | 0.665s | 0.216s |
| 內(nèi)存負載(jvm) | 38.8m | 309.3m | 440.5m |
| 內(nèi)存負載(native-image) | 3.1m | 60.4m | 70.2m |
| 編譯耗時(native-image) | 24.786s | 93.455s | 99.434s |
| 可執(zhí)行文件大?。?z壓縮) | 8.03m (7z : 1.68m) | 62.7m (7z : 13.1m) | 66.5m (7z : 13.9m) |
開發(fā)環(huán)境
以下是我本機的開發(fā)環(huán)境,理論上windows、linux、mac都是支持的(注意不同平臺的 GraalVM SDK 和 native-image的依賴是不一樣的)。
- Windows 10 (CPU: i7-7700, RAM: 16G)
- IntelliJ IDEA 2020
- jdk-11.0.10
其實也可以不用,因為GraalVM是自帶OpenJDK的 - graalvm-ce-java11-21.0.0.2
- Visual Sutdio 2019
環(huán)境配置(Windows,Linux,Mac)
詳細的開發(fā)環(huán)境配置等教程可訪問我的項目地址: