usa que proposito programacion lenguaje historia filosofia como actualidad java javascript scripting lua jython

que - proposito de java



Java: lenguaje de scripting(macro) para incrustar en una aplicaciĆ³n de escritorio Java (9)

Java 6 ya tiene JavaScript disponible como lenguaje de scripts JSR 223, listo para usar.

Estoy escribiendo una aplicación de gráficos en Java. Eventualmente me gustaría construir en un lenguaje de scripting para que las cosas sean programables. ¿Qué biblioteca de idiomas recomiendas?

Los posibles sospechosos son:

Los candidatos menos probables son:

El público objetivo probablemente no sea programador hardcore, por lo que se prefiere un lenguaje menos arcano. Supongo que JavaScript es más aceptable para ellos incluso con sus peculiaridades solo porque lo han visto más.

Lua parece ser popular en C / C ++, pero al menos LuaJava requiere .dll / .so adicional, lo que hace que la implementación sea complicada.

EDITAR: PhiLho escribió que hay una implementación de Java de Lua llamada kahlua .

Preguntas relacionadas:


Si quisiera hacer todo lo posible, podría utilizar secuencias de comandos para la plataforma Java, tal como se define en JSR 223. Tomar ese enfoque permitiría a la aplicación utilizar cualquier lenguaje que tenga un motor de scripts conformes.


Lua es apreciado, entre otras cosas, por la simplicidad del lenguaje, lo que hace que sea fácil de aprender. LuaJava usa la implementación original de Lua, por lo que es completa, pero como usted señala, puede ser difícil de instalar. Sé al menos una implementación pura de Java de Lua: Kahlua . No está completo (sin soporte de corutina, entre otras cosas, pero uno puede hacer mucho sin ellos) pero quizás ya se puede usar para su objetivo.
A diferencia de, digamos, Groovy, no debería agregar demasiada sobrecarga a su aplicación ...


Podrías considerar a Jacl . Se basa en Tcl, que originalmente se diseñó para ser un lenguaje de scripts incrustable. Por lo tanto, uno podría argumentar que es mucho más adecuado para ese propósito que otros lenguajes de scripting que tenían la capacidad de ser incrustados.

Particularmente si la audiencia objetivo no es "programadores hardcore", Jacl hace una buena elección. Las personas inteligentes (y especialmente las que no tienen prejuicios de programación cableada) pueden captar fácilmente la sintaxis de Tcl en una mañana.


También está BeanShell, que tiene la ventaja de ser una JSR completamente aprobada, y por lo tanto, es más probable que permanezca.

http://www.beanshell.org/


si el público objetivo es "sin habilidades de programación ...", elija jython (python), es fácil de aprender. (mi hija de 7 años lo aprendió muy rápido)

Bruce Eckel hizo un capítulo con jython en "thinking in java".

en el peligro de obtener un pitón "de voto abajo" es más fácil que BASIC :-)


Acabo de leer The Universal Design Pattern de Steve Yegge. El artículo trata sobre un tema mucho más amplio que los scripts incorporados en la aplicación Java, pero dado que el autor escribe una aplicación Java que permite la creación de scripts (usando Jython), hay puntos interesantes que me parecieron interesantes.

Y JavaScript es uno de los dos mejores lenguajes de scripting del planeta, en el sentido más correcto del término "lenguaje de script": es decir, lenguajes que fueron diseñados específicamente para ser integrados en sistemas host más grandes y luego utilizados para manipular o "guiones" objetos en el sistema host. Esto es lo que JavaScript fue diseñado para hacer. Es razonablemente pequeño con algunas extensiones opcionales, tiene una especificación informal razonablemente ajustada y tiene una interfaz cuidadosamente diseñada para hacer emerger los objetos del sistema host transparentemente en JavaScript.

Por el contrario, Perl, Python y Ruby son enormes extensiones, todas intentan (como C ++ y Java) ser el mejor lenguaje para cada tarea. El único otro lenguaje dominante que compite con JavaScript para crear scripts de sistemas host arbitrarios es Lua, famoso por ser el lenguaje de scripting de elección para la industria del juego.

Estoy de acuerdo con él en reducir a JavaScript y Lua.

Sin los ejemplos a mano, todo lo que puedo hacer es decir que usar JavaScript / Rhino (o Lua, una vez que esté disponible en la JVM) podría haberme hecho la vida más fácil.

Personalmente prefiero JavaScript en la plataforma Java. La población de la base de usuarios es más grande. Como dice Yegge, es "el lenguaje de programación más incomprendido del mundo", pero la cantidad de recursos disponibles en el lenguaje es un plus. Rhino parece una bestia madura.


Actualmente estoy buscando una biblioteca que me permita usar objetos y métodos de Java a partir de los scripts de Lua.

Mi primera idea fue utilizar LuaJava también, pero como quiero que esto funcione en Linux, Mac y Windows, me desconcertó el hecho de que usa una lib compilada además de Java. Solo están disponibles los binarios precompilados de Windows, y no soy un experto en Mac, así que traté de encontrar algo en Java puro, y encontré esto: http://sourceforge.net/projects/luaj

Parece implementar la API C descrita en el documento de Lua, así como la API de LuaJava.

El proyecto parece realmente avanzado, hay ejemplos de llamadas Swing de Lua (!), Y funcionaron en mi cuadro de Linux. Pero, curiosamente, las listas de correo, los foros y la documentación son realmente escasos.

Voy a probar esto en Windows y Mac, también. Espero que funcione.

Kahlua ha sido mencionado, pero solo está dirigido a J2ME, es por eso que le faltan algunas partes de Lua. Creo que hay un proyecto llamado Mochalua que tiene los mismos objetivos.

LuaJ, por otro lado, viene en dos versiones, una dirigida a J2SE que implementa todo (corutinas, también), y otra dirigida a J2ME, que carece de 2 o 3 libs, creo (incluido el material LuaJava, que necesita reflexión).


Puede utilizar RelProxy - Java, proporciona Java real y puro como lenguaje de scripting, incluidos scripts de shell creados con Java, gracias a su compilación sobre la marcha. Debido a que el "script" de Java se ejecuta compartiendo el iniciador ClassLoader, la integración es sencilla.