`
zhuyuanxiang
  • 浏览: 130633 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java开发环境的过去、现在和将来- -(转)

阅读更多

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)就出现了。Java的出现尽管只有十年,但其开发环境也大至经历了从CLEs到IDEs再到XDEs这三个阶段,现在即将进入CDEs阶段。在上述Java开发环境发展过程中,有许多值得我们大家关注的地方。

Java开发环境的历史回顾
纵观过去十年Java开发环境的发展,大致可以粗略的划分为如下几个阶段:
●  1995,命令行开发环境CLEs
●  1996-2000,集成开发环境IDEs
●  2001-2004,扩展开发环境XDEs
●  2005至今,协同开发环境CDEs
1995年,不平凡的一年,这一年Java 获得了成功。可令人尴尬的是在1995年并没有一个令人满意的Java开发环境,开发人员在进行Java编程时,大多使用文本编辑器编辑源程序,然后再使用命令行的方式进行编译处理。那时的Java开发环境还处于CLEs时代,开发效率非常低,这预示着在Java开发工具上会有一番激烈的竞争。
有人称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签约时,也同时签下了监狱里的一个单元。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。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当中开发工具的性能和易用性,另一方面是将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开发人员的工作实际并将这些工作进行了优化。由于减掉了一些可有可无的工具,所以价格上相对合理公道。当年IntelliJ IDEA击败JBuilder成为最受Java开发人员欢迎的Java开发环境,不过2002年随着JBuilder将大而全的功力再提升一步,将UML建模工具、JUnit测试框架以及Apache Struts等开发工具集成进来,大而全的发展方向又一次受到Java开发人员追捧。最全还是最好似乎使Java开发人员在选择Java开发环境时处于两难状况,但实际上当Eclipse 1.0发布时,这个问题已经得到了初步的解决,最好和最全是可以兼顾的。
Eclipse的出现不是从天上掉下来的,也不是某个天才拍脑袋想出来的,它是一群软件精英们集体智慧的结果。早在1998年IBM就打算开发新一代的工具平台以便将它现有的各种开发工具统一起来,并减少开发各种工具时重复的劳动,同时希望在新的平台上建立新的Java开发环境。经过一段时间的准备, IBM开始建立起一个开发团队,人员构成主要来自VisualAge for Java Micro Edition和VisualAge for Java两个项目的开发人员,选择的标准是过去10年至少开发过5到6个IDE。此外,IBM还联合了9家公司共同成立了一个开源组织Eclipse基金会,将Eclipse提供给开发人员使用,并在开源社区的帮助下进一步完善Eclipse本身。Eclipse在最初设计时,插件模型是静态的,不能实现插件的即插即用功能,即便是大受欢迎的Eclipse 2.1也还是静态的。所以到2004年发布Eclipse 3.0时,Eclipse进行了重大改进,采用OSGi的插件模型,初步实现了插件的即插即用功能,至此一个完美的、可扩展的开发环境展现在Java开发者面前,这时Java开发人员已经达到300万。

Java开发环境的现状
2004年Eclipse 3.0的发布极大刺激了Eclipse用户的增长,经过一年以后,Java开发人员现在使用Java开发环境的状况是如何的呢?看了下面的表格里的数据也许可以了解一个大致的状况。
首先需要指明的是上述的数据并不是当前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也快死了。
由于市场的压力,一个软件企业不仅要提高开发人员个体的工作效率,还要提高整个开发团队以及整个企业的开发效率,但在现有的Java开发环境XDEs下无法完全做到这些,所以新一代开发环境CDEs (Collaborative Development Environments)就产生。Grady Booch和Alan W. Brown的研究表明一个程序员一天工作时间的分配是这样的:分析占16%(从5%到40%不等), 设计占14%(从1%到40%不等),编程占16%(从0%到60%不等),测试占10%,打电话占3%,阅读占7%(电子邮件,文档,月刊和杂志),参加开发会议占10%,无关的会议占7% 。从这些数据可以发现,开发人员用于交流的时间约占工作时间的1/3,开发人员的相互交流非常重要。可是现有的主流Java开发环境一般仅将分析、设计、编程和测试等工具集成进来,却未包括用于交流的工具,这显然不合理。因此,所谓CDEs就是将用于人与人、人与团队以及团对于团队进行交流的工具集成进来的开发环境,比如,CDEs常具有发送电子邮件、进行及时通讯和屏幕分享等功能,通过实现无损耗过程的交流提高开发团队的开发效率。
现在已经商业化的CDEs是CodeBeamer Collaborative Development Platform和CodePro AnalytiX,上述两款软件都提供Eclipse的插件,可以与Eclipse集成在一起,使Eclipse升级成为一个CDEs。大家肯定知道Borland已经宣布开发基于Eclipse的新版JBuilder-“Peloton”,Peloton就是一个CDEs(Collaborative Development Environments),当它明年上半年发布时,就意味着Java开发环境进入CDEs时代,现在Java开发环境还处于XDEs与CDEs交替的阶段。

Java开发环境的未来
在可以看得见的将来,Java的开发环境还会是以CDEs的形式存在。开源组织或开发工具供应商将会努力为软件的开发创建一个绝对光滑的平面 (Frictionless Surface),实现无损耗的开发过程,以提高开发效率。为了实现无损耗的开发过程,Java的开发环境将会关注以下几个方面:
●  起步阶段方面
●  协作开发方面
●  维护开发团队有效沟通方面
●  多个任务的时间协调方面
●  相互协商方面
●  资料有效性方面
但这里必须承认未来Java开发环境是如何具体去实现无损耗的开发,还需要时间给与答案,因为现在所能采用的方法未必是最好的,比如,使用面向文件的 CVS进行协同开发就有需要改进的地方。

总结
罗里罗唆一大堆,归纳起来不过就是:一个目的、三种手段以及一条规律。
一个目的:十年Java开发环境的演变,其目的就是为了提高开发效率。
三种手段:
●  提高集成在Java开发环境中开发工具的性能和易用性
●  将Java开发环境尽可能的覆盖到整个软件的开发生命周期
●  集成人与人、人与团队以及团对于团队进行交流的工具
一条规律:软件开发环境的发展过程是从CLEs到IDEs再到XDEs最后进入CDEs,这是由Grady Booch总结出来的,套在Java开发环境上也适用。

分享到:
评论

相关推荐

    java-servlet-api.doc

    Java Servlet API说明文档 绪言 这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份...

    java实验报告1 (2).docx

    在Java编程的学习过程中,了解和掌握如何在DOS环境下编译和运行程序是基础...通过这样的实验,你不仅能加深对Java语言的理解,还能提升解决问题的能力,这对于将来在互联网行业中开发和维护Java应用是必不可少的基础。

    java数据库实训总结.docx

    然而,通过不断尝试和学习,我成功地配置了JDK,安装了数据库,同时也逐渐掌握了Java开发工具的使用,这极大地提高了我的动手操作能力。 在团队协作方面,实训项目让我深刻体验到团队合作的重要性。在项目初期,...

    java工程师2022年度工作总结.docx

    本文档是Java工程师2022年度工作总结,主要总结了作者在2022年的工作经历、技术成长和未来的规划。以下是作者在2022年的工作总结和规划: 工作总结 在2022年,作者入职了公司,负责完成公司的各项工作任务。在入职...

    性能测试实践及其展望

    #### 性能测试的过去、现在和将来 - **过去**:早期的性能测试主要依赖手动测试,缺乏专业的工具和技术支持。 - **现在**:随着技术的发展,市场上涌现了众多专业性能测试工具和技术,性能测试已经成为软件开发过程...

    软件测试 性能测试实践

    #### 五、性能测试的过去、现在和将来 - **过去**:早期的性能测试主要依赖手动测试方法,测试效率较低。 - **现在**:随着自动化测试工具的发展,性能测试变得更加高效和准确。 - **将来**:未来性能测试将更加...

    2021-2022收藏的精品资料基于J2EE的bbs论坛系统毕业设计说明书.doc

    J2EE是一个多层架构的开发框架,它为企业级应用提供了稳定、高效、可扩展的开发环境。在本毕业设计中,作者乔柏选择了J2EE作为开发工具,旨在实现一个功能完善的网上论坛系统。 1. **J2EE架构**:J2EE架构由多个...

    JBuilder9 功能详细介绍.pdf

    随着2003年起JBuilder集成开发环境的核心组件被应用于Borland公司的其他跨平台工具中,为了保持未来跨平台工具的一致性风格,JBuilder9引入了一种新的Borland特有外观。 - **设置方式**:用户可以在JBuilder9的主...

    性能测试实践与展望

    #### 七、性能测试的过去、现在和将来 **过去**:早期的性能测试主要依靠手动测试和简单的脚本,侧重于基本的功能验证。 **现在**:随着技术的发展,性能测试已经成为软件开发周期中不可或缺的一部分。现代工具...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    4、一次编写,处处运行:作为JAVA开发平台的一部分,JSP具有JAVA的所有优点,包括Write once , Run everywhere. 3.2. 数据库的选择 3.2.1. Web应用程序开发环境—SQLserver数据库 SQL Server是由Microsoft开发和...

    KEmulator_0.9.8

    【KEmulator_0.9.8】是一款专为Java游戏设计的PC模拟器,它允许用户在个人计算机上运行和体验原本为Java手机平台设计的游戏。这款模拟器的出现,使得那些经典的Java游戏得以在现代设备上重焕生机,为怀旧玩家提供了...

    程序员述职报告.docx

    在这个过程中,他意识到持续学习的重要性,认为“学历代表过去,能力代表现在,学习代表将来”,并且强调了确定个人发展方向并制定可行计划的必要性。 在技术方面,报告中提到了SSH框架的使用,特别是Hibernate,这...

    programmingClub

    10. **IDE集成**:可能使用Eclipse、IntelliJ IDEA等集成开发环境进行开发。 11. **版本控制**:可能使用Git进行版本控制,以跟踪代码更改历史。 通过分析这个项目,可以学习到如何组织和管理Java项目,以及如何...

    时态手册

    4. 将来进行时(will be doing)和过去将来时(would be doing/would do)则用于描述未来的特定时间点或假设情况下的动作。 二、Kotlin编程语言在应用开发中的应用 Kotlin是一种现代的、面向对象的编程语言,由...

    Android-Yancha:适用于Android的yancha客户端

    Android Yancha Android应用版本Yancha聊天...通知过去的日志搜索图片发布浏览已登录用户的列表管理订阅标签节能模式未读管理说话声音聊天屏幕分页岩茶的基本解释开发环境AndroidStudio 0.8。+ Java 8(它使用 )执照

    大学计算机专业毕业生自我鉴定2020.docx

    在个人技能发展上,我掌握了多种编程语言,如Java、Python和C++,并熟练运用相关开发工具,如IDEA和Visual Studio。此外,我还深入学习了数据结构、算法、操作系统、计算机网络等核心课程,这些都为我后续的学习和...

    wap网站和wap+2.0教程.

     过去,无线Internet接入一直受到手机设备和无线网络的限制。WAP充分利用了诸如XML,UDP和IP等Internet 标准,它的许多规程建立在HTTP和TLS等Internet标准之上,但进行了优化,克服了原无线环境下低带宽、高延迟和...

Global site tag (gtag.js) - Google Analytics