当前位置: 首页 >> 开源文章 >> 企业级开源软件大盘点
 

企业级开源软件大盘点

作者:      来源:TechTarget     发表时间:2006-10-16     浏览次数:      字号:    

    Turbine

  Turbine是基于Servlet的框架包,也是开放源代码Jakarta项目。目前还没有关于Turbine的大量文档。它类似于Struts,但是有一些主要区别,突出的一点就是它并没有与JSP耦合。Turbine还有一个特点是它提供了大量可重用的构件,不过这些构件是离散的。

JavaWeb服务器

  Jetty

  Jetty是一个免费的和开源的Servlet容器。Jetty最大的特点是它既可以作为独立的Web服务器,也可以为一个已经存在的应用程序提供Servlet功能。也就是说它可以非常轻易地嵌入到个人的Java 应用中,这样用户就不必把Web应用发布到一个服务器上。正因为Jetty的存在,Tomcat才不至于成为一枝独秀,Web服务器领域才会更加有趣。

  Tomcat

  Tomcat是一个免费、开源的Servlet容器,它是Apache基金会的Jakarta项目中的旗舰产品,由ApacheSun和其他一些公司及个人共同开发而成。它曾被JavaWorld杂志评为2001年度最具创新的Java产品(Most Innovative Java Product),同时它又是Sun公司官方推荐的ServletJSP容器。ServletJSP的最新规范都可以在Tomcat的新版本中得到实现。它是目前应用最为广泛的Servlet容器,许多J2EE应用服务器都集成它作为自己的Servlet容器。

Java版 持久层框架

  Apache Torque

  Apache Torque是一个使用关系数据库作为存储手段的Java应用程序持久化工具,是 Apache 的公开源代码项目。TorqueWeb应用程序框架Jakarta Apache Turbine发展而来,但现在已完全独立于TurbineTorque 主要包含两部分: 一部分是 Generator,它可以产生应用程序需要的所有数据库资源,包括SQLJava文件。另外一部分是 Runtime,提供使用这些代码访问数据库的运行时环境。

  Hibernate

  Hibernate最早是Sourceforge.net的一个子项目,后被JBoss购入麾下,目前已成为炙手可热的持久数据管理框架。它是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲地使用对象编程思维来操纵数据库。

  iBatis

  iBatis提供了ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致。对于具体的数据操作,Hibernate 会自动生成SQL 语句,而iBatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,iBatis SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。

    JavaJ2EE框架

  Spring

  Spring是由Interface21公司的CEO Rod Johnson领导开发的开源J2EE应用框架,它解决了许多在J2EE开发中常见问题。Spring还提供了管理业务对象的一致方法,并且鼓励对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。

  SpringJ2EE应用开发提供了一个完整的分层体系架构,为使用轻量级的方法解决复杂的企业级应用开发提供了一个最佳实践。Spring应用框架由几个模块组成:

  Spring核心容器: Setting Injection为主的IoC(反转控制容器), 通过XML配置模式,应用组件间的依赖进行关联。

  Spring Context: Spring Context作为贯穿Spring整体的一个引线,为框架内集成的服务提供上下文环境。

  Spring MVC框架: 将已有的Web MVC框架与Spring进行集成,使现有的MVC框架能与Spring IoC容器进行挂接,提供从控制层到业务层的反转控制式编程。

  Spring AOP: Spring提供了面向方面的编程能力。

  Spring ORM: 集成了HibernateJDOIbatis SQL Map 等持久化组件,为上层应用开发提供了一致的持久化编程模型。

  Spring DAO: JDBC的应用开发操作进行抽象,提供统一的模板方法和异常层次结构,同时提供透明的事物处理机制,极大地简化了基于数据库应用的开发过程。

    Spring框架的这种松耦合编程体系结构和非入侵性的特性,使得J2EE的应用开发不依赖于任何J2EE应用服务器,为提高J2EE应用开发的整体质量起到了极其关键的作用。

  JFoxSOAF

  JFoxSOAF(JFox Service-Oriented Application Framework)Huihoo.org 开源社区开发,是以Type3模式的IoC为核心的J2EE应用开发框架。JFoxSOAF采用基于IoC微内核的系统设计架构,将现有众多开源的成熟软件框架、组件集成到一个体系中来,将原来相对零散的部件构成一个整体,为应用项目的开发提供一个完整的框架结构和实践的指南。JFoxSOAF作为应用服务器上层的技术基础件,提供三个层面的系统服务,即应用服务层、业务服务层、系统服务层。

  JFoxSOAFSpring的不同表现在以下几方面:

  IoC核心容器: JFoxSOAF采用基于构造器注入方式的IoC容器,无需在大量的XML描述文件中声明类间的依赖关系,极大地简化了应用开发的部署描述。

  独立的上下文环境: JFoxSOAF采用独立的上下文环境,通过ServiceFactory, 任何一个类都可以在任何环境获得注入在IoC容器中的实例,从而建立起引用关系。SpringWeb应用中,必须通过Web容器环境获得上下文的环境。

  JDBC开发模板: JFoxSOAF集成了DBUtils作为JDBC DAO的模板框架,提供数据自动填装功能,简化了CRUD操作的开发过程,简单易用。SpringDAO模板功能也非常强大,但其需要手工进行数据填装操作,增大了应用开发的复杂度。

  事务处理: JFoxSOAF采用JOTM作为事务处理器,提供编程式的事务管理,Spring框架提供声明式的事务管理,更易于灵活地配置开发。

  .Net 开源框架

  Castle

  Castle.Net系统级框架,它通过将一些成熟开源应用进行无缝整合而成的一套完善的应用系统框架,这其中包括了ActiveRecordDynamicProxyMonoRailMicroKernel/WindsorMicroKernel/WindsorCastle的底层核心实现,它采用IoC容器对系统进行运行期动态设置,主要包括FacilitiesComponentsServices三大部分。

  ActiveRecord对当前热门的ORM框架NHibernate进行了封装处理,主要包括将一些常用的数据进行抽象化、通过Attribute来取代mapping文件等。在ActiveRecord的实现中,Model对象必须继承于Active-RecordBase对象以便于Castle容器进行控制,限制Model对象从其他非持久化对象继承的可能,这是有违NHibernate/Hibernate最初的设计思想的。在Hibernate的设计思想中,Model对象可以是任意的Java Bean对象。MonoRailRuby on Rail.Net实现,这是一个MVC Web框架。它与传统WebForm在控制上的不同在于WebForm采用页控制器模式,而MVC采用前端控制器模式。在界面表达方式上MonoRail采用模板引擎输出,模板引擎在PHPJSP上已广泛使用,而在ASP

  .NET上因为服务端控件的强大功能和易用性而很少有人使用,两者是各有优缺点。

  Spring.NET

  Spring.NET是由Spring框架移植而来的,Spring框架是Java著名的应用系统框架,它已成为了替代轻量级企业应用的开发标准框架了。Spring.NET包括:

  Spring.Core core就是一个对象工厂(ObjectFactory), 它通过配置中的对象定义来创建对象,它的目的是消除对象的new操作。在配置文件中,除了定义对象的一些属性外,还能定义对象之间的相互关系,这就使得对象之间的耦合延迟到了运行时,如果针对接口或抽象类进行编程,则还可以通过具体对象的不同实现来定制系统的行为。

  Spring.AOP 这是按AOP联盟的接口定义来实现的,AOP即面向截面编程,其核心是通过给对象创建一个动态代理对象来接管对象的操作,这样就能对操作进行前置和后置处理了。

  Spring.Data 这是一个由第三方实现的整合到Spring内的数据访问组件,目前已包括了NHibernate的实现部分。Spring

  .NET还显得不够成熟,一些功能因为平台的局限性而导致了移植上的困难, Castle相比就差了一些。

  Nhibernate

  Nhibernate.NET持久层框架,它从Java上的Hibernate移植而来。作为一种o/r mapping框架,它具有以下一些特点: 完善的数据映射及关联操作; 可扩展的持久机制; 强大的数据加载功能; 面向对象的数据查询语言HQL; 缓存机制; 多数据库支持。

  Nhibernate的强大之处在于开发者几乎不用去了解任何数据存储和查询的细节问题,而能更专注地通过面向对象设计来构建系统。其HQL查询语言完全是针对对象及其属性来设计的,与SQL语法保持一致,降低了学习的曲线。

  当然,Nhibernate还有一些不足之处,如报表数据。另外在性能上, Nhibernate通过反射来执行一些操作以及数据行到对象之间的转换, 都会造成性能上的一些损失。

  iBatis.NET

  作为另一种.Net持久层框架,iBatis.NET同样是从Java上的iBatis移植而来的o/r mapping框架,它包括DataMappingDataAccess两部分:

  DataMapping: ORM的实现部分, 对象映射通过映射文件来定义,支持one-to-oneone-to-many等对象关系映射。与Nhibernate显著不同的是,ibatis.net不会自动生成SQL语句,它通过预先定义好的SQL映射来执行数据操作,对于想自由操作SQL或使用复杂表达式的人来说,这是个不错的选择。

  DataAccess: 数据存取框架实现,通过在配置文件中定义DAO接口及其实现,就可以方便使用DaoManager进行数据操作了,这也是一个在运行时决定具体实现的标准应用。

    Java版 工作流

  Shark

  Shark是体系和功能最为复杂的代表。它是另一款遵循WfMCXPDL标准开源工作流引擎,并且同时遵循OMG组织的Workflow Management Facility规范。在所有开源工作流引擎中,Shark的体系最为完备和复杂。其一直秉承着模块化的思想,所以比较容易扩展。但是自从被Together公司收购后,Shark的商业化色彩已经越来越浓,改称为Together Workflow Server,并仅以Community Edition的形式提供了部分开源代码供参考。

  OSWorkflow

  OSWorkflow是最轻量型的代表,也是一款非常灵活和低级别定位的工作流引擎的实现框架。低级别定位的意思是说,它不是定位在解决流程模型对象和运转场景,而是提供一套可维护调度的机制,供开发人员自主扩展。这个维护流程调度机制OSWorkflow选择的是基于行为(Action)FSM理论,所以OSWorkflow更像是一个复杂而灵活的有限状态调度机。

  OSWorkflow在国内项目应用得较多,很多国内的简易审批流程项目都是基于其引擎二次开发而来。这主要是由于OSWorkflow是基于Action驱动的,而国内的客户也很容易接受这样的操作习惯。但OSWorkflow所依赖的FSM模型对于分支、聚合、子流程的支持度很低,这一点在实施过程中需要注意。

  jBpm

  jBpm是最适合扩展的代表,是在所有开源引擎中最适宜被商业化应用的一款。首先其流程建模模型是基于Activity Diagram(活动图)的,并在引擎构建上融入了FSMPetriNet思想,所以其内核和根基比较牢固扎实。其次,自从被JBoss收购后,其3. x系列的结构更加趋于微内核,Plug-in思想也更加深入。其同时还提供了对BPEL扩展,存储支持JBoss Hibernate实现,集成了JBoss seam,规则引擎准备采用JBoss rules,并准备集成JBoss Messaging。这样,不论从内核和外围应用,jBpm都具有了强劲的动力。

  另外,jBpmToken的应用也很有特色,巧妙地利用Parent-Child Token的机制处理分支、父子流程等复杂应用场景。这个设计思想很值得大家学习参考。

  YAWL

  YAWL是算法和模式最值得研究的代表,它是Alast力主倡导的一款基于PetriNet建模的工作流引擎,其将PetriNetTokenAndXOROR算法进行了融合,并对Workflow Patterns(工作流模式)中所有模式提供支持。但YAWL本身仅是一个研究性项目,所以其结构和实现缺少了商业化应用的特点。但有必要研究一下YAWL,一方面可以加深对工作流模式的理解,另一方面,YAWL的一些建模思想、处理算法很值得推敲和吸纳。

  ActiveBPEL

  ActiveBPEL BPEL引擎的代表,也是一款可执行BPEL4WS规范的开源流程引擎,其结构和实现方式具有很高的参考价值。目前国内很多正在开发基于BPEL产品的中小型软件厂商,其实现的很多基础性内容和思想都参考自ActiveBPEL。受目前国内中小型客户对流程需求的限制,基于BPEL的开源引擎或小型产品被市场接受度还很低。但BPEL所围绕的业务流程及流程整合应用是一个发展趋势。

[1] [2]

编辑 webmaster

 
 
 
评论更多>>
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •