1、Kotlinkotlin|Developed by JetBrains 用 Kotlin 讓 Java 踏入微服務的時代Brandy ChangAbout Me2023 -JCConf:Arrow KT TW Kotlin 年會 -ITHome 鐵人賽 -KT Meetup#192022 -ITHome 鐵人賽2021 -Kotlin 讀書會JCConf:Reactive with QuarkusServer Side Kotlin舊 Java 專案的困境 舊程式碼有其商業價值但沒有足夠測項不預期的 Null Pointer Exception不一致且重覆的設計模式實現新的語法簡潔,但升級 J
2、ava 是風險新的語言有一定的學習曲線1.用 Kotlin 幫 Java專案加上測試100%與 Java 互操作,更簡潔Test Case Nameclass TagClientTest Test fun basic tag list()Test fun empty tag list()JSON,XML可讀性用 Kotlin 幫 Java 專案加上測試 更人性化的語法 提高可維護性Null Pointer Exception 面對他 接受他 處理他 放下他val supportType=payment?.type?.name?.toLowerCase()val supportType=paym
3、ent?.type?.name?.toLowerCase()https:/ 內建 Effective Javaequals.A Java TrapAvoid Java Common TrapNo more equalssplit 表明要用 regex 還是要分隔符No More Common-Lang,Common-Lang3Path,FileName,URLs.object Mapper val mapper:ObjectMapper=ObjectMapper().fun Any.toJson():String=mapper.writeValueAsString(this)inline fu
4、n String.fromJson():T=mapper.readValue(this,T:class.java)data class User(val name:String,val family:String)val jsonString=mapOf(name to Brandy,family to Chang).toJson()val user=jsonString.fromJson()用 Extension Function 取代 UtilsSingleton PatternDelegation Pattern更/需要為每個委派的方法提供明確的轉發新的語法簡潔,但升級 Java 是風險
5、Kotlin 支援 Java 8 以上的專案新的語言有一定的學習曲線IDE 幫助及相容漸近的轉換自動把 Java Code 轉成 Kotlin手把手指導更好的實現Google Server Side Kotlin 導入調查結果老瓶新裝、漸進導入約 Java 的 -程式碼讓開發者使用新的語法可維護性提高生產力提高微服務有很多 Service 要打UserAggregateUser InfoUser AvatarPermissionServicepublic class UserService Autowired private RestTemplate restTemplate;public U
6、serAggregate getUserData(String userId)UserInfo userInfo=restTemplate.getForObject(urlA+userId,UserInfo.class);Avatar avatar=restTemplate.getForObject(urlB+userId,Avatar.class);Permission permission=restTemplate.getForObject(urlC+userId,Permission.class);UserAggregate userAggregate=new UserAggregate