框架比较.doc_第1页
框架比较.doc_第2页
框架比较.doc_第3页
框架比较.doc_第4页
框架比较.doc_第5页
已阅读5页,还剩9页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

当下JAVA WEB主流设计比较1. 表现层框架1.1 JSFJavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。优点:1.Java EE标准,这意味着有很大的市场需求和更多的工作机会2.上手快速并且相对容易3.有大量可用的组件库缺点:1.大量的JSP标签2.对REST和安全支持不好3.没有一个统一的实现。既有SUN的实现,又有Apache的实现MyFaces。1.2 Spring MVCSpring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。优点:1.对覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理2.与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等3.便于测试归功于IoC缺点:1.大量的XML配置文件2.太过灵活没有公共的父控制器,没有内置的Ajax支持1.3 StripesStripes是一个以让程序员的web开发简单而高效为准则来设计的基于动作的开源Java web框架。传统的Java web开发着眼于借去耦(Decoupling)来实现其灵活性,但导致多个的配置文件,额外的对象,和其他资源的分散。这些困难造成相当多的程序员的更高的学习时间和低下的效率。其结果是有些Java程序员被一些非Java的框架所吸引去了:Ruby on Rails或者Django。一些Java web框架,如Stripes,正在开始从这些非Java框架中汲取其成功经验:简单而高效的开发。优点:1.不需要书写XML配置文件2.良好的学习文档缺点:1.不如其他的项目活跃2.ActionBean里面的URL是硬编码的1.4 Struts 2 Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。优点:1.架构简单易于扩展2.标记库很容易利用FreeMarker或者Velocity来定制3.基于控制器或者基于页面的导航缺点:1.文档组织得很差2.对新特征过分关注3.通过Google搜索到的大多是Struts 1.x的文档1.5 Tapestry Tapestry框架是一个位于java servlet容器和Tapestry应用程序之间的层。Tapestry不是一个独立运行的服务器;它是一个servlet的扩展,它运行于servlet容器(例如Tomcat)或包含servlet容器的应用服务器中(如Jboss,Websphere,或者WebLogic). Tapestry应用其实是由一系列页面组成,而每个页面是由可以复用的组件构成。 Tapestry是一种基于java的Web应用程序框架。Tapestry采用了组件的概念。程序员可以应用现有的组建或自定义应用程序相关的组建来构建应用程序。相对与现有的其他Web应用程序框架而言,应用Tapestry会让程序员从烦琐的,不必要的底层代码中解放出来。1 Tapestry使用组件库替代了标签库,没有标签库概念,从而避免了标签库和组件结合的问题。Tapestry是完全组件化的框架。Tapestry只有组件或页面两个概念,因此,链接跳转目标要么是组件,要么是页面,没有多余的path概念。组件名,也就是对象名称,组件名称和path名称合二为一。优点:1.一旦学会它,将极大地提高生产率2.HTML模板对页面设计师非常有利3.每出一个新版本,都会有大量的创新缺点:1.文档过于概念性,不够实用2.学习曲线陡峭3.发行周期长每年都有较大的升级1.6 WicketApacheWicket,通常被称为wicket,她是一个轻量级的基于组件、事件驱动的Javaweb应用程序框架。在概念上类似于JSF和Tapestry。她最初是由乔纳森洛克(JonathanLocke)于2004年4月开发。1.0版本正式发布于2005年6月。她于2007年6月结束孵化期,正式成为ApacheSoftwareFoundation的顶级项目。 传统的MVC框架需要处理每一个http请求和对应的页面。在每一个请求周期中,传入的请求映射到控制层对象上的某一个方法,然后生成输出,通常由取出的模型数据来填充视图页面。视图页面一般是由模板标记语言来编写的。这种开发方式使应用程序的流程控制简单明了,但同时也使控制层的代码复用困难。优点:1.对Java开发者有利(不是Web开发者)2.页面和显示绑定紧密3.社区活跃有来自创建者的支持缺点:1.HTML模板和Java代码紧挨着2.需要对OO有较好的理解3.Wicket逻辑什么都用Java搞定小结:就项目使用选择而言,如果是稳健起见,structs是不错的选择;如果小项目,Stripes,够简单、简洁。如果想用概念比较新的框架,可以选择JSF、tapestry,它们都是基于组件的,重用性比较好。2. 业务逻辑层2.1 SpringSpring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务-如果你需要-还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。优点:1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。2. 采用了分层结构,可以增量引入到项目中。3. 有利于面向接口编程习惯的养成。4. 目的之一是为了写出易于测试的代码。5. 非侵入性,应用程序对Spring API的依赖可以减至最小限度。6. 一致的数据访问介面。7 一个轻量级的架构解决方案缺点:1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。2.2 EJB EJB是sun的服务器端组件模型,设计目标与核心应用是部署分布式应用程序。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。优点:1. 规范详细性:EJB是一种基于规范性的技术。(这同时构成了EJB的主要优点和主要的缺点)。EJB规范说明书中描述了应用程序执行的各个方面,包括数据类型,组件声明周期,角色分布以及其它的东西。 2. 和J2EE紧密整合:有许多服务器技术以J2EE为中心构建,其中包括EJB和其它一些相关技术,如:servlets、JavaServer Pages、Java Message Service、J2EE 连接器架构、Java 数据库连接、Java Authentication、Authorization Service, Java Transaction API、JavaMail技术等等。这些技术使J2EE 和 EJB是有机的结合构成一个非常吸引人的解决方案。3.很好的伸缩性:只要你的应用程序服务器通过了大多数的资源管理功能,开发商就可以应用更为复杂的可伸缩算法。 4. 有权使用资源管理系统:连同EJB容器一起,你可以获得上千行的代码来访问管理资源,包括事务管理系统、安全管理系统、目录服务。因为有了EJB我们可省去亲手实现的这一部分。缺点:1. 巨大而复杂的规格说明:对于一个复杂的分布式系统,有一个文档进行说明是一件很合理的事情。但是,并不是所有的文档信息都是真正必需的,EJB的文档反而成了一个非常不便利的工具。 2. 庞大的文件:在你开发一个项目之前,你通常需要阅读1000多页的文档。这是部署EJB时非常痛苦的事情。 3. 增加程序调试时间:制定EJB解决方案比远比使用普通的Java代码所需的时间长,调试EJB程序也比调试普通的Java代码所需要的时间也长。主要原因是我们不知道bug是出在代码本身还是出在容器上。 4. EJB代码更加复杂:举个例子,为了实现一个session bean,你必须写三个类,为了实现一个实体bean,你需写四个类。增加几个部署描述语句,比如说最简单的Hello world程序需要10个文件,而不是一个文件。 5. 重复设计的危险:导致这种结果的原因是复杂的文档所致。如果你没有完全理解EJB的概念,你就不会很好的驾奴它,让它你所用,反之为你所累。 6. 维护困难:EJB是一个不断更新的技术,在新技术不断推出的时候,代码需要升级,这就就需要额外的努力和成本来使你的程序和新的EJB容器兼容。 2.3 Jdon Framework Jdon Framework(简称JF)是一套适合开发中小型J2EE/JavaEE应用系统的轻量框架(Lightweight Java Enterprise Application Framework)。是国人拥有自主产权的中间件或框架产品,入选全球SUN公司网站企业应用目录(中国唯一)。 JF诞生于2004年底,作为中国第一个开源框架,创新地综合了当时两项新技术思想:领域建模(简称DDD: Domain-Driven Design)和Ioc(DI:Dependency Injection)及AOP构件管理;不仅如此,而且克服了同时期这两类框架的缺点(Spring 1.x无容器Session状态支持;Ruby on Rails混淆业务层),经过多年发展和众多用户的使用及其完善,JF已经发展成为一套国人自主的、面向对象的、基于构件(基于组件)的、成熟的优秀轻量开发框架。优点:1. 异步消息。2. 前端的AOP拦截器, 尤其是组件pool池, donmain以及domain相关getXxx方法结果缓存, 也是性能提升的一大法宝。 缺点:1. web方面, jdon框架的配置还是有点儿多。2. jdon的文档页数很多, 但条理性不强,文档的好坏直接决定了项目的活跃程度。小结:框架的选择: 1. 可伸缩性 EJB功能实在太强大,它考虑了世界顶级大型系统需求,因此免不了显得很复杂。EJB强调的高可伸缩性为大型企业日益发展提供最大的发展空间,不再因为企业快速发展导致整个企业系统结构都要发生根本变化,这是使用EJB的现实优势。这种企业系统的可伸缩性不是因为EJB存在才显得重要,而是我们企业架构选择需要考量的基本因素。要考虑:一台服务器不够用怎么办?如果这台服务器死机会对企业运营带来什么影响?如果每个星期这台服务器停机维护升级会不会对企业带来打击?我的企业系统是不是需要可靠的、几乎不当机的7x24运行?当企业系统面对大量外部访问用户时,一台服务器是否够用?多台服务器联动的需求是否涉及软件技术更换? 如果觉得不是很重要,或者说将来一段时间内这些因素无所谓,那么可以不选用EJB了。因为EJB复杂,学习起来比较困难,EJB帮助我们考虑企业中可能碰到的大部分问题,实际上,有的我们不需要,这也就是为什么说EJB是一个重量级解决方案所在。我们可以选择轻量级的框架Spring/Jdon Framework等,对于架构选择来说,根本前提是需要明白你的系统现在或将来一段时间(注意需要考虑将来一段时间,不能只看眼前)是中小型系统还是大型系统? 2. 灵活性/定制性/透明性 当然这个答案有时我们自己也可能很难给出,那么我们还需要从其他角度来考量EJB和非EJB之选,例如一个大型系统,设计目标10万人在线,从这个角度非选用EJB不可! 但是,EJB因为还有事务机制,虽然应用程序可以选择失效EJB事务,但是EJB容器设计因为考虑了事务,所以在其内核上总是会显得臃肿,是一种累赘,这也是一种重量表示,不需要的东西存在肯定会影响效率。 而非EJB框架灵活性(透明性等)更好。 3. 快速构建性 EJB无论是EJB2或EJB3提供的功能是最齐全的,但是XML配置开关太多 ,Spring属于中等,Spring越来越象一个J2EE API(注意,JDK是J2SE API) ,Spring除不能提供分布式计算外,也因为过分灵活降低了一些开发效率,例如它的组件依赖关系一般需要逐步指定,auotwiring功能还没有深入骨髓成为核心功能。Ioc容器的革命性优点。 Spring除了提供组件层功能以外,还有表现层支持Spring MVC;也有持久层实现的JDBC模板,这样,整个J2EE/Java EE系统各个层次Spring都提供了缺省实现,在这方面无疑提高了开发效率,但是Spring提供丰富API目的好像不是为了快速开发,而是为了建立一个完整的功能齐全的API功能库。 还有另外一个空白,就是以开发效率为主要考虑,这类框架除了必须考虑足够灵活性和丰富功能以外,宗旨是为了在一般缺省情况下快速完成一个J2EE/Java EE系统,这非常类似MDA工具了,但是一个完全丧失灵活性和定制性的MDA工具也不是我们欢迎的。Jdon框架的发展目标是为了填补这个空白,相信也会越来越多框架向这个目标迈进,当然不可否认,Spring也可能调转枪头走入这个领域,EJB2/EJB3正依靠JBuilder等这样商业化开发工具向这个领域靠拢,这个发展方向实际是4GL RAD Tools。 所以,EJB适合大中型系统;非EJB适合小中型系统。可以根据项目本身需求来选择框架。而电商系统面向的对象很庞大支持用EJB框架 3. 持久层框架3.1 Hibernate Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate也是目前Java开发中最为流行的数据库持久层框架。 它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。 Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。 优点:1. 对象/关系数据库映射: 它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。 2. 透明持久化: 带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。 3. 事务Transaction: 应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的。4. 它没有侵入性,即所谓的轻量级框架。5. 移植性会很好。6. 缓存机制。提供一级缓存和二级缓存。7. 简洁的HQL编程。缺点:1. Hibernate在批量数据处理的时候是有弱势。2. 针对某一对象(单个对象)简单的查改删增,不是批量修改、删除,适合用Hibernate;而对于批量修改、删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定优化机制的时候,不适合用Hibernate。3.2 iBATIS iBATIS是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。 相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。iBATIS需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM的一种补充。程序设计人员应该结合自己的项目的实际情况,来选择使用不同的策略。iBATIS和Hibernate都做了映射,但iBATIS是把实体类和sql语句之间建立了映射关系,这种策略可以允许开发人员自己来写合适的sql语句,而Hibernate在实体类和数据库之间建立了映射关系,sql对于开发人员是不可见的,对于那些数据量非常大的应用,无法去优化sql语句。 优点:1. sql可以写在xml中,结构清晰,灵活配置。2. 文件归类,select 后的字须定义到标签中,可以实现部分代码复用。3. 执行sql后,返回的结果集自动封装。4. 映射文件节省了大约95%的代码量,后期可维护性增加,基于xml的,所以适合多平台。缺点:1. 实现了结果集自动封装,返回的结果集封装结果单一,不能实现灵活封装,不支持嵌套vo对象,如果有同名字段,会覆盖。2. 以查询为例,入参单一,只有一个入参,如果有两个以上的参数,必须定义到一个对象中,感觉不灵活。当然可以用paraMap方式进行配置,麻烦,感觉还不如定义到一个对象中。3. 部分写在dao中的逻辑,改动起来麻烦,部分复杂的逻辑靠标签无法实现。3.3 JPA Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;其二,Sun希望整合ORM技术,实现天下归一。JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它不囿于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。目前Hibernate 3.2、TopLink 10.1.3以及OpenJPA都提供了JPA的实现。JPA的总体思想和现有Hibernate、TopLink,JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:ORM映射元数据JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;JPA 的API用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。查询语言这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。优点:1 标准化:JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。2 对容器级特性的支持:JPA 框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。3 简单易用,集成方便:JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释;JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。4 查询能力:JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。5 高级特性:JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。缺点:1. 由于非常新,JPA 规范可能还需要进过重要发展才会变得很稳定。 2. JPA 是一个规范而不是一个产品。您需要提供商提供一个实施,才能获得这些基于标准的 API 的优势。小结: iBATIS、Hibernate和JPA是用于把数据持久到关系数据库中的三种不同的机制,每种都有着自己的优势和局限性。iBATIS不提供完整的ORM解决方案,也不提供任何的对象和关系模型的直接映射。不过,iBATIS给你提供了对查询的全面控制权。Hibernate提供了一个完整的ORM解决方案,但不提供对查询的控制权。Hibernate非常的受欢迎,有一个庞大而活跃的社区为新用户提供支持。JPA也提供一个完整的ORM解决方案,并提供对诸如继承和多态一类的面向对象编程特性的支持,不过它的性能则取决于持久性提供程序。 某个特定持久性机制的选择事关所有功能特性的权衡,这些特性在本文的比较章节中都做了讨论。对于大部分的开发者来说,需要根据是否要求对应用的SQL做全面控制、是否需要自动生成SQL,或仅是想要一个易于编程的完整的ORM解决方案等各方面的考虑来做决定。附:ASP、JSP、PHP 三种技术比较简介: ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Java script)作为自己的开发语言。PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从 PHP官方站点(http: /www.PHP.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。三者都提供在 HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP 、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML页面只依赖于Web服务器,而ASP 、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。特点:ASP:1. 使用VBScript 、 JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。2. 无须compile编译,容易编写,可在服务器端直接执行。3. 使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。4. 与浏览器无关(Browser Independence), 客户端只要使用可执行HTML码的浏览器,即可浏览Active Server Pages所设计的网页内容。Active ServerPages 所使用的脚本语言(VBScript 、 Jscript)均在WEB服务器端执行,客户端的浏览器不需要能够执行这些脚本语言。5.Active Server Pages能与任何ActiveX scripting语言兼容。除了可使用VB Script或JScript语言来设计外,还通过plugin的方式,使用由第三方所提供的其它脚本语言,譬如REXX 、Perl 、Tcl等。脚本引擎是处理脚本程序的COM(Component Object Model) 对象。6. 可使用服务器端的脚本来产生客户端的脚本。7. ActiveX Server Components(ActiveX 服务器组件 )具有无限可扩充性。可以使用Visual Basic 、Java 、Visual C+ 、COBOL等程序设计语言来编写你所需要的ActiveX Server Component 。PHP:1 数据库连接PHP 可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的群组合。你还可以自己编写外围的函数去间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松地修改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。但PHP提供的数据库接口支持彼此不统一,比如对Oracle, MySQL,Sybase的接口,彼此都不一样。这也是PHP的一个弱点。JSP:1.将内容的产生和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标识和JavaBeans群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封装在标识和Beans中,那么其它人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在服务器端,JSP引擎解释JSP标识,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。2.强调可重用的群组件绝大多数JSP页面依赖于可重用且跨平台的组件(如:JavaBeans或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者用户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种群组织在他们现有的技能和优化结果的开发努力中得到平衡。3.采用标识简化页面开发Web 页面开发人员不会都是熟悉脚本语言的程序设计人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容产生所需要的。标准的JSP标识能够存取和实例化 JavaBeans组件,设定或者检索群组件属性,下载Applet,以及执行用其它方法更难于编码和耗时的功能。通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其它人员可以为常用功能建立自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。 JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及 Java 2EE的一个成员,JSP技术能够支持高度复杂的基于Web的应用。由于JSP页面的内置脚本语言是基于Java程序设计语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java程序设计语言“一次编写,各处执行”的特点。随着越来越多的供货商将JSP支持加入到他们的产品中,您可以使用自己所选择的服务器和工具,修改工具或服务器并不影响目前的应用。应用范围:ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统,只能执行于微软的服务器产品,IIS(Intern

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论