簡體   English   中英

如何在Java中創建面向移動的多平台共享庫?

[英]How to create a mobile oriented, multiplatform, shared library in Java?

我有一個在BlackBerry上運行的Java應用程序(JDE 4.5)。 我想將此應用程序移植到Android,並能夠同時維護這兩個應用程序。 我可能還想將此應用程序移植到其他Java平台(J2ME?)。

我知道代碼的很大一部分必須特定於每個平台(UI和其他東西)。 但我也覺得很多代碼可以(應該)共享(域相關類)。

實現這一目標的最佳方法是什么?要避免哪些陷阱?

到目前為止,我已經能夠創建一個包含所有共享類的JAR,我已經能夠集成到我的BlackBerry應用程序中(使用preverifyrapc )。 但:

這可能很困難:

  • 正如您已經確定的那樣,每個平台的UI代碼必須不同。
  • Java SE / Android和基於Java ME的平台之間存在重大差異。 例如,ME沒有Collections框架,也沒有java.iojava.nio堆棧。

很難從你提供的信息中預測出來,但是你很可能花費更多的時間來對抗平台依賴,而不是通過共享代碼庫來節省。

我不會預先打包您的共享庫,而是考慮共享庫項目並將其作為移動應用程序構建過程中的依賴項。 這將允許您共享代碼庫,但由目標設備的相應構建器構建。 通過一些IDE魔術和對細節的一些關注,您應該能夠在發貨之前發現錯誤。

或者,設置庫項目以使用兩個單獨的構建器來獲取錯誤。 這將允許更清晰的分發,但是您可能會遇到問題,試圖說服您的IDE將項目視為特定於設備以識別問題區域。

你可能會最終支持最低的公分母設備( 咳嗽黑莓),並放棄Android上更廣泛的Java實現的附加功能。

不幸的是,答案將是實驗之一。 嘗試一下,看看會發生什么。

如今,以這種方式共享代碼的最大障礙是BlackBerry VM和Android VM都支持不同版本的Java語言。 BlackBerry使用Java 1.3的子集,Android使用Java 1.5的子集。 (另外,兩個平台都沒有實現Java VM,都使用自己的VM.Java用作編程語言.Java字節碼必須轉換為適當的本機VM格式才能在平台上運行。)

作為圖書館實施者,您將發現最大的不同之處在於BlackBerry缺少1.5中引入的東西,非常重要的東西,如泛型和枚舉。 更糟糕的是,BlackBerry缺少收藏類。 這是不幸的,但現在已經很久了。

這意味着要真正可移植,你必須寫入最低公分母,這意味着使用(非常)舊式的類,如Hashtable和Vector,沒有泛型,滾動你自己的枚舉(如第1版的Effective Java) ) 等等。

或者你構建了兩個庫,一個適用於Android的現代版本和一個適用於BlackBerry的精簡版本(只需要你需要的東西)。

很難說什么適合你。

文章將Android代碼移植到BlackBerry有一些關於如何使用兩個平台之間共享代碼的詳細信息。

為blackberry和android創建共享庫將非常困難。 如果您想要簡單的方法,請將您的應用程序創建為Web應用程 運用

PhoneGap的jQtouch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM