在微软Build 2015开发者大会上,微软宣布Windows10操作系统将支持运行Android和iOS应用。微软表示利用Android应用中底层的Java和C++代码来复制创建Windows10应用,通过在Windows10系统中预装一个“Android子系统”来实现Android程序的运行;而iOS应用,则是通过Objective-C语言来转化、移植为Windows10应用。虽然Winodws移植Android应用程序和黑莓的有着不同,但对于微软来说,这依然是一场存在风险的赌博行为。
一个操作系统移植其他操作系统的应用程序,其实这并不是第一次。比如,IBM的OS/2曾经就在90年代宣称能兼容运行所有的Windows应用程序;黑莓的BB 10系统就能直接运行Android应用程序,还有亚马逊的自制系统也能运行Android应用程序。然而,以上提到的并没有哪一个系统因为兼容市场上的主流系统的应用程序而获得成功。
为了兼容,微软发布了UWP Bridge ,内含Astoria、Islandwood、Centennial、Westminster四个项目,可将Android、iOS、传统Windows,以及Web网站转换为UWP Apps。其中,Astoria和Islandwood项目会对微软的生态系统产生一定的影响,但由于兼容的方式和我们上面提到的有所不同,可能副作用较小。由于目前Windows10并没有正式发布,效果难以预计,所以情况并不明朗。
Astoria项目
Astoria和Islandwood表面上相似,但其基本的技术和执行方式是非常不同的。对于开发人员来说,由于Windows10内置一个安卓子系统,Astoria可能更加直观和简单。几乎所有的Windows软件(包括通用的Windows应用程序)使用的其实是Win 32 API。Windows还包括POSIX子系统。POSIX是IEEE标准的API,基本上定义了Unix API。Windows NT包括POSIX的支持。微软在Windows 2000中删除了OS/2子系统。POSIX子系统在Windows 7中是一个可选的Windows组件,但Windows 8不能启用这个POSIX子系统组件。然而,Winodows内核还是包含此POSIX子系统,而且项目Astoria利用了这一点。它引入了一个新的Windows子系统:Android子系统。
Android子系统在Windows上实现了安卓系统的大多数API。该子系统提供安卓风格的API,比如文件系统的访问、图形处理、访问传感器和相机、进程和线程的创建、安全和网络功能。这些都是利用Windows内核来提供的。另外,Android由一个Linux内核和少量的开放源码本机库,本机代码应用程序和一套开源的Java API再加上谷歌的服务程序框架(GMS)。除了GMS外,前2个都是开源的。对于Android开放源码的组件,微软可以在原则上,使用开放源码的部分直接呈现应用程序开源调用的相同的Java API,但将这些API重定向到合适的Windows服务/API。值得注意的是,除了Windows10 For Phone和基于ARM处理器的小尺寸平板外,其他平台上的Windows10并不包含Android子系统。
Astoria对于开发人员的体验是非常类似于普通的Android开发体验。开发人员将继续使用Android开发环境,例如Eclipse或IntelliJ,应用程序的大部分移植基本是自动化的,少数GMS的API需要手动更改为对应的微软的服务/API。此外,微软还提供一些Windows特定的Api功能,如动态磁贴给Android应用程序访问。当然,开发人员将需要更改代码以利用这些API。
基本上微软并不会使用黑莓兼容安卓的套路。相反,Android开发者必须提交他们的APK包到Windows应用商店。商店将验证这些APK是否使用了无法支持的API,然后将apk文件封装在Windows AppX包中。
Islandwood项目
Islandwood项目的情况和Android的Astoria不一样。首先,微软并没有在Windows10中集成一个“iOS子系统”,其次,也无法直接移植iOS的软件包。微软实现的方法是使用Visual Studio,Visual Studio支持Objective-C和导入Xcode项目文件,然后使用Visual Studio将其编译为Windows应用程序。其实微软使用的这一技术最初不是微软开发的,而是由一家叫Inception Mobile的公司为黑莓操作系统和三星Tizen开发的,它将Objective-C代码尽可能多的转变成Java或C++代码,挂钩进原生平台的API。
当然,相比较起兼容安卓,兼容iOS在移植难度上要稍微高一些,这首先是因为iOS并不是开源的系统,其次是因为iOS平台某些独特的特点,比如iOS没有后退键。同时由于iOS还有一种新的语言Swift,虽然微软声称正在进行兼容支持,但目前来看,不可能很快马上就支持。
Astoria和Islandwood,开发人员必须采取的第一步。这一步可能不是很大——很可能都是将未经修改的APK直接进行提交。这样应用程序可能就不能使用Windows系统的独特功能,比如Xbox成就和动态磁贴,或许这些程序可能会在商店里面评论口碑较差并且下载量低下。Islandwood甚至将更加严重,因为它将需要重新编译和一些代码的更改。虽然如此,移植应用程序到Windows上的体验应该略优于黑莓。
微软的做法也不太可能阻碍本机应用程序的开发。Astoria的限制妨碍它真正取代本机开发,人可以想象最终这些限制将会放宽,虽然这不会很快发生。Astoria产生的应用程序能运行于手机和小尺寸平板电脑,但其他平台并不能运行。
为了快速构建通用应用程序,微软免费为Windows 7和8提供免费升级(第一年内升级),并放出“三年内运行Windows10的用户达到10亿”的豪言壮语。即使最终只有一半,5亿用户仍然是大量用户。对于开发者来说,这么大的基数也是赚钱的商机。Astoria对于移动平台应用程序匮乏确实是有用,但微软将其限制于移动平台的Windows。如果安卓开发者尝到了甜头,想要进军全平台Winodws程序,他们将不得不编写真正的Windows程序。
微软这次的举动是存在风险的。如果不能鼓起更广泛的Windows开发商的利益,特别是Astoria能对Windows智能手机的发展产生侵蚀性影响。微软需要与开发人员进行更加广泛的沟通和互动;虽然战略的确有风险,它这并不意味着微软在移动市场已经投降认输了,事实上,微软所做的这些都是为了移动市场。
当然,对于Windows手机用户来说,会在短期内受益。不过与此同时,微软的Windows原生App也会面临着巨大的挑战,等用户要升级设备时,为什么还要继续选择Windows Phone呢?多数人可能都会直接选择Android平台,毕竟在该平台上运行这些应用的效果更好。那么,还是让时间来证明吧。