服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

netbeans或吞并creator 同室操戈为哪般?

    1. netbeans与creator同室操戈 

    最近这段时间,sun旗下两款java集成开发环境,上演着一出同室操戈的“喜剧”。一款是老牌劲旅netbeans,另一款则是后起之秀sun java studio creator。netbeans的“老牌”,从它的历史可以追溯到十一年前的一九九六年可见一斑。而“劲旅”一词,资深的java程序员们肯定会点头同意。相比之下,sun java studio creator要年轻许多,这个后来者是二零零一年才被提上sun的议事日程的,而那时,前辈netbeans已经5岁了。不过,creator的成长十分茁壮,在java web应用开发领域,有着相当不错的表现,因此,称其为后起之秀丝毫也不为过。 

    netbeans与creator都是sun寄予厚望的两款java ide,一直备受sun的呵护。手心是肉,手背也是肉。在过去的几年中,sun似乎未曾偏爱过其中任何一个,两碗水端得很平。netbeans照旧迈着老牛般沉稳的步伐,随着java平台的更新换代,不紧不慢地推出新的版本。又或当sun发明一个什么新技术时,netbeans也随声附和地往自己身上添加一个插件,保持着和sun的一致步调。与netbeans对新技术兼融并蓄来者不拒的宽容态度不同的是,creator在眼花缭乱的新技术面前表现得相当淡定,除了那些有助于快速可视化开发的技术以外,creator并不一味追随java的时尚潮流,而是以sun为其设定的目标为准绳和尺度,衡量着哪些技术应该包含进来,哪些技术则应该大胆放弃。 

    sun的意图是相当明显的,netbeans是为java高手打造的精良武器,而creator则是专为java初学者搭建的游乐场。netbeans采用最新的技术,支持最新的平台版本,一个资深的java程序员,在netbeans中如鱼得水,可以完成任何java理论上能完成的工作,开发出精巧的、散发着java咖啡浓香的、让java专家们颌首称赞发出会心一笑的应用程序。creator则没有这么严谨了,初学者无需太多的java背景知识,一本书没看完就可以充满信心地投入creator的怀抱。在creator的游戏场上尽情玩耍,或爬或行,或跳跃或匍匐。只要能摘到java树上的那枚青果,你的程序就算编出来了,至于是否符合体系结构的要求,有没有冗余或者缺欠的代码,都不太重要。 

    netbeans和creator如此相安无事多年后,平衡终于被打破,sun开始在两者之间犹豫不决。随着版本的更新,netbeans和creator逐渐偏离了预期的轨道。一方面,netbeans的用户不再满足于过分追求纯粹的java味道,快速可视化开发所带来的效率的提高,让他们对netbeans的易用性提出了新的要求;另一方面,随着java ee 5的发布,sun启动了简化java开发的战车。新技术的推出,无不朝着易用性方向发展,越来越多的初学者,经过简单的培训,同样可以编写出有板有眼的、让java高手挑不出大毛病的java程序――creator下jsf应用的开发就是一个明证。种种迹象表明,netbeans和creator已经开始出现某种程度的重叠,creator能做的,netbeans也能做到,sun渐渐陷入为同一个市场维护两条功能相似的产品线的尴尬境地。作为一个商业公司,这显然不符合经济原则,资本对利润的追求,股东对红利的期待,或许会迫使sun痛下断其一臂的决心。

    2. sun与netbeans姻缘契合 

    netbeans是作为一个教学项目于一九九六年启动的,当初的名称并非netbeans,而是叫做xelfi。老程序员们一定不会忘记一九九六年,那时有个誉满全球的ide,那就是borland公司的delphi。很明显sun是受到了delphi成功的启示,xelfi项目的目标正是开发一个类似于delphi的java ide,而且,为了证明java的无所不能,这个ide本身的开发语言毫无悬念地选择了java语言。很快,xelfi的第一个预览版本在一九九七年发布,虽然是个不成熟的产品,却给当时的java ide领域带来一股清新的空气。要知道,那时还是字符界面ide的王国,尤其是对java语言来说,xelfi是第一个图形化的java ide,其意义重大而深远。 

    参加xelfi项目的那批学生是幸运的,也是敏锐的,他们意识到xelfi的商业价值,于是在毕业后,他们决定将xelfi进行到底。找朋友、托关系,他们或求或借,终于弄到web空间,一家以xelfi为核心的公司成立了。xelfi是一个令人非常感兴趣的项目,几乎所有参加过xelfi的学生都参与到了netbeans中,直到今天,在netbeans的邮件列表中,仍然可以看到他们的名字。 

    要使xelfi运作起来,必须将其作为一项商业活动来进行。来自企业家roman stanek的投资,将xelfi推上了商业化的轨道。有趣的是,xelfi最初的商业目标是开发具有网络功能的javabeans组件。xelfi的架构设计者jarda tulach给这种组件命名为netbeans,ide的目标就是协助开发netbeans――这就是netbeans这个名字的来龙去脉。后来,sun的ejb标准发布,具有网络功能的javabeans成为现实,用xelfi来开发具有网络功能的javabeans已是多余。与sun去竞争显然是不理智的,因此,xelfi决定接受ejb规范,不过netbeans这个名称被保留了下来。 

    一九九九年春,netbeans developerx2发布,支持swing。不过,这时的netbeans一直受到性能问题的困扰,这主要是因为java平台本身的性能不高。直到一九九九年秋,当sun发布jdk1.3,大幅优化了java平台的效率后,netbeans developerx2才成为java ide的一个可以考虑的选择。这年的夏天,netbeans的开发小组对netbeans developerx2的结构进行了重新规划,这个更模块化的netbeans结构,成为此后netbeans发展的基础。 

    也许,一九九九年对于netbeans来说,最重要的事件莫过于sun的介入了。当netbeans的开发小组努力工作的时候,sun正在为市面上缺少好用的java ide而发愁,因此,netbeans引起了sun的注意。作为java的发明者,sun的一举一动备受瞩目,当sun把目光投向netbeans,开发小组有种梦想成真的感觉。成为java发明者的旗舰开发工具,多少公司为此奋斗多年也未能如愿,netbeans的不懈努力终于迎来了丰厚回报。是年秋天,一个收获得季节,当netbeans的下一代产品投入beta测试时,netbeans与sun的合作协议签订了。

    3. netbeans“巧计”入sun 

    第一个正式采用netbeans这个名称的是netbeans的2.0版本。一九九八年,为了推广netbeans,企业家roman stanek率领netbeans的开发团队,参加了sun的javaone大会。这时的roman stanek实际上也是netbeans团队的队长,因此,推广netbeans他责无旁贷。roman stanek率队参加java one大会的目的,除了向观众展示netbeans以外,还有一个更大的野心,那就是吸引sun的注意力。为此,他设法邀请jonathan schwartz来到netbeans的展台,并安排技术人员演示了netbeans的功能。jonathan schwartz是sun公司java技术联盟的负责人,他决定哪些公司可以成为sun的盟友。roman stanek的苦心没有白费,jonathan schwartz答应在一九九九年邀netbeans加盟,于是出现了上文sun和netbeans的合作。一九九八年javaone大会上的netbeans是幸运的,更为幸运的是,“介绍”netbeans加入sun的jonathan schwartz,后来成为sun的ceo,并且一直关注着netbeans的状况,使netbeans获得了来自sun最高层的强有力支持。 

    被sun纳入java ide版图后,netbeans的发展并非一帆风顺。sun收编netbeans的原因很简单,sun没有一个拿得出手的java ide,来帮助推广java语言和平台。sun自己倒是有ide,但是,不论是java workshop还是java studio系列产品,都存在这样或那样的不足,难以使用。因此,在收编netbeans的同时,sun还拉拢了forte,因为forte的synerj ide和netbeans一起,是当时最好的两个java ide。sun把这两个ide融合在一起,推出了一个称为“forte for java”的ide。forte for java有三个版本,分别是社区版、互联网版和企业版。社区版是免费的,而用于在web服务器上开发后端软件的互联网版,以及用来开发大型分布式java应用的企业版则是收费的。可惜,forte的表现不尽人意,虽然在java开发者中还算流行,但一直不温不火,难成sun所期待的燎原之势。更为糟糕的是,一方面forte成大气候的希望渺茫,另一方面,用户对新功能的贪婪胃口,却又带来无止境的成本消耗,forte成了sun掌中的烫手山芋。 

    好在sun眉头一皱计上心来,想出了一个绝妙的主意。将netbeans据为己有不到一年后,在netbeans上难有作为的sun决定放虎归山,而且这次sun做得相当彻底,因为sun决定将netbeans开源。于是,二零零零年六月,netbeans迎来了其发展历程上的又一重大机遇,这个机遇对于netbeans来说,其意义或许超过了其加盟sun公司。 

    netbeans的开源是sun的一石二鸟之计,一方面摆脱了forte带来的尴尬处境,另一方面,开源又为sun赢得了开发者的信任,在业界树立起敢于奉献的良好企业形象。尽管sun的开源举动多少有些政治目的,但客观上,开源将netbeans带入了一个快速发展的阶段。netbeans是sun资助的第一个开源项目,sun负责开源组织架构的管理和维护,并且为netbeans建立了一个专门的网站,那就是netbeans.org。开源后的netbeans势头迅猛,版本的更新速度加快,奖项和荣誉如雪片般飞来,越来越多的工具包被开发出来并加入netbenas中,而netbeans一词也逐渐成为出版物中的出现频度最高java开发工具之一。sun的开源决策助netbeans取得了出乎意料的成功。

    4. 微软的挑战促使creator的诞生 

    sun java studio creator的诞生,看似偶然,其实有其必然性。二零零一年快要结束的时候,sun的几个高级工程师聚集在一起,讨论是否要开发一个新的java ide,于是有了后来的sun java studio creator。那时候netbeans已经开源,netbeans的开发小组度过了艰难的头几个月后,终于与来自世界各地的开发者磨合在一起,正信心百倍地朝着netbeans的下一个版本前进。 

    creator的诞生,与netbeans的关系其实并不大,而来自微软的挑战倒是促成creator出台的最主要原因。二零零一年的时候,微软的vb和asp大举攻城略地,vb以其快速和易用的特性,成为许多刚刚走出校门的大学生的首选开发语言,而asp也在web开发方面独占鳌头。sun看在眼里急在心里,眼看着有着更良好技术架构的java,却不能在与vb和asp的角逐中稍占风头,sun明白,自己缺乏一个对初学者有吸引力的集成开发环境。这方面,恰恰是微软的强项,从操作系统到应用软件,微软的产品最为人称道的就是其易用性,复杂的操作系统安装、数据库设计、文字排版甚至项目管理,只要用上微软的软件,一切都轻而易举。 

    所以,sun推出creator的目的现在非常清楚了,那就是模仿微软visual系列开发工具在易用性方面的特点,给java初学者提供一款快速可视化集成开发环境,以吸引那些初出茅庐的程序员,同时给准备转投java阵营的vb/asp开发者一个弃暗投明的更充分理由。 

    也许有人会问,netbeans不行吗?确实,那时的netbeans并不适合初学者,也不适合习惯了在微软可视化开发环境中拖拖拉拉的vb/asp程序员,因为netbeans是面向java资深程序员的,他们喜欢在一个文本编辑器中如痴如醉地敲入一行行代码,而不是用鼠标拖过来放过去。所以,尽管开源后的netbeans已经崭露头角,并且表现出良好的发展前景,但sun仍然需要为java初学者们准备一台傻瓜相机,好让他们只需简单地按动快门,就可以拍出曝光适度的第一张java照片。 

    支持快速可视化开发的ide用起来容易,可是要开发这样一个ide,却不那么简单了。另起炉灶几乎是不太可能的,一方面投入过于巨大,另一方面,也是最重要的,微软不会善意地停下来,等着sun迎头赶上。因此,自然而然地,creator的开发小组想到了netbeans这个前辈。以一款现有的ide为基础,对其加以修改,以适应新的需求,无疑是更为理智的做法,既能降低开发难度、节省开发成本,又能赢得更多时间,尽快缩短和微软的差距。就这样,netbeans成了creator的出发点。 

    可惜,即使有netbeans打底,事情也没有想象的那么简单。最理想的方式当然是直接修改netbeans的代码,甚至架构,使其具备支持快速可视化开发的能力。这样,只需用一套与netbeans不同的gui来重新包装,就可以炮制出一个全新的ide。但是,在已经开源的netbeans上,这样做非常困难,因为底层代码的任何一点修改,都会影响来自世界各地数量庞大的开源开发者,所以几乎是不可能的。因此,万般无奈之下,creator开发小组只好从netbeans的代码库中形成一个分支,在这个分支上开发creator,而让netbeans继续沿着自己既定的路线前进。

    5. creator与jsf的集成 

    熟悉jsf的人们一定记得,creator诞生的二零零一年,也是jsf生命的起点。二零零一年五月,sun在jsr#127中提出制订一个以用户界面框架为目标的规范,经过半个月的投票表决,se/ee执行委员会以十票同意、五票反对和一票弃权的结果批准了jsr#127,这就是javaserver faces规范,即jsf。开发creator的想法比jsf规范稍晚几个月,因此,当sun决定为creator立项时,jsr#127已经得到了批准,也就是说,creator完全可以面向jsf技术。 

    creator开发小组正是这样决定的。creator的一个主要目标对象是vb/asp开发者,而jsf又标榜以简化java web开发为己任,因此,creator的第一个版本,顺理成章地定位为基于java语言的、jsf应用的快速可视化集成开发环境。与netbeans不同,creator在其界面上表现出诸多支持快速可视化开发的特征,例如供拖放组件用的组件面板,方便管理数据源、ejb和web services的服务器导航器,上下文敏感的动态帮助,简单的应用服务器部署以及web应用的调试工具等等,不一而足。 

    creator的开发肯定是被jsf规范拖了后腿。jsf规范也许是java历史上最“难产”的规范之一。二零零一年五月底,jsf专家组成立,着手制订规范文档。历经多次的讨论和修订,jsf规范的1.0版,在差不多三年后的二零零四年三月,才得以面世。creator既然是用来开发jsf应用的,当然必须要等到jsf规范正式出台后,才能竣工,因此,直到二零零四年六月,也就是jsf 1.0发布后三个月,sun才向公众宣布sun java studio creator的面世。 

    在creator中,sun将jsf应用的开发简化到了前所未有的地步。sun在creator中显示了对初学者的关怀,缺省情况下,creator的安装包括了一个数据库和一个应用服务器,并且是已经配置好的,当creator启动时,配套的数据库和应用服务器也同时自动启动。这使得初学者不用为配置开发环境而大伤脑筋,很多初学者往往因为无法成功配置数据库或应用服务器而放弃使用某种ide,sun试图通过绑定这两种服务器来避免这种情况的发生,可见sun在creator上是费尽苦心了的。 

    不用为开发环境烦恼,然后开发者才有心情体验creator的快速可视化jsf应用开发。笔者曾经有幸试用过creator,确实非常优秀,在java语言环境下,第一次像在微软的visual studio中那样,用鼠标拖放组件,给人一种非常奇妙的感觉。jsf的组件被放置在一个组件面板中,创建一个jsf页面后,从组件面板中拖放一个组件到页面上,后台自动生成相关代码。那时笔者正在使用jbuilder开发一个jsf项目,试着比较jbuilder中手工编写的代码和creator自动生成的代码,发现有许多不同之处,creator的代码要复杂得多,有很多代码是笔者所不能理解的。可见,creator与jsf的集成非常紧密,几乎发挥了jsf的全部特点。 

    与jsf高度集成,在后续的creator版本中依然保持得很好,二零零五年初发布的creator 2支持jsf1.1,随后来发布的creator 2的更新版本creator 2u1则已经可以使用jsf的最新版本1.2了。不管从哪个方面考察,creator都是最优秀的jsf应用开发工具,因为它们的目标相似,志同道合,所以配合起来天衣无缝。“designed to be tooled”的jsf唯有依靠creator才能一展歌喉,而creator也凭借jsf嘹亮的歌声,赢得了java web开发者青睐的目光。

    6. 融合意味着结束 

    各自度过了几年平静而美好的时光以后,netbeans和creator终于走向了融合。当netbeans 5.5发布时,开发者们惊喜地发现,一个名为visual web pack的工具包赫然出现在下载清单中。官方网站上对vwp的介绍非常简洁:通过拖放组件来可视化地构建web应用,不过,一行“将creator项目移植到vwp”的文字,隐晦地道出了vwp的真实身份和目的。其实,用融合来描述netbeans和creator的关系是不恰当的,准确的说法,或许应该是吞并,netbeans吞并了creator。因此,netbeans和creator的融合,可能意味着creator的结束。 

    事实确实如此,安装vwp后,在netbeans中即可以开发jsf应用,其操作界面和creator完全一样,甚至连vwp的某些文档,都借用了creator的。整个netbeans和creator的开发社区很快都明白了这样一个事实,于是,论坛中关于这一事件的讨论此起彼伏。 

    creator向vwp的过渡,除了商业上的不得已,其实也有技术上的考虑。前面说过,netbeans的过人之处,是时刻紧跟java标准和版本。当jdk 1.5发布时,netbeans发布了5.0版本来支持它,然后,当java ee 5发布时,netbeans又发布了5.5版本呼应。而creator呢,由于是从netbeans 4.1的代码库分支出去的,并没有享受到netbeans对新技术快速支持所带来的好处,甚至不支持jdk1.5。本质上,creator只是netbeans部分模块的一个新包装,这个新包装的初衷是给用户提供netbeans所不具备的快速可视化开发特性,但是,当netbeans从3.6一路发布到5.0时,netbeans对快速可视化开发的支持,已经今非昔比了。 

    所以,从技术上看,将creator作为netbeans的一个插件是更合理的解决方案。开发一个netbeans的工具包远比开发支持jdk 1.5的creator新版本容易,而且,这个工具包能够搭上netbeans的快车,紧随java标准和版本的步伐,充分利用java新技术和新版本带来的好处。于是,creator小组没有继续开发creator的下一个版本,而是给netbeans送去了一份大礼,那就是netbeans 5.5中的visual web pack。 

    creator向vwp的转变相当成功,vwp对creator功能的覆盖率到达了百分之九十。虽然还有百分之十的遗漏,例如对web service的支持,对portal开发的支持等,但vwp承诺,在其下一版本中,将实现这些遗漏的功能,这样,creator的用户就可以完全转向netbeans+vwp了。

    7. 新生命的开始 

    vwp的出现,对netbeans的用户来说,无疑是一件喜事,不过,creator的用户就不免有些伤感了。毕竟creator是一款非常优秀的java web快速可视化开发工具,曾伴随着开发者走过了很多项目,大批开发者对creator爱不释手,甚至有人在论坛上发出“i miss you,creator”的叹息。 

    但是,感情归感情,creator其实也有不足,转移到netbeans是其更好的出路。creator的开发一直滞后于jdk的版本,而且对新技术的跟进速度也过于缓慢。另外,为了简化开发环境的配置,creator捆绑了sun的application server,这也是creator所支持的唯一的应用服务器,在应用服务器层出不穷的今天,缺乏对应用服务器的选择权力,是creator用户最大的遗憾之一。这方面,netbeans就要开放得多,包括tomcat、jboss、websphere、weblogin在内的主流应用服务器,都可以在netbean中使用。 

    再有,creator是纯粹的web开发工具,非常专业,但不够广博,不支持 web service的开发,不支持ejb的开发,也不能运用uml技术,如果要做这些事情,creator用户不得不利用其他开发工具。而这些,在netbeans中一应俱全,用户只用一个ide,就能完成所有的工作,并且享受高度集成所带来的便利。 

    保持两套ide所带来的另一个不便,就是项目的移植,而这种移植,多半是从creator往netbeans方向进行,因此,creator用户经常要为项目能否成功移植而担忧。netbeans和creator合二为一后,这项工作不再需要,开发者可以集中更多的精力编写他们的程序。 

    虽然creator的消亡还没有成为事实,但是,趋势已经非常明显,在netbeans.org上,关于netbeans下一版本6.0的讨论如火如荼,而creator的下一版本creator 3则要冷清得多。已经有几篇关于停止creator开发的sun技术人员博客见诸互联网上,sun在论坛中所作的调查结果也显示,百分之九十以上的用户支持creator向visula web pack的转变。甚至有性急的开发者,早以摸索出从creator向vwp移植项目的路子,非常热心地向creator用户介绍着。 

    美好的事物总是令人怀念,creator用户的伤感,是对creator成就的最高评价。理智上,我们希望看到creator的结束和vwp的诞生,但是,感情上,我们更愿意相信,creator其实没有离开我们,这条可爱的小毛毛虫只是长大了而已,它褪去身上的毛衣,化作一只美丽的蝴蝶,轻轻降落在netbeans这棵树上,扇动着翅膀,给我们送来阵阵花香。

扫描关注微信公众号