2011-11-23 8 views
17

¿Hay un lenguaje que se compila en código Java (no en código Byte pero Java ... por lo que no Groovy, Scala, Jython, JRuby, etc.)?¿Hay un Coffeescript para Java? En otras palabras, X se compila en Java

En otras palabras, ¿hay un CoffeeScript para Java?

Uno de los principales defectos que tengo contra Java es que es tan malditamente detallado y que no tiene herencia múltiple. Parece razonable que uno pueda simplemente limpiar la sintaxis agregar mixins/rasgos y cierres a través de la generación de código.

Sí, no es elegante, pero coffeescript lo hace.

+0

gracias dios java no tiene herencia múltiple – mcabral

+0

@mcabral me refiero a mixins o rasgos. Ah, y me encanta repetirme cientos de veces. En serio, tengo que usar AspectJ para mantener Java OOP DRY o simplemente tengo que pegar el código por todos lados. –

+1

@mcabral: herencia múltiple en sí misma no es una mala característica. La forma en que C++ lo implementa le ha dado un mal nombre. Scala, por ejemplo, implementa la herencia múltiple correctamente y no tiene el temido problema de los diamantes. – missingfaktor

Respuesta

27

Sí, Xtend. Es un nuevo lenguaje presentado por la gente de Eclipse: http://www.eclipse.org/xtend/

Sin herencia múltiple (que sería un cambio fundamental en la semántica de Java), pero mucha azúcar sintáctica, al igual que CoffeeScript.

también echar un vistazo a Mirah: http://www.mirah.org/

+0

Guau, eso es genial! +1 – thejh

+0

Eso es genial. Todavía creo que deberías poder hacer herencia múltiple de forma similar a como tengo que hacerlo ahora en AspectJ (http://stackoverflow.com/q/7403617/318174). Parece que debería ser fácil codificar para generar MI. –

+0

Bueno, AspectJ no compila Java, estrictamente hablando. Realmente no se puede hacer AOP con código Java puro (de manera eficiente). –

2

Si se piensa en ello, CoffeeScript compilación de Javascript significa que se puede utilizar como un CoffeeScript lenguaje Java. Con el último CoffeeScript (1.1.3) puede que necesite usar Rhino directamente porque desencadena un error de implementación de JS en el jdk actual, pero aparte de eso, debería ser bueno usar los archivos js compilados para interactuar con el código de Java. :)

+1

+1 Un punto excelente. Sin embargo, me gusta escribir estática ligeramente mejor que la mecanografía dinámica. –

2

Escribí un pre-procesador para archivos de texto que introduce { sy } s donde había sangrado. Yo lo llamaba:

Está para nada cerca del establo, y no se ocupa de algunos de los otros accesos directos que señalar que CoffeeScript ofrece, pero funciona como una prueba de -concepto.

Cuestiones relacionadas