第五章 逆转的奇迹

"没有JBuilder,Borland就不可能拥有今日的荣景!"

Java的快速兴起和成功是谁也没有预料到的,即便对于SUN自己似乎也是一个极大的
意外,但是成功者一定是果断而且行动迅速的。当SUN察觉到Java的光明未来之后,
便立刻开始大力推销Java。SUN的总裁McNealy先生数年来苦于没有直接和Microsoft
对抗的机会,这下在Java的身上似乎找到了契机,当然更重要的是SUN接下来的一连
串行动都被证明是正确而成功的。这些行动包括和各种厂商合作;与Addison-Wesley
公司合作出版一系列畅销且成功的Java书籍;在各大媒体占据版面发表所有与Java相
关的文章、专栏等;快速培养Java使用者的基础,吸引大众对于Java的兴趣。这完全
是Microsoft一向无往不胜、攻无不克的手法,SUN也发挥得淋漓尽致,并且"以彼之
道还施彼身"。更重要的是McNealy立刻果断地投入大量的研发资源,不断地改善Java,
终于使Java从1995年开始展露锋芒,并且快速地成为业界焦点,自此展开了PC发展
史上最大规模对抗Microsoft的争霸战,也改变了许多软件开发的习惯和方向。当然
对于Borland来说,Java的发展史也是一场惊涛骇浪的生死之战,是Borland从未经历
过的大规模集团军混战。

对于Borland来说,事情并没有那么顺利。1995年,当Java开始起飞时,Borland并没
有预料到Java成长的速度会如此之快。Borland一开始只是把Java当成C/C++的延伸,
因此只在Borland C/C++5.0中加入了支持Java的P1ug-In。不过Borland很快就发现事
情并不是如此简单,因为除了Java的Plug-In反应并不好之外,也发现Symantec很快
在Java开发工具找到了新舞台,而且发展得相当快速。在Microsoft对Java的态度未
明之前,无疑Symantec占据了先机,Borland这才警觉到自己的失策,Java大会战一
开始Borland就已经落后了。Borland如何才能在下一场最重要的开发工具大战中进行
反攻呢?



Java开发工具初期的争战



当Symantec从C/C++开发工具市场大撤退之后,Eugene Wang不愧是相当高明的开发工
具好手,立刻察觉到尽管在C/C++市场遭遇失败,但利用原有力量却可以在即将茁壮
成长的Java市场上扳回一城,因此立刻率领原先Symantec C/C++的开发团队快速进入
Java开发工具的领域。Eugene很快以当初Symantec C/C++的集成开发环境作为基础,
开始开发Java开发工具,这就是后来著名的Visual Café。

Symantec几乎是第一个介入Java开发工具的软件公司,又利用了Symantec C/C++的基
础,因此在1995年,当Java获得愈来愈多人的注意之后,Symantec也准备好了她的第
一个Java开发工具--Visual Café。1996年10月,Symantec赶在JDK 1.1之前正式推
出了Visual Café。虽然当时许多人批评Symantec为什么不等到JDK 1.1之后再推出,
以支持最新的JDK标准(因为当时的JDK 1.0x版本有许多的问题),不过这些批评并
没有妨碍Visual Café的成功。

由于当时许多软件人员急于投入Java的学习行列,因此当Symantec推出了Visual Café
之后,立刻在市场获得了极大的成功。特别是在Java学习市场和教育市场,Visual
Café几乎是以席卷市场的姿势迅速占据了Java开发工具第一名的地位,成为炙手可
热的产品,而Symantec公司也一扫在C/C++开发工具被挫败的怨气,再次成为开发工
具市场的领导厂商。

由于当时Microsoft对于Java采取敌视的态度,因此几乎不可能推出Java开发工具,
而Borland也还正陷于C/C++的苦战之中,尚未查觉到Java的潜力。至于另外一个死对
头Watcom则已被Sybase并购,无法在开发工具市场再成气候。这对于Symantec来说简
直是天赐良机,一个可以独打Java开发工具市场的绝佳机会。剩下唯一的威胁是SUN
要推出的Java开发工具。但是Symantec已经抢得市场先机,而且已经成为领先者,只
要好好的把握,就能够以逸待劳和SUN对战。在这个Java开发工具萌芽的阶段,Symantec
似乎是占了绝对的优势,不过很可惜的是接下来Symantec也接连犯了几个错误,逐渐
失去了取得的优势。

首先是当Visual Café推出之后,Eugene Wang便离开了Symantec自己开公司做生意
去了。这对于Visual Café有着相当大的影响,因为Symantec靠着Eugene Wang的技
术能力和眼光,才能够和Microsoft、Borland和Watcom在C/C++开发工具市场对抗;
Eugene Wang又独具慧眼打造了第一个Java开发工具Visual Café。Symantec应该在
Visual Café获得初期的胜利之后再次借重Eugene Wang的功力继续攻城掠地,但是
Symantec居然让Eugene Wang离开,立刻少了开发工具掌舵的大将。

第二个错误是Symantec当初为了尽快推出Visual Café以抢占市场先机,因此集成开
发环境是使用C/C++语言撰写的。这造成了数项缺点,其一是由于使用了C/C++来撰写
可视化窗体设计家(Visual Form Designer),因此程序员在设计时看到的可视化效果
和真正Java程序执行时的效果是有一些差异的;其二是为了维护Java的控制组件程序
代码和以C/C++撰写的可视化窗体设计家保持同步的状态,在可视化窗体设计家产生
的原始程序代码中内嵌了一些Visual Café控制卷标(Control Tag)。这些控制卷标
并不是Java的程序代码,只是为了可视化窗体设计家使用。如果程序员不小心修改或
是删除了这些控制卷标,就会造成Visual Café的可视化窗体设计家的失效。这是非
常严重的缺点,Symantec应该在Visual Café 1.0之后立刻改善这些问题,然而Symante
c
却似乎一直无法有效地加以改善。当然,问题的根源在于Visual Café的集成开发环
境是使用C/C++语言撰写的,要完全改善这个问题,Symantec必须使用Java语言重新
改写集成开发环境,这正是Borland后来采取的策略。不过使用Java撰写集成开发环
境也是非常冒险的行动,Borland后来因此付出了沉重的代价。Symantec之所以没有
如此做,大概也是因为当时的Java并没有成熟到可以如此做的地步。不过SUN显然不
这么认为,其对Java信心百倍,不久就推出了SUN的Java开发工具,Java Workshop。


当Java成功地掳获了开发者的心之后,对于Java开发工具的要求便与日俱增。虽然
Symantec已经推出了Visual Café,但是许多人仍然希望Java的正宗厂商SUN能够推出
Java开发工具,让所有想要学习、使用Java的开发人员能够使用最标准的Java开发工具

当然,许多人也希望SUN能够使用Java撰写Java开发工具来向世人证明Java的能耐,让
质疑Java能力的人以及Microsoft闭嘴。当然,SUN在Java成功之后也信心满满地宣布
了SUN的开发工具计划,以满足广大开发人员的需求。McNealy多年来进攻Microsoft
地盘的希望似乎即将出现光明的未来。

之后不久,在万方期待之下,SUN终于推出了Java开发工具SUN Workshop。在Java
Workshop即将推出之前,Symantec非常地紧张,因为这关系到Symantec是否能够在Java
开发工具市场站稳脚跟。我记得在Java Workshop推出之际,所有的媒体、杂志都大
幅报道Java Workshop,SUN也大力地宣传和促销Java Workshop。从当时的气势来看,
Java Workshop颇有"千秋万世,一统江湖"的味道。我所认识的许多朋友不管是用买
的、借的、下载等和--嗯--那个的……各种手段,都热切地想取得一套Java Workshop
来玩玩。不过丑媳妇总要见公婆的,在许多人使用了Java Workshop之后,才发现它
不但执行缓慢得像乌龟一样,而且问题多多,和一般的PC开发工具水准比起来简直是
差了十万八千里。看来Java Workshop只适合使用在昂贵的SUN工作站计算机上,而在
当时大多数人使用的PC上则根本跑不动,除非是拥有异于常人的耐性。

Java Workshop雷声大雨点小,不久之后就人气溃散了。许多原来对Java有信心的人
在用了Java Workshop之后,也开始质疑Java是否适合使用来开发复杂的应用程序?
是不是只适合用来撰写Applet?是不是只适合使用在SUN的工作站和计算机之上?虽
然之后SUN仍然很努力地推出Java Workshop 2.x的版本,希望一洗Java Workshop
1.x的恶名,但是仍然无法挽回Java开发人员的信心。至于其他仍然对Java有兴趣的人
则转而使用Symantec的Visual Café,让Visual Café进一步地扩大了市场占有率,
也让Symantec吃了一颗定心丸。当然也有许多Borland的支持者开始强烈地期望和要
求Borland能够推出最好的Java开发工具。

SUN在Java开发工具市场大溃败之后,才了解到PC开发工具市场和Solaris开发工具市
场不一样。在Solaris上SUN是一家独大,但是在PC市场上可是百家争鸣,竞争对手一
个比一个强悍。SUN不了解PC开发工具市场的特性,以为靠着Java正宗的招牌就可以
通行无阻却是大错特错,并且在当时被Microsoft讥笑不懂得开发软件,这也是因为
SUN经常讥笑Microsoft不懂得开发操作系统,看来在当时SUN也不必五十步笑百步。


SUN在Java开发工具市场弄得灰头土脸之后,不得不专心开发Java语言和JDK函数库,
并且在Java语言更为成熟之后开始想要开发Java的组件技术,因此开启了稍后和Borland
合作共同开发Java Bean的功能规格,再进而和Borland共同研发JDK的规格,最后更
对Borland的JBuilder发生了强烈的兴趣,甚至想并购Borland。当然这都是因为后来
Borland展现在了Java方面高度的技术,让SUN从肯定到折服的原因所致。



Borland的Java艰辛奋斗



"事情并没有这么顺利",Borland当时的R&D主管这么说,并且充满了焦虑。当Borland
警觉到Java的潜力之后,Visual Café早已成功地上市,SUN也准备推出Java的开发
工具。当时Borland正逐渐从C/C++市场失去王者的地位,财务上也开始出现经营赤字,
整个公司正陷于一团混乱的情形中,似乎已经没有额外的资源可以投入Java的研发。
在起步落后,又缺兵少粮的情形下,Borland似乎即将失去进入Java市场的希望。


好在稍后的Delphi一炮而红,让Borland大赚了一票,也稳定了军心。Delphi为Borland
注入的资源也很快让Borland激活了Java研发小组。虽然Borland已经落后许多,但是
Borland知道绝不可以失去这个市场,因为Java的市场没有Microsoft式的寡占,Borland
有希望在Java市场比Borland C/C++、Delphi等更成功。此外,Borland更需要在Delphi
这条产品线之外开拓其他的收入来源,否则只靠Delphi产品,公司仍然无法成长得更
为茁壮,以和其他的软件公司竞争。

在1994、1995年间,Borland正式成立了Java研究小组,开始研发Java的技术,准备
开发Java开发工具。这个Java开发工具的内部研发名称便是Latté。一开始Latté小
组的研发资源并不够多,因为当时的Borland是在风雨飘摇之中,无法注入足够的资
源到Latté小组。因此在Latté开始开发的初期进展得并不顺利,进度很缓慢。一直
到了Borland靠Delphi浴火重生之后Latté小组才有了足够资源,研发的进度才开始
加速。不过与竞争对手们比起来,Borland在Java方面的确是相当落后的,几乎是跑
在最后的参赛者。不过幸运的是Java开发工具之战似乎是一场漫长的马拉松比赛,除
了一开始的表现之外,更重要的是比谁能够撑得比较久。事实上看Borland如何在Java
竞赛场上反败为胜、一一打败强者,进而成为Java开发工具王者的过程是相当精彩的,
而JBuilder小组使用的竞争策略更值得我们玩味和学习。

依我个人的眼光来看,在Borland开发Java开发工具的过程中经历了数个不同的阶段,
每一个阶段都有着非常激烈的竞争,有着成功者和失败者。只是有的失败者仍然坚
持竞争下去,有的却随风消散。JBuilder最终能够成为王者,除了是因为愈挫愈勇、
Borland没有退出Java市场之外,还在于Borland在开发JBuilder 3时下了一个关键性
的决定,以及在JBuilder 3之后每一个版本都有明确的目标,终于在JBuilder 4之后
慢慢成为市场第一的领导者。当然这长达数年的争战过程是非常艰辛的,不过这段历
程正是整个Java开发工具逐鹿中原的写照史。



第1阶段--Java JIT编译器的战争

Borland也许不是最晚开始研发Java技术的厂商,但是明显地落后于其他竞争对手则
是不争的事实。Borland在Latté万事尚未具备的情形下,展开Java竞赛的第一步便
是从Borland传统的拿手绝活开始,那就是从Java JIT编译器开始出发。不过由于Borlan
d
当时对于Java技术尚未拥有良好的掌握,因此一开始是和Pascal的祖师爷Dr. Niklaus
Worth合作,由Dr. Niklaus Worth以及他的学生们为Borland研发Java JIT编译器,
而Borland本身的Latté小组则平行地开发Latté其他的功能。由于当时Java已经逐
渐在校园流行,而且吸引了许多学术研究的兴趣,Dr. Niklaus Worth以及他的学生
们很早便开始投入Java相关的研究。因此当Borland找上门之后,自然便一拍即合。
Borland缩短了开发时程,而Dr. Niklaus Worth研究小组则乐得有人赞助研发费用。


Dr. Niklaus Worth研究小组的第一个作品就是在1997年初左右推出的Java JIT编译
器,这个由Dr. Niklaus Worth研究小组研发的JIT编译器可以让编译后的Java ByteCode
执行速度比当时SUN的Java编译器以及Symantec的JIT编译器快了数倍。Borland宣布
此JIT编译器之后立刻震惊了Java界,因为当时缓慢的Java执行速度是所有使用Java
的人都希望能够立刻大幅改善的。而Borland推出的Java JIT编译器似乎给所有Java
开发人员看到了未来的希望。虽然严格地说当时即使是使用Borland最新的JIT编译器
编译Java程序,其执行速度仍然是很"龟速"的,但是对于使用Java来学习程序设计或
是撰写、执行一些小的Applet来说仍然是很好用的。因此当Borland一推出此JIT编译
器之后,便立刻打响了Borland在Java界的知名度,所有Java开发厂商也开始视Borland
为认真的竞争对手。否则以当时Borland的气势来看,除了Delphi之外,Borland几乎
已经一无所有了。

Borland在Java的处女作Java JIT编译器一炮而红,立刻吸引了当时浏览器霸主Netscape
的注意。由于当时Netscape大力支持Java以便和Microsoft竞争,因此非常需要有品
质精良的Java JIT编译器内建在Netscape之中,以顺利且快速地执行Java Applet,
增加Netscape的竞争力和吸引力,突显与Microsoft IE的不同。不久之后Netscape便
找上了Borland,希望能够在Netscape中附带Borland的Java JIT编译器。

对于Borland来说,这又是一个千载难逢的机会。因为这不但证明了Borland在Java技
术的努力成果,更重要的是Netscape在当时是不可一世的软件公司,全世界有数百万
的使用者。这意味着一旦Netscape内建Borland的Java JIT编译器,Borland在全世界
将立刻拥有数百万的Latté潜在使用者,对于Borland来说是好得不能再好的条件了。
因此Borland立刻答应了Netscape的提议,让Netscape搭配Borland的Java JIT编译
器。但是这一举动也立刻牵一发而动全身,进而导致了Java JIT编译器的大混战。

在Netscape和Borland达成了协议并且开始出货之后,却引起了Symantec的忧虑和不
满。因为当时Symantec是Java开发工具的老大,而Borland连个Java开发工具都尚未
推出,可是Netscape却跑去使用Borland的Java JIT编译器,这不是让全世界都知道
Borland的实力并且让Symantec脸上无光吗?为了颜面以及避免失去Java开发工具的
市场,很快Symantec便决定开始反击。Symantec立刻也集中资源投入Java JIT编译器
的研发,开发出比Borland Java JIT编译器更快的Symantec JIT编译器,并且准备开
发一个直接把Java ByteCode编译成原生Windows程序代码的Java编译器。就在Borland
Java JIT编译器风光不久之后,Symantec也宣布了新的Java JIT编译器。Symantec
的Java JIT编译器比Borland Java JIT编译器更有效率,编译后的Java ByteCode执
行效率比Borland的快了2~3倍。

在Symantec Java JIT编译器宣布之后,又轮到.Borland脸上无光了。才刚和Netscape
谈好合作条件,没有想到效率王位还没坐热就立刻被Symantec踢了下来,这如何向
Netscape交待?因此Borland立刻进行改善JIT编译器的研发工作,力图再次超越
Symantec。果然Borland的努力没有白费,不久之后Borland的JIT编译器又打破了
Symantec JIT编译器创下的效率纪录。自此Borland和Symantec便展开了Java JIT编
译器的"竞速"比赛,不断地试图打败对方。也由于Borland和Symantec的JIT竞赛,当
然更重要的原因是Java的执行速度在当时实在是太过缓慢,引起了IBM、Microsoft以
及SUN在Java编译器方面的研究。

Symantec在当时不愧是Java开发工具的王者,在和Borland几次的JIT编译器交手之后,
便开始逐渐地占了上风。由Dr. Niklaus Worth研究小组研发的Java JIT编译器也
逐渐不再是Symantec的对手。至此Borland决定收回Java编译器的技术,开始自行研
发。Borland发觉光是和Symantec在Java JIT编译器竞争没有多大用处,当务之急是
赶快推出自己的Java开发工具。因此Borland开始退出和Symantec在Java JIT编译器
的竞赛,以求全速催生Latté。当然Borland退出JIT编译器的第一阶段战争之后的影
响是不久之后Netscape便不再使用Borland的Java JIT编译器,改为使用Symantec的
Java JIT编译器。至此Symantec终于获得了JIT编译器第一阶段的战争胜利,保住了
Java开发工具第一厂商的颜面。但是Symantec真的获胜了吗?那可不能断言,因为JIT
编译器战争才刚开始。

在Symantec的Java JIT编译器打败了Borland的JIT编译器之后,Symantec便把脑筋动
到了SUN的身上,希望SUN也能够使用Symantec的Java JIT编译器,把Symantec推向Java
核心技术的领导厂商宝座。不过Symantec的盘算显然是落空了,因为SUN已经决定收
购一家专门研发Java编译器技术的软件公司,并且准备开发自己的JIT编译器,那就
是后来的SUN HotSpot编译器技术。另外Microsoft和IBM也开始加入了Java JIT编译
器的竞赛之列。IBM为了和SUN争夺Java领导者的地位,不但自己研发IBM的JDK,甚至
也研发IBM的Java JIT编译器。严格地说,当时IBM的Java JIT编译器品质比SUN提供
的好多了,不但稳定而且执行速度比SUN的快了许多,让SUN也颜面无光,很不是滋味。
甚至可以说IBM的Java JIT编译器品质不会比Symantec的Java JIT编译器差到哪里。

更麻烦的是Microsoft为了让IE能够和Netscape竞争,也可以执行Applet,因此也开
始研发精良的Java JIT编译器。特别是当Microsoft得到了Anders Hejlsberg之后,
在编译器技术方面有了重大的突破。虽然Microsoft的JIT编译器一直不像其他厂商的
Java JIT编译器那么符合标准,但是其品质却是相当的精良。在Microsoft不断地改
善之下,依我当时的测试,经其编译后的Java ByteCode执行的速度是最快的,连IBM
和Symantec的JIT编译器都不是对手。因此从我的观点来看,在这个Java JIT编译器
的阶段,应该是Microsoft获了冠军。要不是Microsoft没有持续支持最新的JDK标准,
又混杂了一些Microsoft自己的东西,到最后很可能使用最为广泛的Java JIT编译器
反而就是Microsoft的JIT编译器。

至于Symantec,在取得了JIT编译器表面上的优势之后,立刻又把重点放在了开发直
接把Java ByteCode编译成原生应用程序的原生Java编译器。稍后Symantec成功地开
发出了这种编译器,让Borland大为紧张,并且准备跟进。而Symantec也把这个原生
Java编译器加入到Visual Café中,成为一项吸引人的功能。不过很快地这个功能却
引起了许多Java使用者的批评,因为他们认为这违反了Java"Write Once,Run
Everywhere"的精神,如此一来厂商必须为每一个不同的平台开发原生Java编译器,
这会造成Java应用程序在不同的平台执行的反应不一致的现象,又陷入C/C++语言开
发的应用程序在不同的平台表现不一的相同问题。后来连SUN也不赞成这种做法,当
然这是因为SUN想力推自己的HotSpot编译器技术。因此原生Java编译器在风行了一阵
短暂的时间之后就不再吸引人注意了,而Borland原本为JBuilder开发原生Java编译
器的计划也因此而打住。



Microsoft VJ++的威胁

1996年,Anders Hejlsberg来到Microsoft之后的第一个作品即将推出,那就是
Microsoft VJ++。VJ++的即将推出,对于许多软件公司而言都是一个很大的震撼。
对于SUN来说,这是Microsoft在Java领域的挑战。在SUN自己的Java开发工具不争
气的窘境之下,又得面对擅长开发工具的Microsoft,特别是由Anders领军开发的
精品。对于其他的Java开发工具厂商来说,也是提心吊胆。Visual Café在JBuilder、
Visual Age For Java陆续推出之后市场占有率已经慢慢地被瓜分,现在又得再次面对
Microsoft的竞争,昔日Symantec C/C++失败的阴影又缠上了心头。而Microsoft的死
对头IBM更是在VisualAge For C/C++、VisualAge For BASIC连番失败之后,好不容
易推出了VisualAge For Java,准备在Java开发工具市场打一场好球赛,没有想到
现在Microsoft又来搅局。

对于Borland来说,这个消息更是令人不安,因为Borland本身的Java开发工具仍然处
于研发阶段,还没有推出,而且看样子将会是市场上最后一个推出的Java开发工具,
落后主要竞争对手已经很多了。现在Microsoft居然更早一步推出Java开发工具,而
且是由Anders Hejlsberg主持开发的。Borland当然知道Anders Hejlsberg的实力,
自然不敢轻视VJ++的影响力。更麻烦的是在VJ++推出之前,Microsoft一直对VJ++保
持模糊的态度,不愿意表明VJ++是否是一个纯正Java开发工具。更让Borland惊讶的
是,Borland内部对于VJ++ Beta的测试表明VJ++编译出来的程序代码在某些方面居然
比Delphi等原生的Windows开发工具执行得还快速。这意味着VJ++不但对于Java开发
工具可能会有严重的影响,甚至对于一般的Windows开发工具都有可能造成威胁。不
过Borland分析如果VJ++真的开始对Windows开发工具产生威胁,那么VB将会是受到影
响最大的开发工具。但Borland仍然感到忧心,因为VJ++仍然可能对于Delphi和C++
Builder产生一定的影响,这是Borland不乐意见到的。当然这也加速了Borland研发
Latté的决心,因为已经不能再拖了。

记得当时我还和Borland在亚洲新加坡R&D总部的Mr. Inn Nam Yong谈过VJ++的表现
以及对于VJ++可能产生影响的忧虑。Mr. Yong也说VJ++的表现令他们吃惊。看来Anders
Hejlsberg在VJ++的编译器技术上下了苦功,其表现早已超过了当时一般的Java编译
器技术,的确是令人刮目相看,更麻烦的是从VJ++的身上依稀可以看到Delphi的身影。
Borland的R&D已经了解了这个情形,Borland的编译器小组也在研究相关问题的技术。
由此可见当时Borland已经如临大敌,开始准备相关的技术,并且已经掌握了初期的
状况。

Microsoft VJ++在1996年11月终于正式推出了,全世界也都屏息以待,准备看着VJ++
会产生多少的毁灭力量,而SUN更准备看看Microsoft是否会违反任何SUN和Microsoft
之间的Java协议。当然SUN是担心Microsoft想破坏Java的开发。VJ++在一开始果然获
得了一些回响,毕竟这是Microsoft推出的Java工具,使用Microsoft开发工具的软件
人员当然会考虑VJ++。同时VJ++也吸引了一些想使用Java语言、但是仍打算呆在
Windows平台的开发人员。

不过VJ++推出之后也很快受到了所有Java开发工具以及支持Java平台厂商的全面围剿。
他们害怕Microsoft对Java市场的入侵,会让其他厂商再次无法生存。之后连SUN也开
始领军围攻Microsoft,因为SUN除了害怕Microsoft会慢慢地主宰Java平台和标准之
外,还发现Microsoft正在很有技巧地逐步破坏Java语言和标准,例如VJ++便提供了许
多非标准的Java用法并且很明显地把VJ++绑死在Windows平台,破坏Java的"Write
Once,Run Everywhere"的美梦。而且,Java开发人员如果大量使用VJ++,那么便再
也离不开Windows平台。Microsoft计划通过提供一流的"类Java开发工具"来限制开发
人员的自由选择权的企图是昭然若揭了。

由于SUN的带头批判,想使用Java的开发人员和企业很快地发现VJ++并不是标准的Java
开发工具,因此对于VJ++的热情很快消退了下来。而VJ++对于Java以及Windows开发
工具的威胁也很快地解除了。VJ++对于Microsoft来说很可能是自DOS版的Microsoft
Pascal之后第2次在开发工具的大失败。不过依我的观点来看,VJ++在本质上是一个
优秀的产品,不论是编译器、Framework和集成开发环境都有高水平之作。VJ++之所
以败阵下来实在是因为形势比人强,Java平台也是第一次不是由Microsoft所主宰的
市场。在Java联军的合攻之下,即使是软件巨人也得回避三分。

因为第一次在Java出击就弄得灰头土脸,并且SUN摆明了不会允许Microsoft在Java平
台成气候,使得Microsoft下定了和SUN正面开战、在Java市场上全面开火的决心,进
而造成了SUN控告Microsoft违反Java合约的规定的结果,而Microsoft稍后则干脆把
Java支持从操作系统中移除。当然,这是Microsoft和SUN之间的Java平台之战,已超
出本书讨论的范围,也许应该由Microsoft或是SUN的人来说明这整个过程。

虽然事后证明VJ++在Java开发工具是失败了,但是Anders Hejlsberg在VJ++中花费的
心力却没有白费,因为VJ++的编译器技术以及Framework和集成开发环境的技术都在
稍后融入Microsoft .NET计划的基础核心技术之中。例如C#的语言和Java很相像,
C#的编译器技术想必也借重了许多当初VJ++优秀编译器的技术,因此C#编译器的最佳
化结果也在一些方面胜过了现在许多原生Windows开发工具的编译器水准。Anders
Hejlsberg的努力正激活了Java和.NET的正面决战。



IBM VisualAge For Java的推出

IBM在PC开发工具市场的表现一直令人摇头,因为其"玩玩便跑"的作风总是让人无法
放心使用它的开发工具。但是也许是IBM的招牌太大,再加上它会免费向购买IBM机器
或是软件的客户奉送IBM开发工具,因此也总是有人会去使用IBM的开发工具。我个人
在受了IBM VisualAge For C/C++的教训之后,便对IBM的开发工具敬谢不敏了。

IBM当然不会放弃Java这个潜力无穷的市场,因为对于IBM来说,Java不光是语言和开
发工具而已;更重要的是Java平台牵涉到IBM和SUN在庞大商机的硬件和大客户之间的
竞争。IBM不光是要支持Java,更想从SUN手中取得Java的主控权,因此对于重要的Java
开发工具市场,IBM自是不会缺席。IBM很快采用了许多当初在VisualAge For C/C++
中相当受欢迎的元素作为开发VisualAge For Java的基础。例如VisualAge For C/C++
的项目管理功能、组件设计家等等。事实上使用过VisualAge For C/C++的读者会发现
VisualAge For Java非常的具有亲切感。不但所有的按钮都是采用圆形造型,甚至连
激活时缓慢的感觉、整个集成开发环境温温吞吞的表现也非常相似。由于采用了
VisualAge For C/C++的部分观念和程序代码,再加上IBM拥有最丰富的资源,因此
VisualAge For Java进展得很快。

1997年9月,IBM终于推出了VisualAge For Java,开始直接和SUN、Symantec竞争。
在IBM推出了VisualAge For Java之后,Borland注定成为最后一个推出重量级Java开
发工具的厂商。不过IBM的竞争目标明显不是Symantec和Borland等纯粹以Java开发工
具为目标的厂商,而是SUN和Microsoft。IBM在Java技术方面采取了数个平行的战略,
希望能够在Java世界中取得龙头地位,因为这关系到IBM最大业务--硬件销售、服
务提供以及IBM操作系统销售的收入。如果IBM能够在Java世界取得决定性的地位,那
么就可以侵蚀SUN的市场,最不济的情形则是不希望客户因为想要使用Java技术而自
然地想到SUN。至于另外一个锁定目标Microsoft,IBM则是打算通过Java日益扩大的
声势来打击或是抑制之。

因此IBM一方面和SUN签订Java合约,取得Java使用的合法授权,另一方面又投入大量
的研发资源开发自己的JDK版本以方便移植到IBM其他的专属平台,而且做得比SUN的
JDK还要稳定和有效率,随后让SUN和IBM之间一直有不和的争执。接着IBM推出了Java
开发工具,再次和SUN的Java Workshop竞争。不过从特性上来看,VisualAge For Java
锁定的客户群应该是IBM的客户、大型企业客户以及其他直接竞争对手的客户,例如
SUN的客户以及HP的客户。VisualAge For Java需要比较强劲的机器来执行,此外一
开始的版本就非常注重团队开发的支持,不像其他的Java开发工具一开始都是注重在
方便、实用的功能,稍后才逐渐强化团队开发的功能,这些差异都是IBM想争抢较大
型客户的证明。这也可以从后来许多专业媒体和杂志在进行Java开发工具评比时
VisualAge For Java几乎都在团队开发功能方面获得了最高的评价得知。由于VisualAge
For Java一开始锁定的客户群和Visual Café以及JBuilder锁定的客户群不同,因此
在Java开发工具的竞争初期并没有发生严重的竞争冲突。但是随着Visual Café和
JBuilder逐渐往上仰攻企业市场,而VisualAge For Java为了扩大市场而开始降价
进入一般Java大众市场之后,稍后的Java开发工具恶战也不可避免了。



第2阶段--Java集成开发环境的战争

Borland在初期以开发Java JIT编译器练兵之后,已经逐渐对于Java的技术有了掌握。
在Java Workshop、VJ++和VisualAge For Java陆续推出之后,Borland知道再也不能
够延迟JBuilder的推出时间了,否则就注定要退出Java开发工具的市场。因此Borland
对JBuilder的研发小组下了最后的通牒,一定要在1997年推出JBuilder。

JBuilder小组在竞争的第一阶段掌握了Java的JIT技术之后,立刻兵分多路展开了整
个JBuilder的开发工作。虽然Java是一种全新的语言以及革命性的平台,但是开发工
具总不外乎编译器、集成开发环境、数据库存取能力、Framework以及其他的工具和
Plug-In等。当时的Latté小组有许多成员是从以前的Borland C/C++转进来的,另外
的一些成员则包括了Borland原本的软件研究成员、Paradox成员、Visual dbase成员
以及从Borland外部找进来的新工程师。

在Borland开发JBuilder之时,由于Java尚没有完整的组件架构,也没有数据感知组
件标准以方便地开发Java数据库应用程序,更加没有完整的Java可视化组件,因此
Borland决定先自行开发一套组件组以便让JBuilder拥有最好的组件开发能力。这刚
好又是Borland擅长的技术,因为Borland要为Java开发一套Java Framework,这就是
JBCL(JavaBeans Component Library)的由来,而JBCL的架构稍后也成为SUN制定
JavaBean的基础技术。

当时负责JBCL架构的Architect是Joe Nunoll先生。这位帅哥原本属于Paradox小组,
在Borland逐渐失利于桌上型数据库战场之后,便转到Latté小组专门负责设计Latté
的组件架构。

而JBCL的主要实现工程师则是当初设计和实现Borland C/C++ Framework-OWL的总工
程师Carl Quinn。Carl Quinn在组件设计和Framework方面都有丰富的经验,OWL就技
术而言也算是精品。因此在Borland C/C++产品线停止之后,Carl Quinn由C/C++转换
到Java跑道是很自然的事情,毕竟C/C++和Java是很类似的。Carl拥有丰富的经验,
由他来带领开发Latté的组件Framework是再适合不过了。

由于Carl在JBCL的努力和成果,稍后又负责了Borland的Java组件模型Baja的开发。
之后Carl凭借着对于JBCL和设计Baja的经验,在SUN采用Baja做为JavaBean的核心基
础技术之后便自然地受邀于JavaBean的开发小组。由于Borland在Java组件方面卓越
的表现,因此也开启了SUN和Borland逐渐密切的合作。Borland虽然在Java方面投入
的时程稍晚,但是却凭借着扎实的技术而慢慢迎头赶上。

Latté的Framework开发在Joe Nunoll和Carl Quinn的带领之下有了稳定的发展。事
实上JBCL的表现一直是非常优秀的。当Latté随后正式推出时,JBCL也是让Latté得
以脱颖而出的重要功能之一。Joe Nunoll和Carl Quinn的功劳可谓不小,而我钦佩的
Carl Quinn又再次在Java方面证明了他坚实的技术和在Framework方面丰富的设计和
实现经验。
Java Framework虽然重要,但也只是整个完整开发工具的支柱之一。Latté要推出仍
然需要编译器和集成开发环境的功能。在Java编译器方面,Borland和结束委托
Dr. Niklaus Worth研究小组开发Java JIT编译器之后,Latté开发小组便开始展开
研究的工作。当时JIT编译器已经全面开战,而Borland在Latté尚未推出、还没有足
够资源的情形下如果再介入JIT的战争,那么不但胜算不大,而且可能会严重影响Latté
的推出时程。因此Latté小组决定先专心开发一个编译品质良好,而且能够和Latté
完美搭配的Java编译器,而不再强求效率至上。

从现在的观点来看,当时Latté小组的决定是非常正确的。因为:第一,当时Borland
的确没有太多的子弹;第二,Latté的时程再也不能拖延;第三,也是最重要的是稍
后SUN宣布了开发Hotspot编译器技术的计划,顿时之间所有Java JIT编译器的风头都
被SUN抢走了。特别是在稍后SUN决定将Hotspot内建在JDK中之后,争夺Java JIT编译
器不但变得没有意义,而且对于Java开发工具而言也没有什么附加价值了。因此在SUN
的Hotspot编译技术揭露之后,Symantec很快就在Java JIT编译器市场上销声匿迹了。

Latté小组确定了Java编译器的策略之后,立刻便接手Dr. Niklaus Worth研究小组
的后续开发工作,同时开发Latté的编译器、Latté的Plug-In以整合Java编译器到
Latté的集成开发环境中,并且也进行Java编译器最佳化的研究工作。当时这个Java
编译器开发小组由Carl Fravel等人带领,同时也包括了Borland的编译器小组。Carl
Fravel主要负责Latté的编译器以及编译器的Plug-In软件,此外他也参与了Latté
数据库方面的开发。当时Java在数据库存取方面仍然相当弱势,Borland为了加强Latté
这方面的功能,决定先借重Delphi在数据库方面的成绩,即通过JDBC标准接口封装
Delphi已经有的各种数据库驱动程序,让Latté能够立刻连接到最多的数据库,这就
是后来JBuilder的DataGayteway。

除了Carl之外(嗯,Latté开发小组有两个Carl),Sergio Cardoso也是Latté编译器
最佳化的成员。Sergio原本是Borland C/C十+的开发者之一,专门研究C/C++最佳化
的技术,他和Carl Quinn等人一样转移到Java的产品线。Sergio和Carl Fravel合作,
负责打造Latté的核心引擎。在Latté上市之后,事实上每一版的JBuilder的编译
器都有进步。就现在来说,在JBuilder 7/8中编译Java应用程序相当的快速。这说明
JBuilder和当初Borland C/C++一样,都是在初期版本快速地强化引擎、不断地提升
速度。

当时的Latté并没有一个真正的总Architect,只有不同技术领域的Architect,例如
Joe Nunoll。因此Latté当时主要的舵手应该是产品经理以及Borland的Java资深研
究员了。而产品经理以及Java资深研究员再和所有的各领域Architect讨论Latté的
开发方向。因此在Latté的初期开发阶段,其模式就像罗马时期的合议制。

当时的Latte产品经理是Klaus Krull(K. K.)。这位仁兄长得又高又大,也是一位相
当热心的人。K. K.原本是Paradox和dbase小组的成员,负责Paradox/dBase的产品线。
在Latté小组成立之后K. K.立刻跳槽到Java产品线来。事实上许多Paradox/dBase
的工程师也都希望转换到Java产品来,因此当时在Borland内部掀起了很大的风浪,
也造成了许多人离职。这段故事在稍后的dbase相关章节中将详细说明。

K. K.加入了Latté小组之后,便积极地带领Latté小组往前冲。也许是因为K.K.在
Paradox和dBase时表现得并不好,因此想借着Latté证明自己的实力。不过K. K.人
也许很好,可是管理方面似乎仍然不甚灵光,Latté初期的进度仍然稍嫌缓慢。在IBM
VisualAge For Java于1997年推出之后,Borland高层下令K. K.绝对不可以再度延迟
进度,一定也要在1997年推出第一个Latté版本。好在当时Delphi 3大获全胜,而
K. K.又是当时Delphi产品经理Ben Riga的好哥们,因此由Delphi转入Latté的资源
也就源源不绝,让Latté的进度慢慢地赶上了。

至于当时Latté架构的主要人物并不是稍后众人皆知的Blake Stone,因为Blake Stone
是在Latté推出之后才加入Borland的。Latté初期的架构负责人应该是Steve
Shaughnessy。

Steve是Borland的资深研究人员,也是当初Borland最早投入Java技术研究领域的人
物之一。不过资深研究人员的缺点之一是喜欢不断地想象以及研究软件技术,但是对
于产品进度的掌握却不是他们的专长,也不是他们最关心的事情。这就是为什么Latté
一开始的开发进度非常缓慢的原因。直到最后K. K.加入并且面临了Borland高层和
市场巨大的压力之后才匆匆地集中所有的资源和时间想要追上进度。

当Latté小组开发JBuilder的第一个版本时,就想学习使用Delphi成功的Open Tools
API特性,为JBuilder定义完整而且极具弹性的开放式集成开发环境。不过由于当时
Delphi的Open Tools API仍然没有大量的采用接口程序设计的架构,考虑到Java拥有
定义良好的接口机制,无法完全采用Delphi的Open Tools API的设计,所以一开始
JBuilder集成开发环境的Add-ins功能开发得很缓慢。当时负责JBuilder集成开发环境
中Add-ins功能的工程师除了Carl Fravel之外,另外一位主要的工程师则是Greg Cole。

当Carl Fravel和Greg Cole了解到无法直接借用Delphi的Open Tools API来设计JBuilde
r
的Add-ins架构之后,就决定开始研发JBuilder本身的集成开发环境开放架构,并且
直接使用接口程序设计的机制来设计JBuilder的开放架构,这是和当时的Delphi不一
样的地方。而一直要到Danny Thorpe为Object Pascal程序语言加入了接口机制之后,
Delphi的Open Tools API才展开了第2波的大改版,使用接口机制来重新设计,也就
是后来Delphi著名的OTA架构(Open Tools Architecture)。

1997年11月,Latté终于完成并且推出市场。正式的产品名称被定为Open JBuilder,
这是为了强调Borland的Java开发工具就像Java本身一样是使用开放的架构。

在Open JBuilder 1.0推出之后,Java开发工具市场总算是竞争者齐聚一堂了,每一
家厂商终于一一地使出了真本领来竞逐Java开发工具的市场龙头。Open JBuilder 1.0
推出之后不久,几乎所有的信息媒体以及Java的专业杂志都进行了Java开发工具的评
比,想要比较所有Java开发工具的优/缺点,并且让Java的使用者了解当时市场的
老大Visual Café是否能够面对新兴势力的挑战,保住市场第一的地位。

当时大多数杂志评比的目标包括了Symantec的Visual Café、SUN的Java Workshop、
IBM的VisualAge For Java以及Borland的Open JBuilder 1.0。对于Symantec来说,
第一次的Java开发工具大会战是处于以逸待劳的情势,而且Visual Café也是4个Java
开发工具中唯一完全使用C/C++语言撰写的,因此面对当时Java编译器还不够好、JVM
品质也未若今日精良的情形下,Visual Café的执行速度占了非常明显的优势,在功
能方面当然也胜出其他竞争对手一截。

Symantec的Visual Café唯一的缺点就是在Java程序代码中加入了开发工具特有的程
序代码卷标,造成使用Visual Café撰写的Java程序代码不易使用在其他开发工具中
的后果。而且Visual Café在Render Java图形使用者接口时仍然拥有不十分精确的
问题。

当时对SUN的Java Workshop的评比是比较保守的。毕竟Java Workshop是Java正宗厂
商SUN推出的产品。虽然它不论在功能、执行效率方面都比不上竞争对手,而且小问
题一大堆,但是为了给SUN面子,媒体仍然没有给予太多的苛责。甚至有一些媒体还
称赞SUN有勇气开发一个完全使用Java语言撰写的Java开发工具,向全世界证明Java
是能够用来开发大型应用程序的。不过虽然媒体和杂志很给SUN面子,但Java Workshop
终究逃不过市场的考验,从此慢慢地退出了Java开发工具的市场。

在当时的评比中IBM的VisualAge For Java虽然是执行最为缓慢的Java开发工具,但
是在高阶功能方面的表现却是遥遥领先所有的竞争对手。VisualAge For Java的团队
开发功能、项目管理功能以及可视化设计家都大幅超越了其他的Java开发工具。不过
VisualAge For Java使用了专属的格式,因此其程序代码不容易使用在其他的工具中,
而且VisualAge For Java的项目在进入了Repository之后也发生过整个Repository
毁损的情形,因此当时VisualAge For Java在易用性方面的分数是比不上其他竞争对
手的。

对于Borland的Open JBuilder 1.0来说,这个最晚进入竞争市场的工具在第1次的集
体评比中最后的结果不如人意。原本Java的使用者以及专业媒体对于Borland的产品
有着高度的期待。因为以Borland一向精于开发工具,而且是最后才推出Java开发工
具的情形来推断,大多数人都认为Open JBuilder应该是准备最充分的,但是评比之
后的结果却不是如此。

首先Open JBuilder并不是纯粹使用Java撰写的开发工具,而是混合了Java和Delphi
的程序代码。不过最后的执行效率不但比不上Visual Café,也不比纯粹的Java
Workshop快上多少。此外Open JBuilder在功能方面比不上Visual Café,在可视化
设计家和高阶功能方面又不是VisualAge For Java的对手。在比上不足,比下只有
险胜的情形下Open JBuilder让当时许多人大失所望,当然也包括了我在内。因此在
大多数的评比中,Open JBuilder只得到中等的评价。当然这样的结果也反映在Open
JBuilder的市场表现之上。



Hotspot编译技术是个笑话吗?

1997年市场上逐渐出现愈来愈多的Java开发工具,愈来愈多的人开始尝试使用Java,
却也有愈来愈多的人抱怨Java的执行效率。当时的PC不像今日动不动就拥有1GHz的执
行效率以及512MB RAM的内存,以当时的机器来执行Java是很痛苦的事情。还记得当
时我还没有动力足够的机器来跑Open JBuilder,每一次执行Open JBuilder时就觉得
受不了。当时我还开玩笑地说,机器从执行Open JBuilder到进入Open JBuilder的集
成开发环境这段时间,早就够我使用Delphi写完一支程序了。造成Java执行效率缓慢
的主要原因当然是Java编译器以及JVM的品质不够精良了。

为了急于让信息界接受Java成为标准,SUN必须想办法克服这个问题。虽然克服Java
执行缓慢的现象是当时几乎所有支持Java软件厂商都想解决的事情,但Java的正宗厂
商SUN是责无旁贷的。也是因为Java执行效率的缓慢,当时也兴起了许多小的软件厂
商开发各种技术和编译器来改善或是解决Java的这个致命缺点。很快SUN找到了一家
小软件公司,这家公司以开发出"Adaptive Compiling"技术来加快JVM执行效率、以
及使用类似的技术来改善Java编译器的品质而闻名。SUN在了解到这些杰出的技术之
后便立刻决定购买这家公司,并且根据他们的技术来实现SUN的下一代Java编译器以
及JVM,这就是稍后SUN HotSpot技术的由来。

SUN投入新的Java编译技术之后不久,就有了初步的结果。根据这个新的技术编译出
来的Java ByteCode以及新的JVM的执行效率果然比以前进步了许多。这让SUN更有信
心,便立刻向世界公告了这个新的技术,并且命名为HotSpot。SUN宣称最后推出的Java
编译器和JVM将提供类似C++的执行效率。

在SUN公布了HotSpot技术之后,立刻引起了全世界Java使用者的狂热。人们认为一旦
SUN推出这个技术,Java将可望克服最后一个缺点,从而一统天下。与此同时,这也
引起了信息业界非常大的讨论和争议。特别是C/C++社群的人认为这根本是不可能的,
虽然"Adaptive Compiling"非常的有创意,但是要和已经存在数年的C++最佳化编译
器比起来,Java的ByteCode是不可能超越C++的。但是从SUN在其时公布的一些HotSpot
编译数字来看,"Adaptive Compiling"是非常有希望的,因为它改善的幅度实在是很
大。因此全球相关的人员都在屏息以待,准备看看SUN最后的成果。

在SUN第1次公布HotSpot的推出时程之后,果然让所有Java的使用者都引颈期盼,恨
不得SUN立刻推出这个技术,解除大众执行Java的痛苦。不过随着时间不断的接近,
SUN在最后关头又宣布因为研发不及因此要延迟HotSpot推出的时程。软件研发的工作
延后在软件界见怪不怪,当时也没有引起太多的争议,不但让SUN争取到了更多的时
间,也顺利地延后了推出的时程。

不过在SUN宣布的第2次推出时程到期时,SUN仍然无法推出HotSpot技术。很快的SUN
不得不再次宣告要延后HotSpot的时程。就在这样SUN不断跳票的戏码重复上演的情形
下,终于开始有人笑称HotSpot根本是一个骗局,SUN根本无法推出接近C++执行效率
的Java编译技术。

到了1999年左右,SUN自知再也无法推拖HotSpot推出的时程了。因此在当年8月,当
时HotSpot研发小组的领导人(一位博士,但是我已经忘记了他的名字)在BorCon上进
行Keynote Speech,正式向参加BorCon的人介绍HotSpot技术并且在现场展示了HotSpot
的研发成果。虽然一切看起来都很棒,但是当现场的听众直接询问到底HotSpot技术
是否能够超越C++的执行效率时,这位博士却没有正面回答,只解释说在一些应用中
HotSpot的确可以提供超越C++的执行效率。我听了之后心中大概就已经知道HotSpot
最终的结果了。

果然在HotSpot被迫推出市场之后,大家很快地了解到HotSpot和C++的执行效率相比
终究是还有一段距离,根本无法超越C++的表现。这造成了当初一些热切期待的C/C++
程序员回到C/C++语言的市场,并没有转换到Java市场。这也是为什么后来C/C++市
场虽然受到了Java的影响,但是仍然有大量的使用者和市场,并没有像当时许多人预
测的那样将会有大量的C/C++程序员进入Java市场,终究还是因为Java无法完全取代
C/C++语言来完成一些工作。而SUN呢?为了转移大家对于HotSpot的失望而开始把研
发重点转到Internet/Intranet、EJB组件模型和Java Mobile系统方面的研发。轰动
一时的HotSpot热潮也逐渐淡去。

现在SUN再也不怎么提起HotSpot编译器了,只是在每一个新版本的JDK中不断持续的
改善HotSpot的编译品质。想起当初SUN对HotSpot不可一世的吹嘘最是令人感叹。不
过HotSpot也不是一无是处,的确是精进了许多Java ByteCode的产生品质以及JVM的
执行效率,只是没有达到当初SUN夸口逼近或是超越C语言编译器品质的程度。在目前
状况下,HotSpot能够让Java的编译品质在伺服端的效率有着显著的提升,提供非常
不错的执行效率。但是在客户端,尤其是牵涉到图形使用者接口Render方面的应用时,
仍然是相当缓慢的。

就Borland本身使用Java的情形来说,Borland使用Java开发的VisiBroker For Java
的执行效率已经相当接近VisiBroker For C/C++的执行效率。因此如果再搭配使用品
质良好的JVM,那么根据Borland内部的测试数据显示,VisiBroker For Java甚至在
一些特定的应用中超越了VisiBroker For C/C++。

HotSpot在纷纷扰扰的这么多年之后到底是不是一些人讥笑的"笑话科技"呢?不同的
人到现在可能还是有不同的答案吧。



Borland的困境和选择

Open JBuilder虽然赶在1997年最末的一班车推出,但在市场上的反映并不如预期的
好。当然这是有许多原因的。首先是Open JBuilder太晚推出,初期的Java市场早已
被其他的Java开发工具,特别是Visual Café所占领;第二是Open JBuilder急着推
出市场,因此在和其他Java开发工具竞争时并没有什么特别突出的功能、明显的优势,
竞争力当然不够;第三是Open JBuilder于一开始就混合地使用了Delphi和Java程序
代码,因此Open JBuilder激活以及窗体设计家的反应都很缓慢,不像Visual Café
那种以纯C/C++程序代码撰写的Java开发工具反应迅速,从而给许多程序员造成了
不良的印象。IBM的VisualAge For Java虽然也很迟缓,但在高阶的团队开发方面却
支持得很好,而且通常会使用团队开发功能的使用者大都是属于企业或是大型用户,
因此使用的机器配备也很好,对于VisualAge For Java的缓慢反应也还能够接受。

Open JBuilder的表现不如预期,这让Borland很着急,因为其无法承受失去Java开发
工具市场的损失。因此在Borland的Java开发工具研发小组中开始有了一些讨论,那
就是如何让Open JBuilder能够后来居上,取得胜利的果实。针对Open JBuilder的失
败原因,Open JBuilder的开发人员开始反思是否也应该像Visual Café一样使用
Delphi重新打造Open JBuilder,让Open JBuilder的执行反应加快到使用者能够接受
的地步,因为在当时Borland实在已经无法再加快Java的执行速度。此外使用Delphi
开发Open JBuilder的窗体设计家也可以避免许多JDK的臭虫,不会因SUN开发或是改
善JDK的时程而影响到Open JBuilder的开发周期。

这个想法在Open JBuilder的内部引起了很大的争议。使用Delphi重写Open JBuilder
的集成开发环境可以拥有许多短期的效益而且产品马上会有明显的改善,可以拥有和
其他竞争对手一搏的本钱。不过反对的人则认为使用原生开发工具开发Java的工具是
走回头路。这些人认为Java有朝一日一定会开发到成熟的阶段,到时Open JBuilder
就会拥有最后的胜利,现在只是一时的挫折,没有必要灰心。

对于Borland来说,如何继续Open JBuilder是一个困难的抉择,因为当时Borland急
需收入的挹注,而Open JBuilder的研发费用惊人,光靠Delphi力撑实在是很辛苦。
不过如果再回到使用Delphi开发,那么可能又会失去未来的机会,这到底应该如何决
定呢?



Java天才的加入

这一切的答案在Open JBuilder的新产品架构领导人Blake Stone加入后才逐渐明朗。
Blake Stone原本是DSW Systems Corporation公司的技术主管,而DSW公司一向和Borlan
d
互动良好,许多DSW公司的人都曾在Borland的Conference(BorCon)中负责技术讲座。
Blake Stone先生也在1997年的BorCon中负责了一个讲座。也许是Blake Stone和Borland
在这次的BorCon中合作愉快,Borland也很赏识Blake Stone的技术和才华,因此在BorCo
n
结束之后不久,Borland便和Blake Stone接触,看看Blake是否有意愿加入Borland的
Java研发小组。也许是天意吧,在Borland失去了Anders这个天才之后,老天又给了
Borland一个弥补软件天才的机会。

在Borland和Blake接触之后,Blake不但对于Java未来的潜力看好,而且因为Blake也
曾使用Delphi,对于Borland研发开发工具的能力相当有信心。更凑巧的是由于Open
JBuilder 1.0的不尽人意,因此此时刚好有一个Open JBuilder的Architect离职,
让Blake立刻有了适当的职位。没有多久Blake便答应进入Borland作为JBuilder的
Architect,目的是带领JBuilder成为最成功的Java开发工具。由于Blake惊人的天
分,因此很快就成为JBuilder的主要Architect以及技术的主领导者,JBuilder未来
开发的Java技术都由Blake负责研究和研发的工作。

Blake进入JBuilder开发小组之后,面临的第一个挑战便是如何改造Open JBuilder,
让它执行得更为顺利,并且能够在竞争群中脱颖而出。当然Blake必须做的第一个抉
择就是Open JBuilder到底该走向纯Java的开发工具或是改成原生的Windows Java开
发工具。Blake并没有迟疑多久,便决定把JBuilder带向纯Java的开发工具,使用Java
语言本身来打造整个JBuilder。Blake做了如此的决定是有许多原因的。首先是Blake
希望通过使用Java语言开发JBuilder本身来让Borland的工程师彻底掌握Java的技术,
也希望通过这样的开发来证明Java的实用性。就像Delphi本身就是使用Object Pascal
和Delphi研发、Borland通过Object Pascal证明了Delphi的实用性和可靠性一样,
Blake也希望使用JBuilder来证明Java语言的可用性。

第2点是因为打造纯Java开发工具可以让JBuilder通过Java跨平台的特性把JBuilder
推向其他所有支持Java的平台,让Borland能够穿透到以往无法进入的市场,这样可
以让JBuilder的潜在市场和客户比竞争对手的更宽广、更多。

第3点因素则是Blake希望通过这个行动让Borland掌握Java的核心技术,最好能够和
SUN有更密切的互动,让Borland能够在Java领域取得相关的领导地位。因为在和以往
Microsoft交手的过程中,Borland深深了解到如果无法在一个技术领域取得第1或是
第2的地位,那么终将成为微不足道的角色,被市场淘汰出局。

Blake在JBuilder研发方向制定的策略事后都被证明是正确的。后来JBuilder果然能
够支持Windows、Linux和Solaris平台,成为当时架构最大、最复杂的Java应用程序。
更重要的是SUN充分肯定了Borland在Java方面卓越的技术,进而采用Borland的Baja
技术制定Java Bean规格并且邀请Borland共同参与开发Java的JDK。Blake在JBuilder
早期设定了成功的趋势,奠定了JBuilder成功的基础。稍后JBuilder新的产品经理
Tony de la Lama又成功地制订了JBuilder的市场研发脚步和竞争策略,终于让JBuilder
在3.5版本之后一飞冲天,成为Java开发工具的翘首。

在Blake加入JBuilder开发团队并且决定了JBuilder走向之后,很快整个JBuilder的
开发方向便朝着他决定的方向快速前进。Blake也激活了JBuilder庞大的纯Java开发
工具的计划。1998年JBuilder研发小组在Blake的带领之下很快地交出了第1张成绩单,
那就是JBuilder 2的推出。

JBuilder 2的战略目标并不是成为完全的纯Java开发工具,而是为了快速跟上其他
Java开发工具的功能,并且提升Open JBuilder 1.0为人诟病的缓慢执行速度以及问
题多多的窗体设计家。

无疑JBuilder 2是非常成功的。我所谓的成功并不是指JBuilder在销售上的成功,
而是指Blake为JBuilder 2.0设定的目标。因为JBuilder 2.0推出之后很明显的比Open
JBuilder 1.0看起来成熟多了,而且在执行速度、包含的功能等方面都到达了合理
的地步,也让JBuilder正式进入Java开发工具第一方阵的竞争群。在Blake的努力下,
JBuilder 2.0的实现程序代码已经进步到使用25%Delphi程序代码和75%Java程序
代码,离纯Java开发工具已经愈来愈近了。Borland也开始从JBuilder 2.0的身上看
到了未来的曙光。也是上天注定,这个时候正是Delphi逼近于全盛的时期,需要
JBuilder接棒才能够让Borland持续地成长。

JBuilder 2.0的渐入佳境除了归功于Blake Stone之外,另外一个重要的原因便是此
时JBuilder的产品经理也换成了颇具眼光的Tony de la Lama。Tony也像K. K.一样是
从Visual dbase小组转来的,而且在K. K.离开了Borland之后接手成为JBuilder的舵
手。本来没有人看好Tony的,没有想到Tony却是一个雄才大略的人物。

Tony显然和Blake合作无间。在JBuilder一开始于产品和技术还相对处于劣势的时期,
Tony知道最重要的工作是先把产品做好,再求其他的策略。因此JBuilder在2/3版
时主要是由Blake Stone操刀、Tony为辅。稍后当JBuilder逐渐成为Java开发工具的
重要角色之后,便由Tony主导在市场、产品定位和竞争策略方面运筹帷幄。

Blake在研发JBuilder 2.0时,便设定了下面的目标,准备重新奠定Open JBuilder的
竞争实力。

■ 呈现精确的设计时期可视化效果。这方面胜出Visual Café许多,也是JBuilder
准备强攻Visual Café弱点的策略

■ 充分利用Java平台的特性

■ 以Java来思考开发工具的开发。这一点非常重要,也是日后JBuilder胜出其他Java
开发工具的重要因素

■ 开始为Java设计组件架构。当时这项研发计划命名为Baja,由Carl Quinn负责。
Baja也是日后JavaBean的前身

■ 打算以纯Java撰写JBuilder并且为移植到其他平台做准备

在JDK 1.1推出了JNI(Java Native Interface)之后,JBuilder开发小组的工作就更
为顺利了,因为他们可以通过JNI呼叫使用Delphi 2撰写的程序代码,呼叫Borland自
行开发的原生Virtual Machine,以快速地编译Java程序。此外由于JBuilder 2.0尚
无法成为完全的Java开发工具,因此Blake在Delphi方面也进行了更好的最佳化调整,
以加速JBuilder激活和执行的速度。当然在JBuilder的窗体设计家方面,Blake更是
决定投入大量的资源,以求解决Render和JDK臭虫的问题。由于Blake的决定,Borland
发现并且要求SUN解决了当时JDK和AWT/SWING初期的许多臭虫。其中有一些是SUN来不
及或是不愿意立刻修改的,为了不延误JBuilder的开发,Borland直接予以解决再提
交给SUN作为参考。

当时Blake为了让JBuilder中Delphi和Java的程序代码有更好的整合和表现,甚至研
发了许多低阶的技术来暂时强化JBuilder 2.0的执行效果,并加强Java和Object Pascal
语言之间互动和交换数据的机制。嗯,看来Blake在数年前便想到并且解决了许多现
今.NET的技术问题呢。

Blake Stone成功地带领JBuilder开发小组推出了JBuilder 2.0,这只是Blake为
JBuilder实施的第一阶段竞争步骤。当JBuilder 2.0获得了初步的成果之后,Blake
也正式激活了以纯Java打造JBuilder的计划。JBuilder 3.0是Blake瞄准的第一个版
本。在JBuilder 2.0之后的JBuilder研发工作中,Blake已经拥有愈来愈多的资源,
整个JBuilder开发小组的规模也开始和Borland的RAD部门不相上下了。

1999年8月,在Blake Stone和JBuilder团队全力催生之下,几乎是完全由Java开发的
JBuilder 3.0也在距离JBuilder 2.0推出一年之后正式推出了。如果说JBuilder 2.0
是为了让JBuilder赶上其他Java开发工具的版本,那么JBuilder 3.0的定位无疑就
是在Borland推出纯Java的JBuilder之前从落后于竞争对手到超越竞争对手的一个产
品。

虽然Borland进入Java开发工具市场非常晚,但是在经过了3个版本的努力之后,终于
在JBuilder 3毕其功于一役,进入了Java开发工具的领先群。此时当初第1名的Java
开发工具Visual Café正每况愈下,逐渐接近被JBuilder超越的命运了。

还记得在1999年的BorCon中,我曾经和Blake Stone有过短暂的交谈,明白了为什么
许多人都说Blake Stone是一位天才型的软件人物。当时我去听其中一场讨论(如何调
整InterBase执行效率的Seminar),没有想到坐下来之后才发现Blake Stone就坐在旁
边。之后,我一直在暗中观察他。只见他在Seminar开始之后就拿出了Notebook专心
写程序。我当时便想,Blake参加这个Seminar大概只是消磨时间,主要是写写JBuilder
的程序,并不是真的想听这个Seminar的内容。选择InterBase这个Seminar纯粹是因
为人比较少,不会受到太多的打扰吧。知道了Blake的举动之后,我也一直想移动身
体朝向Blake,希望看看天才写的程序代码是什么样子?但是出乎我意料之外的是,
当Seminar结束之后,主讲人开始接受询问问题,Blake却不断地举手发问。

这令我大吃一惊,因为整场专心写程序的Blake看起来能够一心多用,不但脑袋可以
想东西,手指可以打键盘,心思还能够倾听Seminar的内容,真令我佩服。Seminar结
束之后,我和Blake交谈了数句寒暄的话,恭喜他在JBuilder方面的成就。Blake转身
离开时,从身后看简直就像一位小姐。因为Blake身材纤细,又留了一头长发,不知
情的人从身后看一定会认为这是一位美丽的小姐呢。

当JBuilder 3在市场上接受开发者的考验时,虽然JBuilder的市场占有率排名还不是
第一,但是已经和主要竞争对手非常接近。从成长分析中也可以看到,JBuilder是以
快速的速度成长,而Visual Café却不断地呈现下滑趋势。至于VisualAge For Java,
也几乎停滞不前。JBuilder对于所有Java开发工具竞争对手的威胁与日俱增,Symantec
和IBM再也不敢轻视JBuilder的实力。事实上此时JBuilder的王者之姿也隐然若现了。
不过Blake并没有稍做停顿,给其他的Java竞争对手以喘息之机,而是很快蓄积力量,
准备在产品面进行最后的一击。

2000年3月14日,对于JBuilder来说是最重要的一个里程碑,因为这一天是Borland正
式推出JBuilder 3.5的日子,也是Borland的JBuilder小组在经过了数年的努力之后
终于拥有了一个纯Java打造的Java开发工具的日子。

JBuilder 3.5不单是Borland第一个完全使用Java撰写的开发工具,也算是业界中第
一个纯Java开发工具。虽然数年前的Java Workshop也是使用Java开发的,但是Java
Workshop提供的功能远不如JBuilder 3.5,此外JBuilder 3.5的复杂度和难度也比
Java Workshop高太多了。

JBuilder 3.5推出之后,立刻风靡了Java开发工具市场。大量的Java开发人员迫不及
待地升级到JBuilder 3.5,因为许多Java程序员都想使用一个纯正的Java开发工具。
此时JBuilder在市场上的占有率排名已经达到第一位,而且正朝市场占有率50%的目
标迈进。依我的眼光来看,JBuilder到了3.5版之后,在技术和产品方面的竞争已经
告一段落。因为在这个阶段,JBuilder本质方面的使命已经完成了。JBuilder 3.5之
后的竞争要点是在市场和产品策略上。如何让JBuilder超过50%的占有率是JBuilder 4
的任务。此时JBuilder的领导也由技术Architect转到产品经理Tony de la Lama身上。
也是由于Tony de la Lama继Blake Stone之后表现得相当出色,很快Tony de la Lama
就升为Borland Java事业部门的Director,继Blake Stone之后再为JBuilder开辟一个
光荣的战场。

JBuilder从混合代码的1.0演变到3.5的纯Java开发工具,每一个版本核心都有精进。
最后我列出JBuilder的演进史,让读者也能够了解JBuilder的变化。

Delphi程序代码 Java程序代码
JBuilder 1.0 40 60
JBuilder 2.0 25 75
JBuilder 3.0 10 90
JBuilder 3.5 0 100

JBuilder 3.5推出之后,Java开发工具不可避免地开始进入了第3个大混战时期。



Blake Stone的荣耀

1999年7月,Borland首次在公司内部设立首席科学家的荣誉职位,该职位颁给Borland
最优秀和重要的软件人员。除了"首席科学家"光荣称号外,当然也有丰厚的物质奖赏。
Blake Stone当时就和Chuck Jazdzewski以及Andreas Vogel同时获得了Borland"首
席科学家"大奖。Blake对于JBuilder的贡献也算是实至名归。在进入Borland短短的
数年时间内,就以最年轻的软件人员身份获得此项大奖,这也证明了他惊人的实力。


虽然Blake不像Anders那么锋芒毕露,也不像Danny一样著作丰富,但他本身在软件上
的修行已属顶尖。下面列出他荣耀的历史:

■ Borland最年轻的首席科学家

■ 成功带领JBuilder成为世界第一的Java开发工具

■ 成功克服Linux上当初没有标准JDK,让JBuilder能够在Linux上执行

■ 世界Java专业论坛的主讲人

■ 主导Borland Java开发工具和技术的关键人物



现在Blake愈来愈受到Borland的重视。除了原本的JBuilder产品之外,后来Borland
并购OptimizeIt、进一步强化JBuilder整体竞争力也是Blake的主张。Blake已经慢慢
从JBuilder产品线转而成为负责Borland大部分Java技术的关键人物。日前Borland又
宣布Blake也将负责公司内新的生命周期管理软件的研发。看来Borland下一代Java产
品也将由Blake贡献心力。继续加油吧,Blake!



第3阶段--大混战

"人人有希望,个个没把握"应该是对这个Java竞争时期最好的叙述了。在JBuilder逐
渐成为Java开发工具的领导者、同时传统霸主Visual Café也逐渐没落之时,对于每
一个Java开发工具厂商而言,这似乎都是最后一搏的机会了。时间已经进入了公元2000
年。虽然Java开发工具的市场独立于其他语言的工具市场,而且这个市场的规模也在
不断地成长,但明显没有像当初Gartner Group等机构预测的那样有足够大的规模。
更麻烦的是Java开发工具的价格显然在许多免费工具的竞争力之下,这些厂商的获利
也不如预期。但是在每一家Java开发工具厂商都已经投入大量的资源情况之下,除了
市场第1、2名以外,其他的开发工具厂商都势必无法拥有足够的获利。除非Java开发
工具厂商有其他的利益或是因素而能够忍受不佳的获利甚至赔钱,否则迟早许多厂商
都必须退出这个市场。

或许所有进入这个市场的厂商都没有料到,Java开发工具会有如此激烈的竞争。当初
这些厂商都认为Java是一个极具潜力而且没有"Microsoft"竞争的市场,因此一定比
较好生存。但却没有想到因为没有"Microsoft",反而所有其他厂商几乎都进入了这
个市场,甚至一些名不经传的小公司都以为可以分一杯羹。想在这个市场成名立万就
必须经过激烈的割喉竞争。

同样在2000年11月,Borland向所有Java开发工具竞争对手挥出了致胜的一击,那就
是JBuilder 4的推出。JBuilder 4对于Borland来说是一个重要的Java里程碑,是Borlan
d
在JBuilder 3.5之后乘胜追击之作。在JBuilder 3.5以纯Java开发工具的号召获得了
Java程序员的青睐之后,Borland毫不放松到手的胜利,立刻以JBuilder 4一举冲破
了Java开发工具50%的市场占有率,正式成为Java开发工具的王者。

JBuilder 4不但在销售上大获全胜,也让Borland在经过数年努力之后终于在Java开
发工具重享当初C/C++王者的荣耀。此外JBuilder 4产品本身也得到了专业Java媒体
和杂志的高度评价,一致认为Borland的JBuilder是最好的Java开发工具。Borland可
以说是里外兼得。

在Borland以JBuilder 4横扫千军之际,唯一还能够与之抗衡的就只有IBM的VisualAge
For Java了。而昔日的Java开发工具霸主Visual Café已经沦落到第3名的地位,且
其市场占有率和影响力还在快速的下降之中。Symantec当初辛辛苦苦花了3年时间打
造的Java王朝就在二三年之间很快幻化成泡沫,这也造成了Symantec完全退出开发工
具市场、全心开发防毒和企业解决方案应用软件的结局。

因此在2000年3月,Symantec把Visual Café卖给了新成立的WebGain公司。Visual
Café从此慢慢地从通用Java开发工具转变为专属的Java开发工具,其Java开发工具
市场的地位也变得无足轻重了。

另外一个重要的现象是在Borland的JBuilder一轮猛攻并且成为Java开发工具的领导
者之后,JBuilder也慢慢地被Java开发人员视为正统的Java开发工具。因此当时许多
在Windows平台使用Java的开发者都逐渐转至使用JBuilder。而Microsoft的VJ++由于
不支持最新的SUN Java标准,又混合使用了许多Microsoft特定的功能,最后还和SUN
发生了法律上的争执,也逐渐被视为非正统的Java开发工具,使用者逐渐流失。因此
在2000年左右,当所有的Java开发工具都呈现成长趋势的时候,Microsoft的VJ++却
出现了大幅的衰退,是唯一呈现负成长的"类Java开发工具"。此后不久,Microsoft
慢慢地退出Java市场,开始准备另起炉灶,再以2年后的.NET进行反击。

JBuilder 4算是Borland毕其功于一役的版本,因为JBuilder 4不但在产品功能方面
大幅领先于其他的竞争对手,在市场占有率方面也终于达到了Borland一直想要达到
的目标。到了这个时期,Blake主导JBuilder的工作也算是圆满达成目标,在接下来
JBuilder的开发过程中就开始由Tony de la Lama操盘,Blake则转向主导JBuilder和
Java先进技术的研发工作,并且稍后和RAD的Chuck一起,获得了Borland首席科学家
的荣耀。



第4阶段--谁跟的速度最快

在Java开发工具进入大混战阶段之后,看起来虽然热闹、生气蓬勃,事实上却是惊险
不已。各种Java开发工具多得令人眼花缭乱,每种Java工具也都有人使用。从要钱的
到不要钱的,从完整集成开发环境到只提供最简单的Java编辑器,各种产品都有厂商
提供,的确是一个百家争鸣的时代。

Borland为了在这个阶段取得领先地位,以避免被淘汰出局,因此激活了Borland前所
未有的开发模式,那就是在JBuilder的开发团队中同时有二组并行且彼此竞争合作的
JBuilder小组。当其中一个小组开发目前的JBuilder版本时,另外一个小组便开始着
手研究和开发下一个版本的JBuilder。开发目前版本JBuilder的小组完成之后,便接
着再使用另外一个小组已经开发出的成果持续开发下下版本的JBuilder。这种作战方
式从JBuilder 3.5之后便开始显现成果。JBuilder不但及时地紧紧跟随着每一个JDK
的版本,成为市场上最符合JDK要求的Java开发工具,也渐渐形成每半年推出一个新
版本的速度,让JBuilder远远超越竞争对手,成为唯一的领先者。

JBuilder成功的竞争策略,让JBuilder的最大竞争对手IBM的Visual Age For Java和
WebGain愈显吃力,更不用说其他的Java小厂商了。在这个阶段Java开发工具开始了
残酷的最后生存战。Java开发工具市场注定将像当初PC平台上的C/C++开发工具市场
一样,只有少数的厂商才能存活下来。事实也证明从2000年之后不断有Java厂商被迫
退出市场,甚至是面临关闭的命运。造成这种现象以及Borland能够脱颖而出是因为
下面的原因:



■ Java开发工具市场虽然有成长,但相对于其他种类的软件来说,毕竟是比较小的
市场,因此开发工具厂商必须达到经济规模才能够获利,才能生存下去

■ Java开发工具的市场并没有像Gartner Group在公元2000年预测的那样会有巨大的
成长。事实上当时就是因为许多研究机构看好Java市场的成长潜力,因此才吸引许多
软件厂商不断地进入。但是过多的软件厂商和不够大的市场注定会淘汰许多的竞争者


■ Borland在残酷的开发工具竞争市场生存了将近10几年之久,因此当然知道竞争的
激烈,也深黯竞争之道。

■ 最重要的一点,是Java开发工具市场对于Borland来说是生存之战。在Borland的
RAD开发工具到达了饱和之后,Borland必须靠新开辟的Java开发工具市场才能继续茁
壮发展



在经历这一波的残酷淘汰赛后,每家厂商的心态昭然若揭。对于一些小厂商而言,无
声无息的消失是很自然的事情,即使是大厂商也不见得好到那里。例如IBM在Visual
Age For Java经营了4个版本之后,又采用了像当初对待Visual Age For C/C++一样
的手法。我早在数年前便已经预言IBM终会放弃VisualAge For Java,如今果然被我
言中。我之所以能预知结果,并不是能够洞察先机,而是从IBM处理PC软件的一贯模
式推知的。PC的软件经营金额对于IBM来说是九牛一毛,根本无足轻重,只是IBM竞争
的手段之一,特别是在经营结果不甚理想之后自然是第一个开刀的对象。不过最惨的
应该是WebGain了,曾几何时是市场第一的Visual Café也将面临再次被卖掉的命运。

这个比快的淘汰赛中,JBuilder和它的孪生兄弟、Oracle的Jdeveloper一起遥遥领先,
而IBM则已经准备放弃Visual Age For Java,而和BEA WebLogic搭配的WebGain也逐
渐长路将尽了。



第5阶段--谁能走的最久

当Borland以JBuilder 4横扫千军之后,剩下的主要竞争对手就只剩下IBM的VisualAge
For Java了。不过VisualAge For Java和一般的Java开发工具定位不太一样,而且
大多数的VisualAge For Java使用者都是IBM的客户。此外VisualAge For Java最强
的功能是在团队开发方面,而JBuilder在这方面一直不算是做得很好。

为了和VisualAge For Java进行最后的决战,JBuilder小组决定在JBuilder中大幅强
化团队开发方面的功能,期望击溃VisualAge For Java最后的防线。2001年6月,
Borland推出了JBuilder 5,除了增加JBuilder对于愈来愈风行的各种EJB应用程序服
务器的支持之外,还加入了可视化EJB设计家以及支持CVS、Rational ClearCase和
Visual SourceSafe等团队开发和原始码管理的功能,开始投注更多的资源在VisualAge
For Java强项的功能上。

JBuilder 5推出之后,果然改变了许多Java专业媒体和杂志对于JBuilder在团队和大
型企业开发能力的评价。此外由于JBuilder是所有Java开发工具中支持EJB应用程序
服务器最齐全和最好的工具,因此从JBuilder 5开始,一些应用程序服务器厂商便逐
渐地建议客户搭配JBuilder来开发Web和EJB应用系统。这个现象也开始微妙地影响了
JBuilder的定位并且开始产生许多奇妙的效果。

首先,为了在市场上取得最大的占有率,Borland一直坚持JBuilder必须支持所有市
场上重要的EJB应用程序服务器,特别是对于市场的领导EJB应用程序服务器,例如BEA
的WebLogic和IBM的WebSphere,应该有最好的支持,以吸引这些EJB应用程序服务器
的使用者来使用JBuilder。但是由于Borland自己也有EJB应用程序服务器,而Borland
的EJB应用程序服务器部门希望JBuilder能够先支持Borland自己的EJB应用程序服务
器,再考虑其他的EJB应用程序服务器。因此当时Borland的JBuilder小组和Borland
Enterprise Server小组之间有了一些小争吵。不过由于JBuilder是属于Borland Java
RAD部门的产品,因此JBuilder小组仍然决定成为市场上支持WebLogic和WebSphere
最好的Java开发工具。只是JBuilder小组也把Borland Enterprise Server当成是一
线应用程序服务器,决定给予的支持就像给予WebLogic和WebSphere的支持一样。

第二个现象是一些EJB应用程序服务器开始和JBuilder Bundle(捆绑)在一起销售,或
是建议客户使用JBuilder。因为在Java开发工具重新洗牌之后,JBuilder已经是市场
的领导者,其他的应用程序服务器厂商在可选择的Java开发工具愈来愈少或是原开发
工具厂商退出Java市场之后,也不敢违抗市场的主导力量,当然纷纷搭乘JBuilder的
便车了。

在JBuilder 5成功的在团队开发方面给予了VisualAge For Java极大的压力后,
Borland于同年的11月再次进逼,发表了JBuilder 6,成为压垮VisualAge For Java
的最后一根稻草。

JBuilder 6不但继续强化团队开发能力,而且已经成为支持EJB的最好工具。另外
JBuilder 6又开始整合UML和Extreme Programming方面的功能,比起VisualAge For
Java已经先进了许多。而VisualAge For Java在开发脚步迟缓的情形下,早已跟不上
JBuilder的健步如飞。更麻烦的是从JBuilder 5之后,JBuilder成功地打入了企业市
场,侵蚀了原本IBM的客户并且动摇了Visual Age For Java最后的大本营。VisualAge
For Java在功能和市场方面节节败退,已经到了穷途末路的地步了。

2001年12月左右,IBM终于宣布把Visual Age For Java开放给Eclipse计划,正式结束
了VisualAge For Java五年来在Java开发工具市场的竞争。IBM在久战不下,Visual
Age For Java又无法替IBM带来充分的利润之后,正好借Open Source的名义把Visual
Age For Java拱手奉送。还可以利用VisualAge For Java最后的价值为IBM打打广告、
做做形象。不过回头看看IBM在开发工具市场的记录,却是惨不忍睹,对于客户而言也
没有什么保障。

当JBuilder 6成功地摧毁了VisualAge For Java的防线之后,连带在市场上排名第三
的Visual Café也无法再支撑下去,因为Visual Café的拥有公司WebGain在失去了
BEA的支持之后,已经没有能力再在Java开发工具市场竞争下去了。



第6阶段--胜利者的出线

2002年Borland仍然以半年一个版本的速度又如期推出了JBuilder 7。Borland这种推
出新产品的速度简直令人无法置信。JBuilder的竞争对手们也早己一个一个的累倒在
地上,纷纷出局了。JBuilder很明显的已经成为了最后的胜利者。

同年6月,WebGain在找不到后继的资金和投资者之后,决定把Visual Café卖掉并且
结束WebGain的运营。不久之后TogetherSoft以相当便宜的价格购买了Visual Café,
准备正式进军Java开发工具市场。而TogetherSoft加入Java开发工具战火也代表着
新一波Java开发工具的竞争,这在稍后会继续说明。

Borland的JBuilder在第7版虽然成为了王者,但是这并不代表已经打遍天下无敌手。
因为在Visual Café被Case和UML模型工具开发厂商购买之后,新一波的Java开发工
具之争已经隐约成形了。此外当初由Delbert Yocam License(授权)给Oracle的
JDeveloper也表现得愈来愈好,开始给JBuilder造成不小的威胁。



第7阶段--Java开发工具和Case Tool结合的趋势

Java已经明显的成为大型企业开发应用系统的首选,许多名列Fortune 1000中的大企
业也都开始采用Java的应用方案。在Java成功地穿透了企业市场之后,随着Java开发
工具的流行,Java使用者也开始要求开发工具必须结合OOA/OOD的功能,让Java使用
者能够以面向对象的方式开发大型的系统。于是从JBuilder 6开始,Borland便在
JBuilder中逐渐加入OO和UML的功能,准备在JBuilder已经于Java开发工具金字塔
中/底层成功的攻城掠地之后,再把JBuilder推向金字塔顶端。不过JBuilder的举动
自然也引起了另外一群软件厂商的紧张,进而隐隐地激活了另一波的竞争,这些软
件厂商就是开发Case以及UML工具的软件公司。

话说从2000年许多软件公司经历了高成长之后,从2001年起,这些公司为了继续维护
成长以期获利,必须在既有的产品之外想办法再扩充产品线。JBuilder就是一个很好
的例子。JBuilder只有不断地扩展它的功能面以及使用者群,才能够持续地在Java开
发工具市场成长。对于像提供面向对象和UML工具的厂商来说(例如Rational和
TogetherSoft),当金字塔顶端的使用者在大部分已经购买了这类工具之后,如何再
让其他的使用者也购买这些工具便成为这类厂商首要的问题。就像在大部分的多金客
户和老板们已经成为Benz的客户之后,如何让更多的人愿意购买Benz汽车,便是Benz
需要想办法的一样。Benz的策略是推出C-Class级的汽车,以年轻新颖化的设计为号
召,企图打入年轻的使用者群,因为以前这一族群的使用者是Benz无法打入的。

Rational和TogetherSoft为了扩展原有的面向对象和UML相关的产品线,开始想要跨
入开发工具的市场。由于在所有的开发者群组中,Java开发者是最接受面向对象和UML
技术的群组,因此Rational和TogetherSoft自然以Java开发工具作为优先的市场。
Rational采用的策略是自行开发"类开发工具",那就是Rational XDE。虽然Rational
很小心地处理开发工具市场,但是仍然遭遇了开发工具厂商的抵抗。例如Microsoft
原本在开发工具中内附Rational的简易UML工具,但是在Microsoft逐渐为Visio加入
更好的UML支持之后,就放弃了采用Rational的产品。当然对于Borland来说,
Rational进入开发工具市场也有着非常微妙的影响,因为Borland和Rational也有合作
的关系。现在Rational为了新增产品线而进入开发工具市场,令Borland和Rational同
时处于既合作又竞争的地位。

对于TogetherSoft而言,是否进入开发工具市场更是难以决定的事情,因为TogetherSof
t
在UML工具方面和Rational竞争得非常激烈,分居此市场的第1和第2位,在Rational
逐渐跨入开发工具、而且Rational和TogetherSoft的客户也开始对于结合开发工具和
UML工具有了强烈的需求之后,TogetherSoft也必须苦拟竞争对策,否则TogetherSoft
和Rational的差距不但会被拉开,既有的客户群也会遭受Java开发工具的侵蚀。特别
是在Borland于JBuilder 6开始加入低阶的UML功能(例如Refactoring)之后,很明显
JBuilder在某些场合便已经开始和TogetherSoft的产品竞争了。

正由于Java开发工具的厂商往上仰攻企业用户群,而Case和UML厂商又想向下开拓新
的潜在客户,因此开发工具厂商和这些上端的Modeling软件厂商从以往互不相干、到
合作打天下,再到目前阶段的合作竞争状态,看来这两类软件厂商彼此竞争开战或是
合并的日子已经不远了。

在2002年8月,TogetherSoft终于从WebGain购买了Visual Café,正式准备进军开发
工具市场。也许TogetherSoft的第一步是整合Visual Café到TogetherSoft的产品线
中,先提供TogetherSoft客户的需求。接下来势必强化Visual Café的功能,加入UML
的能力,让TogetherSoft正式和Java开发工具竞争。TogetherSoft不但通过Visual
Café快速地进入Java开发工具市场,也让Visual Café又神奇的再次延长了生命--
Visual Café真可谓是Java开发工具界的"九命怪猫"了。

在TogetherSoft正式通过Visual Café进入了Java开发工具市场之后,Borland、
Microsoft、Rational和TogetherSoft在开发工具市场的竞争也再次隐然而动。这个
熟悉的影像就和数年前C/C++市场的竞争一样,只是换了2个主角而已,看来虽然开发
工具市场获利并不丰富,但却是一个具有制高点作用的重要市场,因此即使许多厂商
都损兵折将,但是仍然不断的有新厂商投入。前仆后继,蔚为壮观。

不管Java开发工具未来的竞争形势如何,从这些厂商的动作来看,整合面向对象和UML
的高阶功能似乎是不可避免的趋势。成功的开发工具必须适当地整合Extreme
Programming、UML和传统的RAD集成开发环境,以向使用者提供最大的生产力。加入
UML的功能是传统开发工具厂商要面对的挑战,提供RAD和Extreme Programming的能
力则考验了UML厂商是否能够提供具备亲和力的开发工具。Java开发工具目前的两种
开发和竞争方向,的确是和数年前C/C++开发工具的竞争有所不同。究竟谁能胜出,
终究要通过使用者、市场和时间来考验了。



第8阶段--和.NET的巅峰之战

从1995年到2002年,应该算是Java的成长和全盛期。这段时间内许多的Java厂商、开
发工具和应用程序服务器不断的在竞争和厮杀,如同神鬼战士一般进行最后的生存战。
为什么?我想这是因为必须剩下最强的竞争对手,才能与2003年起Microsoft.NET逐
渐产生影响力时.NET下的开发工具竞争吧。虽然Bill Gates日前在媒体上公开承认.NET
的流行速度没有Microsoft设想的快,但是从以往Microsoft的竞争模式来看,
Microsoft一向擅长后来居上,不可小看其决心和实力。更何况Java毕竟已经开发了
将近七、八年,而.NET不过是1年多左右,后面竞争的日子仍然很长。

在我日常的工作中,通过接触许多不同型态的客户,也可以察觉到传统Windows开发
工具、Java和.NET势力的消长。Java从2000年起开始有了明显的成长,特别是大型客
户、使用多种不同平台的客户群更是快速地倾向使用Java。由于这类客户在后端大都
是使用Mainframe或是强力的UNIX机器,在采用Java之后,也自然需要引入Java的组
件架构以及Web Solution,故JSP/Servlet便大行其道,EJB也开始逐渐风行并且快速
成长,而造就了许多EJB著名厂商的壮大以及另外一个竞争激烈的EJB市场。由于大型
企业偏向Java的解决方案,因此造成了许多大型企业、卫星软件公司也选择使用Java。
此外Java也在学校和研究界获得重视,许多大学和学术机构提供了大量的Java人才,
逐渐地形成了极为强大的Java凝聚使用群。这群使用者应该算是Java最有力的支持了。

对于中小型信息客户来说,事情就没有这么顺利了。由于这类客户的资源并不像大型
客户那样丰富,因此许多中小型客户一开始在Java风潮下也都尝试着使用JBuilder来
开发,但是Java的高门槛立刻让这些客户退出了Java的世界,即使留下来的也仅限于
使用Java开发Web方面的应用。

由于Java在客户端的图形使用者接口方面失败连连,从Applet、AWT到Swing,Java似
乎一直无法为客户端提供堪用的解决方案,以致不断败退,造成了目前在客户端使用
Java应用程序的应用系统仍然非常稀少,客户端仍然是Windows原生开发工具的天下。
问题是虽然Java目前在中间及后端占了极大的优势,不过应用系统仍然需要客户使用
客户端来呈现应用系统的数据以及图形使用者接口,因此Java如果无法在客户端取得
一定的应用地位,那可能也将逐渐失去中间层的优势。在Microsoft的.NET从2003年
开始逐渐影响市场之后,Java在客户端以及Web的应用都将会面对新的挑战。尤其是当
Microsoft以.NET虚拟执行环境提供更具安全和延展性的Web应用(指ASP.NET,新的IIS
服务器以及ASP.NET开始支持Apache Web Server)之后,简易好用的ASP.NET技术和开
发工具将进一步挑战Java在Web方面的应用。目前.NET在中间的组件技术方面仍然落后
Java阵营一大截,是Microsoft需要补强的地方,否则.NET仍然不适合做为大型企业解
决方案的应用(不过Borland却可提供非常良好的解决方案,那就是把CORBA移植到.NET
上,稍后的章节会说明这些有趣的开发)。但如果Java持续地在客户端、Web应用以及
移动消费端节节败退,那Java的应用也将局限在中后端的系统应用,情形就不怎么乐
观了(就像UNIX一样)。

根据许多知名信息机构的调查,在未来的数年当中,Java和.NET的竞争将趋于白热化,
而且最可能出现的是由这两大技术平分天下的状态。因此Java目前的开发以及声势
似乎都遥遥领先,但是对擅长打持久战和逆转战的Microsoft仍然不可大意。更何况
Java并不是完美的金刚之身,仍然有许多不甚令人满意的地方,还是需要加把劲才能
够维持好的局面。

此外应用系统型态的开发趋势也深深地影响了开发工具的走向。开发工具必须满足客
户的需要,当应用系统型态改变时,开发工具厂商必须提供适当的解决方案,让使用
者能够开发应用程序。根据Gartner Group的调查,Java和.NET的应用将开始快速爬
升,开始侵蚀原本的Microsoft DNA应用市场以及传统的COBOL、4GL和专属系统。

数年前Java以Web应用开始风行,再进而成为企业解决方案。现在.NET也遵循相同的
路径进入市场。只是.NET除了以Web进攻之外,还搭配了Web Service和一流的开发工
具。Microsoft有样学样的招式不但使用在开发产品方面,连和SUN技术平台的全面对
战模式使用的策略也如出一辙,只是包装的更好而已。

技术和开发工具的竞争最终取决于使用者的需求以及提供的功能、服务、架构和完成
度。不过由于现在软件技术的高度竞争,因此往往一方有了特定的技术,另一方很快
的也会推出相对的技术来因应。这种竞争类似于Java开发工具在第3和第4阶段的竞争,
只是希望SUN能够撑得久一点。我相信一旦有一方撑不下去,一定又会站出来以冠冕
堂皇的词汇说明他们只是为客户提供最好的解决方案,而不是为了和另一方竞争。如
果读者看到这一天,那就代表着即将分出胜负,出来说明的一方又将使用新的名词和
技术寻找出路。无论如何,从下图Gartner Group公布的评估数据来看,虽然.NET现
在只是第1个版本,但是在许多方面已经不输给开发了数年之久的Java。看来Microsoft
具备在短短的1、2年之内达到Java开发了数年之久的功能和成就的能力,这也许就是
寡占市场的好处。Java要和.NET竞争,SUN还是需要加快油门,否则很快就会被Microsof
t
追上,竞争可是不等人的。

对于Java开发工具来说,似乎目前加入争战的厂商还彼此杀得不亦乐乎、难分难解。
往好的方面想,这是为了找出最终的强者,再与Microsoft的.NET以及.NET下的开发
工具竞争;往不好的方面想,也代表这些厂商还没有察觉到.NET的威胁。不过从我的
观察以及.NET推出之后业界的反应来看,.NET的确已经开始吸引一些客户从Java转向
NET,特别是中小型客户以及需要使用Web应用的客户,当然一些大中型的客户也有
开始动摇的情形了。

对于Java开发工具的厂商来说,除了要和其他Java开发工具厂商竞争之外,或许也要
开始面对.NET开发工具的挑战。这些厂商必须加快把Java开发工具塑造成更容易使用、
生产力更高的工具,否则面对精于打造开发工具的Microsoft,小的Java开发工具厂
商生存的时间就不长了。对于Borland而言,这却是一个机会。现在JBuilder已经执
业界牛耳,Borland又决定开发.NET下的开发工具,如此一来Borland由于在两方都提
供最好的解决方案,因此有机会进一步扩大Borland的客户群。

但无论如何,当.NET到达了一定的规模之后,.NET开发工具和Java开发工具的竞争是
不可避免的。即使像Borland这样同时提供Java、原生Windows开发工具和.NET开发工
具的软件厂商,也或多或少的都面临自己人的竞争。叶孤城的"天外飞仙"对西门吹雪
的"一剑西来",你赌谁赢?嗯,也许对决的结果会创造出新的混合体--像周星驰的"
少林足球",也不一定啊。嗯,有可能,有可能。



Java需要面对和解决的问题

Java在开发了七、八年之后,也逐渐进入成熟期。一旦产品进入这个时期,很多的压
力就会出现,再加上.NET逐渐产生的影响力,Java开发工具以及Java的应用程序服务
器产品线也开始面临了许多的变化,这些变化将影响Java未来的开发以及和.NET对抗
的趋势。依我的观察,目前许多Java厂商都逐渐陷入困境和挑战之中。因为.NET和市
场的压力愈来愈大,厂商高获利的时代结束,开始进入了"微利"的阶段,这会让许多
Java厂商开始退出Java市场。Java已经不再像数年前拥有横扫市场的绝对优势,
Microsoft的.NET也逐渐在原本Java主导的市场形成气候。我认为目前Java正面对着
下面最重要的挑战和威胁:



■ 开发工具价格往下降的威胁

任何产品都是一样,当产品开始进入成熟期之后,产品价格一定会开始下降,这是正
常的现象。不过对于Java这种高投资的技术和开发工具来说,产品价格下降代表Java
厂商会经营得更吃力,如果无利可图,那许多Java厂商将会退出这个市场。正由于竞
争压力太大,许多Java厂商都希望尽快达到一定经济规模,以备Java开发工具价格快
速下降后能够以量大来弥补,这也是这一波割喉竞争的原因。对于Java开发工具是这
样,对于EJB应用程序服务器也是这样。Java开发工具价格持续地探底将会注定只有
排名前二或是前三的厂商才能够继续存活下去,其他的小厂商只能以非常便宜或是免
费的角色存在于这个市场。但是如果这种现象持续下去的话,那Java开发工具的进步
幅度和品质都有可能开始往下滑。



■ EJB过度竞争的压力

EJB是Java的组件架构。由于会使用EJB解决方案的企业都属于中、大型公司,而这些
公司通常都属于财力雄厚的企业,因此愿意并且有能力花大笔的经费在建制EJB应用
系统之上。这个市场获利丰厚而且具有主导应用系统架构的力量,吸引了世界一流大
厂和许多著名的厂商开发和提供EJB应用程序服务器,当然也不乏许多小厂商想通过
这个新的组件市场而功成名就,因此为数众多的软件厂商便在这个拥挤的市场中拼得
你死我活了。举凡IBM、SUN、HP等世界级大厂都加入竞逐的行列,这些厂商原本就是
在UNIX工作站和大型Mainframe的死敌,自然不愿意让其他的竞争对手有机会独大于
重要的EJB市场。经过了数年的争斗之后,IBM和BEA已经很明显地居于领导的地位,
Borland和SUN等则处于第二领先群中。IBM通过庞大的公司资源以及硬件的交互支持
成为数一数二的EJB厂商,BEA则是由于最早进入EJB市场并且通过高知名度的Tuxedo
掩护成功地打入企业市场。至于SUN,虽然是Java技术的领导厂商,但是推出的软件
产品一向令人不敢恭维。继当初的Java Workshop失败之后,EJB应用程序服务器iPlanet
说实话一点也不好用,功能和执行效率也比不上竞争对手。要不是靠SUN的金字招牌,
iPlanet绝对无法在EJB应用程序服务器市场占有一席之地。

不过EJB应用程序服务器市场虽然逐渐分出胜负,但是在高度竞争以及许多EJB应用程
序服务器厂商以免费作为诉求的同时,厂商不但必须投入极大的资源研发最新、最符
合JDK和EJB规范的产品,还必须浴血奋战。这从观察EJB应用程序服务器的授权价格
不断往下降就能看得出来,由于EJB授权价格快速地下滑,因此许多EJB厂商面临了困
境。许多只占有极小市场的厂商开始无利可图,进而把价格压得更低甚至采用免费方
式和大厂竞争,这造成了即便是市场领导者也无法避免这个风暴的局面。由于IBM主
要标是硬件销售,再搭配WebSphere,因此对于EJB应用程序服务器价格下滑仍然不感
吃力。但是对于BEA和SUN来说,却是压力巨大,因为BEA的收入几乎就是靠EJB应用程
序服务器,而SUN则在投入了大量的资源研发iPlanet之后,不但在市场占有率上无法
做大,又面临价格快速下滑,当然就吃不消了。

因此,在2002年8月,SUN的EJB部门副总裁公开宣示,各EJB应用程序服务器厂商如果
再持续进行不计血本和免费大放送的劣质竞争,那么EJB应用程序服务器将提早出现
大幅衰退的现象。当然EJB应用程序服务器价格下降是有利于使用者,但是这也将让
所有的EJB应用程序服务器进行毁灭战,EJB大厂必须通过坑杀小厂以取得更多的市场
占有率来弥补。最后可能剩下不多的选择以及品质开始下降,对于企业级的使用者,
这是福是祸呢?



■ 行动和消费端的竞争

SUN一直想让Java主宰所有的软件市场,从大型企业的应用系统一直到消费端的行动
解决方案,因此除了在Java语言以及企业的J2EE架构之外,也非常积极地力推JINI和
J2ME等技术。如果SUN能够让Java同时在中/后端企业应用系统以及移动设备市场大获
全胜,那么上下交攻,Microsoft的领域势必被严重地压缩。不过SUN的如意算盘似乎
是出了状况,Java OS和JINI一直是雷声大雨点小,SUN数年的心血似乎也一直无法让
这两个技术成气候。反观Microsoft,虽然在桌面型应用领域独占鳌头,但是在消费
端的应用一开始是处于劣势的。Win CE开始并不见声势,又被Palm OS压着打。但不
屈不挠似乎是Microsoft反败为胜的惯例,Win CE在2、,3年的努力之后已经到了和
Palm OS平起平坐的地位,Pocket PC又逐渐受市场欢迎,Microsoft也介入传媒和移
动电话的市场,并且以X-BOX进入家庭游戏市场,一再显示出Microsoft在消费端的电
子行动设备方面已经悄悄地建立起了一片江山。在.NET以相同的技术和Framework允
许开发者同时开发企业以及消费端和行动解决方案之后,Microsoft结合消费端和桌
面型的优势将对SUN形成强大的竞争压力。如果Java无法在消费端和电子行动市场成
长得如同其在企业端的绝对优势,那Java在消费端的力量将遭受严厉的挑战。



■ 语言的对抗

Java通过简洁的语言风格和虚拟机器提供的安全执行环境获得了开发者的广大回响之
后,其他语言当然也不会坐以待毙,新的语言势必出现,以求对抗Java。当初Java能
够成功地采纳C/C++语言的好处并且开发出新的面向对象语言,其他的新语言也可以
学习Java成功的地方,融合更多现代的需求以求超越Java。C#就是一个很好的例子,
C#在许多方面都学习了Java,却又加入了Object Pascal的优美特性,成功地塑造了
新语言,分散了Java群组的使用者。Gartner Group的调查就显示了C#将同时侵蚀C/
C++和Java的使用群,更不用说许多原有的语言了。此外VB和Object Pascal也会或将
要推陈出新,巩固原有的使用者群,并且在新的.NET虚拟环境中吸引从Java转战而来
的使用者。很显然,Java现在的处境已经慢慢地失去了独尊的地位。

当然,Java解决方案尚有许多其他的挑战和问题,但如何面对和解决上面重要的问题,
是所有Java厂商以及SUN要尽快解决的。虽然现在没有人知道未来Java的趋势,不过
唯一可以确定的就是Microsoft正在一步一步地逼近之中。



JBuilder未来的开发

JBuilder从2.0开始成功地执行了一个有效的竞争模式:先从产品功能面竞争,稍后
再配合市场策略一举攻上王座。虽然JBuilder后半段以每半年一个版本的速度杀得对
手措手不及,不过快速升级的方式也造成了一些后遗症,那就是由于改版速度太快,
造成许多JBuilder客户以跳版本的方式来升级。例如JBuilder 4的客户更新到
JBuilder 6,JBuilder 5的客户则升级到JBuilder 7。

当然JBuilder快速升级方式和Java开发工具的竞争有关,但是很大一部分原因也是因
为Java的JDK经常更新,迫使Java开发工具必须跟上Java JDK的脚步,否则就有被淘
汰出局的危险。因此为了兼顾Java快速开发和使用者的权益,JBuilder在快速开发之
后的下一个阶段也许应该考虑推出1年套餐版,让使用者在付费之后的1年内都可以免
费升级吧。

Borland的JBuilder还在快速的开发之中,精彩的故事也一定会持续发生,也许1、2
年之后,再让我们回首,又将看到许多可歌可泣的故事,这就留待日后的书籍来叙述
吧。当读者看到本书时,JBuilder 8可能已经在市面上销售,而JBuilder 9可能也在
开发的阶段,这就是Java充满活力、进步快速的特质。喜欢Java吗?那么就接受这个
高度动感的世界吧!

你可能感兴趣的:(Borland传奇,java开发工具,jbuilder,borland,java,microsoft,编译器)