J2EE到底是什么

目前所有的B/S系统应用可以分为:有状态(statefull)和无状态(stateless)两大类别。 有状态是指在整个系统的处理过程中要保留记住一些信息,而无状态则相反,每次request都是独立的连接,不需要在每个request之间共享数据等等。

对于这两种应用,通常第一考虑是性能要最优,性能是我们选择IT技术的主要依据之一。

为达到最大化的性能,对于Java系统,以前通常的作法是使用对象池,这样节约对象生成时的性能开销,也就是说系统启动时,预先生成一定数目的对象实例在 内存中,需要使用时,从对象池中取出实例,用完,归还对象池,对于有状态的应用,可以使用相关持久化(persistence)策略来保存状态。

下一步,如何并行访问对象池将是非常重要,java的多线程技术为我们提供了实现可能,线程的创建销毁也是可能非常耗时的,那么,无疑象使用对象池一样,我们必须使用线程池来实现多线程并行计算的最优化。

使用线程池和对象池,每次客户端请求发生一次就从线程池中借用一个线程,处理完这个请求就将线程返回线程池,同样,使用线程快速的访问对象,对象也是从对象池中借用,用完就还回对象池。 整个这样的架构设计在性能上是最优的。

有了性能保证,安全机制、事务机制、集群(cluster)技术也将是选择IT技术的主要依据。

J2EE就是这样一个实现上述多种考量的综合标准框架系统,在具体使用中,也许我们对所有这些考量的要求并不都一样重视,比如:如果纯粹追求性能是第一,可以忽视事务机制,那么,完整的J2EE技术也许就并不适合你。

那么我们先看看J2EE是如何从性能上保证我们的应用系统以最快速度运行的,也就是说J2EE中必然应该有上述线程池和对象池的实现技术,servlet实际是基于线程池的更好的线程容器;EJB是基于对象池的更好的对象容器。

看看Servler的架构图:

当client1发生请求时servlet容器会从线程池中分配一个线程给这个request.

再看看EJB的架构图:

instance Pool作为一个对象实例池,维持着EJB实例,当然这个对象池是用生命周期的,简单的说
EJB=对象池+远程对象池

但是,EJB还整合了相当的其它增强功能,如安全
事务机制等,这些对于一般应用都是必需的,当然你还必须根据你的需要来选择是否使用J2EE,如果你的应用对安全
事务机制没有要求,直接使用线程池和对象池技术肯定获得最好的性能。

所以,根据Servler和EJB的原理,我们已经可以规划我们的应用,什么可以放在servlet,或什么需要放在EJB中实现:

线程的本质决定了servlet只适合一些轻量的应用,如分析简单XML文档,
通过JDBC访问数据源,使用JMS或JavaMail处理简单的信息Message,或使用JTS/JTA处理简单的事务机制,注意这些用词都是"简单"的,一旦复杂了,就要使用EJB了。

下面从客户端和服务器端两个方面来具体考量这两个技术的使用,这里的客户端不一定是指最终客户端,因为J2EE是多层结构,中间层可能在多个服务器上实现,如果一个服务器上的服务是供另外一个服务器上的应用访问的,那么后者我们也称为客户端。

根据应用的复杂程度和要求不同,分下列情况:

1.在WEB层可以实现的一些应用

如果你的系统没有很复杂的事务处理,或访问很多企业原有的资源,那么可以借助javabean这样的一些Help性质的类来实现你的应用,但是,这样的方案不是最干净clean,
最有效efficient, 或最有扩展性的scalable。

否则,将所有核心计算放置入EJB中。

2.所有的复杂商务计算核心都在EJB中完成

如果你的客户端和服务器端之间有防火墙,那么目前能够无障碍通过防火墙的协议只有Http了(Web
Service也是基于http就是这个道理),既然使用http了,而Servlet是基于Http协议的,那么就需要通过servlet来访问EJB,这是我们最普遍的应用情况。

但是,如果你的客户端和服务器端可以放置在一个网络内,之间没有防火墙,那么就不必使用Servlet,直接使用Java调用RMI来访问EJB,这样性能是最好的,这时的Servlet大概只有用于控制Jsp的页面的输出了(MVC模式中的控制作用)。

如果是非java客户端,可以通过CORBA组件来访问EJB。

3.如果你的应用对速度要求很高,要求非常快,对于事务处理等方面几乎无要求

直接使用J2SE,加上线程池和对象池技术,将会使你的java系统性能发挥极致。Jakarta.Apache.org有这两种技术的源码,线程池可以从Servlet容器Tomcat的源码中发现。

时间: 2024-10-24 21:58:02

J2EE到底是什么的相关文章

转载 j2ee j2se j2me 区别,mvc 和ssh联系理解

[转]J2SE J2EE J2ME的区别 以及 MVC与SSH对应关系 2014-3-6阅读322 评论0 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不同的包,以面向特定的应用. Java2平台包括标准版(J2SE).企业版(J2EE)和微缩版(J2ME)三个版本:Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类.比如:数据库连接.接口定义

解析JDK、J2EE、J2SE、J2ME的区别

JAVA开发四年,许多东西概念性却很模糊,这里给自己补习一下,也和大家分享一下. 你对JDK.J2EE.J2SE.J2ME概念是否了解,这里和大家分享一下JDK.J2EE.J2SE.J2ME的概念以及他们的关系区别,相信本文介绍一定会让你有所收获. JDK,J2EE,J2SE,J2ME的概念区别是什么呢? 1.JDK是Javadevelopmenttoolkit,相当于是Java的库函数,是编译,运行java程序的工具包. J2EE是Java2enterpriseedition是Java的一种企

JDK、J2EE、J2SE、J2ME的区别

JDK.J2EE.J2SE.J2ME的区别 你对JDK.J2EE.J2SE.J2ME概念是否了解,这里和大家分享一下JDK.J2EE.J2SE.J2ME的概念以及他们的关系区别,相信本文介绍一定会让你有所收获. JDK,J2EE,J2SE,J2ME的概念区别是什么呢? 1.JDK是Javadevelopmenttoolkit,相当于是Java的库函数,是编译,运行java程序的工具包. J2EE是Java2enterpriseedition是Java的一种企业版用于企业级的应用服务开发 J2SE

《转载》Java EE启示录

前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓"启示录",就是这个意思. 一.Java EE是什么? Java EE(Java Enterprise Edition)是一种企业级应用的软件架构,同时是一种思想,一套规范. 二.Java EE的发展史 Java Enterprise Edition的发展不知不觉已经12年了,不知道大家有没留意,一开始,Java Enterprise E

JEE , EJB概念深入概括

说起EJB,不得不提JEE,java EE 英文全称为:java Enterprise Edition企业级应用的软件架构,是一种思想,也是一种规范,方便从事这方面的开发者以及开发厂商进行规范性的开发和设计. 既然JEE在Java领域具有举足轻重的味道,那么肯定有塔的独到之处,那么他的独到之处就在于他能帮助我们以什么样独特的视角去解决问题,一个好的架构,高并发,多处理,分布式这些字眼是不能缺少的.而JEE解决的问题,就是分布式应用. 说到分布式应用,应该知道的一项技术就是RPC,英文全称为:Re

通俗理解J2EE的13种规范

学习到Java就不得不了解为人熟知的13种规范,小编从网上各种搜集资料,可是都是一些专业性的术语,确实很令人费解,讲解的都很抽象.在小编的不懈努力之下,通过看别人的博客,汇总了以下的内容. 1.JDBC(java Database Connectivity):   官方:JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据库的访问也具有平台无关性. 小编:学习过.NET的一定了解ODBC,这是属于同一个性质的,就是为了

EJB到底是什么,真的那么神秘吗??

1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务集群"和"企业级开发"吧!这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB 什么时候不用.于是大家都产生一些联想,认为EJB"分布式运算"指得是"负载均衡

【转载】到底EJB是什么?

到底EJB是什么?被口口相传的神神秘秘的,百度一番,总觉得没有讲清楚的,仍觉得一头雾水.百度了很久,也从网络的文章的只言片语中,渐渐有了头绪. 用通俗话说,EJB就是:"把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了".是的,没错!EJB 就是将那些"类"放到一个服务器上,用C/S 形式的软件客户端对服务器上的"类"进行调用.快崩溃了吧!这么几句就非常清楚的解释了EJB是什么(也是本人在高人的博

j2ee规范——EJB

1.EJB是什么 商务软件的核心部分是它的业务逻辑.业务逻辑抽象了整个商务过程的流程,并使用计算机语言将他们实现. -- J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组件中.这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果.在J2EE 中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件. 2.通俗一点对于EJ