iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0

https://ithelp.ithome.com.tw/upload/images/20220924/201357015gQnsNLCVc.jpg

在上一篇我們看到 Quarkus 應用啟動非常快速,而且可以編譯成 Native。所以非常適合佈署在雲服務的環境。開發的過程中其實也可以注入 Bean, 跟 Spring Boot 用類似的 Annotation, library set,可是編出來卻有很大的差別。

編譯期優化

過往的 JVM Application,在 Build time 時就是把 java 打包成 class,等到執行時再來作讀 config, 動態的找 dependency (DI), 建立 bean 與 bean 的相依樹,最後才是執行可以接受 Request

https://ithelp.ithome.com.tw/upload/images/20220924/20135701oHBgc8uXpD.jpg

Quarkus 的斧底抽薪

https://ithelp.ithome.com.tw/upload/images/20220924/201357016eYCjKGN9J.jpg

所以 Quarkus 把這些重覆步驟都拉到 compile time, 編譯時作靜態的 DI 等等,大大減少了 startup time overhead.這種作法稱作 AOT (ahead-of-time)

選用了常見的優勢套件

Quarkus 底層進行優化,但對 Java 開發者來說,開發習慣是差不多的,因為他整合了常見的函式庫而且都有經過 Native 的測試,對有經驗的 Java/Kotlin 開發者是很好上手。

https://ithelp.ithome.com.tw/upload/images/20220924/20135701kKvGzRYQCr.jpg

異 有點點差別的地方

因為是在編譯期就作了 binding, 所以 Quarkus 不支援 Dynamic classloading, 以及在 Reflection 時要手動指定。這是因為這些動作都是比較花資源與時間的,在開發時也要儘量避免。

後記

Spring Boot 因應 cloud native 也開始往 native build 方面走,但會有很多過去的包袱,所以目前是 v0.12.1 。而 Quarkus 是一開始就瞄準了 cloud native 與 binary ,所以在這方面會順利很多。


上一篇
打包 Quarkus ,Java/Kotlin 應用可以 compile 成執行檔 - Day17
下一篇
Quarkus 的設定檔, Kube-native 的讀取順序 - application.properties & ENV
系列文
Quarkus, Kotlin, Reactive 雲原生服務開發32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言