文章编号:11487时间:2024-10-01人气:
在 Java Web 应用程序中,HttpServletRequest 对象是一个至关重要的组件,它代表客户端发送到服务器端的 HTTP 请求。通过 HttpServletRequest,您可以访问诸如请求方法、请求 URI、请求参数、请求标头以及其他与请求相关的信息。为了构建健壮且高效的 Java Web 应用程序,遵循 HttpServletRequest 的最佳实践非常重要。
由于各种原因,HttpServletRequest 对象有时可能为 null。例如,在某些情况下,如在 Servlet 过滤器或拦截器中,如果请求未通过过滤器或拦截器,则无法访问 HttpServletRequest。因此,在使用 HttpServletRequest 之前始终检查其是否为 null 至关重要。例如:
java if (request != null) {// 使用 HttpServletRequest }HttpServletRequest 中的请求参数和数据应使用适当的字符编码解码。如果不使用正确的编码,则可能会导致数据损坏或乱码问题。大多数情况下,建议使用 UTF-8 编码,因为它是一种广泛支持的 Unicode 编码。您可以使用以下代码获取正确的字符编码:
java String encoding = request.getCharacterEncoding(); if (encoding == null) {encoding = "UTF-8"; }客户端发送的请求数据可能不可靠或不完整。因此,在使用请求数据之前验证和清理它是非常重要的。您可以使用 Java 验证框架(如 Bean Validation)或自定义验证方法来验证数据。您可以使用 Apache Commons Lang 或其他库中的工具来清理字符串和其他类型的数据。
java import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory;// 验证请求参数 ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set在处理 HttpServletRequest 时,可能会发生各种异常。例如,如果请求数据损坏或无效,则可能会抛出异常。始终处理异常并提供有意义的错误消息非常重要。您可以使用 try-catch 块来处理异常,如下所示:
java try {// 使用 HttpServletRequest } catch (Exception e) {// 处理异常 }有时,您可能需要扩展 HttpServletRequest 的功能,例如添加额外的验证或清理逻辑。在这种情况下,您可以创建一个自定义的 HttpServletRequestWrapper,它继承自 HttpServletRequest 并添加额外的功能。这使您可以轻松地扩展 HttpServletRequest 的功能,而无需修改原始类。
java public class MyHttpServletRequestWrapper extends HttpServletRequestWrapper {// 自定义逻辑}在 Servlet 3.0 之前,HttpServletRequest 的某些方法已弃用或被更现代的方法所取代。例如,getRemoteAddr() 已被 getRemoteHost() 取代,getCookies() 已被 getCookies(String name) 取代。使用最新的 Servlet API 版本可以确保您的应用程序与最新标准兼容,并避免使用已弃用的方法。
为了提高应用程序的性能,您可以使用一些优化技术,例如:
- 缓存 HttpServletRequest 对象,以避免在每个请求中重新创建它。
- 使用 Servlet 过滤器或拦截器来处理通用任务,例如验证或清理,从而避免在每个 servlet 中重复相同的代码。
- 避免在 HttpServletRequest 中存储大量数据,因为这会对性能产生负面影响。
遵循 HttpServletRequest 的最佳实践对于构建健壮且高效的 Java Web 应用程序至关重要。通过检查 null 值、使用正确的编码、验证和清理请求数据、处理异常、使用 HttpServletRequestWrapper、避免 Servlet 3.0 之前的版本以及使用优化技术,您可以确保您的应用程序可靠、安全且高性能。
应用服务器的发展传统的应用系统模式是“主机/终端”或“客户机/服务器”,随着Internet 的发展壮大 ,这些传统模式已经不能适应新的环境,于是就产生了新的分布式应用系统,相应地, 新的开发模式也应运而生,即所谓的“浏览器/服务器”结构、“瘦客户机”模式。 如何 实现这种模式呢?应用服务器便是一种核心技术。 据Forrester Research 预测,到200 2年时,应用服务器的营业额将超过20亿美元。 既然有这么好的前景,那么到底何谓应用 服务器?它是如何分类的呢?它有什么样的特点呢?本期技术特写将向大家全面阐述应 用服务器的概念、分类、产生、发展以及应用服务器的代表性产品。 概念篇 目前应用服务器市场还是一个非常容易弄混的市场,有大约40家公司声称他们拥有应用 服务器产品,而每家提供的功能却往往大相径庭。 所以,尽管今天有许多应用服务器可 供选择??从知名的领先于市场的大公司到小型新兴公司的产品,应有尽有,但这种技 术还没有成为一种完全成熟的商品,所以选购者在在购买时难下决断。 由于应用服务器是门新的技术,它的概念还尚未统一,它到底应该包含什么还是仁者见 仁,智者见智,但总体来说,应用服务器通过把用户接口、商业逻辑和后端服务分割开 来,向开发者提供了一种创建、部署和维护企业规模的Web应用的模块化方式,为要转向 Web的用户提供了高性能多线程的环境。 它是一种支持多种工业标准的协议和界面引擎, 它支持的标准包括数据库互联标准ODBC和JDBC、CORBA、COM/DCOM、Enterprise JavaBe ans(EJB)对象模型等。 三层或N层分布式Web计算技术的发展导致了应用服务器技术的革新。 在分布式三层环境 中,应用服务器驻留在中间层,夹在客户器前端的用户界面与后端的数据和企业应用之 间。 分布式多层体系结构要求应用服务器主要考虑三方面的技术。 首先是开发环境,开发人 员需要 一种创建新组件、并将已有组件加以集成的开发环境。 其次是应用程序的集成, 由于企业计算环境比较复杂,它综合了传统的应用程序和新型应用程序,因此开发人员 需要集成各种应用程序,以创建出更强大的应用。 第三是应用程序的配置,由于典型的 Web 应用程序是分布式,其组件运行在不同的服务器上,并且有大量的用户对其进行访 问,因此需要配置平台的支持,以便在用户剧增时能有效地扩展,并保持系统的稳定。 这种分布式多层应用体系结构将会为企业带来实际利益。 首先,应用功能被分为几个模 块化部分,使应用的创建、修改和维护更加容易。 其次,当业务逻辑从后端移向中层的 一般较便宜的硬件上时,就会带来实际利益。 这种体系结构的模块化特征还使公司能实 施革新应用,从而改善业务流程,保持对竞争者的优势。 分类篇 目前的应用服务器已根据功能划分为独立的类别,在购买时请检查应用服务器所支持的 功能。 随着应用服务器市场的发展,新的和合并的功能将会出现,但目前市场中主要有六种类 型:事务服务器、知识服务器、带有集成开发工具的应用服务器、协作服务器、瘦服务 器和主机访问服务器。 事务服务器包括从电子商务实施到处理帮助桌面或人力资源数据共享的部门服务器的种 种功能。 事务服务器离商用功能还有很长一段距离。 每种实施计划都需要用户进行努力 开发,因此,这些计划成本仍在增加。 21世纪将会有大量需求事务部署。 有鉴于此,带有集成开发工具的事务服务器和应用服 务器正合并成一种能同时处理事务管理和开发需求的服务器。 IBM、Oracle、微软、Net scape、BEA和Sun等厂商在支持企业大型事务应用功能的同时,正在努力简化自己的产品 的设计和开发。 知识服务器是一种更新的应用服务器,一般能从结构化和非结构化来源中搜集数据并编 索引。 这些服务器通常具有HTTP支持、编索引功能和支持广泛的数据和文件格式的检查 和析取的工具。 知识服务器还可以支持工作流和业务逻辑处理能力。 Lotus和Netscape等厂商正增加大量工作流,由于知识服务器支持工作流,因而,协作服 务器可能会与之合并,以改善公司的数据管理。 这一领域的供货商正在制定标准化协作 方面的协议,可能将提高使用不同的协作服务器的机构间的互操作性。 这一协议有可能 大大使基于Web的商家对商家事务的集成更加容易。 带有集成开发工具的应用服务器在激烈的竞争中走向成熟。 该领域的供货商正在为开发 和部署工具补充事务能力,创建一种更加完善的解决方案。 许多早期采用应用服务器技术的人士抱怨它缺乏足够的开发工具支持。 BEA/Weblogic、 Bluestone、Forte和SilverStream等供货商在支持部署能力的同时大幅简化了开发程序 。 但是,这种服务器仍很复杂,应予以认真的分析对待。 瘦服务器是一类与众不同的应用服务器。 这些解决方案通常是支持HTTP及另外的具体功 能(如Web页面缓存)的软、硬件的组件。 将来,它们可能与其它种类合并。 Cobalt等厂商推出了瘦服务器功能,当这种功能与另一种解决方案集成时,性能将超过 同类特征;这对某种关键功能的高度优化来说至关重要。 最近,主机访问服务器已接近商用服务器。 这些服务器管理着主机应用的访问和表示, 通常是通过服务器管理的基于浏览器的5250或3270仿真对话进行管理。 IBM、Attachmate等添加了平台支持、可管理性和客户端自定义特征。 下一代主机访问服 务器可能将通过支持对主机数据更具客户化的访问与其它应用服务器合并。 在某些情况下,应用服务器可能会不受分类所限,支持不只一种服务。 例如,SilverSt ream和Sybase所推出的应用服务器就有集成开发工具,同时还具备事务支持。 将来,服 务器操作系统中也可能包含一种或多种功能。 Solaris、OS/400、NetWare、Linux、Win dows和其它服务器操作系统已具备Web技术,预计将来还会添加更多的应用服务器功能。 其实,这种方式意味着把所有的鸡蛋都放在一个篮子里。 在购买前对应用服务器作出评价并非易事。 你必须衡量它是否满足你的需求,关键是要 检查部署能力和安全功能,评估可伸缩性和可靠性。 最后,还要考虑到这种市场处于不 断发展变化之中。 专家篇 应用服务器走向成熟 中国科学院软件所 李渊明() 应用服务器的由来 回顾软件平台的主要发展过程及趋势,对于理解应用服务器的发展是非常有帮助的。 软 件发展的过程就是一个从旧平台不断向新平台进化的过程。 每当一个新平台出现的时候,都会有许多人首先开发出局部产品,每个产品可以满足一 小部分的功能。 随着市场的发展成熟,会出现几个主导公司,他们将许多局部产品的功 能综合到他们的产品中,形成主导产品。 关系数据库市场就是一个很好的例子,一开始 有许多局部产品,如数据仓库、对象存储、全文检索、事务处理、位图索引等,现在这 些都已经包含在主导产品中了,如Orcale 8、Sybase Adaptive Server等。 在客户应用 中,一开始有各种各样的小型软件产品,分别用于文字处理、电子表格、图文处理、邮 件处理、拼写检查、记事簿、活动安排等等,现在微软、Lotus等已经将许多标准的办公 功能集成到了一个单一的产品套装中,成为主导产品,现在我们一般不再需要五花八门 的单一功能的办公软件产品了。 我认为Web市场和应用服务器市场也会如此。 Web市场现在还处于百家争鸣的时代,开发 一个Web系统往往需要六、七种工具,但往往还不凑手,需要时刻注意新的小工具的出现 ,包括网上查找、四处搜集,这些都可能是解决问题的素材。 更大的难度是将所有这些 小工具集成到一起,因为这些小工具是各自独立开发的,谁也没有考虑集成的问题。 不 象客户机/服务器开发中,PowerBuilder、Delphi已全面集成了几乎所有所需的功能,我 们只需专心开发。 现在,Web的主导产品已经出现,如SilverStream、NetDynamics、Bluestone等,他们全 面集成了开发所需的功能,包括集成开发环境、分层次开发机制、源代码控制功能、安 全管理功能、加密功能、服务器集群(构造Cluster)能力、不间断的失败恢复能力、广 泛的协议标准支持能力、广泛的数据连接能力、事务处理能力、电子邮件处理能力、工 作流处理能力、触发代理功能等,各项功能分工合理,和谐统一。 这个市场正处于统一 的过程中。 随着基于Web的瘦客户机结构的发展,Web世界发生了巨大的变化,这种变化将Web开发和 传统的IT开发联系在一起。 IT系统需要Web的规范界面,广泛应用,方便维护,而Web系 统需要IT系统的规范化数据存储、海量数据访问、安全性及事务完整性保证。 在这种情 况下,就需要一种新的产品将两个平台联系到一起,在这种平台上,各组织机构可以结 合这两种技术进行开发。 这种平台,就是三层体系结构的中间层。 下一代的计算平台已经很明显是基于瘦客户端和Web的计算了。 支持Web和瘦客户应用自 然就必须将更多的处理放到中间层去,中间层的重要性就是显而易见的了。 瘦客户端就 需要一个肥服务器,不能两者都瘦。 而一般的Web服务器实在是太瘦了,因此需要我们费 很大力气到处寻找营养来养肥它。 应用服务器则是一个全面集成的肥服务器,本身就能 够满足我们大多数的需求。 应用服务器的发展过程 在基于Web和瘦客户计算之前,我们可以看到一些局部产品具有中间层,如: 分布对象服务(ORB、OTM等) TP监视器,事务管理器等 连接产品,提供应用程序访问历史遗留数据、ERP应用、关系数据库等 这些产品的一个突出特点是不能提供任何功能来支持用户界面,就是所谓的表演性服务 。 并且这些产品都是分立的专用产品。 基于Web的中间层服务??表演性服务器(PresentationServer) 从1994年开始,基于要创建动态交互式Web应用的想法,逐渐导出了一种新的中间层产品 思想:应用服务器思想。 这种产品的第一代是简单的Web服务器运行CGI程序,第二代产 品则致力于使开发和发布动态生成的HTML页面变得容易。 这一代产品的主要目的是提供 表演性功能,这种结构的主要缺点是业务逻辑是嵌在Web页面的Script中的。 这一代产品 的主要功能为: 表演性服务:动态HTML生成、状态和会话管理 集成工具:服务器附带有集成开发工具,用来帮助开发基于HTML的应用。 表演性服务器厂商着眼于扩充性及各种不同的数据源的连接性。 如果你习惯于生成些Se rvlet及使用JDBC编写组件,则这种服务器就可能引起你的兴趣。 代表性的服务器包括M icrosoft ASP、IBM WebSphere等,这些产品各不相同,大致来说,这些服务器注重帮助 开发者采用COM、EJB组件和Servlet等,并将其作裁减缩放。 用户可以使用自己喜欢的I DE生成组件,并装入应用服务器中。 因为HTML页面生成是通过Servlet完成,因此用户可 以使用服务器的Wizards来帮助创建页面或使用任何HTMLIDE来生成Servlet。 基于事务处理的中间层服务??事务处理服务器(TransactionServer) 事务处理服务器是第三代应用服务器,第三代应用服务器有了长足的发展,具备了许多 新特性: 有限的分布对象服务 当开发者认识到将业务逻辑放到Web页面的Script中的缺陷之后,便希望能将这部分逻辑 放到可重用的中间层对象中去。 这一代服务器大多数支持通过RMI和CORBA访问这些对象 。 有些产品还支持COM对象。 连接服务 这一代产品加入了健壮的、服务器级的关系数据库连接驱动程序,可以方便地访问大多 数ERP应用和历史遗留数据。 企业配置服务 如果要使电子商务站点支持大量的并发用户访问,可扩展性和可靠性就变得非常重要了 。 负载平衡和失败恢复功能是必不可少的,安全性和可管理性也是关键的功能。 Java客户程序 基于Web的HTML应用可以满足很多Internet用户的需要,但对于Intranet上的用户,他们 往往长时间地和同一个系统打交道,他们需要更为丰富、方便的用户界面。 这一点HTML 往往难以作到,而Java客户可以方便地作到,而且不失瘦客户计算的本质。 这种服务器主要用于事务处理性的应用,代表性的服务器包括:Oracle Application S erver,Microsoft MTS,BEA Weblogic,Gemstone,Sybase Jaguar等。 但这类服务器不提供 丰富的基于WEB的用户界面生成功能,即表演性服务器提供的那些功能。 综合性中间层服务??综合应用服务器 到现在为止,我们已经看到了Web应用服务器和事务处理服务器,这两种服务器都有缺点 ,以SilverStream、Bluestone为代表的新一代应用服务器是这两种服务器的结合。 它不 仅具备事务处理能力,还具备表演性服务能力,并且还包括集成的开发工具。 这是一种 集成完美的开发环境,是一种将开发、应用、表演、事务捆绑在一起的应用服务器。 利 用它,开发者能很快建立和使用Web应用。 其着重点是在优美的环境下高度交互式地进行 开发。 这一代产品具备的功能包括: 表演性服务、分布式对象服务、分布式事务服务、应用服务、连接服务、企业配置服务 、集成开发工具以及对第三方开发工具的开放性。 应用服务器的发展方向 由上述发展状况,笔者认为,应用服务器是朝着集成、扩展的方向发展的,正如关系数 据库和办公软件的发展一样。 一方面,应用服务器会集成越来越多的功能,不管是应用 服务器厂家自己开发的,还是从第三方厂家买来的,对用户来说是一个和谐的整体。 另 一方面,应用服务器会向着多方兼容和中立的方向发展,包括: 跨平台能力:UNIX、NT等 跨数据库能力:Oracle、DB/2、Microsoft SQLServer、Sybase、Informix等 跨分布式对象标准能力:CORBA、DCOM、EJB、RMI等 兼容多种应用和历史遗留数据的能力:SAP、Peoplesoft、Lotus Notes、CICS、MQ、Tu xedo等 应用服务器市场是一个快速发展的市场,在过去的一年里得到了飞快的发展,在今后的 一到两年里还会有激烈的竞争。 尽管现在还没有统一,但用户对该技术的需求已比较明 朗,统一的趋势已经非常明显,它正在逐渐走向成熟。 产品篇 尽管应用服务器的市场还相当稚嫩,但它的发展相当迅猛,除了有一些新兴厂商之外, 很多著名的厂商纷纷进入这一领域,包括IBM、微软、SUN、Oracle等。 以下便是几种有 代表性的应用服务器产品,希望读者能从中更加深入地了解应用服务器。 BEA WebLogic BEA WebLogic产品系列包括可单独使用或结合使用的适用于各种规模企业的一系列应用 服务器解决方案: BEA WebLogic Enterprise是高可伸缩、高可用、支持企业Java标准和CORBA且具有主机 互操作性的企业应用服务器,是运行关键任务Web应用的扩展型WebLogic组件中间件系列 的旗舰产品。 BEA WebLogic Enterprise能够帮助大型企业将其Web和Java应用与现有台 式机应用、企业数据和原有系统集成起来。 BEA WebLogic Server是BEA Web应用服务器的旗舰产品,为用户提供了一个可伸缩、满 足企业Java标准的应用服务器。 BEA WebLogic Server通过支持建立在网络上互联的Jav a应用程序而对BEA WebLogic Express进行扩展。 BEA WebLogic Server是第一个提供EJ B组件、Java消息传递和事件服务、微软COM集成以及零管理客户机的Web应用服务器。 BEA WebLogic Express为用户提供了一个入门级Web应用服务器。 使用BEA WebLogic Ex press能够生成动态Web页面并放入数据库查询结果。 Web表示逻辑由企业Java Servlets 以及Java Server Pages定义,关系型数据则通过BEA的Java数据库连接(JDBC)解决方案 实现。 BEA WebLogic Express支持HTML和Java客户机。 IBM WebSphere Application Server IBM WebSphere Application Server是一个完善的、开放的Web应用服务器。 它是IBM电 子商务应用架构的核心。 WebSphere应用服务器严格地遵循普遍流行的开放标准,如HTT P、HTML、JSP、JNDI和IIOP。 WebSphere应用服务器基于Java Servlet引擎,将通常的Web服务器(如Apache Server, Microsoft IIS,Netsacpe Enterprise Server和Lotus Domino Go WebServer)增强为基 于Java的Web应用服务器。 作为IBM电子商务应用架构的核心,WebSphere应用服务器提供 了无限的扩展性,允许用户利用IBM或其它厂商提供的Java技术扩展其运行环境。 WebSphere应用服务器满足维护一个Web站点的任何需求:简单安装,图形用户界面(方便 Servlet管理),基于Web的远程管理和安全特性。 它支持标准的Java Servlet(包括Java Server Page scripts),并增强其服务,例如会话状态,用户描述文件,通过连接管理器 (连接缓冲区)实现高性能的数据库访问。 利用IBM Connector系列,实现与后台系统(CI CS,IMS,MQSeries)的连接。 WebSphere应用服务器支持Enterprise Java Beans(EJB)编 程模型及CORBA。 联合Enterprise Java Server(EJS)和一个Java Object Request Brok er(ORB),可以通过IIOP访问分布的对象,利用这个标准的、广泛的编程模型,可在您的 Web应用中实现对各种商业对象的访问和运行服务。 Microsoft Transaction Server Microsoft Transaction Server (MTS) 2.0是 Windows NT 的一个重要特性,它采用Mi crosoft 组件对象模型 (COM) 技术,简化以服务器为中心的应用程序的开发和配置。 M TS 2.0 是在Windows NT 上构建和配置基于COM 的应用程序的最简便的方法。 MTS 完全 分成三层结构,从表示层到应用逻辑, 这使 MTS 开发人员在构造他们的应用程序时,就 象收集一组单用户COM 组件,然后在相应的层设置这些组件一样。 MTS 2.0 提供全面的组件功能,如自动事务支持、简单但强大的基于角色的安全性、访 问各种数据库及消息队列产品等。 IIS(Microsoft Internet InformationServer)与 MTS 2.0 集成 ,使用MTS 进行许多运 行时刻服务,如事务管理。 事务支持使 IIS active Server Pages能够在数据完整性的 完全保护下访问数据库、主机应用程序和消息队列。 MTS集成还给IIS 提供进程来防止单 个故障影响Web站点的其它部分,增强的运行时刻服务如线程和连接池提高了性能,并简化 了组件管理。 MTS 2.0 与MSMQ(Microsoft Message Queue Server)的集成使基于 MTS 的 应用程序能够以可靠、松散耦合的方式通信。 MSMQ 操作 (如发送和接收)自动得益于MT S事务以保护数据完整。 MTS 2.0 与 Microsoft SNA Server 4.0 的集成有助于主机应用 程序的构建及相应的事务管理。 Oracle Application Server Oracle应用服务器提供了一个开放的标准架构,是开发部署Web上的应用的理想平台。 它 的伸缩性、分布架构和高度数据库集成是支持关键事务,交易型应用的基础,通过采用 Netscape和Microsoft HTTP服务器,提供了易于使用的界面,并为Oracle方案提供了简 易的升级方法。 以符合CORBA2.0标准的ORB为基础,Oracle Application Server将应用程序插件(Appli cation Cartridge)与所有系统服务作为分布对象。 这样的设计使应用处理能被分散于数 部主机,有效而经济地解决性能瓶颈。 与其它Web解决方案比较起来,Oracle Applicat ion Server架构本身即保证其可扩展性。 Oracle Application Server是联系数据网络应用程序和数据库最简单的方法。 内含的P L/SQL插件(PL/SQL Cartridge)使出版数据库内的资料非常快速而简单。 当企业需出版动 态资料讯息时,传统进行静态内容设计的Web服务器需撰写单调且困难的脚本,Oracle Application Server的应用程序插件将使这些工作变得毫无需要。 集成各种类型数据库 、旧型主机系统(legacy system)与网络运算、瘦客户端时,Oracle Application Serv er的表现尤其杰出。 以对所有网络客户端提供跨平台支持为基础,Oracle Application Server提高对HTML、 Java、CORBA、DCOM等各种组件模型提供的易于扩展的能力。 SilverStream SilverStream是一个全面的集成产品。 它既包含了高性能的应用服务器,又包含了高效 的开发环境。 在统一的界面中,既支持HTML开发,又支持Java开发;既支持一般数据, 又支持多媒体数据。 特别是,许多服务器基于对Web的扩充,而SilverStream则基于对标 准的完整集成。 它使用HTTP1.1进行客户通讯,SMTP/POP3进行邮件操作,JNDI/LDAP和X .509进行认证,SSL3.0进行加密,SNMP进行系统管理,CORBA,RMI和COM和远程对象通讯 ,JDBC/ODBC用于数据存取。 SilverStream具有完整的集成开发环境??可视化、事件驱动工具和单一且一致的界面 。 所以无论你是构造数据驱动的HTML网页、Java应用程序或事物对象,利用SilverStre am提供的丰富的函数,都能快速、方便的实现。 用户可以使用SilverStream管理控制台来管理和监控任何事情,这包括安全性、服务器 统计数据、均衡负载能力、数据库、电子邮件等等,或者通过SilverStream管理应用编程 接口,创建自己的管理应用程序。 这无疑给用户提供了很大的灵活性。 SilverStream可连接的数据源非常广泛,不管是存储在关系数据库中,还是存储在IBM主 机中,不管是您自己开发的系统,还是SAP、Notes、CICS、Peopsoft,都可以统一在Si lverStream中。 SilverStream为获取最大的吞吐量和均衡性作了优化,而并未牺牲其他性能。 它的应用 级触发器技术,使得推技术的应用简单而自然。 Sybase Enterprise Application Server Sybase Enterprise Application Server 3.0(EA Server)是Sybase Internet应用开 发包Enterprise Application Studio 3.0中的重要组成部分,它将Sybase 的组件事务 处理服务器Jaguar CTS 和Web 应用服务器PowerDynamo 紧密集成并加以发展,是同时实 现Web OLTP 和动态信息发布的企业级应用服务器平台,并且支持所有标准的组件模型, 包括JavaBeans、COM和CORBA等。 Jaguar CTS支持基于各种组件模式和客户类型的应用的迅速开发和提交,而PowerDynam o 支持标准的Web技术,二者的联合对于要求动态页面服务、基于组件的业务逻辑和事务 处理的Web 应用非常有利。 PowerDynamo 的模板和脚本语言能够处理任何数据和业务逻 辑,并按客户端需求生成相应的HTML 页面,送往Web 服务器,它通过嵌入在模板中的SQ L 指令访问数据,通过调用Jaguar CTS 组件的方法访问复杂的业务逻辑。 EA Server 可以支持多种客户类型。 客户端可以用HTML、Java、ActiveX、PowerBuider 等工具开发或是它们中几种工具组合开发。 原有的应用程序可以完美地被移植到新的应 用环境中,使得客户端应用可以根据它们的实现特征选择合适的开发工具
Web框架是人们在使用某种语言编写Web应用服务端时关于架构的最佳实践
有些Web框架是从实际的Web项目抽取出来的也就是说做一个具体的应用项目时采取的架构比较理想就把这部分和领域无关而仅和Web的请求和响应处理有关的设计拿出来形成一个基础在开发别的应用项目的时候则可以从这基础做起让开发者更关注领域问题而不是Web的请求和响应的控制
也有些Web框架是直接设计出来的很多Web框架在设计的时候也都借鉴了别的框架吸取优点修改不足并根据自己的框架的定位在特定方面有自己的发挥形成了自己的特点比如有的web框架追求的是松耦合性层次结构之间都不密切绑定有的Web框架则追求敏捷性强调约定而不是配置
Java的Web框架虽然各不相同但基本也都是遵循特定的路数的使用Servlet或者Filter拦截请求使用MVC的思想设计架构使用约定XML或Annotation实现配置运用Java面向对象的特点面向抽象实现请求和响应的流程支持JspFreemarkerVelocity等视图
优点
JavaEE标准这意味着有很大的市场需求和更多的工作机会
上手快速并且相对容易
有大量可用的组件库
缺点
大量的JSP标签
对REST和安全支持不好
没有一个统一的实现既有SUN的实现又有Apache的实现——MyFaces
国内的OperaMasks还支持AJAX以及有开发工具支持
优点
对覆盖绑定(overridingbinding)验证(validation)等提供生命周期管理
与许多表示层技术/框架无缝集成JSP/JSTLTilesVelocityFreeMarkerExcelXSLPDF等
便于测试——归功于IoC
缺点
大量的XML配置文件
太过灵活——没有公共的父控制器
没有内置的Ajax支持
优点
不需要书写XML配置文件
良好的学习文档
社区成员很热心
缺点
社区比较小
不如其他的项目活跃
ActionBean里面的URL是硬编码的
优点
架构简单——易于扩展
标记库很容易利用FreeMarker或者Velocity来定制
基于控制器或者基于页面的导航
缺点
文档组织得很差
对新特征过分关注
通过Google搜索到的大多是Strutsx的文档
优点
一旦学会它将极大地提高生产率
HTML模板——对页面设计师非常有利
每出一个新版本都会有大量的创新
缺点
文档过于概念性不够实用
学习曲线陡峭
发行周期长——每年都有较大的升级
优点
对Java开发者有利(不是Web开发者)
页面和显示绑定紧密
社区活跃——有来自创建者的支持
缺点
HTML模板和Java代码紧挨着
需要对OO有较好的理解
Wicket逻辑——什么都用Java搞定
在Java的Web框架中我使用过StrutsStruts试用过StripesWicket了解过JSFSpringMVC以我使用的经验我觉得看一个JavaWeb框架应看看下面几个方面
设计理念
一个框架设计出来应该有一个基本的思路它为什么要要被设计出来?有的框架的目标就是提高效率有的框架的目标的给用户充分的选择有的框架的目标是充分了解实际需求给用户一个尽量合理的默认选择有的框架是要给使用者开发桌面程序的感觉应该说一个好的框架应该是实现了预期目标体现出了自己的设计理念的
设计的合理性
设计的合理性表现在框架在一些关键问题上的处理比如灵活性和敏捷性之间的权衡硬编码和文本配置之间的权衡灵活性指的是可以适应用户多样的需求很特殊的要求也能得到支持有的框架的实现基于太多的约定使得用户只能遵循而敏捷性指的是用户在解决绝大多数常规问题的时候能尽量少做工作提高效率框架设计者只能在这两者见达到一个平衡点权衡的怎么样就很见水平了硬编码和文本配置之间的权衡也很有意思文本配置的意义在于Java是一个编译语言强调代码的封闭讲究扩展而不是修改这种情况下文本配置信息可以很方便的在不修改程序的情况下改变程序行为但是随着一些灵活的脚本语言实现的Web框架的出现人们发现在这样的框架中脚本语言即做程序编码语言也做配置语言还做视图上的标记语言这使我们对Java实现的框架有了一番新的审视既然配置文件并没有消除对程序的修改为什么不能在应编码上下下功夫呢?
设计的平衡性
设计的平衡性指的是框架在设计流程中各阶段各层次的实现方式时所达到的上述权衡(灵活性和敏捷性之间的权衡等)应该是具有一致的水平一个在控制上过分灵活而视图上具有非常大限制的框架是不能算做一个好的框架的
框架真的解放了开发者吗
框架的目的是让开发者把更多的精力放在领域问题而非Web的请求和响应的处理问题上而事实上框架都做到这一点了吗?不可否认框架的使用提高代码的可维护性但是框架在解放开发者这点上就未必了有时还给开发者带来了额外的负担事实上直接使用Servlet只要维持好代码风格一样可以很有效率当然直接使用Servlet的灵活性就不用说了
在我接触的Web框架中我最推崇的是Struts设计优雅偏重灵活也基本不造成额外的负担当然这些评价是和我参与的项目的规模有关的其他规模的项目Struts就未必合适了我希望Struts能在下面几个方面有些改善
在提供文本配置方式的基础上给一个约定配置的方式让开发者在大多数情况下可以不配置
配置也支持硬编码因为有时候维护可修改的硬编码是很有效率的
lishixinzhi/Article/program/Java/hx//
java里面那么多框架,选择哪个啊这里有一些步骤可以帮助你选择正确的Java框架:
1.确定你的项目需求:在选择Java框架之前,需要确定项目的具体需求,比如要构建的应用的类型、需要的特性、可伸缩性、应用的性能等。
2.评估可用的框架:一旦你确定了项目需求,你就可以开始根据它们的特性、性能、可伸缩性、易用性、社区支持和文档来评估可用的Java框架。
3.考虑一下学习曲线:考虑框架的学习曲线,指的是你的团队成员学习和有效使用框架所需的时间和精力。 有些框架比其他框架更复杂,因此选择一个与团队成员的技能水平相匹配的框架非常重要。
4.看看社区支持:社区支持非常重要,因为它提供了对论坛、教程和文档等资源的访问。 具有强大社区支持的框架可以帮助你快速解决问题并获得帮助。
5.评估生态系统:Java框架生态系统包括可以帮助你构建应用程序的库、工具和资源。 一个具有健壮生态系统的框架可以节省你的时间和精力,并且可以帮助你避免重新发明轮子。
6.考虑长期可行性:当选择一个Java框架时,考虑它的长期生存能力是很重要的。 确保框架有一个活跃的社区,并定期更新,以避免框架过时和不受支持的风险。
java有什么常用开源的框架?java常用开源框架如下:\x0d\【Java开源JEE框架】\x0d\x0a\x0d\x0aSpring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。 Spring的架构基础是基于使用JavaBean属性的InversionofControl容器。 然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 \x0d\x0a\x0d\【Java开源Web开发框架】\x0d\x0a\x0d\x0aWebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EEWeb框架。 \x0d\x0a\x0d\【Java开源Web开发框架】\x0d\x0a\x0d\x0aStruts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。 由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。 Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中\x0d\x0a\x0d\【Java开源持久层框架】\x0d\x0a\x0d\x0aHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合\x0d\x0a\x0d\【Java开源调度框架】\x0d\x0a\x0d\x0aQuartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。 Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。 \x0d\x0a\x0d\【Java开源模板引擎】\x0d\x0a\x0d\x0aVelocity是一个基于java的模板引擎(templateengine)。 它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。 Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 \x0d\x0a\x0d\【Java开源持久层框架】\x0d\x0a\x0d\x0a使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate实现ORM而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL语句,而ibatis则要求开发者编写具体的SQL语句。 相对Hibernate等“全自动”ORM机制而言,ibatis以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。 作为“全自动”ORM实现的一种有益补充,ibatis的出现显得别具意义。
北大青鸟设计培训:Javaweb现在流行用什么框架?说到java,很多人头都大成了两个,因为Java框架很多。
但是比较好的方面是,这些框架都能解决特定的问题,提高开发效率、简化我们的代码复杂度,现在除了很多大家通用的一些主流框架外,很多公司针对自己的业务会自定义一些公司内部的框架,当然作为学习者java课程告诉大家首先要清楚Javaweb都有哪些框架需要学习。
回答这个问题首先要看我们的项目规模,对于”体量”较小的单应用项目,和需要处理海量数据、高并发的分布式项目所学习使用的框架还是不同的。
ORM型框架,很多Javaweb程序都需要使用关系数据库来进行数据的持久化,所以对于这种需要进行数据库操作的框架,也就是对JDBC进行封装的ORM框架是需要学习的,目前比较流行的是基于SQL的mybatis框架,这是一个轻量级的ORM框架,学习使用起来比较容易上手,同类型的还有Hibernate框架。
MVC型框架,MVC把程序从逻辑上分为视图层、控制层、模型层,各层各司其职,之间是相互调用的关系而不是相互依赖的关系,这种模式能很好的适应需求的变化及软件的升级变更。
目前应用较多的MVC框架是springMVC框架,这个框架有清晰的角色划分,有强大而直接的配置方式,高效的绑定和验证等很多优势。
较早的Struts2框架也是MVC框架。
Spring框架,其实Java的从业者很多都绕不开Spring,Spring家族有很多“工具”,编程思想从面相过程到面相对象是一个巨大的进步,然而随着程序越来越复杂,对象越来越多,高效的“管理”及应用这些对象变得越来越重要,Spring的IoC就是把对象的创建、“管理”交由Spring容器来进行,来实现控制反转,同时提供了各种注入值(DI)的方式,大大提高和简化了我们的工作,这就是javaweb需要学习的spring的IoC/DI;我们程序的业务比较复杂时,除了要完成核心功能外,还需要完成注入异常处理、日志记录、事务处理等常规功能,这些常规的操作比较耗费精力,springAOP(面向切面编程)就是解决这个问题的。
Javaweb需要学习一些前端框架,尤其是问题中提到的已经写好了数据接口,或者是已经有了简单的后台,前端框架jQuery是一定要学习的,如果项目基于效率考虑,需要前后端分离,可以学习vue等框架。
javaweb是特制原sun公司出的一套以servlet规范的web层规范,是java在web方面的开发.围绕此规范的web服务器有tomcat,jetty,jboss等,我们可以使用sun公司提供的servlet规范结合实现了servlet规范的这些web服务器做java网站,这就是javaweb。 Java EE是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本。 这个版本以前称为 J2EE。 能够帮助我们开发和部署可移植、健壮、可伸缩且安全的服务器端 Java应用程序。 Java EE 是在 Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构是企业级应用开发平台,主要是围绕企业软件的开发提出来的一整套业务和技术解决方案,比如EJB和Spring体系平台,主要是解决软件开发过程中的数据持久化,事务机制,业务服务等。 其实这两者只是一个平台和一个模式的关系。 就相当于电脑和操作系统。 可以是笔记本电脑,可以用windows操作系统;也可以是台式机,用linux操作系统一个道理。 但是呢,java web一般情况都用的是j2ee这个平台。
一、Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java熟悉起来再说。 用很短的时间快速过一遍Java语法,连懵带猜多写写代码,要“知其然”。 1、《Java编程思想》 在有了一定的Java编程经验之后,你需要“知其所以然”了。 这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知识有比较清楚的交待,对Java基本语法,基本类库有比较清楚的讲解,可以帮你打一个良好的Java编程基础。 这本书的缺点是实在太厚,也比较罗嗦,不适合现代人快节奏学习,因此看这本书要懂得取舍,不是每章每节都值得一看的,挑重点的深入看就可以了。 2、《Agile Java》中文版 这本书是出版社送给我的,我一拿到就束之高阁,放在书柜一页都没有翻过,但是前两天整理书柜的时候,拿出来一翻,竟然发现这绝对是一本好书!这本书一大特点是以单元测试和TDD来贯穿全书的,在教你Java各种重要的基础知识的过程中,潜移默化的影响你的编程思维走向敏捷,走向TDD。 另外这本书成书很新,以JDK5.0的语法为基础讲解,要学习JDK5.0的新语法也不错。 还有这本书对于内容取舍也非常得当,Java语言毕竟类库庞大,可以讲的内容太多,这本书选择的内容以及内容的多寡都很得当,可以让你以最少的时间掌握Java最重要的知识,顺便培养出来优秀的编程思路,真是一本不可多得的好书。 虽然作者自己把这本书定位在入门级别,但我不确定这本书用来入门是不是稍微深了点,我自己也准备有空的时候翻翻这本书,学习学习。 二、Java编程进阶类 打下一个良好的Java基础,还需要更多的实践经验积累,我想没有什么捷径。 有两本书值得你在编程生涯的这个阶段阅读,培养良好的编程习惯,提高你的代码质量。 1、《重构 改善既有代码的设计》 这本书名气很大,不用多介绍,可以在闲暇的时候多翻翻,多和自己的实践相互印证。 这本书对你产生影响是潜移默化的。 2、《测试驱动开发 by Example》 本书最大特点是很薄,看起来没有什么负担。 你可以找一个周末的下午,一边看,一边照做,一个下午就把书看完,这本书的所有例子跑完了。 这本书的作用是通过实战让你培养TDD的思路。 三、Java架构师之路 到这个阶段,你应该已经非常娴熟的运用Java编程,而且有了一个良好的编程思路和习惯了,但是你可能还缺乏对应用软件整体架构的把握,现在就是你迈向架构师的第一步。 1、《Expert One-on-One J2EE Design and Development》 这本书是Rod Johnson的成名著作,非常经典,从这本书中的代码诞生了springframework。 但是好像这本书没有中译本。 2、《Expert One-on-One J2EE Development without EJB》 这本书由gigix组织翻译,多位业界专家参与,虽然署名译者是JavaEye,其实JavaEye出力不多,实在是忝居译者之名。 以上两本书都是Rod Johnson的经典名著,Java架构师的必读书籍。 在我所推荐的这些书籍当中,是我看过的最仔细,最认真的书,我当时读这本书几乎是废寝忘食的一气读完的,有小时候挑灯夜读金庸武侠小说的劲头,书中所讲内容和自己的经验知识一一印证,又被无比精辟的总结出来,读完这本书以后,我有种被打通经脉,功力爆增的感觉。 但是后来我看过一些其他人的评价,似乎阅读体验并没有我那么high,也许是因为每个人的知识积累和经验不同导致的。 我那个时候刚好是经验知识积累已经足够丰富,但是还没有系统的整理成型,让这本书一梳理,立刻形成完整的知识体系了。 3、《企业应用架构模式》 Martin的又一本名著,但这本书我只是泛泛的看了一遍,并没有仔细看。 这本书似乎更适合做框架的人去看,例如如果你打算自己写一个ORM的话,这本书是一定要看的。 但是做应用的人,不看貌似也无所谓,但是如果有空,我还是推荐认真看看,会让你知道框架为什么要这样设计,这样你的层次可以晋升到框架设计者的角度去思考问题。 Martin的书我向来都是推崇,但是从来都没有像Rod Johnson的书那样非常认真去看。 4、《敏捷软件开发 原则、模式与实践》 Uncle Bob的名著,敏捷的经典名著,这本书比较特别,与其说是讲软件开发过程的书,不如说讲软件架构的书,本书用了很大篇幅讲各种面向对象软件开发的各种模式,个人以为看了这本书,就不必看GoF的《设计模式》了。 四、软件开发过程 了解软件开发过程不单纯是提高程序员个人的良好编程习惯,也是增强团队协作的基础。 1、《UML精粹》 UML其实和软件开发过程没有什么必然联系,却是软件团队协作沟通,撰写软件文档需要的工具。 但是UML真正实用的图不多,看看这本书已经足够了,完全没有必要去啃《UML用户指南》之类的东西。 要提醒大家的是,这本书的中译本翻译的非常之烂,建议有条件的看英文原版。 2、《解析极限编程 拥抱变化》XP 这是Kent Beck名著的第二版,中英文对照。 没什么好说的,必读书籍。 3、《统一软件开发过程》UP 其实UP和敏捷并不一定冲突,UP也非常强调迭代,测试,但是UP强调的文档和过程驱动却是敏捷所不取的。 不管怎么说,UP值得你去读,毕竟在中国真正接受敏捷的企业很少,你还是需要用UP来武装一下自己的,哪怕是披着UP的XP。 4、《敏捷建模》AM Scott Ambler的名著,这本书非常的progmatic,告诉你怎么既敏捷又UP,把敏捷和UP统一起来了,又提出了很多progmatic的建议和做法。 你可以把《解析极限编程 拥抱变化》、《统一软件开发过程》和《敏捷建模》这三本书放在一起读,看XP和UP的不同点,再看AM是怎么统一XP和UP的,把这三种理论融为一炉,形成自己的理论体系,那么你也可以去写书了。 五、软件项目管理 如果你突然被领导提拔为项目经理,而你完全没有项目管理经验,你肯定会心里没底;如果你觉得自己管理项目不善,很想改善你的项目管理能力,那么去考PMP肯定是远水不解近渴的。 1、《快速软件开发》 这也是一本名著。 可以这样说,有本书在手,你就有了一个项目管理的高级参谋给你出谋划策,再也不必担心自己不能胜任的问题了。 这本书不是讲管理的理论的,在实际的项目管理中,讲这些理论是不解决问题的,这本书有点类似于“软件项目点子大全”之类的东西,列举了种种软件项目当中面临的各种问题,以及应该如何解决问题的点子,你只需要稍加变通,找方抓药就行了。 六、总结 在这份推荐阅读书籍的名单中,我没有列举流行的软件框架类学习书籍,例如Struts,Hibernate,Spring之类,也没有列举AJAX方面的书籍。 是因为这类书籍容易过时,而上述的大半书籍的生命周期都足够长,值得你去购买和收藏。
Java简介 Java是由Sun MicroSystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。 用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动感的Web、Internet计算。 从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。 另一方面,Java技术也不断更新。 Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。 Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。 在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。 现在Java平台已经嵌入了几乎所有的操作系统。 这样Java程序可以只编译一次,就可以在各种系统中运行。 Java应用编程接口已经从1.1x版发展到1.2版。 目前常用的Java平台基于Java1.4,最近版本为Java1.6。 Java分为三个体系JavaSE,JavaEE,JavaME。 Java语言Java语言是一个支持网络计算的面向对象程序设计语言。 Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。 主要特性如下:1、Java语言是简单的。 Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。 另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。 特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2、Java语言是一个面向对象的。 Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。 Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。 总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。 Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 4、Java语言是健壮的。 Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。 对指针的丢弃是Java的明智选择。 Java的安全检查机制使得Java更具健壮性。 5、Java语言是安全的。 Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。 除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。 Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。 这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。 这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。 Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 8、Java语言是解释型的。 如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。 在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。 9、Java是高性能的。 与那些解释型的高级脚本语言相比,Java的确是高性能的。 事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。 10、Java语言是多线程的。 在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。 通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。 值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。 线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。 11、Java语言是动态的。 Java语言的设计目标之一是适应于动态变化的环境。 Java程序需要的类能动态地被载入到运行环境,也可以通过网络来载入所需要的类。 这也有利于软件的升级。 另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。 Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。 Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。 特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。 1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口。 2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。 3、Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。 一个Java对象的方法能被远程Java虚拟机调用。 这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。 4、Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无逢的互操作性。 这使得Java能集成异构的商务信息资源。 5、JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无逢的连接。 这个接口屏蔽了企业网络所使用的各种命名和目录服务。 6、JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。 7、JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。 8、JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。 在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。 一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。 一个JavaBean的主要特征包括属性、方法和事件。 通常,在一个支持JavaBeans规范的开发环境(如Sun Java Studio 和IBM VisualAge for Java)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。 JavaBean的优势还在于Java带来的可移植性。 现在,EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。 除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深入讨论超出了本书的范围。 Java开源项目Spring FrameworkSpring 是一个解决了许多在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框架。 是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。 WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。 WebWork2使用ServletDispatcher将HTTP请求的变成 Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。 WebWork2支持多视图表示,视图部分可以使用 JSP, Velocity, FreeMarker, JasperReports,XML等。 在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上 是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。 由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。 Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。 HibernateHibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 Eclipse平台下的Hibernate辅助开发工具:QuartzQuartz 是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。 Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。 Jobs可以做成标准的Java组件或 EJBs。 Quartz的最新版本为Quartz 1.5.0。 VelocityVelocity 是一个基于java的模板引擎(template engine)。 它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。 Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。 Velocity也可以为Turbine web开发架构提供模板服务(template service)。 Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。 IBATIS使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。 相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。 作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。 Compiere ERP&CRMCompiere ERP&CRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的全部领域,支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。 易于安装、易于实施、易于使用。 只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。 Roller Weblogger 这个weblogging 设计得比较精巧,源代码是很好的学习资料。 它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。 Eclipse Eclipse平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数 —4千万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。 XPlanner XPlanner 一个基于Web的XP团队计划和跟踪工具。 XP独特的开发概念如iteration、user stories等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。 XPlanner特点包括:简单的模型规划,虚拟笔记卡(Virtual note cards),iterations、user stories与工作记录的追踪,未完成stories将自动迭代,工作时间追踪,生成团队效率,个人工时报表,SOAP界面支持。 HSQLDB HSQLDB(Hypersonic SQL)是纯Java开发的关系型数据库,并提供JDBC驱动存取数据。 支持ANSI-92 标准 SQL语法。 而且他占的空间很小。 大约只有160K,拥有快速的数据库引擎。 Liferay 代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用 Apahce Lucene实现全文检索功能。 主要特点:1、提供单一登陆接口,多认证模式(LDAP或SQL);2、管理员能通过用户界面轻松管理用户,组,角色;3、用户能可以根据需要定制个性化的portal layout;4、能够在主流的J2EE应用服务器上运行,如JBoss+Jetty/Tomcat,JOnAS;5、支持主流的数据库,如PostgreSQL,MySQL;6、使用了第三放的开源项目,如Hibernate, Lucene, Struts;7、支持包括中文在内的多种语言;8、采用最先进的技术 Java, EJB, JMS, SOAP, XML;JetSpeed Jetspeed 是一个开放源代码的企业信息门户(EIP)的实现,使用的技术是Java和XML。 用户可以使用浏览器,支持WAP协议的手机或者其它的设备访问Jetspeed架设的信息门户获取信息。 Jetspeed扮演着信息集中器的角色,它能够把信息集中起来并且很容易地提供给用户。 Jetspeed具有如下的特征:* 即将成为标准化的Java Portlet API* 基于模板的布局, 包括JSP和Velocity* 通过开放的内容同步技术支持远程XML内容交换* 定制默认的主页* 使用数据库进行用户认证* 内存缓存技术, 加快页面的响应* 通过Rich Site Summary技术, 支持同步内容* 和Cocoon, WebMacro, Velocity集成.* Wireless Markup Language (WML) 支持* 使用XML格式的配置文件注册portlet.* 完整的Web Application Archive (WAR) 支持* Web应用程序开发的基础设施* 可以在本地缓存远程内容* 与Avantgo同步* 可移植到所有支持JDK1.2和Servlet 2.2的平台* 与Turbine模块和服务集成* 可以根据用户, 安装媒体类型和语言的不同设定, 产生不同的个性化服务* 持续化服务使得所由的portlet能够容易的存储每个用户的状态, 页面和portlet* 使用皮肤技术使得用户可以选择portlet的颜色和显示属性* 自定义功能是的管理员可以选择portlet以及定义个人页面的布局* 在数据库中存储PSML* 通过Jetspeed的安全portlets管理用户, 组,角色和权限* 基于角色对访问portlet进行控制JOnASJOnAS 是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。 整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。 JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。 JFox3.0JFox 是 Open Source Java EE Application Server,致力于提供轻量级的Java EE应用服务器,从3.0开始,JFox提供了一个支持模块化的MVC框架,以简化EJB以及Web应用的开发! 如果您正在寻找一个简单、轻量、高效、完善的Java EE开发平台,那么JFox正是您需要的。 JFox 3.0 拥有以下特性: 1. 重新设计的 IoC 微内核,融入 OSGi 模块化思想 2. 设计成嵌入式架构,能够和任何 Java Web Server集成部署 3. 支持 EJB3,JPA规范,支持容器内和容器外两种方式运行EJB和JPA组件 4. 支持 EJB 发布成Web Service 5. 采用 JOTM()提供事务处理,支持两阶段提交(2PC) 6. 采用 XAPool() 提供 XA DataSource,支持智能连接池管理 7. 内置 MVC 框架,实现自动Form Mapping,Validator,Uploading等功能,支持JSP/Velocity/Freemarker页面引擎,并支持直接在Action中注入EJB 8. 支持多应用模块部署,让中大型应用充分享受模块化开发带来的优势 9. 提供 Manager 管理模块,可以查看和管理各种运行时参数10. 提供根据 JFox 特色重写的 Petstore 应用模块
内容声明:
1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:http://www.jujiwang.com/article/01fee8312e8a8644846b.html,复制请保留版权链接!
简介ReplaceInto语句是一个强大的MySQL语句,它可以用于插入或更新目标表中的数据,与INSERT语句不同,ReplaceInto语句在目标表中存在匹配的主键时,它会更新现有行,而不是插入新行,这使得ReplaceInto语句非常适合于需要更新或插入数据的应用程序,触发器触发器是数据库对象,当对目标表进行某些操作,例如插入、...。
本站公告 2024-09-27 07:41:08
ReactXP是一个跨平台框架,可帮助您使用JavaScript和React构建适用于iOS、Android和Web的原生应用程序,使用ZoomXZoomX是ReactXP的一个可选组件,它可以通过CSS,like语法提供对nativeZoomSDK的访问,它允许您在ReactXP应用程序中轻松集成视频会议功能,安装ZoomX```b...。
技术教程 2024-09-16 01:45:36
简介ArgumentException是.NET框架中一个常见的异常,它表示在方法调用中传递了一个无效或不可接受的参数,这种异常可能会令人沮丧,因为它可能会中断你的代码并导致意外的行为,本文将探讨ArgumentException的最佳实践,以帮助你避免和处理此类异常,避免ArgumentException的最佳实践以下是避免Argu...。
互联网资讯 2024-09-15 14:33:32
蜘蛛程序,也称为网络爬虫或网络机器人,是一种自动化的软件程序,用于系统地浏览互联网上的网页,收集和提取数据,这项技术近年来取得竞争优势,产品开发,蜘蛛程序可以识别和分析有关用户需求和偏好的数据,帮助企业开发满足市场需求的产品和服务,客户关系管理,蜘蛛程序可用于监控社交媒体和在线论坛上的客户反馈,从而提高客户满意度和忠诚度,蜘蛛程序技术...。
本站公告 2024-09-11 18:02:29
Socket服务在Socket编程中,服务端的作用是监听来自客户端的连接请求,并为客户端提供服务,本文将深入探讨Socket服务的原理和实现,助你进阶为Socket编程大师,Socket服务端架构Socket服务端通常由以下组件组成,服务器套接字,用于监听客户端连接请求的套接字监听循环,服务器端不断监听服务器套接字上的连接请求客户端连...。
互联网资讯 2024-09-11 07:49:55
C语言是一种强大的编程语言,被广泛用于开发各种应用程序,从操作系统和嵌入式系统到图形和游戏开发,为了充分释放C语言的潜力,定制化C程序培训至关重要,可以帮助您针对特定的需求和目标定制您的学习体验,本文将探讨定制化C程序培训的优势,并提供一些技巧来创建符合您特定需求的培训计划,定制化C程序培训的优势针对特定需求,定制化培训可以让您针对您...。
互联网资讯 2024-09-08 21:15:23
深入浅出C语言程序设计,第2版C语言概述C语言是一种通用的计算机编程语言,由丹尼斯·里奇在20世纪70年代早期开发,它以其简洁、高效和可移植性而闻名,C语言广泛用于开发操作系统、嵌入式系统和其他低级软件,C语言特性简洁和高效,C语言的语法非常简单,易于学习和使用,它提供了强大的工具和特性,可以编写高效的代码,可移植性,C语言代码可以...。
本站公告 2024-09-08 11:15:12
引言在Java编程中,常量是一种不可变的值,一旦定义就不能更改,常量在许多情况下都很有用,例如,确保代码的健壮性,因为它们不能在运行时意外更改,提高代码的可读性,因为它们清晰地定义了应用程序中使用的固定值,支持单元测试,因为它们提供了稳定的值,常量的类型Java中有两种类型的常量,1.字面量常量字面量常量直接用它们的原始值定义,例如,...。
最新资讯 2024-09-07 21:16:54
确保协作和无缝运行银行系统案例在分布式系统中,协调任务至关重要,以确保各个组件之间的协作和无缝运行,Java定时器是一个强大的工具,可用于在分布式环境中安排和执行任务,通过利用Java定时器,我们可以实现一个高效且可扩展的银行系统,以处理各种交易和操作,Java定时器概述Java定时器是一个Java类库,它提供了在指定时间或间隔执行任...。
最新资讯 2024-09-07 17:56:22
弹窗,Modal,是一种常见的网站交互元素,它可以用来显示重要信息、收集用户输入或提供其他交互,创建一个弹窗代码并不困难,只需要了解一些基本的HTML和CSS即可,HTML结构弹窗的HTML结构包括两个主要部分,容器和内容,容器负责定义弹窗的整体结构,它使用``元素创建,容器还包括关闭按钮,它使用``元素创建,内容部分定义弹窗中显示的...。
本站公告 2024-09-07 01:10:22
简介JSP购物车是基于JSP技术的电子商务网站的核心组件,它允许用户浏览产品、将产品添加到购物车、查看购物车并结账,使用JSP购物车的好处包括,快速简便的开发可扩展性和可定制性与多种支付网关和客户管理工具集成集成支付网关支付网关是处理在线支付的第三方服务,它充当商店和客户银行之间的桥梁,确保资金安全转移,集成支付网关涉及以下步骤,选择...。
技术教程 2024-09-06 22:51:32
前言阴兵借道,是一种在中国民间广为流传的灵异传说,相传阴兵借道时,会形成一支浩浩荡荡、旌旗蔽日的队伍,所经之处阴风阵阵,令人不寒而栗,而对于阴兵借道的真实性,历来众说纷纭,莫衷一是,阴兵借道的传说根据民间传说,阴兵借道通常发生在夜晚,队伍中由一位身着古代官服的将军带队,士兵们则披盔戴甲,手持兵器,他们会在特定的地点借用阳间道路,前往阴...。
互联网资讯 2024-09-04 00:29:04