posts - 97,  comments - 93,  trackbacks - 0

          Most developers have heard of, and possibly used, scripting languages such as Ruby, JavaScript, and Python. These dynamic languages are enjoying a resurgence in popularity, largely because of their flexibility and simplicity, and the productivity gains they promise.

          Java 6 comes with built-in support for scripting languages. You can embed scripts in various scripting languages into your Java applications, passing parameters, evaluating expressions, and retrieving results. And you can do it all pretty seamlessly.

          First of all, you obtain a new ScriptEngine object from a ScriptEngineManager, as shown here:

          ScriptEngineManager manager = new ScriptEngineManager();

          ScriptEngine engine = manager.getEngineByName("js");

          Each scripting language has its own unique identifier. The "js" here means you're dealing with JavaScript.

          Now you can start having some fun. Interacting with a script is easy and intuitive. You can assign scripting variables using the put() method and evaluate the script using the eval() method,. which returns the most recently evaluated expression processed by the script. And that pretty much covers the essentials. Here's an example that puts it all together:

          engine.put("cost", 1000);
          String decision = (String) engine.eval(
          "if ( cost >= 100){ " +
          "decision = 'Ask the boss'; " +
          "} else {" +
          "decision = 'Buy it'; " +
          "}");
          assert ("Ask the boss".equals(decision));

          You can do more than just pass variables to your scripts— you can also invoke Java classes from within your scripts. Using the importPackage() function enables you to import Java packages, as shown here:

          				
          
          engine.eval("importPackage(java.util); " +
          "today = new Date(); " +
          "print('Today is ' + today);");

          Another cool feature is the Invocable interface, which lets you invoke a function by name within a script. This lets you write libraries in scripting languages, which you can use by calling key functions from your Java application. You just pass the name of the function you want to call, an array of Objects for the parameters, and you're done! Here's an example:

          				
          
          engine.eval("function calculateInsurancePremium(age) {...}");
          Invocable invocable = (Invocable) engine;
          Object result = invocable.invokeFunction("calculateInsurancePremium",
          new Object[] {37});

          You actually can do a fair bit more than what I've shown here. For example, you can pass a Reader object to the eval() method, which makes it easy to store scripts in external files, or bind several Java objects to JavaScript variables using a Map-like Binding object. You can also compile some scripting languages to speed up processing. But you probably get the idea that the integration with Java is smooth and well thought-out.

          posted on 2007-03-07 21:49 wqwqwqwqwq 閱讀(474) 評論(0)  編輯  收藏 所屬分類: SUN Tech
          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567




          常用鏈接

          留言簿(10)

          隨筆分類(95)

          隨筆檔案(97)

          文章檔案(10)

          相冊

          J2ME技術網站

          java技術相關

          mess

          搜索

          •  

          最新評論

          閱讀排行榜

          校園夢網網絡電話,中國最優秀的網絡電話
          主站蜘蛛池模板: 随州市| 商城县| 蒙城县| 西乌珠穆沁旗| 磴口县| 蒙山县| 鲜城| 遂平县| 濮阳县| 元谋县| 旬阳县| 鹿泉市| 余干县| 望江县| 宁陕县| 遵义县| 泸定县| 平顶山市| 荆门市| 依安县| 伊宁市| 大兴区| 阿克陶县| 南充市| 北安市| 伊宁县| 长垣县| 行唐县| 兰考县| 大宁县| 武邑县| 延津县| 舟曲县| 隆昌县| 东乌| 宁波市| 横峰县| 东源县| 文昌市| 永登县| 精河县|