《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 从构件技术看SUN JAVA平台的成功

从构件技术看SUN JAVA平台的成功

2008-12-20
作者:柳西玲

    我们已进入知识经济时代。这意味着创造价值的主要源泉不仅仅依赖于资源、资本和人的体力劳动,更重要的是还依赖于人的知识,智慧和创新。当今科技的更新对产业的发展将起决定性作用。也就是人们常说“知识就是金钱”的原因。软件产业作为一个新兴的高科技产业是增长最快的绿色产业。软件产业的发展将推动知识经济的进程。为解决软件危机,已经历来近二十年的努力,才获得了构件技术" title="构件技术">构件技术发展的条件和时机。构件技术的初始阶段,通常,仅仅将离散的构件粘合在一起。在复用" title="复用">复用性上前进了一大步,但是,在提高软件生产率方面是在SUN公司提出J2ME、J2SE和J2EE平台后,才得到实现。使构件技术发展成为新的转折点。为软件产业的工厂化和社会化带来曙光。 

1.软件构件技术是解决软件危机的重要途径

    提高生产率和质量,一直是软件产业中的难题。自从上世纪七十年代出现软件危机后,更促使软件业的发展,从结构化方法到面向对象" title="面向对象">面向对象方法,又从面向对象方法到构件化方法,人们一直在寻找解决软件危机的途径,随着人们对软件的定义、特点和本质的理解加深,软件应用范围的快速扩大,Internet和3W技术的飞速发展,软件运行平台从单机向网络的转变,软件的规模越来越大,复杂度越来越高。同时,经济全球化对快速提高软件生产率和质量的需求紧迫。如何开发具有可移植、可伸缩、可重用等特性的网络应用软件成为重中之重。分析软件的共性和本质,人们认识到软件应该是人类抽象经验和知识的精确体现。软件的构造性和演化性是其本质特性。实际上,软件的体系结构是软件的基石,它体现了软件的构造性。由于软件是知识的提炼、知识的抽象、知识的固化,而人们对知识的认识是不断发展、不断深化的过程。因此,软件系统也不可能一成不变,新需求、新技术不断的要求软件系统升级,这就是软件的演化性。变是永恒的,软件应具有对变的适应性、可扩展性是必然。 

1.1构件技术支持软件构造性 

    在面向对象技术的基础上,发展来的构件技术.实际上, 早在1968年Mcllroy的文章已提出,由于当时技术和非技术原因,不具备发展时机.自80年代中期以后, 面向对象技术成为主流,到90年代中期,网络和Web技术飞速发展,使构件技术需求高涨,也具备了发展的时机.其基本思想是利用机械和建筑工业化道路上,大部件由标准和非标准元件组装而成的理念。软件也可用第三方的构件产品组装和配置而成。构件与对象不同,它是可重用的软件模块,它的概念很广阔,它在不同层次上有不同粒度。因此,小构件可小到界面上一个按钮,大构件可以大到一套工具,如编辑器或电子表单生成器,甚至是一个子系统等等。构件重用的目标是达到需求、分析、设计、编码、测试的重用.面向对象的技术,从抽象程度来看,是达到类级重用(代码重用),它以类为封装的单位。这样的重用粒度还太小,不足以去解决异构互操作和效率更高的重用。构件将抽象的程度提到高层次上,它是对一组类的组合进行封装,它代表去完成一个或多个功能的特定服务。整个构件隐藏了具体的实现,只用接口去提供服务。这样,在不同层次上,构件均可以将底层的多个逻辑组合成高层次上的粒度更大的新构件,甚至直接封装到一个系统。使模块的重用从代码级、对象级、架构级、到系统级都可能实现。从而使软件能类同硬件,任意装配定制而成。近几年来,构件技术的发展已证明了它的巨大威力,在这其中,CORBA标准和Java技术的突破,功不可抹!至今, 构件技术已形成两个主流派:SUN的各种Java平台、Microsoft的.NET平台。 

    构件技术虽由面向对象技术发展而来,但不同于对象。对象是客观世界中某个实体,它总是属于类(具有共同特性的对象群),即单个对象是某个类在运行时的实例。对象有“标识”,“状态”和“行为”。其“标识”,“状态”和“行为”由某种语言来编写。因此,对象在软件中表示成一段源代码,它必须经过编译后,才能运行,它依赖于语言编译器。是不可替换的实体。另外,对象是通过继承,对类和行为进行封装,因此,将客观事物分离成许多孤立体,没有统一标准的框架。也就不可能跨平台,跨时空,它也只能在类级的粒度上重用。构件是多个类的组合,并自包含,因此,它可以在不同粒度上实现重用。构件在软件中表示为一段可执行代码,它不需要任何加工可以直接运行。它是即插即用,是可替换单元。它与编写语言无关,能创建不同版本。构件只依赖于上下文,这点在规范中规定,是通过对所需资源进行声明来实现,构件可应用于不同基础设施的抽象和实现。有利于解决异构互操作性。

    构件的接口是构件调用者和构件实现者之间的契约。构件之间通过互相提出请求及响应服务达到协同工作。这种机制使应用逻辑与具体实现粘合封装在一起,使应用软件从 “以编码为中心”,向“以集成为中心”,转移。使软件产业从“以产品为中心”向“以服务为中心转移。开发者需要从整体上、从体系结构高度把握软件,而构件+ 构件之间的关系是软件体系结构的具体内容,构件使软件体系结构在标准下可建成独立平台,使构件技术集中体现了软件的构造性。 

1.2 构件技术支持软件演化性 

    构件具有下列特征:

    (1)构件的有用性:构件是具有指定功能的部件,它比单行代码或单个类都更概念化,功能化。它是将功能逻辑与实现封装为一体,实现对外界透明。

    (2)构件的独立性:构件之间相互独立,但它又很少单个存在,它总是由第三方对它进行组合到某个指定体系结构的上下文中运行。即构件是带上下文的独立。

    (3)构件的适应性:构件是一个可替换的单位,它通过契约式接口与外界联系。因此,接口是构件唯一可视的部分,也是构件的重要部分。只要接口相同,就可以相互替换。这对系统的升级和维护带来很大的方便和好处。

    (4)构件的易用性:构件是即插即用的部件,无需做任何加工就可以组合运行。

    (5)构件的商业性:构件接口按国际标准定义,可由开发商开发提供,通过市场销售

    (6)构件的递归性:构件可以自包含,因此,构件定义实际上具有递归性,即组合好的构件本身还可以作为构件元素与其他构件组合。这种构件称为容器

    以上构件特性使软件系统在功能、性能、易用性和易维护性等方面获得很大的改革,也使构件技术有力地支持了软件的演化性 

    总之,面向对象的技术只是构件技术的基础和开始,由于对象技术本身,不能全面的表达软件开发的抽象概念,因此,单靠对象技术是不可能实现分布式计算软件的开发需求。但是,构件技术让人们相信,持续了几十年的软件危机可由软件复用解决,而构件技术是软件复用的核心技术。 

2.基于构件的开发(CBD)方法已成主流 

    软件构件化是21世纪软件产业发展的大势所趋。工业化的软件复用已经从通用类库进化到了面向领域的应用框架。GartnerGroup的统计信息指出:“到2003年至少70%的新应用将主要建立在软件构件和应用框架的‘构造块’之上;应用开发的未来就在于提供一个开放的体系结构,以方便构件的选择、组装和集成”。 

2.1 对于CBD而言,对象技术并不是必需的,同时仅仅靠对象技术也不能实现CBD

    对象技术并不能全面的表述CBD所需的抽象概念,而且脱离对象技术,CBD也完全可以实现。所以,对于CBD而言,对象技术即不是必需的,同时也是不够的。CBD将导致对象技术的系统设计方法、项目管理方法和组织形式的实质性变革。具体地说,当我们将构件看作是一个可替换的单元时,单纯的对象技术就不够了。构件强调一个特性:对上下文的依赖性。这一特性能够通过在规范中定义一种“use”语句而实现,也就是对所需系统资源的一种声明。不管这种“use”语句意味着接口描述是一种实现机制,还是一种对实现方法的抽象,但是,对象技术却根本不支持构件的这种特性,这对于设计层抽象时,特别是在试图使用已有的构件进行集成时会遇到麻烦。可以从如何用构件来处理事务时,看出构件技术比对象强得多。电子商务依赖于事务。一般通过事务处理TP控制器对线程、存储器和数据库连接等有效的资源共享来支持可伸缩性。为更好的理解构件对TP监视器的影响,来看看最初的EJB是如何提供事务和可伸缩性服务的。为在事务开始和结束时进行控制,可能要求客户端" title="客户端">客户端通知事务的边界TP监视器。这是TP监视器中的一种通常的解决方案,EJB也支持这一方案。然而,EJB也允许对构件需求的直接配置,而且,这是一个更好的方案。EJB允许在构件上设置一个事务属性。该属性的基本取值为TX_REQUIRES_NEW、TX_REQUIRED、TX_SUPPORTS或TX_NOT_SUPPORTED。基于EJB的TP控制器利用此事务属性来决定一个新事务的开始。EJB构件,在每一次方法调用时,都作为该客户端自己的事务。包括再调用同一个或其它EJB构件中的其它方法,所有这些方法都归原客户端事务的一部分,直至客户端的调用返回时此事务才算结束。EJB允许构件调用setRollbackOnly方法来回滚事务。如果一个事务中的任何一个构件调用了此方法,该事务中所有构件已进行的工作将全部被回滚。否则,EJB将在返回方法的结果之前向客户端提交该事务。这就是构件的好处。 

2.2 构件离不开软件体系结构 

    软件体系结构是可被应用开发者定制的应用骨架。可以说,体系结构是一个可复用的设计构件,它规定了应用的框架,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及它们的实例之间协作的方法,它为构件复用提供了上下文关系(Context),因此构件库的大规模重用也需要体系结构。

    构件化领域体系结构在很大程度上借鉴了硬件技术的成就,它是构件技术、软件体系结构和应用软件开发技术三者发展结合的产物。很多情况下,体系结构常以构件库的形式出现,但构件库只是体系结构的一个重要部分。体系结构的关键点还是构件间的交互模式和控制流模式。体系结构为构件提供重用的环境,为构件处理错误、交换数据及激活操作提供标准方法。

    应用系统" title="应用系统">应用系统的体系结构实现了一个完备功能(除去特殊应用的部分)的应用。使用这种体系结构的开发者,可以在许多通用功能已经充分实现的架构上开始开发。体系结构提供了所有应用期望的常用行为的类集合。具体的应用通过重写子类(该子类属于体系结构的默认行为)或组装构件来支持应用专用的行为。应用系统体系结构强调的是软件的重用性和系统的扩充性 ,以缩短大型应用软件系统的开发周期,提高开发质量。和传统的基于类库的面向对象重用技术比较而言,应用体系结构总是更注重面向专业领域的软件重用。应用系统体系结构具有领域相关性,构件根据应用系统体系结构进行复合而生成可运行的系统。应用系统体系结构的粒度越大,其中包含的领域知识更加完整。现在,CBD已发展到新阶段,各种行业的应用系统体系结构作为各种领域的运行平台不断涌现,而SUN公司的J2ME、J2SE和J2EE平台,已成为CBD的成功者。          

3.SUNJava平台已成为Web CBD的主流 

    由于构件离不开体系结构,因此,软件系统要求有可移植性、可伸缩性的健壮平台,成为提高生产率的关键。SUN公司在短短的三年内推出J2ME、J2SE和J2EE平台,已成为CBD成功的皎皎者,大大的推动了分布式移动计算和Web服务的发展。我们可从基于构件开发的基本要素出发,按Web服务要求来分析SUN公司的J2ME、J2SE和J2EE平台,能成为 CBD的成功者之原因。

3.1   CBD基本要素之首-----构件模型和标准 

    要解决通用构件的平台和语言依赖性,SUN公司利用Java语言的优势提出了JavaBean构件模型和规范,JavaBean被实现为以JAVA编程语言为基础,写一次代码可在任何平台上发布并独立于平台和结构的应用程序编程接口(API),这样使JavaBean保留了构件技术的精华,并增加了许多实用技术,使它成为理想的软件构件解决方案的基础。使得SUN公司的所有平台能方便的用于网络世界。JavaBean构件模型非常简单,只有构件和容器组成。模型中的构件是提供实际构件创建模板,而模型中的容器定义了构件组合的结构,并为构件间交互提供上下文。JavaBean构件模型还提供有自检、事件处理、持久性、设计规划、程序构造器、分布式计算等功能。另外,SUN的平台并不是产品,而是产品标准。而且,这些标准已被工业界承认。这样可通过市场竞争出现最好的产品让用户选择。SUN公司联合其他一些公司,如BEA、IBM、Oracle、Mtololar等成立了JCP(Java Community Process)。希望不断改进这些平台标准。其主要目标是为软件开发提供基础设施,使开发者可集中精力放在应用逻辑上,下功夫应用好构件的划分和提炼,充分发挥构件的增量式设计优势。对于服务器端的容器软件都可由第三方提供。相比之下,.NET使用面向对象模型,这就是它受语言限制的根本原因。它也是 Windows DNA的扩充。因此,它是一个产品而不是标准。服务器端的容器软件大多数是微软产品。

3.2 CBD基本要素之二-----构件集成策略 

    一个软件应用要采纳CBD开发,需要有正确的集成策略和方法才能加速进入市场。SUN 公司的所有平台都提供许多方便。以J2EE平台为例,可写很少代码的状态管理服务就可控制状态。利用entity beans的持久性服务,使开发者不用编代码都可访问数据库。这对维护很方便。程序化事务对事务控制更强,标签定制使开发者更容易合作。另外,由于J2EE平台并不是产品,而是产品标准,允许独立卖主提出各种应用的解决方案,可有各自的产品和工具。用户有很大的选择空间。如电子商务构件、B2B增强协同等特性,使开发更快,更容易。对于老系统集成,J2EE有几种方法:对已有通信系统可用JMS(The Java Message Service)、对任意系统可用Web服务集成、对各种语言写的交接可用CORBA远程机制、如下载本地库和本地调用可用JNI 、最重要的是还有JCA (Connector Architecture)规范,它是在与老系统通话时,可插入一个资源适配器(如SAP R/3, CICS/COBOL, Siebel等等)。而这些适配器可以自己编,也可以买。使电子商务构件、B2B增强协同等开发更快,更容易。 

3.3   CBD基本要素之三-----集成开发环境

    一个良好的CBD,需要有配套的设计方法、过程、调试和集成开发环境。Java这几年发展迅速,已形成许多有价值的工具和环境。仍以J2EE为例,应用服务器软件,典型的有IBM WebSphere、BEA WebLogic、Oracle9I Application Server、Sun/Netscape Alliance iPlanet等等。它们对应的开发工具是IBM VisualAge Java、WebGain Studio、Oracle Jdeveloper、Sun Forte for Java。工具间互操作性好。设计过程方法有基于UML的方法、XP方法、SCRUM 方法、自适应软件开发方法ASD等等。另外,对老平台的移植、可移动性很好,共享上下文是分布式,用户对自己存信息的数据仓库,都可以有一个或多个自己首选共享上下文服务的列表。选不同行业数据库,在与数据库连接时,Web服务指向用户首选的共享上下文。 

3.4 CBD基本要素之四-----市场 

    在讨论开发方法好坏时,很自然的会从技术上考虑,实际上,好技术在市场上很少成功。通常,一般技术反而可畅销。J2ME、J2EE都是很畅销的平台,90%以上的手机商、通信企业用JavaCard和J2ME平台,J2EE在整个工业界有50%以上的供应商。对于当今互相依赖的贸易已形成了一个虚拟市场,对J2EE是一个前景很好的市场。美国500强企业已有80%用了J2EE平台。用J2EE平台的大量成功案例已证明了这些平台市场的成熟。SUN

公司的所有平台都只用Java一种语言,当前只需将所有应用的库捆扎在一起就可提供Web服务。安全性好,风险小。而.NET用C#语言重编写,在CLR下运行。CLR在用多种语言时,维护难、创建知识难。目前还处于β版,成功案例少,风险大。

4. 结束语 

   当前CBD已被公认为先进的软件开发方法,让软件也能像硬件一样,从芯片,底版到系统一级级的组装,一层层集成。任何人都可顓一台计算机一样,组装一个软件系统的愿望已有可能。SUN公司的几大平台前景美好。

参考资料  

1.  http://www.CBDiforum.com

2.  http://www.flashline.com

3.  http://www.cbseng.com

4.  http://java.sun.com

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。