专栏名称: Fundebug
Fundebug为JavaScript、微信小程序及Node.js开发团队提供专业的线上代码bug监控和智能分析服务。
目录
相关文章推荐
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了 ·  昨天  
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了 ·  昨天  
前端大全  ·  前端行情变了,差别真的挺大。。。 ·  2 天前  
前端大全  ·  React+AI 技术栈(2025 版) ·  4 天前  
商务河北  ·  经开区“美•强•优”三重奏 ·  4 天前  
51好读  ›  专栏  ›  Fundebug

Java的战争

Fundebug  · 公众号  · 前端  · 2019-05-29 10:00

正文

引子


2019年5月,彻底撕破脸的特朗普掀起对华为的战争,谷歌被迫吊销了华为的安卓授权。开源软件的版权问题,使我不禁想起软件业的一宗惊天巨案。


看过 《手机基带芯片故事》 的朋友,一定记得乔布斯曾强烈表达过对谷歌抄袭苹果的愤怒: “我要用尽苹果400亿美金的存款,发动一场热核战争,来摧毁安卓,because it's a stolen product。”


千万别认为乔帮主只是说着玩的。


虽然他不幸仙去多年,他最好的朋友甲骨文(Oracle)董事长拉里埃里森仍然在坚持这项未竟的事业。


桀骜不羁的埃里森在回顾乔布斯临终情景时动情地说:他已经被癌症消耗光了,他实在太累了又太痛了。虽然他绝对是我见过最坚强的人,但他还是最终放弃了和死神的对抗。他最后停药的决定震惊了所有人,三天后帮主驾鹤西去。



作为惺惺相惜的英雄,埃里森当年曾经想把苹果买下来还给乔布斯。


2009年4月,甲骨文宣布以 74亿美元 收购了Sun Microsystems。


埃里森面对IBM的竞价毫不犹豫,最终以超过Sun市值30%的代价将其拿下。


2010年收购完成后,埃里森随即对谷歌宣战,起诉安卓对Java的侵权。


一、


Java之父James Gosling是个加拿大人,他在Sun工作了26年。直到Sun被甲骨文收购后,他选择了离开。


有谣传说,Gosling因为学C++太难而在其上去掉了很多繁复的特性做出了Java。这个不足为信,因为Gosling是计算机圣殿卡内基梅隆的博士,学个语言对他来讲太小儿科了吧。


Java是原本设计用于机顶盒之类的小型装置上的。但出乎任何人意料,互联网大潮来临后,Java编写一次、到处运行的特性被各种应用发挥到了极致。在企业级软件上,Java更是整合各种不同软硬件和操作系统做出分布式应用的神器。


二十年来,Java除了受到.net的小型挑战外,由于拥有最成熟稳定的企业应用组件,其互联网的支柱地位仍牢不可破。


二、


不仅在企业级市场呼风唤雨,另外一个意外的选择,使得Java在移动终端领域也大放异彩。


安卓之父安迪鲁宾1989年进入苹果工作,那时他还是个小工程师。因为他之前在蔡司机器人部门工作,苹果同事给他起了个外号:Android(机器人),当时谁也不知道,这个机器人在多年以后成为苹果最大的竞争对手。


当时乔布 斯已经被驱逐出苹果。被老乔请来“不卖糖水改变世界”的CEO John Sculley其实远没有后来被评论的那么不堪。他把苹果营业额扩大了10倍,而且主持了大屏手持电脑Newton的开发。


Sculley把专门做手持操作系统的部门分拆成General Magic(通用魔法公司,这个名字好赞),而这间公司成为未来智能手机的黄埔军校。


安迪鲁宾在通用魔法公司汲取了充足的养分,后来在2003年创建了安卓公司(Android Inc.)。Android系统最早是设计给数码相机用的,数码相机本身硬件就千差万别,所以Java优秀的跨平台特性就被选中了。


结果这个平台做出来后,发现用于手机也很适合。2005年,正在寻找手机操作系统的谷歌看中并收购了安卓公司。




三、


2007年1月,乔布斯发布了iPhone,极大地震撼了谷歌。为了赶时间,谷歌来不及更改安卓所用的开发语言Java,这给后来埋藏了重大的祸根。


当然,Java充足的程序员群体和便利的开发特性,对安卓本身来讲也是有极大帮助的。


2007年11月,就在第一代iPhone上市4个月后,谷歌便匆忙开源了安卓并成立开放手机联盟(OHA)。这时的安卓连个半成品都算不上,但Java的位置被牢固地确定下来。


和苹果iOS运行原生Objective C编译的机器码不同,Java必须跑在虚拟机上。这使得安卓在速度上天然存在问题。谷歌为了尽可能提高速度,自己做了Dalvik虚拟机(DVM)。


DVM采取了很多“作弊”的加速手段,比如预读取用户装的很多APP(APK)并存入缓存,比如把Java Bytecode替换成DVM的指令。这些手段的副作用之一就是使安卓需要比iPhnoe大得多的内存,而且手机用的时间越长 APP越多 系统越慢。


这些"作弊"手段,也使得谷歌的Java虚拟机和Sun原版虚拟机完全不兼容。而Sun对这种分裂Java的行为不能容忍。


四、


谷歌确实去找Sun申请过Java授权,但是Sun要求谷歌分享对安卓分支的控制权而遭到拒绝。谷歌当时还拒绝了Sun提出的三年支付约5000万美元的要求,而后来Sun归了埃里森以后,赔多100倍到50亿美元都不够了。


在未获Java授权的情况下,谷歌采取了“洁净室”这种反向工程手段(可参考: BIOS和PC的故事 )开发了自己的Java库。这是一种类似抄袭但又不明显违法的手段。


但是,谷歌仍旧保留了Sun Java原有的一些编程接口(API),这后来被甲骨文抓住把柄。


甲骨文总架构师 Edward Screven在法庭作证说,他曾和埃里森讲,拿下Java是收购Sun的唯一重要目的。


虽然Java之父Gosling在离开甲骨文后短暂加入了谷歌,他在接受采访时表示他认为谷歌确实当年糊弄了Sun。


五、


开源软件只是意味着你能看到全部源代码,这并不表示你可以随意使用。对于Java来讲,程序员是可以免费使用的,但是对于企业还是需要取得授权的。


而API是否受版权保护,这个在美国法律界也产生了巨大的分歧。如同你做菜的配方可以受版权保护,但是点菜的菜单也受保护吗?







请到「今天看啥」查看全文


推荐文章
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了
昨天
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了
昨天
前端大全  ·  React+AI 技术栈(2025 版)
4 天前
商务河北  ·  经开区“美•强•优”三重奏
4 天前
中国黑客联盟  ·  利用手机就能解决网盘限速门道
8 年前
中科院物理所  ·  数学的三次危机
7 年前