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
È 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).
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.
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.
- 1. Quali caratteristiche linguistiche sono necessarie per lo scripting di giochi?
- 2. Quali progetti Java sono esplicitamente eseguiti per supportare la retrocompatibilità?
- 3. Quali alternative Visio per Mac ci sono?
- 4. Quali sono i modi per modificare una funzione in R?
- 5. Quali sono alcuni modi migliori per evitare il do-mentre (falso); hack in Java?
- 6. Quali sono i possibili vettori di attacco per lo scripting cross-site riflesso?
- 7. Quali sono i modi migliori per bloccare le app Android?
- 8. Quali sono i diversi modi per sostituire un cursore?
- 9. Ci sono piani per supportare "provider di tipi" per Scala SIQ (ScalaIntegratedQuery) come in F #?
- 10. Quali sono i modi migliori per monitorare lo stato del server?
- 11. Perché ci sono due modi per definire le funzioni con nome in elixir?
- 12. Quali strumenti usi per supportare XCode?
- 13. Ci sono piani per la JVM per supportare i generici in fase di runtime?
- 14. Quali sono i vari modi con cui il "questo" può sfuggire in Java?
- 15. Quali sono alcuni modi in cui posso rappresentare un grafico ponderato e diretto in Java?
- 16. Quali sono i modi migliori per automatizzare una sessione di debugging GDB?
- 17. Quali equivalenti ci sono per TortoiseSVN, su Mac OSX?
- 18. Ci sono funzioni inline in java?
- 19. Ci sono modi in Scala per dividere un codice di classe in molti file?
- 20. Quali svantaggi ci sono per lasciare aperta una connessione SQL?
- 21. Quali sono tutti i modi per allocare la memoria in C e in che modo differiscono?
- 22. modi creativi di inserire data e ora
- 23. Ci sono piani per ImmutableEnumSet in Java 7?
- 24. Modi per ottenere efficaci tratti Java?
- 25. Quali sono i modi per ottenere storage persistente e condivisibile solo in html e javascript?
- 26. Quali librerie ci sono per l'elaborazione di XML su Google App Engine/Java Servlet
- 27. Quali sono i modi per fare in modo che un collegamento html apra una cartella
- 28. Quali spazi dei nomi simbolo ci sono in Haskell?
- 29. Quali sono i modi alternativi per trovare next(). Next() in jquery
- 30. ci sono dei modi per decodificare il trigger Oracle o per decompilarlo?
Si noti che non tutte le Java JVM di Java 6 vengono fornite con JavaScript, ma solo quelle di IBM che non lo sono. –