10年回顾:世界各地开发高手谈Java
一、简介
2005年5月标记着自从Sun第一个引入Java技术以来经历了整整10个年头。在过去的10年中,Java语言已经变为一个平台,一个社团和一个生态系统。在这些环境下,软件用户、开源工程以及个体开发者等茁壮成长。今天,大约有四百五十万Java开发者和大约1.4亿台设备上使用着Java。
我们不空谈Java的成功故事。代替的是通过分发调查问卷(每发展一年提问一个问题)来搜集个人的Java使用经验,这些人大都是精于Java技术的开发者。回答者包括各个层面的人,从咨询师、作家到BEA、IBM、Sun等大公司的CTO和资深技术人员。
下面是一些我们收到的令人瞠目的回答。
1. 你是如何开始使用Java编程的?
Java吸引了每个人的注意,从程序开发人员到……
"当Java还称为Oak的时候我就用它进行编程,大约是在1993年的下半年或者是1994年的上半年。当时我在Sun Labs率领一个研究小组。一旦我们使用Java开发,我们就注意到使用Java的最大优点是,它能以一种合理的安全的方式从一个虚拟机迁移到另一台虚拟机。",这是Jim Waldo(SunLabs的杰出工程师)的回答。
Rod Smith,作为IBM软件开发小组中处理突发技术的副主席,写道:"我们看到了,Java平台是一种足够好的技术,它具有在计算机工业界成为一支重大的独成系列的力量的潜力。我们认为,我们最好要赶上这班时代列车并采纳Sun的Java技术而不再依赖于以前的模式-自己开发每一件东西。"
Ed Cobb,BEA Systems公司CTO办公室架构标准的副主席,写道:"我们可以选择其它主流的面向对象语言,但是Java提供了一种更好的组合特点使它适合于团队环境下的大规模开发。"
"在过去十年中的大部分时间里,我受雇于Sun。因此,我不得不说,Java"突然来到"我的身边。如果不是这一突然性的到来,我们也会需要另外一种似Java的东西来叩开业界中正迅速发展的网络计算环境的大门。"-Rob Gingell,Cassatt Corporation的执行副主席和CTO。
...对那些勤奋的计算机系的大学生们...
Michael Pilone,作为Blueprint Technologies的资深软件工程师,他的回答是:"当时我盘算着我将来得找一份体面的工作,所以虽然我在大学中所学全部是C++,但是我还是另外自学了Java。"
"在我上硕士期间,我的指导教授让我用Java工作,结果我用Java 1.0 beta版完成了我所有的功课。"-Raghu Donepudi,环球计算机公司的系统开发领导者。
...对那些热衷于编程的狂热者...
"我一毕业即用Java开始工作,我惊喜于Java的WORA的前景和Applets。"-Jack Herrington,作为Code Generation in Action (Manning)的作者和Code Generation Network的编辑。
"我甚至在1.0版本之前就开始学习Java了,因为其开发目标是作为微软工具(VB和Visual C++)与Pascal语言的可选替代者",Laurent Ploix写道,他是SunGard-Finance公司的工程总管和技术架构师。
"在1997年,我带着一本手册作为度假读物,在海滩度假的日子里,我沉浸在Java的优美之中。我转向了Java,并宣布C++是一种传统的语言,并发誓一旦选择了Java,永不回头。"-Vlad Patryshev,Borland公司Java Business Unit的前任R&D工程师。
2.Java宣称的"编写一次,到处运行"效果怎么样(WORA)?一直以来,WORA的重要性改变了多少?
"Java虚拟机,至少在概念上,是Java背后最强有力的思想。它的确实现了它许诺的轻便性。"-Bruce Tate,J2Life, LLC(一家Java技术咨询公司)的主席。
"应用服务器和J2EE应用程序可以在多种平台上良好地迁移。我认为在客户端上实现WORA还是相当值得怀疑的,也许永远不会实现。"-Michael Pilone
"它对我简直是一个不可捉摸的平台。"-Vlad Patryshev
"Java的早期成功根本上在于WORA。与其它可选择工具相比,Java带给了(并将进一步带给)SI(系统集成商),ISV(独立软件开发商)和软件工程师们一个根本不同的经济环境。"-Rod Smith
"Java在WORA方面的性能:a)比任何它之前的工具要好;b)就目前而言,与另外一些可选工具相比仍然要好得多;c)将作为Java价值的一个关键部分继续保持下去。"-Rob Gingell
"WORA每次都带给我极大的便利。我总是在Windows平台上进行我的Java开发;但是,我总是毫不费劲地把这些代码发布到Solaris 或者Linux 环境中去。"-Eric Bruno,一个独立的咨询师,擅长于软件架构,企业Java和C++开发。
"你可以把字节代码转换成MSIL(MS中间语言),而且你可以在J#中运行Java程序。这使我们可以针对我们产品的Java和.NET环境只保留一份代码即可。"-Michael R. Smialek,Knowledge Dynamics的主席和CEO
"我经常跨Windows,Linux和Sun Solaris开发,测试和发布Java代码,而仅需对XML配置文件作较少的改动。但是,随着面向服务的结构的出现,WORA的重要性已经减弱了。"-Kyle Gabhart,作家和独立咨询师
"象Perl,Ruby和Python等语言一样轻便。"-Jack Herrington
"一些人认为,由于通用操作系统的数目的下降,WORA将变得不再如以前那么重要。事实上,即使只有两种合理的可能的目标平台存在,WORA就一直是重要的。"-Ed Cobb
二、客户端Java及开发工具选择
3.你用Java编写过多少代码?估计你将来的工作有多少会用Java实现?
几乎所的的回答者声称Java是他们主要的产品编码工具,大多数人选择他们的Java使用率超过70%。没有人认为他们下一步的Java开发使用率会降低。
"去年,我们利用Java 技术开发出了800多个商业产品。几乎我们所有的中间件都依赖于Java运行时刻库。"-IBM的Rod Smith
"在我们的顾客中,我们仍看到具有可以预料的潜在需求的大量C/C++功能第一型的应用程序。他们经常愿意用Java进行开发,而Java虚拟机技术目前正发展到正好能够处理这些类型系统的时候。
在Web应用程序开发中,我想,当人们的应用程序变得越来越大且越复杂时,我们将看到针对动态类型语言会出现一点后推力作用。他们将经受运行时刻类型异常--事实上,他们早已认识到,如果采用象Java一样的强类型语言的话,这是可以避免的。"-BEA公司的Ed Cobb
4.你用Java开发桌面应用和服务器应用的比例为多少?如果你开发过桌面应用程序,你更喜欢用SWT还是Swing,为什么?
Bruce Tate对这一问题的回答总结了所有其他人的观点:"服务器端Java正是它应有的位置。"
至于,客户端Java开发,众说纷纭...
"Swing太复杂,太不可预测,太难学。SWT则好一些,但一般而言,Java在用户接口设计上很不成功。"-Tate,《Better, Faster, Lighter Java》和《Bitter Java》的作者
"我认为SWT有更好的方法,它链接到本地lib库文件以达到加快速度和一致性的目的,但是我并不喜欢这些API,因为它们暴露出太多的老式的编码技术。相比之下,Swing有一个更好些的API,但是其中充满错误、性能低下且设计糟糕。"-Michael Pilone
"我更喜欢SWT...它比Swing更具本地化,Swing而可以说只是粗略地实现了本地化。"-Ed Cobb
"我写Swing应用程序,然后使用Java Web Start来进行发布。我还没有出卖过我的SWT型程序,因为它仅有有限的跨平台支持并缺乏可靠的MVC设计。"-Kyle Gabhart
5.你使用的Java开发环境是什么?
很明显,当前流行的Eclipse框架和集成开发环境是大多数对这一问题的回答,因为其是Windows和Linux平台的主流环境。只有另外少数的回答者指定了其它几个选择:
"我选择的平台是WinXP Pro。在安装了Cygwin和另外几个开发工具后,你就可以得到一个具有硬件支持的非常有用的系统了。"-Michael Pilone
"我特别喜欢J2SE 5。说到IDE,我更喜欢Jbuilder,其次是IDEA。IDEA中有一些巧妙的实现,但是良好的经典的Jbuilder具有我需要的任何东西。"-Vlad Patryshev
"我一直使用emacs开发而用println进行调试。最近我在使用NetBeans,已惊奇于它给我带来的巨大帮助。"-Jim Waldo
"请不要使用EJB!"-Laurent Ploix
"Visual Café。"-Smialek
"在必要的时候,我都使用vi进行开发。"-Kyle Gabhart
三、开源,JCP和对Java的希望列举
6.JCP和开源社群谁在Java更新上的贡献更大?
"到目前为止,应该说是开源的贡献更大。而JCP在进行实际的开发实践之前,推崇标准化的作用。EJB,日志以及持久性一直是JCP中的灾难。实际上JCP在抛弃着Java的根基。很难的问题在拐弯抹角变得易于解决,而容易的问题反而在变得越来越难于解决了。"-Bruce Tate
"开放源码的执行领导着开发过程,而JCP仅仅是定义了一些标准。"-Laurent Ploix
"如果说纯粹的革新,我将选择开源。当工程中存在漏洞需要补全时,开源是能够迅速得到响应的。而JCP目前是一种太慢的方式,以至于根本跟不上工业发展的步伐。"-Michael Pilone
"多数的革新经历了JCP模式。但是,在过去的几年中,我们看到了在开源模式中的活动不断增加的迹象。"-Rod Smith (IBM)
"为使得开源运动进行下去,JCP值得广泛的信任,它对于Java生态系统的发展起到提供一个群落中心的作用。任何一些非JCP标准的开源工程已经探索了各式各样的思想-一些是糟糕的,一些却取得了令人惊喜的成绩。JCP可以说是一场伟大的创新运动的火车头。"-Ed Cobb (BEA)
"JCP本身仅仅是定义了一些标准及相应的说明书,这在已有的工程实现中被得到支持。作为编程者,我们不想根据一段现成的Java编码来指导我们编程,而要根据一套成熟的说明书进行开发。真正有用的编程最开始往往是零碎的代码片断,经常经历一个先有代码然后有规范的说明书的过程。"-Rob Gingell
"我找到了开源的主动性,特别是从Apache到当前最具创新性的有用的软件中找到的。"-Eric Bruno
7.Sun应该开放Java的源代码吗?
你知道这个问题肯定会出现在问卷之中的。
"这一点并不重要。Java在走自己路的过程中,自身已经建设得足够强大。"-Bruce Tate
"如果Sun在做这样一件有益的工作,为什么要打扰他呢?"-Raghu Donepudi
"不应该。如果它实现开源,那么我们能够看到Java的许多技巧,这最终将导致一些问题的出现,例如我们现在使用应用程序服务器时所遇到的问题。"-Rahul Kumar Gupta
"是的。Sun拒绝这样做的唯一原因就是,Java完全是他们自己的产品,他们使用它来使自己的公司得以维持下去。"-Jack Herrington
"一方面,开源的思想是很有吸引力的,因为它将导致更多的错误在很短的时间内就得以修改。另一方面,它可能导致分支分派的不匹配的JAVA虚拟机的出现。"-Michael Pilone
"不。我不相信一群普普通通的所谓天才人物就能取代那些负责管理极为健全的基本概念的大家们的科学思想-其中的大多数人甚至还不能明白这个问题。"-Vlad Patryshev
"开源社团的加入将会加速创新并推动该平台的竞争性。"-Rod Smith(IBM)
"我们需要一个开源Java的主要原因是确保该平台的生命力。如果将来Sun公司发生什么事情的话,开源的Java将列入我们的保险计划中。"-Ed Cobb(BEA)
"我认为是应该的。’开源’Java并不要求Sun做什么事情,它只是要求另外一些公司或个人做一些事情。’开源’Java是不可避免的。我建议Sun积极地实现这一不可避免并为此带来的益处做一些工作。"-Rob Gingell
"我对此并不关心"-Kyle Gabhart
8.你希望Java有怎样的改进?
"从较低层次上,Java需要代码的模块化,扩展和一个更具动态化的模型,以及还需要增加很多的功能以使得应用程序开发更为容易,因为你不可能仅仅利用库来实现一切。"-Bruce Tate
"内省机制(用一个类来分析JavaBean的特性)使用起来太难且过于繁重。"-Laurent Ploix
"需要加入代码使用许可证机制。"-Greg Magnusson,Cyborg Spiders的Web技术开发的奠基者
"应该提供由开发者来进行内存管理的功能。"-Raghu Donepudi
"应该加入运算符重载功能。"-Jack Herrington
"目前迫切需要在Java中加入Jar版本机制。我记不清有多少次遇到XML分析库冲突或者日志库冲突了。"-Michael Pilone
"类对象。十年了,没有任何改变。有大量的类对象需要加上去。"-Vlad Patryshev
"Java平台目前已经变得过于复杂。我们认为Java社团需要做出更好的工作来满足独立的和中小型的商业需要,这也是为了Java继续发展、繁荣和成功的目的。"-Rod Smith(IBM)
"Java非常需要一个更为强壮的模块化的系统。当前,我们所拥有的是一些.jar文件,其结果是成了’.jar文件地狱’。但是今天还很难描述一个互有联系的模块化的系统。"-Ed Cobb
"我原先希望Java能够实现的,过去的Java并没有做到:关于日期和时间问题上有好几处从一开始就是错误的;RMI/IIOP的引入在理论上是正确的但完全没有必要;它自一开始就是自我封闭的。"-Rob Gingell
"对于类的加载和对象的Java运行时刻类型的关系的处理是一个错误,现在我们还在为之付出代价。你不可能真正确定出是否你的程序在编译时刻是类型安全的。而且,如果你在做适当动态的任何操作,你经常需要对一个给定类的正确加载作出猜测分析。"-Jim Waldo
"垃圾回收简直是个噩梦。它有可能使得没有经过良好训练的,懒散的编程人员进入到这个工业领域中。"
"Java需要增加的另外一些功能有:操作符重载;预编译指令(#define,等等);把声明与定义(头文件和源文件)相分离的能力;唯一的、非本机的机器标志符(用于认证之目的)。"-Michael Smialek
"迫切需要加入Code-Behind(页面代码分离)技术!!!ASP.NET和页面代码分离技术所带来的重用性与灵活性是巨大的。我希望JSP 3.0能够朝这个方向发展。"-Kyle Gabhart
"我更愿意使用Java对象来存取操作系统而不是用JNI(Java本机接口),因为大多数的Win32/Linux API都包含在Java中了。"-Alexi Jordanov,OSGi技术公司ProSyst Bulgaria的项目领导者
四、Java带给人们的最伟大的礼物与Java的未来
9.Java对软件社群最大的贡献是什么?
我们收到的大部分反映结果认为是平台独立性,Java平台和该语言本身的创建以及他们创建的各种社团。
"有两点:它使得更广泛的用户群可以接受垃圾收集语言;围绕该语言涌现出了各种集成开发环境。"-Jack Herrington
"Java真正地震撼了许多东西,这包括迫使微软设计出新的产品,诸如Visual Studio的进一步改进和.NET产品的出现等。由于Netscape选择了Java,这使得客户浏览器能够执行JavaScript。它使当今世界服务器端开发也迈出了巨大的一步,受此技术影响的站点数以百万计。"-Michael Pilone
"数百万的学生不需要学习C++。"-Rob Gingell
"能使多家厂商贯彻实施的标准化API的建立。很多厂家竞相提供该标准化接口的最好实现,这给业界创造高质量的解决方案带来了强大发展动力。"-Kyle Gabhart
".NET"-Michael Smialek
10.Java的未来会如何?
"任何一种语言总是存在其有限的技术领先周期,Java也不例外。在某种意义上看,能超过Java技术会是一种非常有趣的事情。"-Bruce Tate
"当桌面和膝上电脑要被手持设备取代时,我们可能需要一种更简单的更强有力的语言。"-Raghu Donepudi
"C#具有挤垮Java的潜力,它是一种更好的语言。"-Jack Herrington
"微软在通过.NET以一种令人难以置信的速度发展。由于拥有Windows操作系统的大量客户端用户,所以他们比Java具有更大的优势。"-Michael Pilone
"在一些新技术被编程世界接受之前,至少要经过几年的时间。例如,看起来不超过5%的Java程序员能掌握Java泛型编程。请问,又有多少人可以掌握Lock/Condition?"-Vladimir Patryshev
"当技术朝着围绕交互性的结构化(如面向服务的结构化)方向发展的时候,Java语言将继续作为一种语言在计算机工业发展中占有重要地位。"-Rod Smith
"在某种意义上看,Java 虚拟机体系所要求的限制可能有点太严肃了。但是,任何一种新的挑战者虚拟机登上舞台并用之取代Java平台都是一件很好的事情。"-Ed Cobb
"实际上我们可以开发出许多种不同的语言,其中一些可能与我们熟知的Java根本不同,但是仍旧保持应用程序二进制接口(ABI)。这是为什么Java将会保持长时期的重要性的原因。"-Rob Gingell
"Java将继续作为一股巨大的力量存在于IT业中,但是一些瞄准市场的脚本语言将会在某些行业中进一步发展壮大。"-Doug Tillman,Grainger.com站点Java和Python技术的开发者
"任何一个人,只要他在该界业干过多年,都不会相信,存在一种技术会对要推翻自己的更新、更快或者更有效的技术产生免疫力。"-Kyle Gabhart
祝Java 10周年愉快
正如栖息在Java生态系统中的利益是多样化的一样,关于Java本身的看法也是同样是复杂的(读者可以阅读一下Java之父James Gosling说过的话)。也许这会是Java的下一个十年极富生命力的预示。
posted on 2006-03-31 08:36 ............. 阅读(236) 评论(0) 编辑 收藏 举报