Groovy在十幾年前是最早進入我視野,並開始實際應用的,甚至比scala還早。因為大家發現java過於死板,需要一種動態特性更好,更靈活的語言來編寫很多指令碼。 我最早看到的是用Groovy編寫測試指令碼,不管是功能測試還是壓力測試都很方便。後來ruby on rails大行其道, 但那一套照搬到java上比較困難,於是就做在了groovy上,就有了grails。也就是題主感覺為什麼開發速度特別快的原因,rails的思想結合spring boot用來開發web服務還是很讚的
現在Groovy也是功能齊備了,但八九年前,抱怨還是挺多的,覺得太簡陋了。於是業界(主要是java程式設計師)發現JVM裡還有scala可以用。scala歷史也是非常悠久,但一開始比較學院派,後來才慢慢體現出非常好的工程性。當時基於actor模式,用scala搞出了akka。最開始大家主要是想用scala來解決多執行緒的難題。這方面scala乾的不錯,先後湧現了不少web和rpc框架,比如後來的play framework和finagle都是一時之選,現在也還十分活躍。而且scala提供了極為豐富的語言特性,也讓很多java程式設計師欲罷不能。現在scala在後端還不錯,不過也有Linkedin這樣的公司決定停止繼續玩Scala,轉回java 8的懷抱。
但凡事都是把雙刃劍,很多人發現scala好是好,就是實在太複雜了,實際專案中收到了很多抱怨。於是大家發現還有Clojure。Clojure脫胎於lisp, 是更純粹的函式是語言,scala其實是個OO和FP的大雜燴。使用Clojure這種純FP的特性,開發多執行緒大併發的應用是很有利的, 表達力也非常強。但是這似乎又與我們習慣的java程式設計方式相差太遠了,我雖然是純fp的粉,但純fp還是有點小眾。於是這個語言一直有點叫好不叫座,所以在jvm上一直沒到達取代scala的程度。clojure野心也挺大的,先後也搞了非JVM的版本,比如說到.net CRL,到瀏覽器(編譯成js)等等。後來能編譯成js的clojureScript的確讓人眼前一亮,大家有興趣的可以看看google clojure。
這時候kotlin來了,它沒有scala那麼複雜,也沒有clojure那麼純粹。而且它有個非常好的契機,就是google在安卓上的java遇到些麻煩,他們迫切需要一種新的語言,於是google幾乎是第一時間給kotlin在安卓上提供了非常好的支援,幾乎是第一天就當親兒子來養。kotlin至少在安卓開發上,是抱著取代java的願景的, 而且我觀察kotlin的確更關注和強調客戶端開發,但別忘了,這貨能在jvm上執行啊,所以它對伺服器端的開發能力幾乎是天生的,Spring 5.0和vert.x都是支援kotlin的。另外,kotlin也是可以非常好運行於多平臺的(oracle jvm, 安卓,瀏覽器等等)上的, 其實前面幾個語言基本也都能,只是有些官方支援沒那麼好。
Groovy在十幾年前是最早進入我視野,並開始實際應用的,甚至比scala還早。因為大家發現java過於死板,需要一種動態特性更好,更靈活的語言來編寫很多指令碼。 我最早看到的是用Groovy編寫測試指令碼,不管是功能測試還是壓力測試都很方便。後來ruby on rails大行其道, 但那一套照搬到java上比較困難,於是就做在了groovy上,就有了grails。也就是題主感覺為什麼開發速度特別快的原因,rails的思想結合spring boot用來開發web服務還是很讚的
現在Groovy也是功能齊備了,但八九年前,抱怨還是挺多的,覺得太簡陋了。於是業界(主要是java程式設計師)發現JVM裡還有scala可以用。scala歷史也是非常悠久,但一開始比較學院派,後來才慢慢體現出非常好的工程性。當時基於actor模式,用scala搞出了akka。最開始大家主要是想用scala來解決多執行緒的難題。這方面scala乾的不錯,先後湧現了不少web和rpc框架,比如後來的play framework和finagle都是一時之選,現在也還十分活躍。而且scala提供了極為豐富的語言特性,也讓很多java程式設計師欲罷不能。現在scala在後端還不錯,不過也有Linkedin這樣的公司決定停止繼續玩Scala,轉回java 8的懷抱。
但凡事都是把雙刃劍,很多人發現scala好是好,就是實在太複雜了,實際專案中收到了很多抱怨。於是大家發現還有Clojure。Clojure脫胎於lisp, 是更純粹的函式是語言,scala其實是個OO和FP的大雜燴。使用Clojure這種純FP的特性,開發多執行緒大併發的應用是很有利的, 表達力也非常強。但是這似乎又與我們習慣的java程式設計方式相差太遠了,我雖然是純fp的粉,但純fp還是有點小眾。於是這個語言一直有點叫好不叫座,所以在jvm上一直沒到達取代scala的程度。clojure野心也挺大的,先後也搞了非JVM的版本,比如說到.net CRL,到瀏覽器(編譯成js)等等。後來能編譯成js的clojureScript的確讓人眼前一亮,大家有興趣的可以看看google clojure。
這時候kotlin來了,它沒有scala那麼複雜,也沒有clojure那麼純粹。而且它有個非常好的契機,就是google在安卓上的java遇到些麻煩,他們迫切需要一種新的語言,於是google幾乎是第一時間給kotlin在安卓上提供了非常好的支援,幾乎是第一天就當親兒子來養。kotlin至少在安卓開發上,是抱著取代java的願景的, 而且我觀察kotlin的確更關注和強調客戶端開發,但別忘了,這貨能在jvm上執行啊,所以它對伺服器端的開發能力幾乎是天生的,Spring 5.0和vert.x都是支援kotlin的。另外,kotlin也是可以非常好運行於多平臺的(oracle jvm, 安卓,瀏覽器等等)上的, 其實前面幾個語言基本也都能,只是有些官方支援沒那麼好。