使用Java开发跨平台移动应用

移动应用开发领域,开发者经常面临一个挑战:如何为iOS和Android这两个主流平台开发具有原生体验的应用。通常,这意味着需要为每个平台单独开发应用,这不仅增加了开发成本,也延长了开发周期。然而,随着技术的进步,现在有了一种新的方法,可以让开发者使用Java语言同时为iOS和Android开发原生应用。这就是Intel推出的Multi-OS Engine(MOE)。

原生应用的重要性

移动应用市场,用户对应用的体验有着极高的要求。应用商店充斥着大量相似的应用,要想脱颖而出,就需要提供与众不同的用户体验。尽管开发原生应用需要更多的时间和资源,但原生的界面和感觉正是用户所期待的。因此,在这方面的投入是无法节省的。原生应用在以下方面具有显著优势:

  • 直接访问平台特定的UI组件,如导航堆栈、日期和时间选择器、地图等。虽然可以在Web上重新实现这些组件,但它们的感觉永远不会像原生组件那样,也不会随着平台的变化自动更新。
  • UI渲染的开销较小。
  • 原生多线程。基于Web的框架无法像原生代码那样有效地并行化应用程序。

为什么选择Java

GitHub根据其存储库中代码的体积对语言进行排名,这清楚地解释了Facebook选择JavaScript开发React Native,以及Intel选择Java开发Multi-OS Engine作为跨平台语言的原因。Java之所以如此流行,一个主要原因是Java开发者可以利用大量的现有代码,如库、示例和开源应用程序。

技术概览

Multi-OS Engine作为一个独立的插件,可以集成到Android Studio中。应用项目可以像Android项目一样简单启动,Multi-OS Engine会配置项目以构建并运行为iOS应用,甚至可以在iOS模拟器中调用。这意味着不必了解Objective-C就能构建iOS的原生应用。此外,Android开发不会发生变化,还可以重用所有平台无关的代码。虽然MOE不能提供100%的代码重用,但通过适当的应用架构,这个值可以达到60%。

  • 自动从Objective-C和C头文件生成Java绑定。
  • 使用Java注解和NatJ运行时库。
  • 消除了编写JNI函数的需要。
  • MOE提供了预构建的jar文件,用于接口iOSAPI。

iOS开发工作流程

以下步骤仅解释了使用Multi-OS Engine创建iOS应用的过程,假设已经了解在Android Studio中构建Android应用的过程。

  1. 在Android Studio中创建一个Android项目,并添加新的配置“Intel Multi-OS Engine Project”以包含iOS应用的配置。
  2. 在XCode或AndroidStudio的Multi-OS Engine UI设计器中设计iOS的UI。
  3. 使用NatJ运行时库将UI绑定到Java
  4. Android Studio配备了Intellisense功能,可以将操作处理程序绑定到iOS的UI元素。
  5. 在OS X开发机器上支持本地构建,iOS模拟器可以通过Multi-OS Engine配置在AndroidStudio中调用。对于Windows开发系统,支持远程/云构建。
  6. 然后可以在模拟器上运行iOS应用,该模拟器通过Multi-OS Engine配置集成到Android Studio中,或者直接在设备上运行。
  7. 直接在Android Studio中调试iOS应用。

代码片段

如果是一个经验丰富的Java开发者,Objective-C可能会让感到困惑。以下是Objective-C和Java实现相同功能的代码片段对比:

Objective-C - ( void prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender { if ([segue.identifier isEqualToString: @" showDetail" ]) { NSIndexPath *selectedIndexPath = [ self .tableView indexPathForSelectedRow]; // Set data ... } } Java @Override public void prepareForSegueSender(UIStoryboardSegue segue, NSObject sender) { if (segue.getIdentifier().toString().equals( " showDetail" )) { NSIndexPath selectedIndexPath = getTableView().indexPathForSelectedRow(); // Set data ... } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485