天天看點

groovy 簡介(基于JVM的腳本語言)1.JVM腳本語言三巨頭2.與java宏觀對比

groovy ,[ˈgru:vi ] ,adj. 絕妙的 流行的; 

groovy是一個基于jvm的腳本語言,可以與java很好地結合、混用。

它們都是基于jvm的腳本語言。此外還有jython、jruby,就不展開了。

clojure 是一種 lisp 方言,在文法上徹底背離了其他語言。它是一種強動态類型語言(和 groovy 一樣),反映了專斷的設計決策。雖然 clojure 允許您用遺留 java 進行完整和深入的互動操作,但它并不試圖建構與舊式範式相連的橋梁。例如,clojure 不具備糾錯功能,并且支援面向對象進行互動操作。但是,它還支援對象程式員所習慣的所有特性,如多态性,但它以函數方式而非面向對象的方式來實作這些特性。clojure 圍繞一些核心工程原理(比如 software transactional

memory)進行設計,它打破了舊的範式,支援新的功能。

scala 是一種充分利用了 jvm 優勢的語言,但其文法完全進行了重新設計。scala 是一種強靜态類型語言(比對類型要求比較嚴格的 java 更嚴格)支援面向對象範式和函數範式,而且更青睐于後者。例如,scala 傾向 val聲明,并使不變的變量(類似于在 java 中将參數标記為 final)服從于 var,這建立了人們更加熟悉的可變變量。通過大力支援這兩種範式,scala 為您提供了從您可能是(一名面向對象的指令式程式員)到可能應該是(一名傾向函數式的程式員)的橋梁。

groovy 是 21 世紀的 java 文法(濃縮咖啡,而非普通咖啡)。groovy 的設計目标是更新并減少 java 文法阻力,同時支援 java 語言中的主要範式。是以,groovy 需要 “了解” javabeans 這類技術,并簡化屬性通路。groovy 快速合并新特性,并提供了一些重要函數特性,我将在後面幾期中重點介紹。groovy 在根本上依然是面向對象的指令式語言。groovy 與 java 的兩個主要差別是,groovy 是 靜态而非動态類型,而且它的元程式功能更佳。

網上的讨論很亂,教科書也不讨論這些,先給這麼一版答案吧。

靜态類型:編譯時明确變量的類型。如java。

動态類型:運作時才确定變量的類型。如groovy。

強類型:一旦變量被指定某個資料類型,不能再變。如java。

若類型:與強類型相反。如js。