Java 开发环境的过去、现在和将来

发表于:2008-08-07来源:作者:点击数: 标签:javaJAVAJava开发环境
1995年3月23日,SanJose Mercury News登出一篇题为"WhySunthinksHotJavawillgiveyoualift"的文章,在那篇文章里预言Java技术将是下一个重大事件,这个预言现在看来并不仅仅是商家的宣传伎俩,虽然文章是当时Sun的公关经理LisaPoulson安排撰写的。从世人知道Ja
1995年3月23日,San Jose Mercury News登出一篇题为"Why Sun thinks Hot Java will give you a lift"的文章,在那篇文章里预言Java技术将是下一个重大事件,这个预言现在看来并不仅仅是商家的宣传伎俩,虽然文章是当时Sun的公关经理 Lisa Poulson安排撰写的。从世人知道Java那一刻起到现在,算起来已经过去整整十年,回顾过去的十年值得总结的东西可以有许多,但在这里笔者只想就Java 开发环境谈些个人的想法与朋友们交流一下。

  现在的软件开发人员在整个软件的开发生命周期里,也许会根据需要使用各式各样的开发工具来完成相对复杂的开发任务,而在几十年以前,人们还只是使用文本编辑器、编译器和Debugger进行开发,对于这个阶段的开发环境人们称之为CLEs(Command Line Environments) 。而当人们发现如果将那些单独分开的开发工具集成起来就可以有效的提高开发效率时,IDEs(Integrated Development Environments)就出现了。第一个IDEs也许可以追溯到1964年的Dartmouth Basic,尽管这有争议,它是作为Dartmouth Time Sharing System的一部分,在John Kemeny 和 Thomas Kurtz指导下建立起来的,这套系统一直使用到1999年。尽管这40多年以来,开发人员的开发环境几经变化、不断进步,从早期的集成开发环境 IDEs到扩展开发环境XDEs(eXtended Development Environments)再到协同开发环境CDEs(Collaborative Development Environments),历经了几个不同的阶段,但开发人员使用开发环境的目的始终就是一个:提高开发效率。Java的出现尽管只有十年,但其开发环境也大至经历了从CLEs到IDEs再到XDEs这三个阶段,现在即将进入CDEs阶段。在上述Java开发环境发展过程中,有许多值得我们大家关注的地方。

  Java开发环境的历史回顾

  纵观过去十年Java开发环境的发展,大致可以粗略的划分为如下几个阶段:

  1995 命令行开发环境CLEs

  1996 ? 2000 集成开发环境IDEs 
  2001 ? 2004 扩展开发环境XDEs 
  2005 - 协同开发环境CDEs 
  1995年,不平凡的一年,这一年Java 获得了成功。可令人尴尬的是在1995年并没有一个令人满意的Java开发环境,开发人员在进行Java编程时,大多使用文本编辑器编辑源程序,比如,Emacs、Vi、Notepad 等,然后再使用命令行的方式进行编译处理。那时的Java开发环境还处于CLEs时代,开发效率非常低,这不能不说是Sun的一个失误,但也预示着在Java开发工具上会有一番激烈的竞争。与Java世界即将开始的开发工具大战不同,在Smalltalk世界里胜负结果似乎已经明朗,IBM的 Visual Age for Smalltalk、 ParcPlace的ObjectWorks和Digitalk的Visual Smalltalk三足鼎立的格局那时已经被打破,IBM的Visual Age for Smalltalk所占市场分额越来越大,而当时IBM进入Smalltalk市场仅有两年多的时间。IBM之所以在很短的时间超越老牌的 Smalltalk 厂商ParcPlace和Digitalk,其中一个重要原因是IBM直接将其产品委托给一家由软件精英组成的公司进行开发,这家公司就是由软件开发大师级的人物Dave Thomas( Bedarra-Dave)创建的OTI( Object Technology International)公司。IBM在1993年进入Smalltalk市场的第一个产品ENVY/400就是OTI为其开发的,而其后包括 Visual Age for Smalltalk在内的多种产品开发OTI都参与了。为了抗衡IBM,ParcPlace和Digitalk两家公司在Java诞生的那一年进行了合并,成立了名为ParcPlace-Digitalc的公司,但事后再看这次合并,不过是徒劳之举罢了。现在各厂家的Smalltalk 开发环境中都或多或少的内置了ENVY,而随着IBM进军Java开发工具市场,ENVY的相关技术也被从Smalltalk世界带入到Java开发环境中。

  1995年也是Smalltalk作为第5代编程语言从 Xerox Palo Alto研究中心走向市场的10周年,Dave Thomas为此写了一篇题为"Ubiquitous Applications:Embedded Systems to Mainframe"的论文,作为Smalltalk市场化10周年的总结,文中介绍了Smalltalk是如何利用虚拟机实现从嵌入式到大型机广泛应用开发的,而那时Java世界的人们还在为Java虚拟机的拙劣性能而苦恼,那时也许没有人会想到现在Java的普及程度早已超越了Smalltalk。

 

  有人称1996年为互联网年,有人却称之为Java年,还有人称之为Web开发年,但不论如何称呼1996年,它都反映了一个事实: Bill Joy将Java与互联网相结合的策略取得了成功。这一年的9月Sun推出了其Java开发环境-Java WorkShop,这是一款基于浏览器的Java开发工具,但由于当时 Java在许多方面还不成熟,所以实际上Java WorkShop并不成功,同年发布的Symantec Visual Cafe由于还是采用C/C++语言进行开发,所以性能与成熟度上就比WorkShop好得多。提到Visual Cafe就不能不提Eugene Wang,因为Eugene Wang常常是与计算机间谍这个词同时出现的人物,有人甚至讲当时Symantec的老板Gordon Eubanks与Eugene Wang签约时,也同时签下了监狱里的一个单元。围绕着Eugene Wang的间谍案发生的种种事情,将Borland和Symantec两家公司不为人知的阴暗面展现在公众面前,对两家公司的声誉都带来了损害。为避免双方商业利益继续遭受损失,最后这个间谍案以 Eugene Wang向法庭交纳了一笔罚款而不了了之。Visual Cafe就是由Eugene Wang进行主要策划的,它是在同一年发布的Java开发环境中,唯一解决了与数据库连接问题的开发环境,带有一套可以与数据库相连接的组件,无需太多编程使用拖拽的方式就可完成大部分工作,这一优点使得Visual Cafe受到了Java开发人员的欢迎。这一年IBM收购了OTI公司,从而得到了Dave Thomas的弟子John Duimovich、Dave Thomson、Mike Wilson等一大批软件精英,这之中还包括"生活在技术刀锋上的开发者"Brian Barry。

  1997年,由于微软垄断案,使得微软在Java开发环境上的努力受到了限制,Visual Cafe由于界面直观易用,可以很容易地连接各种数据源等功能再次受到开发人员的欢迎。这一年IBM发布Visualage for Java,它是用Smalltalk编写的吸收了许多ENVY的设计思想,比如,Visualage for Java是面向代码库的开发环境,它提供代码库和项目管理以便于开发团队在 C/S环境下进行项目开发。但由于大多数Java开发人员比较熟悉面向文件的开发环境,还不太习惯面向代码库的开发,再加上Visalage for Java对系统资源的要求比较高等因素,使得Visualage for Java一开始未被Java开发人员所认可。

  1998年至2000年比较成功的Java开发环境是JBuilder,这是由于Borland较好的把握住 J2SE、J2EE和J2ME发布后,Java技术升级的时机,全面支持Java1.1和Java1.2开发平台,它还提供了多种工具方便用户从旧的平台迁移到新的Java平台。JBuilder本身80%是基于JDK1.2进行开发的,它支持JavaBeans, Enterprise JavaBeans, JDBC等方面的应用开发,可以连接多种关系数据库。为支持分布式应用开发,JBuilder还集成了 VisiBroker ORB、JSP server、数据库和EJB AppServer,并提供Open Tools API便于第三方工具集成。上述种种的优点使得JBuilder一举超越Visual Cafe,成为当时最受欢迎的Java开发环境。在众多Java开发环境中,1999年IBM发布的VisualAge for Java Micro Edition是比较有特色的开发环境,它是由Erich Gamma和与Erich Gamma有"焦不离孟、孟不离焦"之称的John Wiegand共同进行设计的,采用了Java 扩展机制,并集成了Junit测试框架,其当时所采用的架构深深地影响了后来Eclipse1.0所采用的架构。同时,通过 VisualAge for Java Micro Edition的开发,那些来自"未来世界"(Smalltalk们总认为他们来自计算机的未来世界)的软件精英们,全面彻底地对 Java技术进行了评估,得出了许多结论性的东西,这之中包括现在闹得沸沸扬扬的Swing和SWT对比。此外,Sun将其收购的NetBeans变成了开源的Java IDE也是一件不大不小的事情。

  纵观1996年至2000年这五年时间里,随着Java及其相关开发应用的发展,Java开发环境也不断的完善,从CLEs进入到IDEs阶段。为了提高Java开发人员的开发效率,Java开发环境主要从两个方面进行改进与提高。一方面是提高集成在Java IDEs当中开发工具的性能和易用性,比如从最初的代码编辑器、编译器、Debugger等开发工具发展到增量编译器、组件浏览器、自动编码和用户界面的可视化编辑器等,以此减少Java 开发人员输入代码的工作量、节省编译时间,将Java 开发人员宝贵的时间花费在思考问题上而不是输入代码上。另一方面是将Java开发环境尽可能的覆盖到整个软件的开发生命周期,比如,将源代码的版本控制工具集成进Java IDEs当中,这样做的好处是Java开发人员无需离开开发环境就可以完成大多数实际工作,节省进行不同工具之间的切换时间和适应这些工具的学习时间,提高了开发效率。随着基于WEB,采用N-层结构的应用开发成为Java开发人员主要从事的开发任务,Java开发环境需要支持越来越多的技术,比如,XML、 JSP、EJB和CORBA等,这就造成了Java IDEs的规模变得越来越大,许多Java开发环境都集成了数据库、JSP Server和AppServer,软件的研究人员将上述IDEs不断膨胀的现象称为"IDEs大爆炸"。


 "IDEs大爆炸"现象发生以后,有关Java开发环境是走少而精的发展方向,还是走大而全的发展方向就成了广大Java开发人员关注的问题。2001年Java开发人员达到了200万,成为每个软件供应商都无法忽视的力量,这一年JetBrains推出了Java开发环境少而精的代表: IntelliJ IDEA。 IntelliJ IDEA明确的表示只做最好的Java代码编辑器,不做什么文件都可以编写的编辑器。它关注Java开发人员的工作实际并将这些工作进行了优化,比如编写 try/catch语句结构只需简单的点两下鼠标。IntelliJ IDEA提供的活动模板可以扩展公共代码片断,语法加亮及其各种各样的快捷方式,使得开发人员可以专注于问题的解决。IntelliJ IDEA另一个特点是其编辑器具有重构功能,可以进行XP式的重构,适用于Java开发人员的敏捷式开发。由于减掉了一些可有可无的工具,所以价格上相对合理公道。当年IntelliJ IDEA击败JBuilder成为最受Java开发人员欢迎的Java开发环境,即便是Martin Fowler这样大师级的人物也喜欢使用IDEA,由此可见IDEA的优秀程度。不过2002年随着JBuilder将大而全的功力再提升一步,将UML 建模工具、JUnit测试框架以及Apache Struts等开发工具集成进来,大而全的发展方向又一次受到Java开发人员追捧。最全还是最好似乎使Java开发人员在选择Java 开发环境时处于两难状况,但实际上当Eclipse1.0发布时,这个问题已经得到了初步的解决,最好和最全是可以兼顾的,而Eclipse1.0的发布也标志着Java 开发环境进入XDEs时代。

  Eclipse的出现不是从天上掉下来的,也不是某个天才拍脑袋想出来的,它是一群软件精英们集体智慧的结果。早在1998年IBM就打算开发新一代的工具平台以便将它现有的各种开发工具统一起来,并减少开发各种工具时重复的劳动,同时希望在新的平台上建立新的Java开发环境。经过一段时间的准备, IBM开始建立起一个开发团队,人员构成主要来自VisualAge for Java Micro Edition和VisualAge for Java两个项目的开发人员,选择的标准是过去10年至少开发过5到6个IDE。在开发Eclispe的过程中,开发人员借鉴了过去的成功经验,这包括:

  ENVY/Smalltalk-增量编译 
  Hoops-用户可定制 
  VA/java-如何使开发环境易于使用的经验 
  Team/v-API先行 
  Sniff-如何处理 C++的经验 
  VA/microED-Java 扩展机制的架构 
  特别是采用了Java 扩展机制的架构一条,使得Eclipse具有良好的可扩展性,Java开发环境进入XDEs时代。不过软件精英们先进的思想要让广大的Java开发人员所接受,还需要一个过程。为此IBM联合了9家公司共同成立了一个开源组织Eclipse基金会,将Eclipse提供给开发人员使用,并在开源社区的帮助下进一步完善Eclipse本身。Eclipse在最初设计时,插件模型是静态的,不能实现插件的即插即用功能,即便是大受欢迎的 Eclipse2.1也还是静态的。所以到2004年发布Eclipse3.0时,Eclipse进行了重大改进,采用OSGi 的插件模型,初步实现了插件的即插即用功能,至此一个完美的、可扩展的开发环境展现在Java开发者面前,这时Java开发人员已经达到300万。


  Java开发环境的现状

  2004年Eclipse3.0的发布极大刺激了Eclipse用户的增长,据Evans Data Corporation的调查EMEA(Europe, Middle East 和 Africa )地区的Eclipse用户增加了60%,亚太APAC(Asia Pacific)地区的Eclipse用户增长了70%,而北美地区的Eclipse用户增加了90%。O’REILLY2004年问卷调查显示使用 Eclipse的用户竟然达到70%,但这显然有感情因素在里头。经过一年以后,Java开发人员现在使用Java开发环境的状况是如何的呢?看了下面的表格里的数据也许可以了解一个大致的状况。

  表1 2005年Java开发人员使用Java开发环境的状况


来源
 JSurfer网站
 Servlets网站
 CSDN网站
 O’Reilly网站
 
人数
 2509
 5592
 1000
 496
 
Eclipse 37.31%
 42.18%
 54.1%
 35.6%
 
IntelliJ IDEA 24.91%
 9.87%
 6.5%
 13.9%
 
NetBeans
 10.48%
 12.89%
 3.9%
 18.7%
 
JBuilder 6.94%
 11.85%
 30.7%
 
 
JDeveloper 1.79%
 3.72%
 0.9%
 
 
Websphere Studio App Developer 
 6%
 2.4%
 
 
Emacs
 4.98%
 2.82%
 
 5.8%
 
Vi/Vim
 
 3.83%
 
 
 
Weblogic Workshop 
 0.87%
 0.5%
 
 
Forte 1.24%
 
 
 
 
AnyJ 0.20%
 
 
 
 
CodeGuide 1.16%
 
 
 
 
Elixir IDE 1.39%
 
 
 
 
jEdit 7.25%
 
 
 
 
不使用IDE
 
 
 7.6%
 
 
未使用Java
 
 
 
 15.1%
 
其它
 2.35%
 5%
 4.3%
 10.6%
 


  首先需要指明的是上述的数据并不是当前Java用户使用Java开发环境的准确反映,但我们可以从中了解一个大致的状况。现在的 Java环境可以分为三个集团,第一集团是Eclispe它大约占据1/3的份额,第二集团是 IntelliJ IDEA、NetBeans 和JBuilder占据另外1/3的份额,相互之间旗鼓相当,第三集团是以JDeveloper和WSAD为代表的十几种Java开发环境占据剩下的 1/3份额,但每种开发环境占总份额的比重不超过5%。我们考察Eclipse、intelliJ IDEA、NetBeans 和JBuilder这些主流开发环境,可以发觉它们有一个共同的特点那就是可扩展,尽管在实现手段上各有不同。这就是为什么称现在的Java开发环境为XDEs(eXtended Development Environments)的原因,IDEs已经死亡了4年,专业的开发人员需要了解这个事实,因为XDEs也快死了。

  

原文转自:http://www.ltesting.net