Java创始人漫谈Sun与Oracle的历史恩怨

简介: 《eWeek》网络版近日刊登了对Java创始人James Gosling的专访。Gosling在专访中谈到了此前一些未公开的内幕,包括他为何会在甲骨文收购Sun之后从甲骨文离职。

《eWeek》网络版近日刊登了对Java创始人James Gosling的专访。Gosling在专访中谈到了此前一些未公开的内幕,包括他为何会在甲骨文收购Sun之后从甲骨文离职。

当Gosling领导他的团队,开发出Java语言和平台时,Sun正是一家如日中天的公司,而Java也被证明是一项革命性的技术。然而,财务问题最终拖垮了Sun,甲骨文则成为Sun的救世主。许多人认为甲骨文收购Sun是正确的做法,然而对Gosling来说,这是完全错误的。

Gosling开发了Java,因此外界认为他应当受到尊重。然而Gosling表示,他从甲骨文得到的反应是完全相反的。在接受采访时,Gosling谈论了他离开甲骨文的原因,以及他认为甲骨文将把Java引向何方。

今年4月,Gosling在博客中撰文,宣布从甲骨文辞职。他当时表示:“关于我离开的原因,这个问题很难说清。我所能提供的任何准确及诚实的信息都将带来危害,而不是帮助。”Gosling此次接受采访时谈到了更多细节。他表示,甲骨文藐视Sun的关键员工,将Sun原本制定项目和战略完全推翻。

Gosling表示:“导致我离开甲骨文的原因有很多。我的薪水也是因素之一。当我从他们那里拿到我的薪酬合同时,我试图在W-2表格中看看我的薪酬究竟是怎样。然而这让我震惊。他们只是从Sun复制了我的基本薪酬。”此前,Sun的所有副总裁及以上级别管理人员都拥有与绩效挂钩的奖励。

Gosling指出:“如果我希望继续在甲骨文工作,那么我必须接受大幅降薪。”甲骨文一名发言人表示,该公司不会对Gosling的说法置评。

不过这还不是全部的原因。实际上,即使存在这样的困难,Gosling也决定继续在甲骨文工作。然而根据Gosling的说法,他遇到了另一个麻烦,即甲骨文内部没有高级工程师这样的职位,以对应Gosling原本在Sun的级别。Gosling表示:“在我的薪酬合同上,他们大幅下调了我的级别。”

然而这也不是导致Gosling离开的最终原因。Gosling表示,甲骨文试图控制他。甲骨文收购了Sun,因此获得了Java,他们也拥有了Java的开发者及知识产权。因此,甲骨文希望决定Gosling及其他人对Java的态度。

Gosling表示:“在甲骨文,我能决定的事情微乎其微。甲骨文是一家极度重视细节管理的公司。因此我和Java方面的同事无权决定任何事。我们的决策权不复存在。”

这导致Gosling在甲骨文的工作如同鸡肋。Gosling表示:“我的工作看起来就是登上舞台,成为为甲骨文服务的Java代言人。我不适合做这样的工作。”这一问题导致双方的关系最终破裂。Gosling表示,甲骨文在道德上带来挑战,而他本人已经受够了,因此决定不再为甲骨文工作。

对于他是否希望Sun被IBM,而不是甲骨文收购时,Gosling表示,他与Sun董事长斯科特·麦克尼利(Scott McNealy)进行了激烈的争论。麦克尼利拿出了最终意见:尽管甲骨文可能更粗鲁,但IBM会进行更多的裁员。

记录显示,近年来IBM往往在收购后进行大规模裁员。在考虑了这一因素之后,Sun管理层决定推动与甲骨文的交易。Gosling表示,在宣布甲骨文和Sun合并之前,Sun已经进行了数轮裁员。

然而对Gosling本人而言,他更倾向于IBM,因为IBM往往给予技术型人才更多报酬。例如,当IBM收购Rational Software时,该公司发现了Rational首席科学家、UML语言联合开发者格雷迪·布切(Grady Booch)的价值,并任命他为IBM技术委员。尽管布切常常在台前高谈阔论,但他仍然是IBM软件集团及研发部门之间的关键纽带,并且积极从事创新工作。如果Sun被IBM收购,Gosling或许也将享受同样的待遇。

Gosling提到的细节管理问题在IBM内部或许也不存在。Gosling表示,他感到甲骨文CEO拉里·埃里森(Larry Ellison)几乎完全掌控了与Java相关的决策。很明显,IBM董事长兼CEO彭明盛(Sam Palmisano)不会干预被收购产品未来的运作,即使是像Sun这样的重大收购。然而,甲骨文和IBM之间存在很大区别。

Gosling认为,埃里森与体育大亨、美式橄榄球大联盟奥克兰突袭者队老板阿尔·戴维斯(Al Davis)类似。后者不断的聘请教练,并在选秀中招揽青年才俊,只是为了凸显他自己。不过与甲骨文不同,戴维斯和奥克兰突袭者队距离最终的成功还很远。

Gosling表示,尽管他并没有直接与埃里森打交道,然而埃里森“是令人毛骨悚然的人”。他表示:“Sun的所有高级管理人员都获得了巧妙的补偿。他们的职位保持不变,但他们失去了进行决策的能力。”

Gosling表示,令人毛骨悚然的不仅是埃里森本人,还包括甲骨文的权力结构。他表示,Sun当时计划租下位于加州圣克拉拉的Great America游乐场,让Sun的员工放松一天。麦克尼利和Sun CEO乔纳桑·施瓦茨(Jonathan Schwartz)已签字同意这一活动并拨出预算。然而在活动之前的几天,甲骨文联席总裁萨弗拉·卡兹(Safra Catz)得知了这一消息,并对其大肆攻击。

Gosling表示:“卡兹得知这一消息后大发雷霆。她表示甲骨文从没有过这种员工答谢活动,因此她迫使Sun取消这一活动。然而,这并没有节约任何费用,因为费用已经花出去了。因此,最终我们只能将门票捐给慈善机构。我们被迫放弃只是因为这么做不是‘甲骨文的方式’。但另一方面,甲骨文却拿出2亿美元赞助一条帆船。”

麦克尼利对甲骨文“粗鲁”的评价随后也得到体现。Gosling表示,他们早已料到甲骨文会就Android系统使用Java的问题对谷歌提起诉讼。他在4月份的博客文章中还表示,当Sun谈到Java当前的专利情况时,甲骨文的律师两眼放光。Gosling表示,无论这起诉讼最终的结果怎样,他都不会认为谷歌是蓄意这样做的。

对于谷歌,Gosling表示:“我们对他们所做的工作,以及工作的方式印象深刻。但是打官司的代价总是非常昂贵的,不仅仅是钱,也包括公司高管花费的时间。美国政府与微软之间的官司几乎浪费了我整整一年时间。”

Gosling还表示:“谷歌在公共关系方面有着光环,是全世界的宠儿。”他表示,起诉这样一家公司是Sun不会去做的。Gosling此前曾在另一篇博客文章中谈到Sun如何处理与Android之间的关系。

尽管已经离开甲骨文,但Gosling表示他并不关心Java在甲骨文领导下的命运。他表示:“我不是非常关心甲骨文领导下的Java,因为Java已经获得了自己的生命。甲骨文可以做的破坏性工作很少,因为他们的业务非常依赖Java。善待Java符合他们的利益。”不过Gosling认为,Java近期的发展可能会面临一些障碍,因为甲骨文“非常傲慢”。

相关文章
|
5月前
|
SQL Oracle 关系型数据库
java往oracle存clob类型的值时,字符长度过长怎么办?
java往oracle存clob类型的值时,字符长度过长怎么办?
77 1
|
2天前
|
Oracle 关系型数据库 Java
java操作多数据源将oracle数据同步达梦数据库
java操作多数据源将oracle数据同步达梦数据库
|
7月前
|
Oracle Java 关系型数据库
JSP struts2工资管理系统myeclipse开发oracle数据库bs框架java编程网结构
JSP 工资管理系统是一套完善的struts2设计系统MVC结构,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle10g,使用java语言开发,系统主要采用B/S模式开发。
47 1
|
7月前
|
Oracle Java 关系型数据库
JSP停车场车位管理系统myeclipse开发oracle数据库BS模式java编程网
JSP 停车场车位管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet+bean+dao (mvc模式开发),系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle 10g,使用java语言开发系统主要采用B/S模式开发。
38 0
|
8月前
|
Oracle 关系型数据库 Java
java处理oracle的Clob字段类型的坑和2种解决办法
java处理oracle的Clob字段类型的坑和2种解决办法
|
8月前
|
SQL Oracle 关系型数据库
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
|
12月前
|
SQL Oracle 关系型数据库
Java swing+MySQL/Oracle 实现的飞机票预定系统订票系统课程设计
Java swing+MySQL/Oracle 实现的飞机票预定系统订票系统课程设计
258 0
|
1天前
|
Java
Java一分钟:线程协作:wait(), notify(), notifyAll()
【5月更文挑战第11天】本文介绍了Java多线程编程中的`wait()`, `notify()`, `notifyAll()`方法,它们用于线程间通信和同步。这些方法在`synchronized`代码块中使用,控制线程执行和资源访问。文章讨论了常见问题,如死锁、未捕获异常、同步使用错误及通知错误,并提供了生产者-消费者模型的示例代码,强调理解并正确使用这些方法对实现线程协作的重要性。
10 3
|
1天前
|
安全 算法 Java
Java一分钟:线程同步:synchronized关键字
【5月更文挑战第11天】Java中的`synchronized`关键字用于线程同步,防止竞态条件,确保数据一致性。本文介绍了其工作原理、常见问题及避免策略。同步方法和同步代码块是两种使用形式,需注意避免死锁、过度使用导致的性能影响以及理解锁的可重入性和升级降级机制。示例展示了同步方法和代码块的运用,以及如何避免死锁。正确使用`synchronized`是编写多线程安全代码的核心。
26 2
|
1天前
|
安全 Java 调度
Java一分钟:多线程编程初步:Thread类与Runnable接口
【5月更文挑战第11天】本文介绍了Java中创建线程的两种方式:继承Thread类和实现Runnable接口,并讨论了多线程编程中的常见问题,如资源浪费、线程安全、死锁和优先级问题,提出了解决策略。示例展示了线程通信的生产者-消费者模型,强调理解和掌握线程操作对编写高效并发程序的重要性。
25 3