Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接近移植(Java)库(到Objective-C):方法学?_Java_Iphone_Objective C_Language Agnostic_Porting - Fatal编程技术网

接近移植(Java)库(到Objective-C):方法学?

接近移植(Java)库(到Objective-C):方法学?,java,iphone,objective-c,language-agnostic,porting,Java,Iphone,Objective C,Language Agnostic,Porting,我是一名iOS开发者,我发现了一个很棒的库,可以为我处理各种天文学相关的计算。问题是它是用Java编写的。虽然我对Java语言有足够的经验,但我不能在iOS上运行Java 我想把它移植,但因为我以前从未移植过任何东西。就像我说的,我认为语言不是问题。这是一个相当简单的库,主要涉及日期对象和数学 我正试图找出实现移植的最佳方法。我是从每个类的核心方法/函数开始,还是可以在每个文件中逐行翻译,直到翻译完所有内容?请随意开始。一般来说,你会希望从靠近核心的地方开始,然后找到出路。请记住以下三个步骤:

我是一名iOS开发者,我发现了一个很棒的库,可以为我处理各种天文学相关的计算。问题是它是用Java编写的。虽然我对Java语言有足够的经验,但我不能在iOS上运行Java

我想把它移植,但因为我以前从未移植过任何东西。就像我说的,我认为语言不是问题。这是一个相当简单的库,主要涉及日期对象和数学


我正试图找出实现移植的最佳方法。我是从每个类的核心方法/函数开始,还是可以在每个文件中逐行翻译,直到翻译完所有内容?

请随意开始。一般来说,你会希望从靠近核心的地方开始,然后找到出路。请记住以下三个步骤:

  • 让它工作
  • 做对
  • 快一点/干净一点

  • 所以,不要担心让它看起来很漂亮或是什么,只要让它按照需要工作,测试它。然后看看哪里可以重构,如果可能的话,等等。

    因为这似乎是一个函数库,所以它不依赖于任何特定于平台的函数

    移植它应该非常简单。你可以一个接一个地移植功能,也许可以从对你的应用程序很重要的功能开始

    真正棘手的部分(考虑到它是一个数学库)是确保它正确工作:您应该拥有与原始库相同的单元测试集。最好是创建一个java包装类,通过JNI调用您的库,这样您就可以在库上运行原始的单元测试。纯Objective-C库(无平台绑定)应同时在OS X和iOS上运行,因此您可以在OS X上运行测试。请执行以下操作:

  • 查看原始Java库,并在Objective-C中创建功能相似的API:相同的类,相同的方法名
  • 使用原始java类,用对本机库的JNI调用替换方法的所有内容
  • 在lib中实现功能
  • 运行java单元测试(现在调用本机库)以确保库正常工作

  • 为了便于JNI开发,您可以使用或列出的任何其他JNI包装器。

    要点。我确实有这样一个坏习惯,第一次就试图让代码变得干净。