2011-11-23 35 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提供了其他的快捷键,但它的工作作为证明的-概念。