Ho una semplice classe Java che ha alcuni metodi:Come posso aggiungere metodi da una classe Java come funzioni globali in Javascript usando Rhino?
public class Utils {
public void deal(String price, int amount) {
// ....
}
public void bid(String price, int amount) {
// ....
}
public void offer(String price, int amount) {
// ....
}
}
vorrei creare un'istanza di questa classe e consentire il codice Javascript di chiamare direttamente i metodi, in questo modo:
deal("1.3736", 100000);
bid("1.3735", 500000);
l'unico modo ho potuto capire, per ora è stato quello di utilizzare
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
engine.put("utils", new Utils());
e quindi utilizzare utils.deal(...)
nel codice Javascript. Posso anche scrivere funzioni wrapper in Javascript per ogni metodo, ma dovrebbe esserci un modo più semplice per farlo automaticamente per tutti i metodi pubblici di una classe.
Ti rendi conto Java e JavaScript sono due completi lingue diverse. Possono avere sintassi simile a C, ma non sono uguali. – thecoshman
Rhino è un motore js incorporato per Java. Questo tipo di cose dovrebbe essere realizzabile. L'ho gestito in Perl con SpiderMonkey: http://blog.dorward.me.uk/2006/02/02/spambots_that_drink_coffee.html – Quentin
@thecoshman Questa è una domanda assolutamente valida. È possibile eseguire Javascript in Java e potrebbe essere necessario utilizzare i gadget Java in JS. – lexicore