近两年来java ide的市场异常热闹,面对开源社区eclipse与日俱增的吸引力,曾经的王者jbuilder感受到从没未有过的压力。borland沉寂了一年之后,终于推出了jbuilder 2006,其开创性的p2p对等协作功能和决定以eclipse为基础的重大调整预示着jbuilder正在实现战略性的演化。
从丑小鸭到天鹅的演化:jbuilder的发展史
jbuilder诞生于1997年,时至今日,已走过了8个年头,先后发布了12个版本(jbuilder 2006的版本号为12)。在jbuilder的发展历程中,创新,追逐最前沿的java技术一直是jbuilder秉承的发展理念,快速升级、不断地增强功能也是其区别于其他ide的特色之一。
borland每个版本的升级大约在半年的时间内完成。升级所用时间最长的前三甲分别是jbuilder 2006/peloton,jbuilder 3.0/3.5及jbuilder 2.0。
在这三次升级中,borland都对jbuilder的发展方向做了战略性调整。让我们短暂回顾一下jbuilder的发展史:borland在1997年推出jbuilder 1.0,1.0的版本市场反应并不理想,原因是多方面的。首先borland进入java ide领域相对较晚,在java ide上的经验不足,其次,microsoft在30个月内挖走了borland 30多名重要雇员,除了众所周知的anders hejlsberg之外,还包括研发副总裁paul gross,暂时还没有找到合适的替代者。
但不久之后,老天又开始眷顾起borland ,她将java天才blake stone带进了borland,弥补了其人才流失所造成的重伤(注:2004年blake stone也被微软挖走)。blake stone旗帜鲜明,立志将jbuilder从原生的window ide改造成纯java的ide。这一战略性的转变是重大而富有挑战性的,1998年10月所推出的jbuilder 2.0并没有完成这一宏伟的目标,但终于毕其功于一役于jbuilder 3.5。
2000年3月14号对于jbuilder是一个值得永远记念的日子,因为borland于当日推出了jbuilder 3.5,这是borland的jbuilder小组在历经数年的不懈努力后,推出的第一个100%纯java血统的ide;更重要的是borland凭借jbuilder 3.5非凡表现实现了其称霸java ide市场的梦想。至此,borland开始雄踞java ide的头把交椅,独占鳌头,把symantec的visual café,ibm的visualage for java,sun的workshop及microsoft的visual j++远远地甩到后面,实现了其命运的大逆转。
从4.0版本到2005版本,jbuilder的发展更象是一场场战术上的演进,推进和提升的速度都相当平稳。当然这之中也有许多出彩的表现:如引入alm(application lifecycle management:软件生命周期管理)、sdo(software delivery optimization:软件交付最优化)、团队开发、代码审查,性能优化(optimizeit)等优秀的ide设计理念。
jbuilder 2005 在去年9月发布,jbuilder 2006直到今年9月2号才发布,相比以前几个版本的升级,这次升级所用的时间是很长的。从图 1的jbuilder版本升级速度统计图中,可以很明显地看到这个不小的变化:

图 1 jbuilder 版本升级速度统计图
然而近两年来在java ide的世界,eclipse横空出世,一路攻城掠地,势如破竹,如巨大的磁铁,迅速地吸引了大批的追随者,成为java ide领域强劲的竞争对手,更可怕的是它的吸引力和影响力还在快速攀升。eclipse的成功吸引了大批jbuilder用户,jbuilder 王朝出现了巨大的危机!jbuilder再次走在了十字路口。
jbuilder 2006 低谷中的自救
jbuilder 2006于今年9月2日推出,这个版本应该说是jbuilder战略调整中的一个过渡性版本,一如jbuilder发展史上的jbuilder 3.0一样。在这个版本里,jbuilder带给我们最大的惊喜就是"对等协作",整合分布式团队的协同工作能力是该版本最大的特色,笔者将另辟章节详细介绍。
根据borland 2004年制定的一个jbuilder 发展线路图,borland将于2006年上半年推出另一款代号为peloton的jbuilder 2006。peloton将以开源eclipse作为其底层技术架构,目的就是整合与其他开发商产品的协同能力(到时eclipse可以用插件,jbuildre一样可以用),以后jbuilder将调整到以peloton为基础的发展道路上来!
在jbuilder的发展史上,3.0版本和2006版本的升级有着许多的相似之处,首先它们都花了1年多的时间;其次,它们都出现了两个分支版本;还有,它们都是战略性的升级:前者将原生性的window ide打造成纯java的ide,后者的底层技术架构调整为eclipse。
这里我又要穿插一点eclipse的历史,ibm的visual age for java原来是一个不错的java ide,但在jbuilder强劲攻击下,visual age for java的城堡唯余片片断壁残垣,遍体鳞伤的visual age for java气如游丝,眼睁睁地看着jbuilder远远地将自己抛到后面,终于在2001年12月, ibm宣布把visual age for java 开放给eclipse计划,结束了其5年来java ide市场上的角逐。历史真是让人玩味:想不到时不过4年,这位jbuilder曾经的手下败将戏剧性地演变成了富有侵略性的复仇者。
但jbuilder是不会被击倒的,borland不但是一位身经百战的斗士,更是一位富有远见卓识的谋略家。borland的决策者们一定深谙其前辈林肯的韬略:林肯说过消灭你敌人最好的办法就是让其成朋友。这次,borland将这句话发挥到极致了,让eclipse跨过朋友成为家人?d?djbuilder以eclipse为基础构架。也许所有曾经或正在为jbuilder和eclipse孰优孰劣而沫星四溅的争辩家们都被开了一个天大的玩笑:因为他们的所有论证,攻诘和现身说法都变得毫无意义了。
就象牛顿踩在开普勒、伽利略、惠更斯、胡克等人的肩膀上一样,当明年的peloton发布后,jbuilder则踩在eclipse、togethersoft、teraquest metrics、vmgear的肩膀上,并完成对他们的超越。
对等协作 jbuilder 2006最具特色的新功能
9月2日发布的borland jbuilder 2006创造性引入p2p对等协作功能,使开发团队能够跨越地域的限制进行即时交互(chatting, editing, designing, and debugging),实现虚拟化团队编程(virtual peer programming)。
下面我们模拟两个团队成员(tom和angel)在局域网内的具体协作过程来说明jbuilder 2006的对等协作新功能。
1) tom打开jbuilder 2006,通过jbuilder 2006中新的菜单collaborate菜单设置协作账号的属性: collaborate->peer to peer properties…->打开properties对话框,如图 2所示:

图 2 设置协作账号的属性对话框
这里,tom仅简单地设置了自己的名字,通过choose icon…按键可以选择一个图标。
2) tom创建一个名为testpro的工程,在工程中通过file->new…->general->application创建一个application,其主入口类名为app,主窗体类名为mainframe。
3) angel在局域网的另一台机器上启动jbuilder 2006,如1)步一样建立一个名为angel的协作账号。
4) tom将工程窗格切换到peers的标签页上,将发现jbuilder 2006已经自动探测到了angel,并将angel列在可选协作人员名单中,如图 3所示:

图 3 建立协作联系
tom双击peers标签页中的angel,jbuilder窗体右侧出现一个collaboration对等协作窗格。tomo可以通过这个窗格和angel进行对话,进行初步联系。
5) tom单击collaboration窗格的

图标将testpro.jpx工程共享给angel,angel的jbuilder中将马上出现来自tom共享工程的通知信息,提示tom正要将testpro的工程共享给她,如图 4所示:

图 4 angel被告知tom正要共享工程给她
angel仅需点击testpro.jpx的链接即可获得tom的testpro.jpx工程的共享权。当angel接受了tom的共享工程后,tom端的jbuilder自动将testpro.jpx整个工程的文件发送给angel,并在angel的jbuilder中展现。此时angel所看到的内容和tom是完全一样的,可以称其为tom jbuilder的"镜像jbuilder",但此时angel还不能对工程的文件进行任何修改。angel将工程窗格切换到project标签页上,可以看到这个文件现在处理remote read only状态,如图 5所示:

图 5 angel的工程窗格显示共享工程的状态
在jbuilder 2006多人协作的环境中,同时只能有一人拥有编辑工程的权限,在获取工程的编辑权限之前必须得到工程的令牌(token)。工程的拥有者(我们的例子中是tom)可以将令牌传送给协作中的任何一个人,也可以从执有者手中取回令牌。
6) tom在collaboration窗格中点击

图标,在下拉的菜单中点击angel,这样,tom就将工程令牌传给angel了,如图 6所示:

图 6 tom将令牌传递给angel
7) angel在得到令牌后,就拥有了编辑工程文件的权限。注意:工程窗格工程结构树文件后的标识已经从[remote read only]转变为[remote]。angel对工程文件的任何编辑将会即时同步到tom的jbuilder中。angel打开app.java文件,将第25~35行置为同步编辑状态,将screensize变量改变为screensize1,如图 7所示:

图 7 angel对app进行编辑
tom的jbuilder界面即时看到了angel的这个调整,angel还通过对聊窗口对tom说:"我将screensize变量调整为screensize1",如图 8所示:

图 8 tom看到了angel的更改
8) 对等协作不但可以同享编辑器,还可以共享ui设计器。angel打开mainframe.java,并切换design视图页上打开ui设计器,对mainframe的界面进行设计。此时tom的jbuilder也将自动切换到mainframe的设计窗口中和angel的jbuilder保持同步。angel在mainframe的界面上添加了一个按钮,如图 9所示:

图 9 angel通过共享设计器设计界面
tom在自己的jbuilder中马上也看到了这一变化,就好象幕后有一双无形的手在操作在自己jbuilder中设计着mainframe界面一样。
9) angel完成了设计工作后,tom通过collaboration窗格中如下的操作收回编辑令牌:

图 10 tom从angel手中取回令牌
收回令牌后,tom即可以对工程进入编辑了。同样的,tom对工程所做的任何编辑动作将即时同步到angel的jbuilder窗口中。
10) 在这一步里,tom要和angel进行共享调试的协作。tom在工程窗格在app.java中右击,在弹出的菜单中选择debug using "app",此时tom的jbuilder调出调试信息窗格,tom对程序进行单步调试跟踪,angel的jbuilder也同时反映出相同的操作。虽然angel此时不能进行调试的控制(如单步运行、跳过方法、移到下个断点等),但她可以通过add watch窗口查看运行期变量信息,如下图所示:

图 11 angel在共享调试窗口查看运行期变量
11) 在完成一系列对等协作后,tom可以通过collaboration窗格的

按钮,收回工程共享的权限。
对等协作除可以在协作成员间共享编辑器,设计器、调试器、并进行对聊的功能外,jbuilder的对等协作还可以传送文件,发送url连接,发送运行期的堆栈迹,此外令牌的执有者还可以将当前编辑器所处的程序代码的位置通过send line like发送给其他成员,使其他成员编辑器定位到相同的地方,如所示:

图 12 编辑器位置协作定位
这不啻为是一个细心的功能,因为团队成员位于不同地方,在协作时,当你希望其他成员转向某个程序文件的某行代码时,往往需要花费一番口舌,但有了这项贴心的功能一切变得一蹴而就了。
此外jbuilder还允许对传输进行安全的设置,对传送的信息进行加密和认证,确保协作的安全。
如果jbuilder端点分布于wan上,jbuilder则使用一种称为jabber的开源即时信息发送协议,为了和远程的端点协作,你必须在jabber server上创建一个帐号,可以通过http://www.jabber.org来了解更多关于jabber的信息。
jbuilder 2006的其他新特性
jdk 5.0的支持
虽然在jbuilder 2005中已经可以开发基于jdk 5.0的程序,但jbuilder 2005自带的jdk却是jdk 1.4版本的,需要从sun下载安装并在jbuilder 2005中配置,才可以使用jdk 5.0。但jbuilder 2006自带的jdk就是jdk 5.0,你无需再做任何的事情就可以使用了。
j2ee和ejb的提升
jbuilder 2006支持j2ee 1.4和ejb 2.1,并支持目前市场上最新的j2ee服务器,包括tomcat 5.5,weblogic 9.0,websphere 6.0和jboss4.x。
web开发的提升
jbuilder 2006大力加强了对jsf的支持,包括新增了一个dto/fa?ade向导,用于创建jsf的客户端。jsf的流程设计器的功能得到了显著的改善:现在你可以从流程设计器定位到另一个jsp的代码上,可以从一个流程设计器转到另一个流程设计器,此外流程设计器的errorinsight的功能得到了优化。
struts是当前最流行的web层框架技术,jbuilder 2006所支持的struts版本提升到了struts 1.2。
web services
apache axis的web services工具箱更新到了1.2.1版本。好几个web services的ui设计界面得到了调整以支持j2ee 1.4。jbuilder 2006现在同时支持1.0和1.1两个版本的interoperability (ws-i) 的web services测试工具。
总结
在历时一年之久之后,borland部分地完成了对jbuilder 2005的战略升级。其开创性的对等协作功能大大降低了分布式团队的协作成本和难度。对等协作使分布式团队跨越了地理上的限制,将团队的智慧和开发力集中到了一起。那些因为地域的限制正准备打点行囊赶赴会战点的开发成员,有了jbuilder 2006的对等协作的帮助,就可以为省却旅途颠簸之苦而欢呼了,老板也将因为节省了一大笔差旅费而暗自庆幸。
当然,最终完整版的jbuilder 2006还没有推出,以eclipse为骨架的这个jbuilder混血儿究竟有哪些惊世骇俗的表现?我们还在引颈期待中,但borland这次令人眼花缭乱的组合重拳,已经依稀让我们看到了jbuilder 2006脱胎换骨后凤凰涅??的英姿。
闽公网安备 35060202000074号