Swift语言已迈出侵蚀Android应用开发的第一步

译文
移动开发 iOS
尽管最初以开发面向iOS与OS X系统平台的应用程序作为设计目标,但如今苹果公司的Swift语言即将把面向Android系统的开发能力作为其开源Swift发展方向当中的重要组成部分。而且开发根据开发者Romain Goyet在其最近的一篇博文中所言,开发人员现在已经可以开始利用Swift进行面向Android的开发工作。

开发人员从现在开始已经可以享受这项功能,不过真正值得期待的仍是Swift全面开源之后所带来的种种助益。

 

尽管最初以开发面向iOS与OS X系统平台的应用程序作为设计目标,但如今苹果公司的Swift语言即将把面向Android系统的开发能力作为其开源Swift发展方向当中的重要组成部分。而且开发根据开发者Romain Goyet在其最近的一篇博文中所言,开发人员现在已经可以开始利用Swift进行面向Android的开发工作。

 

Goyet指出,Swift语言采用LLVM编译器——顺带一提,Goyet最广为人知的事迹就是对苹果Siri进行了逆向工程。“目前的Swift编译器会接入到LLVM当中,从而生成二进制文件,”他写道。“同时值得指出的是,LLVM与Swift都是由Chris Lattner设计而成。”

 

相较于针对特定架构生成代码,LLVM能够面向设想中的设备生成汇编代码,而后将其转换为能够切实与目标架构相对接的实际代码。

 

Goyet这样描述整个处理流程:Swift编译器首先根据要求生成LLVM-IR(即中间表示);LLVM则根据中间表示同时生成ARM ELF文件格式。接下来能够直接使用Android系统之上原生代码语言的Android NDK则生成二进制链接,直接指向以上生成的对象文件。该文件最终被打包成Android应用。

 

不过实际编码过程当中并不一定会涉及上述全部步骤,Goyet指出。“其中的最大问题在于SwiftCore库的缺失。……就目前而言,苹果公司已经发布了一套面向iOS、OS X以及WatchOS的SwiftCore库。但很明显,其还没有发布任何Android版本。”

 

不过并非所有Swift代码都需要依托于SwiftCore库。“因此只要我们使用的Swift子集不涉及SwiftCore,则不会出现任何问题,”Goyet解释道。

 

不过Goyet目前还没有看到任何利用Swift语言开发而成的Android,“这是因为Swift语言本身仅仅是问题中的一个侧面。另一大侧面或者说最难解决的因素在于,其对于Android UI框架的支持非常有限。另外,目前Android系统上也还没有任何可用的Swift UI框架。”

 

Goyet预计苹果公司为Swift制定的开源计划肯定会将SwiftCore囊括于其中。“接下来在Android平台上实现SwiftCore库应该会成为Swift语言开源重组工作中的重要一环。”

 

Goyet并不是惟一一位冒险利用Swift语言在Android平台上进行应用开发的尝试者。移动开发工作室ArcTouch早在去年就发布了一款概念验证性计算器应用,且同时面向Android与iOS平台。ArcTouch采用的是一款定制化编译器,其能够对Swift代码进行解析并输出为Java源代码。作为基础素材的Swift代码由苹果Xcode IDE进行编写,并最终在谷歌的Android Studio IDE当中完成构建流程并生成Android APK。

 

当Swift最终以开源面貌正式亮相之后,各开发工具厂商将能够编写出与之相适应的IDE,开发人员则可以利用这些IDE在Swift中进行代码编写并直接将其编译至Android系统平台,ArcTouch CEO Eric Shapiro在接受采访时解释称。

 

“作为一款编程语言,Swift与Java其实非常相近,与C#也拥有大量类似的特性,而且将Swift代码编译为Android可运行形式并不是非常困难,”Shapiro表示。虽然目前尚不清楚Swift是否真的胜过Java,不过Shapiro指出,Swift是一种新型语言且拥有大量更为现代的结构,而Java在这些方面则需要经过持续改进方能与之匹敌。

 

责任编辑:chenqingxiang 来源: 51cto
相关推荐

2015-11-03 15:02:23

技术周刊

2018-02-10 11:24:39

Python数据程序

2020-07-22 22:10:34

互联网物联网IOT

2013-01-15 09:17:11

2017-03-29 21:01:22

微软开源

2017-06-14 17:18:52

容器DevopsDocker

2022-10-20 14:29:25

2012-04-13 16:40:16

豌豆荚

2013-12-16 11:25:55

开源开源社区

2021-01-15 18:17:06

网络协议分层

2013-05-27 09:42:33

IEEE802.3以太网400G以太网

2014-12-25 09:26:59

Docker容器创建容器管理

2010-11-05 10:32:50

云应用程序规划

2013-04-03 09:22:14

虚拟化网络虚拟化

2015-06-02 11:42:00

Cloud FoundAzure

2009-01-18 08:49:04

Java入门JDK

2019-11-20 10:54:46

无密码身份验证网络安全

2012-07-11 16:43:14

飞视美

2011-07-25 14:17:46

BSMIT运维北塔

2010-07-01 13:44:12

点赞
收藏

51CTO技术栈公众号