function meth1(){
print("my method first");
}
function meth2(){
print("my second method");
}
Java vs JavaScript
Вопрос такой: где то читал (не помню где точно) что вроде как есть возможность написание в Java интерфейса, а его имплементацию делать в JavaScript. Кто нить пробовал рабоать с подобными технологиями? Есть ли у кого примеры?
Вот пример:
Код на java script:
Код:
Интерфейс(JAVA):
Код:
package test;
public interface ITest {
public void meth1();
public void meth2();
}
public interface ITest {
public void meth1();
public void meth2();
}
Ну и сама реализация:
Код:
package test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.Reader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Main {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
FileInputStream is = new FileInputStream("ITestImpl.js");
Reader reader = new InputStreamReader(is);
try {
engine.eval(reader);
Invocable inv = (Invocable)engine;
ITest tst = inv.getInterface(ITest.class);
tst.meth1();
tst.meth2();
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.Reader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Main {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
FileInputStream is = new FileInputStream("ITestImpl.js");
Reader reader = new InputStreamReader(is);
try {
engine.eval(reader);
Invocable inv = (Invocable)engine;
ITest tst = inv.getInterface(ITest.class);
tst.meth1();
tst.meth2();
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Надеюсь кому то пригодятся эти труды :)