光学字符识别技术:慧眼读世界
正是在这里,两个阵营之间存在着最深刻的利益分歧;而这场争执的结局当然也将决定j2ee(乃至java企业开发)的最终走向或许两年之后,我们将从纷争中胜利者一方的角度重述j2ee的整部历史——或许两年之后的j2ee本身也将随着纷争的解决而成为历史但让我们换个乐观的口吻:问世五年,j2ee的历史仍在持续的创生之中;此时善待这树种的人,也必在Java的历史有哪些今后的树荫下获得它的祝福
记得kruglinski在名著《inside visual c++》的某个版本中给出了一个web浏览器的代码例子;在这一节的开头他说到:如果你几年前开发了一个web浏览器,那肯定会给你带来上千万的收益;但如果你现在才想到开发这个东西——那也就是个c++语言的练习罢了在今天的程序员眼中,应用服务器似乎也成了价格低廉(如果不是全然免费)的日用消费品所以,想要理解它们在那几年的大行其道,就非得借助kruglinski这样的智慧不可在1999年底,市面上可以找到30种以上自称“java应用服务器”的产品,可见当时这类软件是网络风险投资的宠儿但是此时出台的j2ee规范就像是一阵席卷整个产业的劲风,java就业前景在一夜之间,所有人都有了判断什么是一个“应用服务器”的权威途径
微软公布visual studio 2015版本与价格策略
说到这里,我们才梳理出了j2ee技术规范的第一个版本在1999年12月问世的实际意义首先,它为java企业开发提供了一幅清晰的全景,各项分支技术在这个领域中的地位和作用得到了客观、准确的定义至此大家才对一个java企业解决方案的构成要素有了基本共识其次,它使用“容器”和“组件”等概念描绘了java企业系统的一般架构,明确地划分了中间件厂商和应用开发者的职责所在最后(但绝非最不重要地),j2ee通过一套公开标准规定了应用服务器产品的具体行为,在执行此标准的厂商产品之间实现了一定程度的可替换性和互操作性
技术Java是什么的离心力
前面描述的离心现象毕竟还遵循了j2ee发展的内在逻辑,说到底,ejb的革新和web services的引入更多地是主流厂商倡导的结果但在近年来,还有一股更强劲的离心潮流在深刻地影响着j2ee的演进,它肇始于上文提到的开源软件运动最初它只在rickard oberg的动态代理rmi设计与jboss服务器的微内核架构中显露过邪恶的一角,但是两三年来,经过多个项目、各种技术杂志/论坛/blog的折射和放大,它已经形成了一个名为“轻量级容器架构”的完整解决方案,并暴露出完全取代传统ejb架构的终极野心按照这一运动信徒们的说法,j2ee的发展史上只出现过一个错误——不幸的是,这个错误名叫ejb
起点
除了Java程序员applet客户端有些特别之外,上述系统与今天常见的j2ee架构很接近;尤其是业务对象编码也由home类、pk(主键)类、entity类等部分构成,很多机制都与ejb如出一辙——只不过这些类并没有继承javax.ejb包的接口,而是采用了专用的api它与ejb之间的相似不像是偶然的,设计者肯定参照了sun在1997年底推出的ejb 1.0技术规范
社区大于代码 从apache之道看中国开源发展
在j2ee五年之后,人们只能交替地用这两种目光审视它的演化历程它的起源与它的目的、“它从何处来”与“它往何处去” 的问题紧密地交织在一起,谁拾起了其中的一个,谁也就要连同另一个一起回答
上面说过,在它的孵化阶段,sun的j2ee团java队主管是女强人mala chandra,她本人虽不是工程师出身,但对技术有着很强的感知能力和想象力;j2ee一出台就能够为人们提供一幅完整、直观而不失深邃的图景,此中当然有chandra本人的大量贡献在她直接领导下工作的几位工程师,也都是sun内部非常杰出的人才无论是制定了jdbc、jms等规范的mark hapner、javamail的设计者bill shannon,还是ejb的主要设计者vlada matena,后来都是业界一言九鼎的技术领袖这个班子的合作时间并不太长:2000年左右的那个时期正是it界创业的黄金年月,chandra很快就和sun公司java部门的总裁(也是创造java的功臣之一)alajava编程思想n baratz一起,到一家刚起步的email中间件公司zaplet淘金去了;捷克裔的开发天才matena也离开sun开办了自己的公司留下的两个人hapner和shannon先后担任了j2ee技术的首席设计师
在“j2ee”这个缩略语被第一次介绍给世人的时刻,也许没有几个人可以预料出它在日后的奇特历程那是在1999年6月的javaone年会上,时任sun公司java企业开发部门主管的mala chandra兴奋地预告了java世界的这位新成员那些不熟悉背景的听众们,揣摩着她演说中出现的一串串全新术语,表情大概又是惊喜、又是迷惑:一个完整的“多层企业开发架构”、以“容器”和“组件”的形式提供服务、一套“厂商中立java就业前景的开放技术规范”、对开发者隐藏了不同平台和“中间件”的技术细节、实现了企业级应用间的“无缝集成”等等在今天的开发者看来,这些似乎都已经是老生常谈,但在当时的场景下,闪动在幻灯片上的每一个口号,都意味着听众们事后又要经历一段困难的学习过程
要想理解这段话在当时的实际效应,我们仍然要把时间指针拨回1999年除了预备迎接千年虫之外,99年你做了什么?为了回答这个犀利的问题,我翻出6年前的工作记录,发现了自己那时参与的一个项目的规格说明书,它正好能提供一幅“java企业开发”在1999年的标准照这是一家日本知名it厂商的企业信息管理系统,运行在netscape 3.0 gold浏览器中的java applet界面,通过一个专用的Java学习资料中间层系统与oracle 8数据库连接这个中间层已经相当现成、完善,能够提供远程对象调用、事务处理等一系列的底层服务;留给我们的任务只是完成服务器端业务对象代码,以及相应的客户端交互开发
换言之,在5年的演化中,j2ee发生的最大变化可能就在于它放弃了对“分布式对象模型”的强调ejb2.0引入的本地接口使得web层与ejb层可以运行在同一个java虚拟机中,从而使web容器与ejb容器的物理分离部署变成一种昂贵的冗余;j2ee 1.4以后版本支持的web services兼容性,使得客户端可以通过粗粒度的web接口调用远程服务——这两次变化事实上都是在论证“分布式对象架构”的无用性人们发现,同一系统的各个分层最java的基本概念好采用细粒度接口调用,并且运行在同一个进程中;之所以划分不同的层次,与其说是为了实现物理上的可扩展性,不如说是设计美学上的考虑而对于异质系统之间的调用,则应该尽量选用异步的、粗粒度的服务接口(所以web services成为了非常理想的选择)换句话说,传统上的“分布式对象架构”,现在看来似乎只适合于银行远程支付等要求极为苛刻的应用场景,而绝不是所有j2ee应用都该考虑的标准方案
但在狂热的开源运动支持者看来,以上论证的大前提就是可疑的“难道只有会做广告的软件才是好软件?mysql有过多少广告预算”争论的双方都认为对手误解了软件商业模型的实质究竟谁才掌握了这里的真理呢?也许只有根据j2ee的未来——也就是Java工作好不好找它的目标和终点(telos)——才能做出最终的裁决
(:刘天北:方舟)
相关文章
很容易注意到,j2ee与java社区的决策机制jcp(java community process)是几乎同步产生的j2ee下属的各种技术规范,包括1.4版之后的j2ee本身,都作为待决规范议案(jsr,java specification request)被纳入了jcp的议程这些议案的审议过程很少是一帆风顺的,几乎每一个都要经历18个月以上的拉锯战在多项技术规范的审议过程中,我们都见到了这样的现象:最初列名审议委员会的某家主要厂商,没能等到该规范通过就已经被收购或倒闭了与微软在.net平台上的乾刚独断相比,j2ee发展中的这个“牛步”特征虽说是审慎Java学习资料和民主的表现,但终归不符合软件演化应有的速度
考察事物的演化,通常有两种对立的方法考古学家(archaeologist)探究肇始和起源;目的论者(teleologist)则揭示目的和终点对于前者,“开端(希腊语arche)”从根本上决定了此后的发展,参天大树的繁茂都包含在种子最初的萌芽中;而对于后者,“目的(telos)”才是事物的根本和旨归:谁没见过样态完善的树,谁也就没法弄懂种子到底是怎么回事
多年以后,hapner回忆起j2ee初创的那个时期,深感如今sun对java的左右能力已经大不如前:“现在,java事实上属于整个技术社区,它的发展有赖全体参与者的推动”的确,如今sun已经不太可能重演当年的开拓性功绩,Java程序很难再为一个已经成形的领域重绘版图但正如上文所说,即使是在1999年,j2ee设计者们面对的也不是一张从未着墨的白纸他们的设计始终要以各大厂商的现有产品为出发点,这也是天才的设计师们做出的设计却远非完美的原因之一:与从头设计一门全新的编程语言不同,j2ee规范从一开始就是各方博弈和妥协的产物
今天的j2ee在多大程度上符合它的初衷?回答这个问题并不涉及对j2ee技术成败的评判,而只是要考察一下:它是否还运行在最初开辟的那个空间之中在事务处理、对象分布化和web请求处理这三个方面中,也许j2ee对事务和web保持了一贯的忠诚我们记得fleury喜欢重复的一个信条:“he who owns the transacti主要优点onal web owns the web(谁掌握了带事务处理的web,谁就掌握了web)”web接口是今天大部分j2ee应用暴露的唯一接口;而虽然事务处理的常用方法已经有了很大改变(借助aop机制,很多非ejb架构的系统也自如地实现了声明式的事务处理),但对事务的重视当然仍将是j2ee开发中的要素之一
由开源项目的三种发展状态看中国开源社区
欢迎在新浪微博上关注我们
无论叫它什么,高端产品的开源化/免费化运动注定要在j2ee产业的发展过程中制造显著的后果“jboss的行径恶化了j2ee的商业环境,”这是mcnealy先生2002年的著名论断他的推理过程如下:只有做好商业推广,j2ee产品才能最终击溃邪恶的.net平台;但开java编程思想源服务器会降低主流厂商的销售利润;销售利润越低,用于商业推广的预算就越少;因此,整个j2ee阵营都将受损于jboss
换言之,在j2ee诞生伊始的语境中,市面上已经存在着很多程度不一的“准j2ee中间件”了它们主要用于解决三大类问题:事务处理、分布式对象管理和web请求处理首先,事务处理管理器(transaction processing monitor)一直是高端企业计算领域的热门产品,著名的应用服务器厂商bea,正是通过收购事务处理软件tuxedo进入中间件市场的另一方面,从90年代初开始,越来越多的人把“n层分布式对象架构” 当成传统的客户端/服务器架构的替代方案那时刚刚兴起的corba技术是推动这一趋Java的优点有哪些势的重要力量(比如说,前面提到的那个由日本厂商自行开发的专用中间层,就采用了corba作为基础架构)最后,java技术在web领域中的应用也是当时初露头角的热点1997年6月,sun在发布一款“java web server”的同时第一次公布了servlet api;没想到这项技术副产品(连同1998年问世的jsp)正好迎合了厂商的战略需要对于上面提到的n层架构来说,http服务是一个非常理想的前端;所以基于java的web引擎,也在此时成了企业级java解决方案的一个必不可少的部分
社区的形成
评论
java、web、事务、分布式对象,这几股开发潮流汇合在一处,形成了当时最热门的产品“应用服务器(application seJava学习rver)”或“中间件(middleware)”为了给定语“最热门”作个注释,我们可以参照一下bea公司在1998年收购web应用服务器厂商weblogic的成交价:1.92亿美元而这并不是一桩孤立的收购,netscape和sun也以相近的价格买下了另外两家企业kiva和netdynamics而这也正是j2ee规范出台的背景:几乎所有要厂商都推出了、或是正在赶制自己的应用服务器产品,但这个“应用服务器”究竟应该是什么东西,竞争者们又各有表述、莫衷一是
社区协作 中国开源生态系统报告正式发布
为了获得一张j2ee竞技场的入场券,各家厂商面临两项考验:首先,要具有能够覆盖j2ee中所有主要技术的产品线这在当时是一项非常苛刻的要java历史起源求,在没有开源产品可供参照的情况下,短时间内推出包括ejb容器、web引擎和jms中间件的整体解决方案,这决不是随便哪家创业公司都能办到的完成了若干次成功的并购之后,bea在这一点上抢占了先机,完整的产品线使它成了人们心目中的首选j2ee平台提供商其次,要让产品通过sun的j2ee兼容性测试要做到这一点同样不易:就连ibm的websphere也一时还没达到百分之百的ejb支持到2000年底为止,共有15家厂商能够提供完整的j2ee解决方案,其中9家(包括sun本身)实现了“j2ee兼容”,他们中间包括了日后这个领域的主要竞争者毫无疑问,这是一次非常残酷的行业洗牌,但留在场内的厂商也相应地形成了推动j2ee发展的主体力量
另java一方面,不少开发者也间接地通过自己的开源产品获得了可观的盈利这些人大多以免费的开源产品为依托,以收费方式提供附加的咨询、方案实施以及技术支持服务marc fleury,开源应用服务器的jboss创始人,不无矛盾地把自己倡导的这种商业模式称为“职业开源开发”
j2ee社区中的另一股重要力量,当然是种类极为丰富的开放源代码项目2002年以来,在j2ee领域的各个层面上,几乎所有主流产品都有来自开源项目的替代方案,在其中很多位置上,开源产品反而是胜过商业产品的首选但请别误解,这里的“开源”并不意味着完全的自动自发,j2ee世界中的开源项目也与linux或php世界颇为不同在很多非常成功的j2ee开源项目背后,我们都能学Java好不好找工作发现商业机构的推动作用:apache的jakarta社区是ibm扶植的结果;实现了开源应用服务器jonas的objectweb,则是许多法国it厂商(包括若干政府部门)合资支持的一个联盟组织……这些有商业背景的开源项目资金雄厚,人员齐整;更重要的是,从投资者到开发者,参与这些项目的很多人都体现了软件工业中难得的非功利心态,因而最终推出的产品质量甚至高于同类型的商业软件在主流厂商之外,它们是支撑j2ee大厦存在的一组基石
与ejb提供的重量级架构不同,借助aop和ioc机制,轻量级容器能够最大程度地降低代码对于专用接口的依赖性,以简短、轻便、专注、可移植的方式实现业务对象从“轻量级容器架构”这个词被发明java出来的那一刻起,人们对j2ee远景的考虑就发生了根本性的分裂:sun和大部分主流厂商更多地关注于“web services”和“快速开发工具”这些利润增长点,而一部分离经叛道的独立和开发者则认为,如果不把轻量级容器纳入规划,j2ee的发展蓝图就注定无足称道其实,双方争执的关键是传统意义上的“应用服务器”的存亡——如果所有企业级服务都可以通过aop机制提供给普通java对象,如果管理业务对象生命周期的可以是一个最微不足道的“微内核”,那么深盔重铠的应用服务器还有什么存在理由?而如果失去了应用服务器的这个产品类型,那些靠这项销售起家的厂商又将何以自处?
写在java 20周年: 奔跑吧,java
幸亏chanJava的优点有哪些dra有一副了不起的口才;这位本科念建筑学的印度裔高层主管,谈起软件架构来也有特强的空间想象力她清晰地说明了设计j2ee架构的两个初衷:首先,对于厂商,j2ee意味着一套开放标准,加入这个标准,他们的产品就可以运行在各种不同的操作系统和工作环境下,成为一个成熟的企业运算体系中可替换的部件;其次,对于开发者,j2ee是一套现成的解决方案,采用这个方案,企业应用开发中的很多技术难题(包括跨平台移植、事务处理、安全性等等)就会迎刃而解,“信息像一条不间断的河流,经过各种各样的平台和设备,从企业应用系统的这一端流向那一端”
哪里治疗白癜风好北京白癜风治疗哪里好