2010-10-31 13 views
2

我是一名iOS開發人員,我發現了一個很棒的圖書館,可以爲我處理各種天文相關計算。問題是它是用Java編寫的。雖然我對接近Java的語言有足夠的經驗,但我無法在iOS上運行Java。接近移植(Java)庫(到Objective-C):方法論?

我想移植它,但因爲我以前從未移植過任何東西。就像我說的,我不認爲語言會成爲問題。這是一個相當簡單的庫,主要涉及Date對象和數學。

我想找出最好的方法去做移植。我是從每個課程的核心方法/功能開始的,還是我可以直接在每個文件中逐行閱讀,直到我翻譯完所有內容?

+0

它是哪個庫? – 2013-06-22 05:56:43

回答

1

因爲這似乎是一個函數庫,它不依賴於任何平臺特定的功能。

移植這應該是非常簡單的。您可以按功能移植功能,也可以從對您的應用很重要的功能開始。

真的很棘手的部分(因爲它是一個數學庫)將確保它的工作正確:你應該有與原始庫相同的單元測試集。最好的辦法是創建一個java包裝類,通過JNI調用你的lib,這樣你就可以在你的lib上運行原始的單元測試。純Objective-C的LIB(無平臺綁定)應在OS X和iOS上運行,所以你可以運行在OS X上的測試做這樣的事情:

  1. 看看原始的Java lib和創建功能類似的API在Objective-C中:相同的類,相同的方法名稱。
  2. 取出原始java類,並用JNI調用將所有方法內容替換爲本地庫。
  3. 在你的lib中實現功能。
  4. 運行java單元測試(現在調用您的本機庫)以確保您的lib能正常工作。

爲了更簡單的JNI開發,您可以使用JNA或列出的任何其他JNI包裝here

+0

不客氣。 – 2010-10-31 14:56:17

2

只要你喜歡就開始。一般來說,你會想要在覈心附近開始工作,然後走出去。只要記住這三個步驟:

  1. 使其工作
  2. 作出正確
  3. 讓它快/乾淨

所以不要擔心得到它看起來相當或任何正確關閉跳,只需要它的工作方式,測試它。然後看看你可以重構的地方,如果可能的話,等等。

+0

偉大的觀點。我確實有第一次嘗試清理代碼的壞習慣。 – Moshe 2010-10-31 14:41:17