跨端编程开发在移动端编程项目中是会经常遇到的一个编程开发需求,而本文我们就通过案例分析来简单了解一下,跨端编程代码转化都有哪些类型。
1、将Java转成Objective-C
j2objc能将Java代码转成Objective-C,据说Google内部就是使用它来降低跨平台开发成本的,比如GoogleInbox项目就号称通过它共用了70%的代码,效果很显著。
可能有人会觉得奇怪,为何Google要专门开发一个帮助大家写Objective-C的工具?还有媒体说Google做了件好事,其实吧,我觉得Google这算盘打得不错,因为基本上重要的应用都会同时开发Android和iOS版本,有了这个工具就意味着,你可以先开发Android版本,然后再开发iOS版本。。。
既然都有成功案例了,这个方案确实值得尝试,而且关键是会Java的人多啊,可以通过它来快速移植代码到Objective-C中。
2、将Objective-C转成Java
除了有Java转成Objective-C,还有Objective-C转成Java的方案,那就是MyAppConverter,比起前面的j2objc,这个工具更有野心,它还打算将UI部分也包含进来,从它已转换的列表中可以看到还有UIKit、CoreGraphics等组件,使得有些应用可以不改代码就能转成功,不过这点我并不看好,对于大部分应用来说并不现实。
3、将Java转成C#
Mono提供了一个将Java代码转成C#的工具Sharpen,不过似乎用的人不多,Star才,所以看起来不靠谱。
还有JUniversal这个工具可以将Java转成C#,但目前它并没有发布公开版本,所以具体情况还待了解,它的一个特色是自带了简单的跨平台库,里面包括文件处理、JSON、HTTP、OAuth组件,可以基于它来开发可复用的业务逻辑。
比起转成Objective-C和Java的工具,转成C#的这两个工具看起来都非常不成熟,估计是用WindowsPhone的人少。
4、将Haxe转成其它语言
说到源码转换就不得不提Haxe这个奇特的语言,它没有自己的虚拟机或可执行文件编译器,所以只能通过转成其它语言来运行,目前支持转成Neko(字节码)、Javascript、Actionscript3、PHP、C++、Java、C#和Python,尽管有人实现了转成Swift的支持,但还是非官方的,所以要想支持iOS开发目前只能通过AdobeAIR来运行。
在游戏开发方面做得不错,有个跨平台的游戏引擎OpenFL的,终可以使用HTML5Canvas、OpenGL或Flash来进行绘制,OpenFL的开发体验做得相当不错,同一行代码不需要修改就能编译出不同平台下的可执行文件,因为是通过转成C++方式进行编译的,所以在性能和反编译方面都有优势,可惜目前似乎并不够稳定,不然可以成为Cocos2d-x的有利竞品。
在OpenFL基础上还有个跨平台的UI组件HaxeUI,但界面风格我觉得特别丑,也就只能在游戏中用了。
所以目前来看Haxe做跨平台游戏开发或许可行,但APP开发就别指望了,而基于它来共用代码实在就更不靠谱了,因为熟悉它的开发者极少,反而增加成本。