0 امتیاز
قبل در برنامه نویسی توسط (56 امتیاز)
چطور در جاوا ، جاوااسکریپت بنویسم و اجرا کنیم و مقداری را گرفته به متغیر جاوا بدهیم؟

2 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

موتور جدید اجرای کد های جاوااسکریپت بر روی ماشین مجازی جاوا، Nashorn نام دارد که بهمراه جاوا 8 عرضه شده است و جایگزین موتور جاوااسکریپت قبلی یعنی Rhino شده است. Nashorn از قابلیت Invokedynamic برای بهبود performance استفاده کرده است.

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import javax.script.ScriptException;

public class Test {
   public static void main(String args[]){
      ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); 
      ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn"); 
      String name = "Mahesh"; 

      Integer result = null;
      try {
         nashorn.eval("print('" + name + "')");
         result = (Integer) nashorn.eval("10 + 2");   
      }catch(ScriptException e){
         System.out.println("Error executing script: "+ e.getMessage());
      }
      System.out.println(result.toString());
   } 
}

Nashorn بهمراه خود یک ابزار command line با نام jjs برای اجرای کد های جاوااسکریپت در terminal دارد.

قبل توسط (56 امتیاز)
ویرایش شده قبل توسط
+1
ممنون از جوابتون اما در کل شما هر نامی که در پارامتر engine برای جاوااسکریپت وارد کنید با nashorn اجرا می شود.(البته در جاوا۸) و خودم هم اول نمی دونستم تااینکه
با اجرای توابعی از  engine برای گرفتن مشخصات نتیجه زیر حاصل شد:
engine name:Oracle Nashorn
engine version:1.8.0_40
language name:ECMAScript
language version: ECMA - 262 Edition 5.1
extension:[js]
mimetypes[application/javascript, application/ecmascript, text/javascript, text/ecmascript]
names:[nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]
+1 امتیاز
قبل توسط (56 امتیاز)

نمونه کد زیر مثالی در این مورد است :

	public void javascriptTest() {
		ScriptEngineManager manager = new ScriptEngineManager(null);
		ScriptEngine engine = manager.getEngineByName("javascript");
		try {
			engine.eval("var x = 10;");
			engine.eval("var y = 20;");
			engine.eval("var z = x + y;");
			engine.eval("print (z);");
			Object z = engine.get("z");
			System.out.println("eval(z): " + z);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

سوالات مشابه

0 امتیاز
3 پاسخ 962 بازدید
0 امتیاز
1 پاسخ 318 بازدید
0 امتیاز
1 پاسخ 408 بازدید
+1 امتیاز
0 پاسخ 305 بازدید
+3 امتیاز
1 پاسخ 1.7هزار بازدید
0 امتیاز
0 پاسخ 237 بازدید
+2 امتیاز
1 پاسخ 2.1هزار بازدید
+1 امتیاز
1 پاسخ 277 بازدید
...