kotlin 有的大家都想要,這點 Java 也一樣 (被逼的)
kotlin 吸收前人的經驗,只留下實用的功能,現在變成現代化語言的標竿了。Dart 也許到了 4.0 功能上也會差不多
改得超多的,之前的什麼 any T 都不見了
In Valhalla, we convert from inline to reference types via an inline widening conversion. This is similar to boxing, but it has a significant difference: the result of the conversion is not an identity object (as a box would be), but a reference to an inline object.
Boxing
的話是直接開一個肥 Object, Reference projection
的話只是一個 reference 指向 inline object,所以整個輕量化。
看到後面,最大缺點是 Optional
要寫成
Optional.inline<User> userOpt = Optional.of( findUserById(12))
這種奇怪的型式才能得到最佳化,然後像是 Map API 也變難懂:
public V.ref get(K key);
看到 return V.ref
一定很傻眼
singleton is evil !
一開始都是立意良好, 但隨著程式維護就漸漸爛了, 也不是只有 flutter 有這個問題.
不過 GUI 的程式會很想用 singleton 就是了, 因為 UI 的程式通常會很深 (react 這種 comp tree 的更嚴重), 不用 singleton 很麻煩...
這個問題要解決就是養成寫 test 的習慣, 一旦要 test 就會發現導入 singleton 很難測
當然也是會發生維護的人發現 test 過不了, 然後全砍掉, 改回用 singleton, 這就不是什麼 practice 能救的問題了
python 的 list comprehension 和 spread operator. 這些功能引入都是因為 flutter 的 UI 是直接用 dart 來寫
Dart 因為只有 google 在用, 而目前主力是 flutter, 所以整個語言都被魔改成 flutter 專用. 像是 swift 之於 iOS 那樣.
一個語言如果背後是給一個大公司專門開發, 通常都有這種毛病. 現在回想起來, 如果 Java 是被賣到 Google, 有可能會被魔改成 Android 專門的奇特語言. Oracle 雖然無恥但某方面 Java 還是有維持原本的風格
講個小東西,如果 html lang 設為 zh
<!doctype html>
<html lang="zh">
結果會是像簡體用的繁體字型
<!doctype html>
<html lang="zh-Hant">
改成 zh-Hant
就會用教育部的標準字體了。(注意肉字旁的寫法有變)
JDK 升到 11 大概是難得的 break change,我寫十幾年 Java 第一次遇到。
JDK 11 出來後,我大概幾個月就會嘗試升升看,然後通常是 library 沒跟上,有噴 warning/error。
現在 JDK 11 已出滿一年了,這個時間點升級就幾乎是無痛了。我想這可以做為未來 JDK 17 升級的依據。大約是 release 後等一年左右。
昨天把公司的大小專案都升到 jdk 11 和最新的 spring boot 了
蠻爽的
時間久了發現我現在的更新週期大約是;
- spring boot 一年
- vuejs 半年
- k8s 半年
- postgresql 一年以上
- JDK 三年以上
- OS 三年以上
可能的話我也想一兩年升一次 k8s 就好, 但目前不太可能...