近日,JCP重要成员Apache基金会宣布,如果Oracle不给Harmony提供兼容性测试,将退出JCP,并号召其它成员抵制Java 7。所有这些事件不仅是对Google的威胁和打击,而且直接关系到Android与Java语言的前途。
自由的语言,不自由的平台
Java号称是跨平台的语言,简单的说,它是在不同平台之间搭建一个相同的软件运行环境。或说是 Java虚拟机。虚拟机起到一个承上启下的作用,开发者不用考虑平台,只要保证自己的程序能够在虚拟机上运行,而实际的硬件操作由虚拟机联系操作系统完成。
Java原本属于Sun公司。Sun一直是一个在商业和开源之间走着平衡的公司。虽然,Sun开发了大部分的Java平台代码,但任何公司的平台,如果想要运行Java程序,仍就必须购买Java虚拟机的使用权,这涉及到安全和技术支持问题。从手机平台来说,诺基亚、RIM等公司的手机平台都支持Java程序,就是因为它购买了Java虚拟机的使用权。
Apache基金会的Harmony
Apache基金会的Harmony计划是试图提供一个Java的开源实现,就是说试图使Java平台脱离Sun的控制,获得充分的自由。这就是Harmony计划产生的原因,对此Sun自然不会很高兴,一是商业原因,二是可能产生的平台分裂。因此,Sun虽然没有起诉Apache基金会,却一直没有 Harmony提供兼容测试,同时Sun在Java平台的使用上有限制,因此Harmony的代码是不能使用到手机上的,当然Apache也没有这个计划,所以事情就搁置了下来,直到Android的出现。
Android之道
Android的Dalvik虚拟机运行的不是Java程序,可以说Dalvik完全可以运行其它语言开发的程序,但是Google为了吸引Java程序员,允许 程序员使用Android的SDK将Java代码转换成Dalvik可以运行的代码。它是如何实现的呢?Google在开发Android的时候,雇佣了Sun的一些程序员,利用Harmony中的开源Java库来实现Java程序的转换,避开了授权费用。这意味着开发者可以使用Java语言为非Java平台开发程序,Android的火爆发展不能给Sun带来商业利益,而且可能造成平台分裂。
Java 7的到来和Apache的反抗
自从Oracle掌权Java之后,JCP便逐渐为Oracle所抛弃,这意味着Oracle要独自控制Java平台。做为JCP一员的Apache基金会已经无法影响Java的方向,它的Java开源实现Harmony也被Oracle拒之门外,因此,Apache基金会的存在只是一个形式而已。
Oracle拒绝给 Harmony 提供兼容测试,这意味着Harmony与Java平台的彻底分裂,随着Java 7的到来,这个问题将更加严重。这是否意味着 Java 语言升级之后,Google不得不重新编写底层代码已适应新的Java语言,但是Google这将是一项耗时费力的艰苦工作,而自己编写的实现也许会再次遭到Oracle的起诉,因为Oracle已经推出自己的开发环境OpenJDK,获得了IBM和苹果的支持。
Apache基金会目前已经正式声明,号召其他成员抵制Java7,如果Oracle不提供Harmony的兼容性测试,将退出JCP,这意味着JCP内一个最大的开源势力推出Java,下一步便是彻底的决裂,这对Google会产生什么影响,仍无法预料。
法律和技术的双重困境
Android已经成为Google的收入生命线,Google自然不会让步,在最近的回击中,Google指出,即使存在侵权(或抄袭)的可能,也应该由第三方负责,因为Google使用的是第三方的开源实现。法律问题先放在一边,从技术上来说,Google也面临着困境,因为Android的开发者使用的是Java语言,如果失去官方提供的支持,将是一个严重的问题。
Java陷阱
开源领袖Ricard Stallman早就指出Java是“带着镣铐的自由”(Free but shackled),警告开发者谨防Java陷阱。此后,Sun开源了大部分的Java实现代码,因此Java陷阱已经可以避免,但仍然要注意使用完全自由的平台,因为并非所有的平台都是自由的。
如果Google收购Sun,将Java收归己有,或者当初与Sun达成协议,也许今天情形会不同。或着当初开发Android的时候,Google应该培育自己的Go语言,而不是急于利用现有的Java开发者队伍。Java关于开放的说法只是一个假象,而如今Java易手,一切都改变了。
很难想象Google会放弃Android系统,问题是如何发展它。Java将逐步脱离开源社区,沦为Oracle的生财之道,这是一个利益当头、注重企业而不考虑个人开发者的公司,与Java的纠缠不清只能带来更多的麻烦。
Android其实是在帮助Java
现有的智能手机平台中,Java已经不是开发者的首选,iOS、MeeGo都有自己的开发环境,WebOS不需要Java实现,而RIM也在逐渐抛弃Java,转向Adobe AIR,这意味着Java在手机市场的空间在逐步缩小。讽刺的是,现在 Android 的飞速发展反而有利于Java语言在手持领域的地位。如果Google抛弃Java,是否Java将只能在低端机之间苟延残喘,逐渐消亡呢?相信随着Web开发技术的进步,HTML/CSS/Javascript这样的网络开发环境将成为网络应用的首选,而底层应用开发将会是C/C++的天下。
Oracle的作法也许只是加速Java在手机领域的灭亡而已,当然是在它收完最后一笔保护费之后。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
企业内是否一定要支持Android?
让我们看看Google正在如何改进Android的功能,去帮助运行业务,并且重新思考该平台是否是企业可用的工具。
-
全球移动开发者:IAP降温 企业应用成待掘金矿
VisionMobile发布2014年度最新Developer Economics调查报告。iOS、Android开发者青睐度流失,WP未减反增,新晋语言Swift还需努力,HTML/CSS/JS成最佳非原生选择。
-
Android API 最佳使用实践与学习
现在,Android应用程序中集成第三方API已十分流行。应用程序都有自己的网络操作和缓存处理机制,但是大部分比较脆弱,没有针对网络糟糕情况进行优化
-
碎片化的Android领域解决移动ALM质量挑战
虽然当涉及到在本地移动模拟器上测试应用时,移动开发人员和质量工程师们很坚定勤奋,但在移动ALM测试阶段有一个悲剧,那就是市场上没有设备模拟器可以代替用户提供的反馈。