1. 程式人生 > >Google的J2ObjC工具可以將Java程式碼轉換為iOS的Objective-C

Google的J2ObjC工具可以將Java程式碼轉換為iOS的Objective-C

Google已經將J2ObjC開源出來的,這是一個將Java程式碼轉換為Objective-C的工具。

在此專案的wiki頁面上有介紹,專案的初衷是解決一個app要在不同的平臺上(Android,iOS)用不同語言開發兩次的問題。
J2ObjC能夠解決這個問題的大部分,它能夠將你專案中的業務邏輯程式碼(Java)轉換為對應的Objective-C程式碼;但是它不能轉換介面程式碼。這是因為J2ObjC的開發者認為開發出高可用的iOS介面必須通過iOS的XCode工具,而不是生硬的轉換或移植。

J2ObjC轉換出的程式碼,使用了iOS Foundation Framework並能夠整合到XCode中編譯,執行或優化,與通過你自己新建立的XCode工程是一樣的。

下面我們看看J2ObjC轉換程式碼的幾個關鍵步驟。

    這個步驟是用來刪除Java檔案中的無用程式碼,無用的程式碼當然無需轉換了。

    這個步驟是將一些Java程式碼重寫,這些Java程式碼是與Objective-C不能對應的程式碼,如靜態變數。

    這個步驟是處理整型型別資料,把Java中的原始的整型型別int轉換為物件型別Integer。

    將Java的類轉換為Objective C對應的類。

    將Java的方法申明中的引數和返回值型別轉換為Objective C對應的引數和返回值型別。

    將Java中的初始化語句,全部轉移到類的建構函式中。

    將Java的匿名類轉換為Objective C的內部類。

    將Java內部類轉換為Objective C的外部類,在同一個包內。

    給每個生成的Objective C類增加一個析構方法。

Java程式碼轉換為Objective C程式碼的最大問題是記憶體管理,Java程式碼是不會顯示呼叫析構方法或finalize方法,而Objective C是需要的。
J2ObjC提供了幾種管理無用物件的方法,預設的是物件引用技術方法。

J2ObjC還處於Alpha階段,不過在Google內部已經有幾個專案用了此工具。

另外一個類似的工具是XMLVM,它可以將Java,.NET, Ruby程式碼轉換為.NET, Java, JavaScript, Python, Objective C程式碼。由它的名字可以想到,XVLVM將原始碼的二進位制檔案先轉換為XML,然後再將XML轉換為另外一個虛擬機器上的二進位制檔案,或者是原始碼。