Java在中国 (2005.08.18 来自:《程序员》杂志)

聚焦Sun中国

九九归一Java情
——专访Sun中国研究院院长宫力
记者/闫辉

记者:10年前您能预见到今天Java的成功局面吗?
宫力:其实,任何一个人都没有想到Java到现在会这么热。从1995年宣布叫“Java”到现在有十年,我到Sun公司有九年。JDK 1.0完成之后我就到了Sun公司。Java 1.0刚出来时,基本上是一个原型,现在的Java主要内核是以1.2为起点的,这个版本之后基本上就没有大的变化了, 而且横向地演变出Java的移动版和企业版。目前移动版是世界上新一代手机的标准平台。

记者:您当时加盟Sun公司是怎样的情况?
宫力:应该说,我进入Sun公司也是因为Java的缘故。Java出现后,尽管这个概念从计算机理论上看并不新,但他们真的实现了,所以觉得新奇,很关注。当时在和James Gosling等同行交流后,谈到我要不要过来做。对于我们这些做科研出身的人来说,有机会去亲身实现自己的理论, 是很有吸引力的。
其实,当时也根本不可能考虑到Java后来会变得这么火,有时我们组还聊起不知道Java一年后是否继续存在的话题。当时Java开发组只有几十个人,从早上一直工作到晚上11点。因为年轻人居多,还习惯中午和晚上都一起吃饭,饭后继续工作。当时整个开发组都很玩命。
当时,总的感觉是我们处在硅谷和IT世界的中心,因为经常和工业界的人开会,所有人走很远的路也要到我们这里来,因为大家都很好奇,想来看看这群人。就像现在的Google一样,大家都希望参观一下。当时,我们有很多相互之间竞争的合作伙伴,可能上午IBM过来,下午就是HP,所以我们要把黑板擦得很干净,以防无意中竞争对手之间信息泄露。

记者:您当时负责Java安全部分,能讲述一下吗?
宫力:Java刚出来的时候,宣传语是非常大的,比如跨平台、面向对象、安全等等一堆定语。其中就有一部分人会问:你所说的安全到底是什么意思?
实际上,最初Java语言在安全性方面考虑得非常不成熟,因为最早Java是为机顶盒产品设计的,而机顶盒是一个个人使用的平台,不是一个公共的计算平台,所以不存在安全的问题。但是,后来和互联网结合后,就从个人环境转变为多用户环境,这产生了很大的安全问题。所以,当别人问Java安全性的时候,开始Sun只能很随便的表示Java程序下载之后不能做哪些“坏事”,但什么是“坏事”?如何解决?都没有明确定义。同时,没有考虑服务器端的需求,设计是以PC为中心。
我去Sun之后,很大的工作和目的就是定义一个安全架构。这牵扯到平台的应用对象是谁,如何表示和控制不同的安全需求,提供怎样的安全编程模式,等等。如何能设计出一个既灵活又功能强,并且容易实现而且效率高的安全架构,不是一件容易的事。

记者:在Java开发过程中,您还有哪些印象深刻的经历?
宫力:Java出现之后,IBM非常支持,大家都开玩笑说IBM关心Java的人比Sun公司还要多,因为他们公司很大。IBM也曾对Sun表示过,说你没有多少人,我帮你做算了,Sun肯定不愿意,但在各种压力下,找到了成立JCP组织的方案。大家都有一票,这样可以实现最大程度的民主。
做完JDK 1.2版本之后,James Gosling察看了一下Java的发展速度,发现1.1比1.0的类数量增加了20%多,而1.2比1.1又增加了20%,看到这种指数级的成长速度,觉得速度过快,于是提出要控制类增加的速度。
说服手机厂商使用Java,有两个重要原因:一个是给软件移植带来方便。摩托罗拉有次参加了一个展会,第一天看到竞争对手有一个不错的应用,于是他们晚上回去之后就用Java开发,因为Java程序可以在PC机上用模拟器开发,所以速度非常快,第二天他们就拿出了同样的一个展示。另外安全性也是非常重要的,手机厂商喜欢可以扩展功能,但不要影响安全,现在J2ME的安全模式还是沿用我们最初的模式。
准备启动J2EE项目的第一次会议我也非常有幸参与了,当时叫“Java for Enterprise”。因为很多企业用户提出很多大量的需求,这与普通用户的需求是不一样的,这时就探讨如何启动一个更适合企业需求的项目。而且会议上大家还讨论如何说服Sun的高层通过这个项目。
我在JDK做了两年多,把1.2版本做完了,就去做J2ME,后来负责了JXTA,差不多前后在Java上工作了四年整。2001年初,我回国担任了Sun中国工程研究院院长。
很多人说Java作跨平台没有达到目的,但我认为Java已经被Sun做到很好了。因为在商业场合,很多规则就是这样,大家都有自己的利益,很难达到真正跨平台。而且,我们当时就考虑不需要把世界上所有C++的程序员都变成Java的程序员,只要1/2就可以了。

记者:很多人说Sun发明了Java,但Sun并没有挣到很多钱,反而其它公司利用Java挣到了钱,您是否因此而感到遗憾?
宫力:大家都说Java不挣钱,其实很挣钱。我们Java组不到100人,每年授权费超过1亿美元。而且很多公司一签就是好几年,所以大家还开玩笑说,现在即便把Java组立刻解散,什么都不做,也可以坐收大量的版权费。
不过,因为Sun本身是一个做平台出身的公司,做事情容易横向走。而且国外的公司比较单一,做平台就和上家下家都是好朋友,靠大家一起把业务做得很大,Sun公司一直就是抱着这种理念,当然也有很多公司比如IBM就抱有既合作也竞争的理念。
同时,我认为Sun在Java方面的得益是很大的,因为Java给Sun带来的无形资产远远大于其在上面的投入。这其中包括了很多间接收入,比如很多人认为Sun能够引导技术潮流,自然会购买它的产品。很多人盯着Java本身,我觉得是不全面的,这要综合来看。就像IE虽然是免费的,但对微软的意义太大了。
对我来说,能抓住这种机会感觉非常有意义。前一段时间见到了加州的一个留学出去的年轻工程师,他说:“我觉得你放弃了一些东西做Java是对的,挣钱的机会总是有的,但做一个影响全世界的产品的机会很少。”为改变世界而努力,的确是硅谷能一直带动IT领域的根本原因。

 


大家都来用Java淘金
Sun公司大中华区ISV业务总监  黄震

Java诞生10周年之际,作为Sun公司在中国负责与软件合作伙伴进行配合的负责人,我非常希望让中国更多的软件公司和程序员了解,Java是给软件产业带来无限价值的技术,也是为软件企业和软件人才聚集财富的技术。
Sun公司是Java技术当之无愧的导师,因为我们最了解Java的精髓。总是有很多人提出疑问:“Sun公司通过Java为整个IT产业带来了巨大的财富,甚至包括Sun公司的竞争对手都从中获得了很大的好处,可是似乎不太容易看出Sun公司从Java得到了多少好处。”我觉得,如果Java为整个世界带来的好处是100亿,Sun公司能够从中占到10%、甚至5%,我们就非常满意了。这就是Sun公司的开放心态。Java是给软件企业带来财富的技术,如果你想走入Java的世界,大门随时为你敞开,Sun公司拥有完整的方案和计划来支持你利用Java技术来赚钱。
在Sun公司的Java推广计划中,有两项计划首当其冲。
第一是Sun iForce Ready Center。这是一个知识共享体系,旨在形成共享技术的渠道分销体系,支持渠道合作伙伴实现自身的价值增值。Sun在国内总代理中建立了多家iForce Ready Center,在Sun专业开发技术人员的强有力支持下,iForce Ready Center能够为解决方案供应商提供一个完整软件解决方案移植、测试以及性能调优直至参考架构建立的优良环境,帮助合作伙伴在不影响现有应用实施的情况下将软件平滑迁移到Sun公司的新产品、新技术平台上面,并提升软件解决方案的性能。
第二是Sun JavaChina联盟。加入JavaChina联盟,不仅可以在软件开发技术培训和项目实践方面获得直接、有效的帮助,积累更多的实践经验,而且可以通过Sun公司推出的一系列市场推广活动获得更多的商机。Sun JavaChina联盟计划中包括两个方面的内容:一方面是一系列的技术培训;另一方面是严谨的逐级认证。
身为Sun公司在中国负责向ISV合作伙伴推广Java技术的负责人,我衷心希望有更多的软件公司和软件人才加入到Java这个大家庭中来,一起快乐地创造财富。
最新调查

 

 

最新调查

Java十大热点问题揭晓

值此Java十年之际,很多网站和社区都对Java开发人员及相关爱好者进行了调查与访问,下面列出十大热点问题调查结果。人们发现,开发者对于Java存在着各种各样的看法。下面列出有代表性的网友观点。

1.你是如何开始用Java编程的?
● 我在Java一出现的时候就开始使用它进行编程。我为它的‘一次编写,到处运行’的理念以及Applet感到激动。
● 我在Java出1.0版本之前就开始学习它,因为我期望它能作为微软产品(我对VB和Visual C++太失望了)和Pascal的替代品。
● 我曾经把Java手册作为休假时的阅读材料,结果被它所吸引,转而使用Java而放弃C++,并且永不回头。
● 我所在的大学一直都在教C++课程,但我却用了很多时间自学Java,因为想用它找一份更好的工作。
2.Java曾经承诺“一次编写/到处运行(WORA—Write Once, Run Anywhere)”,你认为它兑现这个承诺了吗?时至今日,你认为“一次编写/到处运行”的重要性发生改变了吗?
● 应用程序服务器和J2EE应用程序能够在不同的平台之间很好地进行迁移。我对WORA(Write Once, Run Anywhere)在客户端的效果表示怀疑,并且我觉得这些其实是不可能真正地达到的。
● 它让我完全不用考虑使用哪种平台。
● Java的早期成功应该归功于WORA。它为系统集成商、独立软件商、软件设计师带来不同的根本性的经济利益,这点胜于其他语言。
● WORA每时每刻都在对我发生作用。我经常在Windows中完成我的Java开发工作,但是却经常在Solaris或者Linux环境上进行不止一个的版本部署。
● 你能将字节码转换为MSIL,并且也可以用J#编写Java程序。这给我们的产品为Java和.Net保留了一个代码基础。
● 我经常在Windows、Linux 和Sun Solaris平台上做开发、测试和部署Java代码的工作,在跨越平台的时候只用对XML的配置文件做很少的更改。但是WORA的重要性在面向服务和架构方面有所削减。
● 一些人声称由于常用操作系统的数量的递减,WORA的重要性也会随之减弱。事实上即便只有两个目标平台,WORA也是非常重要的。
3.在你现在编写的生产代码中,有多大比例是用Java编写的?你认为在可预见的将来,这个比重是会增加、减少还是保持不变?
几乎所有的被调查者都声称Java是他们进行编码的主要工具,回答为主要工具者超过了70%的比例。在对第二个问题的回答中,这个比例没有降低的迹象。
● 去年我们对800个基于Java技术的产品通过了认证,我们几乎所有的中间件产品都是基于Java运行时的。
● 我们仍然看到客户对C和C++的任务认证的应用程序仍然存在大量的需求。我们希望经常能够使用Java,但是Java的VM技术到了应该发展成为能够在这些不同的系统上运行的时候了。
4.在你开发的Java应用中,桌面应用和服务器端应用的比重分别是多少?如果你编写桌面应用,你会选择SWT还是Swing(或者其他GUI框架)?理由是什么?
大部分回答为:“Java存在于服务器端的任何地方。”
● Swing太过于复杂,太不可预知,并且太难学习。SWT要稍微好一些,但通常来说,Java在用户界面方面实在不受欢迎。
● 我认为SWT的方法非常好,它出于速度和一致性考虑而链接到本地的类库,但是,我不喜欢API,它暴露了太多底层的东西。Swing有良好的API,但是它上面存在着太多的bug,较差的性能和糟糕的布局。
● 我非常喜欢SWT。它比Swing更加自然,而Swing被描述为粗略近似于自然。
● 我编写Swing的应用程序,并且使用Java Web Start进行部署。我还不太相信SWT的价值,因为它的跨平台支持有限并且缺乏可靠的MVC设计。
5.在开发Java程序时,你首选的平台、框架、IDE分别是什么?
在这个问题中,由于Windows和Linux这两个占有统治地位的操作平台,使得Eclipse Framework和IDE普及程度很高,这一点表现得特别明显。有网友认为:
● 我选择的操作系统是WinXP Pro。在安装了Cygwin和几个其它的设备后,系统能够对硬件提供很好的支持。
● 我喜欢J2SE 5。IDE方面,我喜欢JBuilder,IDEA是第二选择。IDEA有更加灵巧的特性,但是我所需要的功能,老的JBuilder都有。
● 我过去使用emacs来进行开发,调试程序使用println。而现在,我使用NetBeans,并且非常惊讶,它居然能提供如此强大方便的帮助
● 在紧要关头,我用vi进行开发。
6.在Java的整个发展过程中,你认为JCP和开源社区谁起到的推动作用更大?
开源派:
● 目前来说是开源。JCP在积累实际经验前总是相信标准。EJB,日志,持久性这些都是在JCP中让人感到不满意的地方。JCP正在放弃Java的基础。一些困难的问题正在很容易的被解决,但是相反,一些很简单的问题却变得日益复杂起来。
● 开源的实现正在引导着开发的过程,而JCP只是在定义标准。
● 如果是说绝对意义上的改革,我只能说是开源。开源的实现对于需要进行修复的漏洞响应很快。而JCP的进步和工业前进的步伐相比,显然要慢很多。
● 很多创新都是通过JCP模型而来的。然而,在过去的20年里,我们看到开源模型正在日益增长。
● 我已经发现了开源的主动性,尤其是Apache让我感触颇深——它是最具创新性和最有用处的。
JCP派:
● JCP对于Java发展的贡献是功不可没的。它为整个Java生态系统提供了一个“物质核心”。很多不符合JCP标准的开源项目展现了各种不同的想法——它们有的很糟,有的则很精彩。它们是提供改革动力的引擎。
7.你认为Sun应该将Java开放源码吗?
肯定派:
● 应该。而Sun不同意这样做的唯一原因是它认为Java是归Sun所有的,并希望Java可以带动Sun的发展。
● 一方面,开源的思想是很具吸引力的,因为这会使得更多的bug在更短的时间内被解决。另一方面,这也会为Java带来一些分歧和互不兼容的虚拟机。
● 我们需要一个开源Java的主要原因是保证平台的活力。如果Sun应该做什么的话,显然让Java开源是这个计划的保证。
● 我想Sun应该。“开源”Java并不需要Sun做任何工作。它主要需要其他人来做一些工作。拥有一个开源的Java是一个必然。我建议Sun能够认识到这个必然并抓住这个机会。
否定派:
● 不。如果是开源的话,我们会看到各种样式的Java。这最终会带来问题,就像我们现在面对各种应用服务器所遇到的问题一样。
● 不。我不相信一群普通的人的想法可以替代那些关注基本思想的完整性的科学的观点——这些通常是常人不需要关注的东西。
中间派:
● 这个问题无关紧要。Java已经可以按照自己的方式来发展。
8.如果你有权改变Java中的一样东西,你希望改变什么?
● 在底层,Java需要一个更加灵活的键入模型和一整套令编程更加容易的特点。我们不能将所有的事情都依赖类库。
● Introspection,一个用来检测JavaBean属性的类——这个类太难用太笨拙了。
● 许可证。
● 为开发者提供内存管理的工具。
● 增加对运算符重载的支持。
● Jar版本是Java急需的东西。我已经记不清多少次我的XML解释器和日志库发生冲突了。
● Class Object。10年来一直没有变过,应该加入很多东西了。
● Java平台现在变得太复杂了。我们相信Java社区需要在明确部门分类这方面做一些更好的工作,进而使Java能够继续成长、兴盛和成功。
● Java绝对需要一个更为健壮的模型系统。现在,我们拥有的全部就是.jar文件;结果是造成了.jar文件“地狱”。现在,描述一个互连的模块系统太困难了。
● 一个对象在被加载以及Java运行时类型之间的关系是我们仍将面对的错误。你不能在编译期决定你的程序是否是类型安全的。另外,如果你合理地做一些动态的事情,你经常不得不去为一个给定的类猜一个正确的类加载器。
● Java需要做的其它事情:运算符重载,预编译指令,把声明和实现分离(头文件和源代码文件),唯一的、非原生的机器定义符(出于许可证的问题)。
● Code-behind pages!!!ASP.NET和code-behind提供了巨大的复用性和灵活性。我希望看到JSP 3.0朝着这个方向努力。
● 我更喜欢利用Java对象访问操作系统而不是使用JNI。大部分的Win 32/Linux API可以被封装道Java的类中。
9.你认为Java对整个软件社群最大的一个贡献是什么?
● 我们收到的最多的回复是平台无关、Java平台、Java语言本身和由此而创建的社区。
● 有两件事:一个是它把带有垃圾回收机制的语言推向了广大使用者,另一件是围绕着这种语言建立的智能IDE。
● Java的确带来了很大的变化,包括它迫使Microsoft重新设计新的产品,例如对Visual Studio的改进以及.NET。利用JavaScript实现的浏览器对Java来说成了NetScape的替代品。服务器端的编程前进了一大步,并可以实现上百万站点的互连。
● 有很多学生不用再学C++了。
● 标准API的制定使得可以有很多不同生产商的实现。这就提供了一个对于共同接口进行最好实现的竞争,最后的结果是整个产业通过不断的寻求更高质量的解决方案变得很灵活。
10.展望未来,你认为Java语言还将像过去10年那样占据重要地位吗?还是会被另一种更新、更强大的语言取代?
肯定派:
● Java在工业进化的过程中仍将会扮演极为重要的角色,因为人们将会把关注的焦点放在软件的架构上,例如SOA。
● 我们实际上可以编写出更多的语言,它们之中有些可以和Java完全不同,但是,它们可以保持一致的应用程序二进制接口(ABI)。这就是为什么Java在很长的一段时间内仍然很重要的原因。
● Java仍是IT产业中强有力的语言,但是脚本语言在某些特定的领域里将会得到更广泛的应用。
否定派:
● 不会的,语言在技术上的领先性都是暂时的,Java也一样。因此,从某种意义上来说,关注Java的未来会更有趣。
● 当桌面电脑和笔记本被掌上设备取代的时候,我们将会需要一种更简单、更强大的语言。
● C#对Java有潜在的威胁。它是更好的语言。
● Microsoft正在以令人难以置信的速度转向.NET。它可以通过操作系统来拥有客户,在这一点上,它比Java更有优势。
● 在某些方面,Java虚拟机架构的缺陷会变得非常严重。如果可以提供设计更加优良的虚拟机,那么它将极有可能替代Java平台。

 

 

社群视点


Java在中国这样走过
文/林芷薰

把时钟拨回到10年前,在上世纪的最后10年里,中国的软件开发技术与国际水平大概保持着两到三年的“时间差”。1998年,当Sun公司紧锣密鼓地准备推出Java 2、并将Java的标准化工作移交给JCP组织时,我们中的大多数人才刚刚开始接触Java 1.1。说实话,那时候学习Java的同行很少有人能够预料到,这种看似玩具的编程语言有一天会热门到如此程度。
说起来,我们应该感谢Bruce Eckel的《Thinking in Java》,不仅因为这是一本优秀的Java入门书籍,而且因为这是一本代表着国际主流技术水准的好书。虽然拙劣的翻译让不少读者对它恨之入骨,但毕竟是从这本书开始,我们中的大多数人第一次有了这样一种感觉:全世界的程序员都是这样在用Java编程。世界上流行的先进技术对于我们来说也不再是可望而不可及的。
进入21世纪以来,随着大型企业/政府应用的增加,Java(准确地说,是J2EE)开始在中国逐渐风行。在大概两年多的时间里,众多的软件开发商走过了“纯JSP—自主开发框架—JSP+Struts+EJB”的宿命历程。到2003年前后,已经有相当一批公司积累了丰富的采用EJB和Struts框架开发Web应用的经验。这时国内的J2EE技术水准可以说已经基本赶上国际潮流了。
2003年,在Java世界有两件新兴事物开始流行起来,其一是号称“轻量级J2EE应用框架”的Spring,其二是基于POJO的O/R映射框架Hibernate。这两个框架的先后出现几乎是天作之合,以Rod Johnson为代表的一群J2EE架构师立即意识到:有了这两个框架的帮助,我们就不再需要EJB——它们可以做得比EJB更好。这一次,国内的架构师们显得更加敏锐——很大程度上应该归功于TheServerSide网站的存在。
时至今日,中国的Java技术几乎可以说是步步紧跟世界潮流:众多遭遇到EJB种种难题的企业很快地迁移到基于Spring和Hibernate/JDO的轻量级架构上,国内甚至已经出现了专门提供Spring/Hibernate技术培训/咨询/顾问服务的公司;AOP刚刚在Rickard Oberg的blog里热闹了几个月,一些步伐较快的团队就已经将其用在自己的项目中;AJAX才在国外网站上冒出头,国内竟然已经有不少实际用类似于AJAX的思想开发的项目,并且早已有人自主开发了AJAX实现框架;JSR-168、JSR-170等重要规范的发布都会第一时间引起国内技术专家的关注;在EJB、JDO等规范专家组里也出现了中国人的身影。
近来国内J2EE技术社群的活跃固然和整个行业的氛围有关,但有两个网站功不可没。其一是“Java视线”(http://www.javaeye.com/),这个管理严格的论坛吸引了一批站在技术前沿的架构师/程序员发表言论观点;其二是CSDN网站Java频道(java.csdn.net),这里汇集了整个Java世界最新的技术动态和产品发布信息,成为国内技术领袖们不可或缺的信息源头。
在刚刚召开的JavaOne 2005大会上,Sun公司宣布将放弃Java名称中的“2”字:从1998年开始就被叫做“J2EE”的Java企业版,今后将改名为Java EE。不过,不管名字怎么变,Java还是那个Java,已经习惯了弄潮于技术潮头的中国Java人面对即将到来的Java 5.0、6.0,早已做好了准备。

 

本刊寄语

Java : 软件技术史上马拉多纳式的传奇

策划本期专题的时候,世青赛正在荷兰上演,一张张年轻的面庞让人不由得想起1979年的马拉多纳。马拉多纳少年成名,一路意气风发,在万众瞩目中成就霸业,他的传奇让其他任何人的精彩故事都显得平淡无奇。然而,并不是所有的少年天才都能像他那样备受上帝的宠爱,像中国的李华筠一样,更多的新星没能走完成功之路,夭折在半途。
其实一部软件技术的发展史又何尝不是如此!Lisp、Smalltalk、PL/1、OS/2、Ada……,多少天才的杰作和曾经被一致看好的技术最后被挤压在历史的角落里,徒使英雄泪满襟。10年前当Java问世的时候,俨然一颗超新星的模样,但当时有谁能够预言它未来的命运?10年来Java用自己的一路高歌猛进成就了软件技术史上的一个马拉多纳式的传奇。我们当然不满足于一个简单的情绪,而是希望通过本期专题与读者一起回顾Java十年来的发展历程,分析它的成功与不足,就算是为这十年的传奇做一个小结吧。当然,我们坚信,Java的传奇还会继续。希望到Java 20岁生日的时候,会有更多的人聚在一起来庆祝一个更大的传奇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值