-
1 # 稀裡糊塗認真點
-
2 # 寫程式設計師的程式碼
1、Scala和Groovy都是基於JVM的語言,相比Java都有更加簡明的語法和豐富的表達能力。對於那些既想不脫離開JVM又想避免Java繁瑣的語句的開發人員來說,Scala和Groovy都是不錯的選擇。
2、Scala和Groovy之間的核心區別在於前者是靜態型別的。有些人可能爭辯說這使得達到指令碼化目標變得更加複雜了,而指令碼化正是Groovy的動機。然而,Scala有完整的體系特徵,這使Groovy看上去更像個玩具。比如,Scala有“sequence comprehensions”。該要素導致對演算法的表述非常緊湊和強大。
3、然而,Scala並不是盡善盡美的,它也有一些明顯的缺陷。總而言之,Scala看起來像下一個被過度宣傳的語言。只需要把其精華引入到Groovy中,然後扔掉那些糟糕的語法。
4、Groovy更像Java,更容易上手,語法也讓開發者不反感。
5、另外,無論是Ruby、Scala還是Groovy都有對應的Web框架,且對應的框架都是用各自對應的語言編寫的。這些框架分別是Rails、Lift和Grails。儘管Lift和Grails中的許多東西都從Rails借鑑來的,但是Grails對其他已有Java技術框架進行了很好的繼承,這無疑會保護使用者或廠商在這方面的已有投資。
綜上所述:
Scala和Groovy兩種語言都在快速發展的過程中。就目前的情況來看,Groovy的優勢在於易用性以及與Java無縫銜接,Scala的優勢在於效能和一些高階特性,如果在發展過程中兩者能互相借鑑對方的優點來充實自身,對開發者來講無疑是福音。
-
3 # 科技小館
Scala有兩個流派:FP和Better Java。FP派喜歡scalaz,喜歡shapeless,喜歡type level programming。這一派特點是程式高度抽象但可讀性奇差。適合PL研究者驗證概念,適合業餘專案自嗨,也適合學習PL概念。不適合多人協作的工程專案。Better Java派以前之所以存在,單純是因為Java語法設計太爛,爛到無法忍受。而JVM上當時也沒有其它更好的選擇。那些告訴你“寫了n年Java以後,我切換到Scala,現在每天都活在幸福中”的人,基本都是這一派。但Scala as a better Java的工程性也不好,因為特性太多太複雜,除非有高手帶隊,否則很難只用到它“better java”的那個子集。解決一個問題的同時,往往引入更多的問題。所以會有Java8釋出以後Linkedin所有新專案全部迴歸Java這種事情。
Groovy是動態語言,工程性比Scala還差。但是因為有Gradle這種被廣泛採用的專案,所以會存活下去。但是請記住愛因斯坦曾經說過:“任何超過兩百行的新專案,都不應該採用動態語言開發,無論是Ruby,Python,Perl,Groovy還是Clojure”。哦,對了,也不要用Clojure。因為它是動態語言,而且是Lisp系的動態語言。“Lisp系”意味著,讀書的時候可以靠它開眼界。畢業工作以後,對於這一類語言,能躲多遠就躲多遠。
Kotlin看上去靠譜。它不講究FP有多純,目標就一個:“a better java”。Kotlin在“到底引入多少FP特性”上面做得恰到好處。 看到Kotlin,我馬上就想起了這個演講:“Please stop polluting our imperative languages with pure concepts”。
Kotlin有以下好處:
1. 強大的IDE。而且是JetBrains第一方支援,不是3年更新一次的第三方外掛;
2. 庫多生態強。Kotlin的設計者非常重視和Java的互操作,所以Kotlin號稱可以無縫銜接所有Java庫。
3. 宇宙第一執行時:JVM。4. Android上不能用Java8的新語法,Kotlin恰逢其時的出現,抓了一波完美的timing。
如果Kotlin依靠Android開發爆發,那伺服器端,大資料界,也會收益,最後多面開花,勢不可擋。但是Kotlin剛出來,到底有沒有它自稱的那麼好用還待觀察。另外,Kotlin社群現在集中力量攻堅Android,在伺服器和大資料方向沒什麼靠譜專案。所以還是得用Java8。總之,“魔鏡啊魔鏡,誰是JVM上最好的語言”之最後決戰,將是Java10 vs Kotlin(Java9在語法特性上已經輸了)。
-
4 # 算了太懶了
工作機會是王道,其他都是胡扯。別聽忽悠,自己看看三者的工作機會多少,Java高出幾個數量級。看趨勢,Java離真正衰退還早著呢。待遇Scala可能稍高,但高不了太多。
回覆列表
Java是一種不容易犯錯的語言,雖然寫多了你會吐,不過適合寫聯機交易型的程式,兼顧了規模和低於批次級的複雜邏輯以及較短處理時間的要求。目前一般的後臺伺服器的邏輯在一定規模情況下都是Java,順便說一句,Java 8也支援函數語言程式設計,大家不用再呼叫Functional Java庫去隔靴搔癢,不過Java 8有點叫好不叫座的意思。目前Java還保留在Web和安卓領域多些。
雖然java有許多缺陷需要進行改進,但是,java對於大型網站後端開發領域,依然是王者。在我看來,某種技術的興起,必然是廣大開發使用者的福音,但是,並不是誰會取代誰,Java也可以在 Groovy與scala的新特性的基礎上進行借鑑與學習來縮小差異化。
例如,java語言中讓開發者較為頭疼的資料型別的冗餘化及缺乏靈活性問題,要是能改進為類似php,python,perl的 hash, list, array 等靈活的型別定義,就完美了, 就能大幅提高開發效率;或者,可以引入一個第三方的"語言"來實現,並保持原有java的強大特性。
伴隨jdk新特性的升級, Java已經擁有了很多動態語言中的一些優點,如閉包等。未來JVM平臺的多語言應用會是趨勢,Java依然是老大哥地位。Java強型別的靜態編譯帶來的安全保障和模組化分層的架構依然是大型企業級應用的首選。