1、Kotlinkotlin|Developed by JetBrains Reactive Quarkus With Coroutine and MongoDB蘇芃翰(豬排)電獺股份有限公司共同創辦人兼副執行長介紹一下我們公司創業歷程影響技術選型大部分人認識的電獺3C 界的 AKB48電獺是技術研發公司2012 年成立,2013 年推出鄉民晚報App(台版今日頭條)試著分析鄉晚讀者累積的閱讀行為大數據2016 推出 AotterTrek 廣告聯播網,成立子公司 電豹 Aseal 專營廣告市場開發台灣所有的 PTT 閱讀器 App 皆為聯播網渠道,並擴及各大新聞媒體網站如今是台灣最大 App 原生
2、廣告 SSP,江湖俗稱鄉民聯播網技術挑戰!鄉民有個習性.地震了!先上八卦版!2022/09/18 24 小時內四次地震 廣告主機負載圖鄉民侯風地動儀限制下的技術選型新創很窮不能用鈔能力解決團隊只會 Java為了管理方便也只能會 Java高效能極輕量的框架JVM 生態系Reactive Programming追榜的過程中,我們注意到了 Vert.x2017-2019 期間常衝上榜Vert.x 是 jvm 版的 Node.js 真的有點猛spring bootvert.xhttps:/ COSCUP Vincent 大大與我一起做的小測試但有個小問題.public void start()vert
3、x.createHttpServer().requestHandler(handler).listen(8080,ar-if(ar.succeeded()logger.info(HTTP server started)else logger.warn(fail,ar.cause();Vert.x 官方預設擁抱 callback style 的寫法真實世界應用情境,寫 Java 弄不好會變這樣請 ChatGPT4 老師幫我們 demo:換 CompletableFuture 試試換 RxJava 試試Java Reactive Programming 痛苦深淵reactive chaining
4、需要花時間理解到底我的 code 會不會跑,還是要 subscribe 才會動chaining operator 寫到心累在 lamda expression 中噴錯了,會無聲死亡.得小心翼翼處理錯誤JVM 中難道就沒有隔壁棚的 async,await 可以用嗎?kotlin coroutine 來拯救勒改寫成 kotlin coroutineVert.x 在很早期(coroutine 還沒正式 release 前)官方就出了 coroutine support 的 plugin有沒有很感動!全攤平了!不用去記憶一大堆 chaining operator 代表的意義這樣就 reactive 了
5、真的假的!還可以 try catch!More idiomatic!我 OK!先跳坑囉!找到了這個寫法之後,我們才敢在 production 上使用 Vert.x2019 年,我們就有第一個 Vert.x-kotlin-coroutine 上 production到這邊總結一下我們很窮,所以選 Vert.x我們想把 Vert.x 寫到方便維護,所以選 kotlin coroutine為了導入 coroutine,所以去學 kotlin然後就全公司後端都開始用 kotlin 了誰叫 java 動那麼慢,好啦他包袱多,不怪他但 Vert.x 直接寫大專案,有點辛苦Vert.x 認為自己是 tool
6、kit,不是 framework官方沒有提供 DI、CronJob 等等常見的工具router 要自己寫,風格類似 nodejs,java 人比較不習慣Quarkus 來拯救勒Quarkus 是個完整的 frameworkVert.x 外面包一層,性能一樣威猛生態系整合完善啊就很像 spring boot 的開發者體驗Red Hat 在罩的開源專案Say no more,ChatGPT4 老師請幫我再改寫一次:Quarkus kotlin coroutine。如此優雅!提醒大家,最一開始是長這樣的假設今天你被推坑成功了有幾個雷先講Quarkus 為了支援 java user,reactive