Question

J'écris une application graphique en Java. Finalement, j'aimerais construire un langage de script pour que les choses soient programmables. Quelle bibliothèque de langue recommandez-vous?

Les suspects probables sont:

Les candidats les moins susceptibles sont:

Le public cible n'est probablement pas un programmeur expérimenté. Par conséquent, un langage moins arcanique est préférable. Mon hypothèse est que JavaScript est plus acceptable pour eux même avec ses bizarreries simplement parce qu'ils l'ont vu plus souvent.

Lua semble être populaire en C / C ++, mais au moins LuaJava nécessite des fichiers .dll / .so supplémentaires, ce qui rend le déploiement compliqué.

EDIT: PhiLho a écrit qu'il y avait une implémentation Java de Lua appelée kahlua .

Questions connexes:

Était-ce utile?

La solution 6

Je viens de lire le de Steve Yegge Le modèle de conception universel . L'article traite d'un sujet beaucoup plus vaste que les scripts incorporés à une application Java, mais l'auteur écrit une application Java qui permet l'écriture de scripts (à l'aide de Jython). Il y a donc des points intéressants que je trouve intéressants.

  

Et JavaScript est l’un des deux meilleurs   langages de script sur la planète, en   le sens le plus correct du terme   "langage de script": à savoir,   langues qui ont été conçues   spécifiquement pour être intégré dans une plus grande   systèmes hôtes et ensuite utilisé pour   manipuler ou "script" objets dans le   système hôte. C'est ce que JavaScript   a été conçu pour faire. C'est raisonnablement   petit avec quelques extensions optionnelles,   il a un informel assez serré   spécification, et il a soigneusement   interface conçue pour le surfaçage   objets du système hôte de manière transparente dans   JavaScript.

     

En revanche, Perl, Python et Ruby sont   des sprawls énormes, tous essayant (comme C ++ et   Java) pour être le meilleur langage pour   chaque tâche. Le seul autre grand public   langue là-bas qui rivalise avec   JavaScript pour les scripts arbitraires   systèmes hôtes est Lua, célèbre pour être   le langage de script de choix pour   l'industrie du jeu.

Je suis d'accord avec lui sur le fait de se limiter à JavaScript et à Lua.

  

Sans ces exemples, tout ce que je peux   est-ce dire qu'en utilisant JavaScript / Rhino   (ou Lua, une fois qu'il est devenu disponible sur   la JVM) aurait pu faire ma vie   plus facile.

Personnellement, je préfère JavaScript sur la plate-forme Java. La population de la base d'utilisateurs est plus grande. Comme le dit Yegge, il s'agit du "langage de programmation le plus mal compris du monde". mais la quantité de ressources disponibles sur la langue est un atout. Rhino semble être une bête mûre.

Autres conseils

si le public cible est "pas de compétences en programmation ...". choisissez jython (python), il est facile à apprendre. (ma fille de 7 ans a appris très vite)

Bruce Eckel a fait un chapitre avec jython dans "penser en java".

au danger d'obtenir un "vote à la baisse" python est plus simple que BASIC: -)

Lua est apprécié, entre autres choses, par la simplicité de la langue, ce qui facilite son apprentissage. LuaJava utilise la mise en oeuvre Lua originale, ce qui la rend complète, mais peut être délicate à installer. Je connais au moins une implémentation Java pure de Lua: Kahlua . Ce n'est pas complet (manque de soutien de coroutine entre autres choses, mais on peut faire beaucoup sans eux) mais peut-être déjà utilisable pour votre objectif.
Contrairement à Groovy, par exemple, cela ne devrait pas alourdir considérablement votre application ...

Si vous voulez tout mettre en œuvre, vous pouvez utiliser des scripts pour la plate-forme Java comme > défini par JSR 223. Cette approche permettrait à l'application d'utiliser n'importe quel langage ayant un moteur de script .

Il y a aussi BeanShell, qui a l’avantage d’être une JSR entièrement approuvée, et donc peut-être plus susceptible de rester.

http://www.beanshell.org/

Java 6 dispose déjà de javascript disponible sous forme de langage de script JSR 223, prêt à l'emploi.

Je suis actuellement à la recherche d'une bibliothèque qui me permettra d'utiliser des objets et des méthodes Java à partir de scripts Lua.

Ma première idée était d’utiliser LuaJava également, mais comme je veux que cela fonctionne sous Linux, Mac et Windows, j’ai été choqué par le fait qu’il utilise une bibliothèque compilée en plus du matériel Java. Seuls les fichiers binaires pré-compilés Windows sont disponibles, et je ne suis pas un expert sur Mac. J'ai donc essayé de trouver quelque chose en Java pur et j'ai trouvé ceci: http://sourceforge.net/projects/luaj

Il semble implémenter l'API C décrite dans la documentation Lua, ainsi que l'API de LuaJava.

Le projet semble vraiment avancé, il existe des exemples d’appels Swing de Lua (!), et ils ont fonctionné sur ma machine Linux. Mais curieusement, les listes de diffusion, les forums et la documentation sont vraiment rares.

Je vais aussi essayer ceci sous Windows et Mac. J'espère que ça marche.

Kahlua a été mentionné, mais il ne vise que J2ME, c'est pourquoi il manque certaines parties de Lua. Je pense qu’il existe un projet appelé Mochalua qui poursuit les mêmes objectifs.

LuaJ, en revanche, est disponible en deux versions, l’une pour J2SE qui implémente tout (mais aussi pour les coroutines), et une pour J2ME, qui manque, selon moi, de 2 ou 3 libs (y compris LuaJava, qui nécessite réflexion).

Vous pourriez envisager de Jacl . Il est basé sur Tcl qui a été conçu à l'origine pour être un langage de script incorporable. On pourrait donc affirmer qu’il est bien plus adapté à cette fin que d’autres langages de script dotés de la possibilité d’être incorporés.

En particulier si le public cible est "non des programmeurs hardcore", Jacl fait un excellent choix. Les personnes intelligentes (et en particulier celles qui n’ont pas de préjugés en matière de programmation câblée) peuvent facilement comprendre la syntaxe Tcl en matinée.

Vous pouvez utiliser RelProxy - Java fournit un langage Java réel et pur en tant que langage de script, notamment: scripts shell réalisés avec Java, grâce à sa compilation à la volée. Parce que le script " Java " est exécuté en partageant le lanceur ClassLoader, l’intégration est simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top