当前位置: 首页 > 科技观察

开发者必须知道:谷歌做出了一个艰难的决定

时间:2023-03-15 10:00:59 科技观察

谷歌做出了一个艰难的决定:放弃JavaAPI。所谓流行是非,所以Android的崛起必然伴随着战争。其中,最具代表性和争议最大的当属甲骨文与谷歌之间的官司。事件回顾:从2010年开始,两家公司就Android系统的部分内容是否侵犯了甲骨文的版权和专利展开了争论,原因是该系统使用了甲骨文拥有的Java。整个官司旷日持久,充满戏剧性。从2010年8月到现在已经5年多了。到今年6月,甲骨文在这场官司中取得了重大的法律胜利:美国最高法院拒绝受理谷歌的上诉。这意味着谷歌的上诉被驳回,维持原判:该API享有版权,谷歌侵权。在美国最高法院裁定不接受谷歌的上诉后,该诉讼将返回旧金山联邦法院就谷歌单独的“合理使用”辩护进行更多听证。该诉讼的重点是用于连接不同软件的应用程序编程接口(API)是否也受版权法保护。诉讼起因是:甲骨文扫描了1500万行Android源代码,发现其中9行代码是从Java复制过来的。最具争议也是最神奇的九行代码如下:;if(fromIndex<0)thrownewArrayIndexOutOfBoundsException(fromIndex);if(toIndex>arrayLen)thrownewArrayIndexOutOfBoundsException(toIndex);}其实这九行代码都出自同一个人:Java大师JoshuaBloch。他的经历是这样的:早在1996年,Java刚刚兴起。首先,JDK1.0在一月份发布,然后第一届JavaOne会议于五月底在旧金山举行,接着是年底的JDK1.1。正是在Java技术如火如荼、大展拳脚的背景下,JoshuaBloch来到了Sun。2004年7月初,就在J2SE5.0即将发布,JushaBloch刚刚获得Sun“杰出工程师”称号的时候,他突然离开Sun前往发展迅猛的Google,成为了Google的Java***建筑师。在离开Google之前,他一直是Dart平台和Dart语言核心库的主要架构师。2012年8月23日,JoshuaBloch离开了谷歌。对Dart来说不应该是毁灭性的打击,但一定是巨大的损失。回顾完事件,让我们回到今天的事情。据悉,谷歌将在下一代安卓系统AndroidN中使用甲骨文的开源代码OpenJDK替代后者的JavaAPI。此事在上个月HackerNews发布的神秘Android代码库中透露,VentureBeat已经得到官方确认谷歌。官方回应如下:作为一个开源平台,Android建立在一个合作共生的开源社区之上。在下一版本的Android系统中,我们计划用基于OpenJDK的通用代码库替代Java语言库,让开发者开发应用和服务。谷歌全年都在为OpenJDK做出贡献,未来也会继续这样做。事实上,谷歌不知所措,此举必然是因为常年消耗战带来的压力和疲惫。OpenJDK虽然是JavaSE里面的代码,也属于Oracle,但是是开源的,而且2007年JavaSE诞生的时候,Oracle还没有收购SunMicrosystems,拥有Java。Android提供了一些JavaAPI代码库来支持开发者使用Java编程语言开发应用程序。主要分为两部分:代码库的API,以及Google开发的使代码库工作的实现代码。甲骨文拥有Java并拥有两个这样的代码库:专有的JDK和开源的OpenJDK。谷歌使用的是后者,并且在一些领域有应用,这意味着它会共享这些执行代码。Android代码库出现神秘代码提交,修改了8902个文件。从这个代码库的变化可以看出Android中增加了OpenJDK代码:初始导入OpenJdk文件。新建libcore/ojluni目录,子目录为src/main/java和src/main/native。构建??ojluni进入core-ojjar。使用java.awt.font包中的openjdk类。将openjdk中的jdk/src/share/classes和jdk/src/solaris/classes目录中的所有文件复制到libcore/ojluni/src/main/java中。从openjdk复制以下native文件到libcore/ojluni/src/main/native:[一长串文件]虽然官司还没有结束,但技术社区会出庭审理结果如果Oracle赢了官司,技术巨头们将无法再随意使用有版权的API包。如果谷歌输了,它将损失数十亿美元。