2012-01-09 14 views
5

Ho un piccolo programma in cui l'utente può inserire uno snippet di codice java "reale" in un'area di testo e quindi eseguire il codice per eseguire alcuni semplici test di sistema. Questo programma è stato realizzato anni fa, e ora sono curioso di sapere se ci sono alcuni nuovi modi fantasiosi per utilizzare la piattaforma java per ottenere lo stesso risultato (ad esempio, se l'utente accede a Groovy nell'area di testo, o forse supporta diversi script le lingue). Mi sono incuriosito quando ho letto di java 7 che supporta gli script digitati in modo dinamico nella sua macchina virtuale.Quali fantasiosi modi ci sono ora per supportare lo scripting in java?

risposta

3

È possibile utilizzare il supporto JavaScript integrato da Java 6: Creating meta language with Java, vedere anche ScriptEngineFactory.

Anche la struttura a molla ha un Dynamic language support.

Si noti che il supporto della lingua dinamica JVM 7 (tramite invokedynamic) è irrilevante qui. È principalmente indirizzato a linguaggi dinamici compilati in bytecode JVM (come JRuby o Groovy).

+1

Si noti che non tutte le Java JVM di Java 6 vengono fornite con JavaScript, ma solo quelle di IBM che non lo sono. –

2

ScriptEngineManager è stato introdotto in java 1.6. È la versione del Sole del buon vecchio progetto Jakarta BSF che esiste ancora. Entrambi supportano linguaggi di scripting diversi tra cui Groovy. Lo ScriptEngineManager integrato supporta solo JavaScript ma credo che sia possibile aggiungere anche l'interprete Groovy.

1

Oltre al supporto di scripting aggiunto nelle versioni più recenti di Java, è possibile utilizzare Bean Shell, qualcosa che può essere utilizzato anche con versioni Java precedenti come 1.5. Usando Bean Shell si può semplicemente fare:

// assuming you have Java code in a string called script, you can do 
Object result = new bsh.Interpreter().eval(script); 
// now result object will have the result of your Java code contained in string script 

Bean Shell è è completamente Java motore di scripting compatibile per gli script di valutazione e viene utilizzato da Apache, Sun, Bea nei loro molti prodotti.

Problemi correlati