<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    BeanShell快速入門---Java應用程序腳本引擎

    本文摘自:http://www.java-asp.net/java/200504/t_9553.html

    快速入門

    歡迎使用BeanShell.這是一個速成課程。我們將省去一些重要的選項和細節。要學習更多的內容請看本User′s Guide的其它部分。

    下載和運行BeanShell

    請到http://www.beanshell.org下載最新的JAR文件。你可以用圖形桌面模式和命令行模式起動BeanShell。
    如果你只是要玩一玩BeanShell,你可以在BeanShell的jar文件上雙擊來起動BeanShell的桌面。但不管怎樣,如果你要讓BeanShell與你的類與應用程序一起工作就必須將BeanShell的jar文件加到classpath中。
    你可以將BeanShell的jar文件拖到JAVA_HOME的ext目錄也可以直接加到classpath中。

    • windows用戶請將bsh.jar放在JAVA_HOME/jre/lib/ext文件夾,OSX用戶可以放在/Library/Java/Extensions.
      或者增加BeanShell到你的classpath目錄,如:
      unix:?export CLASSPATH=$CLASSPATH:bsh-xx.jar
      windows:set classpath %classpath%;bsh-xx.jar

    然后你就可以運行BeanShell在GUI或命令行模式:

    • ?java bsh.Console?????? // run the graphical desktop
      or
      ??? ?java bsh.Interpreter?? // run as text-only on the command line
      or
      ??? ?java bsh.Interpreter filename [ args ] // run script file

    可以在你的應用程序內部來運行,也可以作為debug及servlet的遠程服務器模式,或一個Applet內部來運行BeanShell。請參考"BeanShell Modes of Operation"獲得更多詳情。

    BeanShell GUI

    用GUI模式啟動BeanShell后,將打開一個桌面視窗。用鼠標右擊在桌面的背景上,你可以打開另一個控制臺視窗及其它的工具如一個簡單的類游覽器。
    每一個控制臺視窗運行一個獨立的BeanShell解釋器。這個圖形化的控制臺支持基本的歷史命令,行編輯,剪切和粘貼,甚至類和變量名的自動完成功能。從控制臺你能開啟一個簡單的編輯視窗。在它里面,你可以編寫腳本和使用‘eval’選項求表達式的值。

    Java語句和表達式

    BeanShell能理解標準的JAVA語句,表達式,和方法宣告。語句和表達式的內容可以是:變量,宣告,賦值,方法調用,循環,條件等。
    在Java程序中你必須嚴格的使用它們,但在BeanShell中,你可以用“寬松類型”(loosely typed)的方式來使用它們。也就是說,你可以在寫腳本時偷懶,不進行變量類型的宣告(在原始數據類型和對象都可以)。如果你試著用錯變量類型,BeanShell將會給出一個錯誤。
    這里有一些例子:

    • foo = "Foo";???
      four = (2 + 2)*2/2;
      print( foo + " = " + four );? // print() is a BeanShell command
      // Do a loop
      for (i=0; i<5; i++)
      ??? print(i);??
      // Pop up a frame with a button in it
      button = new JButton( "My Button" );
      frame = new JFrame( "My Frame" );
      frame.getContentPane().add( button, "Center" );
      frame.pack();
      frame.setVisible(true);

    有用的BeanShell命令

    在剛才那個例子中我們用了一個內建在BeanShell中的一個方便的命令print(),來顯示變量的值。print()跟ava的System.out.println()非常的相像,除非它能保證輸出總是命令行。print()也可以顯示一些對象的類型(如數組),但比Java的更詳細。另一個相關的命令是show(),用來開啟與關閉顯示你輸入的每一行的結果。
    這兒是一些其它的BeanShell的命令:
    source(), run() - 將一個bsh腳本讀到解釋器或運行在另一個解釋器。
    frame() - 顯示一個Frame或JFrame的GUI組件.
    load(), save() - 載入和保存一個序列化的對象到一個文件.
    cd(), cat(), dir(), pwd(), etc. - 類unix的shell命令。
    exec() - 運行一個本地的程序。
    javap() - 打印一個對象的方法和字段,類似于Java的javap命令。
    setAccessibility() - 開啟無限制的存取private 和protected的組件。
    要獲得更多的信息請查看BeanShell命令的詳細清單。

    提示:
    BeanShell命令并不是真的"內建"其中的,而是作為腳本方法自動從classpath載入的. 你可以擴展基本命令集并加到classpath中作為自訂義的腳本來使用。

    腳本方法

    你可以在bsh中宣告和使用方法,就像在java的類中一樣。

    • int addTwoNumbers( int a, int b ) {
      ??? return a + b;
      }
      sum = addTwoNumbers( 5, 7 );? // 12

    bsh的方法可以有動態的(寬松的)參數和返回類型。

    • add( a, b ) {
      ??? return a + b;
      }
      foo = add(1, 2);??????????? // 3
      foo = add("Oh", " baby");?? // "Oh baby"

    實現Interface

    注意:如果要BeanShell能實現任意的Interface,必須有jdk1.3及以上支持。
    你可以在腳本中用標準的Java內部類的語法來實現Interface.例如:

    • ActionListener scriptedListener = new ActionListener() {
      ??? actionPerformed( event ) { ... }
      }

    你可以不用實現Interface的所有方法,而只用實現你需要的方法。如果代碼中調用了未被實現的方法,將丟出異常。如果你想重載大量的方法的行為--例如為日志生成一個"啞"適配器--你可以在腳本對象中實現一個特殊的方法:invoke(name,args)。invoke()方法用來處理任何未被定義的方法的調用:

    • ml = new MouseListener() {
      ??? mousePressed( event ) { ... }
      ??? // handle the rest
      ??? invoke( name, args ) { print("Method: "+name+" invoked!");
      }

    腳本對象

    在BeanShell中,和在JavaScript與Perl中一樣,腳本對象是用封閉的方法體一構成的。通過在方法未尾返回一個特殊值"this",你就可以像使用方法一樣調用這個對象了。在這個方法調用時,你可以給與它任何的值。通常對象內部需要包括方法,所以BeanShell的腳本方法在一定程度上可再包含一些方法以構成腳本對象。例如:

    • foo() {
      ??? print("foo");
      ??? x=5;
      ??? bar() {
      ??????? print("bar");
      ??? }
      ??? return this;
      }
      myfoo = foo();??? // prints "foo"
      print( myfoo.x ); // prints "5"
      myfoo.bar();????? // prints "bar"

    如果這些代碼對你來說很陌生,別急,請用戶手冊可得到更透徹的解釋。

    在你的腳本中,BeanShell腳本對象(也就是先前例子中的"this"參照)能自動實現任何JAVA介面類型。當JAVA代碼調用相應與之通訊的腳本方法內的方法。當你試著將腳本對象作為參數傳給Java方法時,BeanShell會自動將它造型(cast)為相應的類型。如要傳遞BeanShell外部的對象時,你可以在需要時顯式的進行造型(cast).請看用戶手冊中的詳細內容。

    從你的應用程序調用BeanShell

    通過建立一個BeanShell解釋器,使用eval()或source()命令,你可以在你的應用程序中求文本表達式的值和運行腳本。如果你希望在你的腳本內部使用一個對象,可以用set()方法傳遞對象的變量參照給BeanShell,并通過get()方法取得結果。

    • import bsh.Interpreter;
      Interpreter i = new Interpreter();? // Construct an interpreter
      i.set("foo", 5);??????????????????? // Set variables
      i.set("date", new Date() );
      Date date = (Date)i.get("date");??? // retrieve a variable
      // Eval a statement and get the result
      i.eval("bar = foo*10");????????????
      System.out.println( i.get("bar") );
      // Source an external script file
      i.source("somefile.bsh");


    歡迎大家訪問我的個人網站 萌萌的IT人

    posted on 2006-03-28 09:27 見酒就暈 閱讀(672) 評論(0)  編輯  收藏 所屬分類: J2EE文章


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2006年3月>
    2627281234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿(3)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    BLOG

    FRIENDS

    LIFE

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产第一页www| 久久精品国产亚洲精品| 亚洲黄色在线观看视频| 久久免费视频一区| 国产亚洲人成A在线V网站 | 亚洲成a人不卡在线观看| 午夜精品射精入后重之免费观看| 亚洲一区二区三区国产精品| 人碰人碰人成人免费视频| 又粗又硬免费毛片| 一级人做人a爰免费视频| 区三区激情福利综合中文字幕在线一区亚洲视频1 | a级精品九九九大片免费看| 亚洲欭美日韩颜射在线二| 国产成人涩涩涩视频在线观看免费| 亚洲色欲色欲www| 最新69国产成人精品免费视频动漫 | 免费无码国产V片在线观看| 国产91精品一区二区麻豆亚洲| 91成人免费观看在线观看| 亚洲av日韩av不卡在线观看| 69式互添免费视频| 日本亚洲高清乱码中文在线观看| 全亚洲最新黄色特级网站| 免费人成激情视频在线观看冫| 亚洲黄色三级网站| 最好免费观看韩国+日本| 永久免费无码网站在线观看个| 国产亚洲人成无码网在线观看| 久草免费在线观看视频| 亚洲1区2区3区精华液| 亚洲人色婷婷成人网站在线观看| 99精品一区二区免费视频| 亚洲国产欧美一区二区三区| 亚洲中文字幕不卡无码| 99久久综合精品免费| 日韩色日韩视频亚洲网站| 亚洲国产精品成人精品无码区| 毛片a级毛片免费观看免下载| 日韩精品免费一线在线观看| 亚洲A∨无码无在线观看|