2014-09-19 3 views
0

Я нашел post о компиляции javascript в java с использованием компилятора Rhino. Я смог заставить простой случай работать и вызывать методы в java. Тем не менее, у меня есть некоторые вопросы и надеюсь, что я смогу получить ответы на них здесь.Rhino Javascript Compiler

  1. Как я скомпилировать код ниже для TestObject.class с методом (setTmpValue, getTmpValue, GetType) и конструктор 1 аргументов? Или это невозможно?

    function TestObject(params) { this.type= params.type; var tmpValue = 0; this.setTmpValue = function (val) { tmpValue = val; }; this.getTmpValue = function() { return tmpValue; }; this.getType = function() { return type }; }

  2. Можно ли ссылаться на класс, который будет скомпилирован из другого JS-файла?

    Example: Can I invoke B in A? or do new B() in A? A.js -> A.class B.js -> B.class

  3. Как объем работы для этих скомпилированные классы?

  4. Есть ли другая документация, кроме одной Here?

Заранее благодарим за помощь!

+0

Ваше любимое здесь мотива: Доступ к объектам JavaScript из Java? –

+0

Основная мотивация заключается в том, чтобы иметь общий (javascript и java) логический (одинаковый код). – jaspercl

ответ

0

Есть более простой способ, без компиляции; кажется, что, учитывая ваши вопросы и комментарии, ваша цель состоит в том, чтобы объекты JavaScript могли быть вызваны из Java.

Вот один из способов сделать это:

На Java стороне:

package mypackage; 
public abstract class TestObject { 
    // insert public abstract methods 
    public abstract void doIt(); 
} 

На стороне JavaScript:

var myInstance = new JavaAdapter(
    Packages.mypackage.TestObject, 
    { 
     doIt: function() { 
      // do something 
     } 
    } 
) 

Packages.myapplication.MyApplication.setTestObject(myInstance); 

Назад на Java стороне:

package myapplication; 

public class MyApplication { 
    private static TestObject test; 

    public static void setTestObject(TestObject o) { 
     test = o; 
    } 

    public void doSomething() { 
     test.doIt(); 
    } 
} 

В основном , Объекты JavaScript могут реализовать интерфейсы Java или расширить абстрактные классы Java. Если они станут доступными на стороне Java, сторона Java может вызывать их как объекты Java. Насколько я могу судить, это то, что вы хотите. Если нет, оставьте разъяснение, и мы пойдем оттуда.

Смежные вопросы