Domanda

Sto scrivendo un'applicazione grafica in Java. Alla fine vorrei creare un linguaggio di scripting in modo che le cose siano programmabili. Quale biblioteca di lingue mi consigliate?

Probabili sospetti sono:

I candidati meno probabili sono:

Il pubblico di destinazione probabilmente non è programmatore hardcore, quindi si preferisce un linguaggio meno arcano. La mia ipotesi è che JavaScript sia più accettabile da parte loro anche con le sue stranezze solo perché l'hanno visto di più.

Lua sembra essere popolare in C / C ++, ma almeno LuaJava richiede .dll / .so aggiuntivo, il che rende complicata la distribuzione.

EDIT: PhiLho ha scritto che c'è un'implementazione Java di Lua chiamata kahlua .


Domande correlate:

È stato utile?

Soluzione 6

Ho appena letto di Steve Yegge Il modello di design universale . L'articolo è su un argomento molto più ampio rispetto al semplice scripting incorporato nell'applicazione Java, ma poiché l'autore scrive un'applicazione Java che consente lo scripting (usando Jython), ci sono punti interessanti che ho trovato interessanti.

  

E JavaScript è uno dei due migliori   linguaggi di scripting sul pianeta, in   il senso più corretto del termine   "linguaggio di scripting", vale a dire,   lingue progettate   specificamente da incorporare in dimensioni maggiori   sistemi host e quindi utilizzato   manipolare o " script " oggetti nel   sistema host. Questo è JavaScript   è stato progettato per fare. È ragionevole   piccolo con alcune estensioni opzionali,   ha un informale ragionevolmente stretto   specifica, e ha un attento   interfaccia artigianale per la superficie   oggetti del sistema host in modo trasparente   JavaScript.

     

Al contrario, Perl, Python e Ruby lo sono   enormi tentacoli, tutti provanti (come C ++ e   Java) per essere la lingua migliore per   ogni compito. L'unico altro mainstream   lingua là fuori che compete   JavaScript per lo scripting arbitrario   sistemi host è Lua, famosa per essere   il linguaggio di scripting preferito da   l'industria dei giochi.

Sono d'accordo con lui sul restringimento a JavaScript e Lua.

  

Senza gli esempi utili, tutto ciò che posso   si dice che usando JavaScript / Rhino   (o Lua, una volta diventato disponibile su   la JVM) potrebbe aver reso la mia vita   più facile.

Personalmente preferisco JavaScript sulla piattaforma Java. La popolazione della base di utenti è maggiore. Come dice Yegge, è "il linguaggio di programmazione più frainteso al mondo". ma la quantità di risorse disponibili sulla lingua è un vantaggio. Rhino sembra una bestia maturata.

Altri suggerimenti

se il pubblico di destinazione non ha "capacità di programmazione ...." scegli jython (python) è facile da imparare. (la mia figlia di 7 anni l'ha imparato molto rapidamente)

Bruce Eckel ha realizzato un capitolo con jython in "pensando in java".

al pericolo che ottiene un "voto negativo" python è più semplice come BASIC :-)

Lua è apprezzata, tra l'altro, dalla semplicità della lingua, che lo rende facile da imparare. LuaJava utilizza l'implementazione originale di Lua, rendendola completa, ma come indicato, forse delicata da installare. Conosco almeno un'implementazione pura di Java di Lua: Kahlua . Non è completo (manca il supporto coroutine tra le altre cose, ma si può fare molto senza di loro) ma forse già utilizzabile per il tuo obiettivo.
A differenza, diciamo, Groovy, non dovrebbe aggiungere molto sovraccarico alla tua applicazione ...

Se volessi fare tutto il possibile, potresti utilizzare gli script per la piattaforma Java come definito da JSR 223. L'adozione di questo approccio consentirebbe all'applicazione di utilizzare qualsiasi linguaggio che abbia un motore di script .

C'è anche BeanShell, che ha il vantaggio di essere una JSR completamente approvata e quindi forse più probabilità di rimanere in giro.

http://www.beanshell.org/

Java 6 ha già javascript disponibile come linguaggio di scripting JSR 223, pronto all'uso.

Attualmente sto cercando una libreria che mi permetta di usare oggetti e metodi Java dagli script Lua.

La mia prima idea è stata quella di utilizzare anche LuaJava, ma poiché voglio che funzioni su Linux, Mac e Windows, sono stato scoraggiato dal fatto che utilizza una libreria compilata oltre alle cose Java. Sono disponibili solo i binari precompilati di Windows e non sono un esperto su Mac, quindi ho cercato di trovare qualcosa in Java puro e ho trovato questo: http://sourceforge.net/projects/luaj

Sembra implementare l'API C descritta nel documento Lua, così come l'API di LuaJava.

Il progetto sembra davvero avanzato, ci sono esempi di chiamate Swing di Lua (!) e hanno funzionato sul mio Linux box. Ma stranamente, le mailing list, i forum e la documentazione sono davvero scarsi.

Lo proverò anche su Windows e Mac. Spero che funzioni.

Kahlua è stato menzionato, ma è mirato solo a J2ME, ecco perché manca alcune parti di Lua. Penso che ci sia un progetto chiamato Mochalua che ha gli stessi obiettivi.

LuaJ, d'altra parte, è disponibile in due versioni, una mirata a J2SE che implementa tutto (anche le coroutine) e una mirata a J2ME, che manca di 2 o 3 librerie credo (inclusa la roba LuaJava, che necessita riflessione).

Potresti prendere in considerazione Jacl . Si basa su Tcl, originariamente progettato per essere un linguaggio di script incorporabile. Quindi, si potrebbe sostenere che è molto più adatto a tale scopo rispetto ad altri linguaggi di scripting che hanno avuto la possibilità di essere incorporati.

Soprattutto se il pubblico di destinazione non è "programmatori hardcore", Jacl fa una buona scelta. Le persone intelligenti (e soprattutto quelle senza pregiudizi della programmazione cablata) possono facilmente rilevare la sintassi Tcl in una mattina.

Puoi usare RelProxy - Java, fornisce Java reale e puro come linguaggio di scripting, incluso script di shell realizzati con Java, grazie alla sua compilazione al volo. Perché Java " script " viene eseguito condividendo il programma di avvio ClassLoader, l'integrazione è semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top