Groovy,Clojure和Kotlin都是基于jvm的語言,那他們在實際項目中的運用場景有什么區別? - RednaxelaFX 的回答 - 知乎
https://www.zhihu.com/question/29818569/answer/45729205
簡單說,在JVM上不想用Java,喜歡某種別的平臺上已有的語言但想要更Java化的版本的話:
喜歡Ruby => 用Groovy
喜歡LISP,喜歡STM功能 => 用Clojure
喜歡C++ => 用Kotlin
Scala的話看評論↓
Groovy比較討好來自Java的程序員的一點是:用它寫代碼可以漸進的從接近Java的風格進化為接近Ruby的風格。使用接近Java風格寫Groovy時,代碼幾乎跟Java一樣,容易上手;而學習過程中可以逐漸用上各種類似Ruby的方便功能。
//
Scala自成一派,沒直接對應的原型語言。它比帶面向對象功能的函數式語言更面向對象(例如OCaml),比帶函數式風格功能的面向對象語言更函數式(例如C#、Java 8)。
//koltin和cpp有什么相同點嗎
有很多。一個詞概括就是“復雜”。它的設計在逐步變得合理,但并非一開始就是這樣的。
例如說Kotlin的類的繼承設計。一開始Kotlin設計的類繼承是允許像C++那樣的受限很少的多重繼承。我正好參加了2011N年的JVMLS,而Kotlin的兩位設計者在那個會議上介紹Kotlin的設計特性時被大家狂吐槽,其中最重點吐槽的就是這個多重繼承的設計。設計者一邊在說C++的設計不好,一邊描述的Kotlin的設計其實就跟C++的一樣…
現在的Kotlin改為很受限的基于trait的多繼承設計,這就好多了。
其它許多特性也是從大雜燴狀態開始的…就跟C++的狀況類似。
//
還有python,groovy號稱是jvm上的python
Scala、Groovy、Clojure 、Kotlin 分別解決了Java 的什么痛點? - Aaron 的回答 - 知乎
https://www.zhihu.com/question/48633827/answer/118542587
scala有兩種風格,一種是“the better java”,也就是保持java大體風格,但是靈活運用語法糖來簡化代碼。這個角度就是解決了java冗長的特點。
還有一種就是函數式為主了, pattern matching,閉包,高階函數等。這個角度就是對java的擴充,讓函數式進入jvm。后來java8也支持函數式不過還是scala實現的更早。
groovy是動態類型腳本語言,可以直接當做腳本跑。語言也比較靈活,所以常常拿來當配置文件用,比如gradle,或者連接數據庫參數之類。
clojure就是jvm上的lisp方言,除了它是lisp之外好像也沒解決什么痛處,所以一直想不通為何有人拿他做工程。。。