2011-11-23 36 views
17

是否有一種語言被編譯爲Java代碼(不是Byte代碼,而是Java ..所以沒有Groovy,Scala,Jython,JRuby等)?是否有Java的Coffeescript?換句話說,X被編譯爲Java

換句話說有沒有CoffeeScript for Java?

我對Java的一個主要缺陷是,它非常冗長,並且沒有多重繼承。看起來合理的是,人們可以通過代碼生成來清理語法添加mixins/traits和閉包。

是的,它不是優雅的,但咖啡標記呢。

+0

感謝上帝java沒有多重繼承 – mcabral

+0

@mcabral我的意思是mixin或traits。哦,我喜歡重複自己數百次。說真的,我必須使用AspectJ來保持Java OOP DRY,否則我只需要將代碼粘貼到整個地方。 –

+1

@mcabral:多重繼承本身不是一個錯誤的特徵。 C++實現它的方式給它一個不好的名字。例如,Scala正確地實現了多重繼承,並且沒有可怕的鑽石問題。 – missingfaktor

回答

27

是的,Xtend。這是一個由Eclipse人帶給你的新語言:http://www.eclipse.org/xtend/

沒有多重繼承(這將是對Java語義的根本改變),但是很多語法糖,就像CoffeeScript一樣。

而且看看米拉:http://www.mirah.org/

+0

哇,真酷! +1 – thejh

+0

這很酷。我仍然認爲你應該能夠做多重繼承,就像我現在在AspectJ(http://stackoverflow.com/q/7403617/318174)中所做的一樣。看起來應該很容易編碼生成MI。 –

+0

那麼嚴格來說,AspectJ並沒有編譯成Java。您無法真正使用純Java代碼(高效地)執行AOP。 –

2

如果你想想看,CoffeeScript的編譯爲Javascript意味着你可以使用CoffeeScript的本身作爲一個Java語言。使用最新的CoffeeScript(1.1.3),您可能需要直接使用Rhino,因爲它會觸發當前jdk中的JS實現錯誤,但除此之外,您應該使用已編譯的js文件與Java代碼進行交互。 :)

+1

+1一個很好的觀點。不過,我喜歡靜態類型比動態類型稍微好點。 –

2

我寫了一個文本文件的預處理器,其中介紹了有縮進的{ s和} s。我把它叫做:

這是隔靴搔癢穩定,它不會解決一些你指出的CoffeeScript提供了其他的快捷鍵,但它的工作作爲證明的-概念。