程式碼的包裝jpython-java-c

經過前幾天的練習我們已經會利用Java的JNI將c包在Java中,利用c語言所撰寫的dll將Java程式與c結合起來,我們只要會撰寫Java程式,而不必去理會dll檔到底做了什麼事,我們只要懂得呼叫使用dll檔一樣可以將程式寫的很好。

但這並非我的最終目的,我希望我能利用python程式在將java程式再做一層包裝,因此使用了jpython這個語言,jpython是以Java實作的一個python語言,這個語言保有和python語言相同的簡單與便利的特性,只不過它是架設在Java的虛擬機器之上,所以許多有關作業系統方便處理的函數都無法使用
jpython的語法就是python語言,對於熟悉python的人應該很容易上手,比較特別的是它能夠將java所撰寫而成的*.class import到自己的函式庫中做使用,它不但可以使用原本在python中所存在的函式庫,更可以取用Java的函式庫,而透過java我們又可以和c語言溝通,我們也可以和prolog語言溝通,似乎已經達到語言無障礙的地步,程式的地球村好像就要實現 。

以前是在同一種語言中做包裝,在C、java中使用物件導向的程式設計,包成許許多多的類別,現在我發現一件事,我們似乎可以對語言做包裝,函數並不一定同一種語言去實作,因為每個人的背景不同,習慣熟悉使用的語言不同,在專案開發中強迫每個成員使用同一種語言或許比較容易整合,但開發速度不一定快,只有在每一個人使用它所習慣的語言來開發才能達到事半功倍的效果。
我簡單的說明一下我的做法:
dll檔使用之前已經編譯好的hello.dll,所使用的類別檔HelloWorld.class(之前編譯好的)
安裝Jython目前是2.1版
裝完之後你可以先玩玩看(假設你是裝在c:\jython21下)
c:\jython21>jython
它會先做出始化,並設定Java的環境,之後出現>>>的提示符號代表你可以開始動作

你可以先試試python原本的一些功能,例:
1.你在提示訊息下鍵入數學運算2+3則答案是5
>>> 2+3
5
>>>
2.如果你鍵入負數運算2*(2j+3)則答案是(6+4j)
>>> 2*(2j+3)
(6+4j)
>>>
如果你想要印出Hello則直接鍵入print "Hello"
>>> print "Hello"
Hello
>>>

環境設定
在c:\jython21下建一個目錄叫JavaLib(名字隨便取),然後將hello.dll和HelloWorld.class複製到此目錄下,然後設定你的環境變數,Path和CLASSPATH都增加c:\jython21\JavaLib
測試執行
>>>import HelloWorld 左邊這一句話是將HelloWorld.class類別引入使用
成功之後應該會出現>>>提示訊息,等候你輸入下一個指令,如果不成功請檢查一下HelloWorld.java內容是否正確,記得此類別必須為一個公開類別public class HelloWorld{...},修正完畢重新產生HelloWorld.class
>>>test=HelloWorld() 左邊這一句話相當於test=new HelloWorld();
接著應該會出現>>>提示訊息
>>>test.displayHelloWorld()
>>>HelloWorld
如果出現HelloWorld代表成功了
arrow
arrow
    全站熱搜

    CJY0503 發表在 痞客邦 留言(0) 人氣()