目前所有的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的源码中发现。

-----------摘自 板桥里人

J2EE到底是什么?相关推荐

  1. JDK、J2EE、J2SE、J2ME的区别

    你对JDK.J2EE.J2SE.J2ME概念是否了解,这里和大家分享一下JDK.J2EE.J2SE.J2ME的概念以及他们的关系区别,相信本文介绍一定会让你有所收获. JDK,J2EE,J2SE,J2 ...

  2. J2SE J2EE J2ME的区别

    J2SE J2EE J2ME的区别 J2SE J2EE J2ME的区别 多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供 ...

  3. JAVA中J2SE和J2EE和 J2me关系

    java是一门开发语言.j2se是java的桌面应用平台,用于开发桌面应用程序,比如qq,暴风影音都是桌面应用程序,其中s表示standard,标准的意思. j2ee,其中的e表示enterprise ...

  4. 【JAVA】J2ME、J2SE和J2EE的区别

    本文向大家简单介绍一下J2EE.J2SE.J2ME概念及区别,J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库. Java2平台包括:标准版(J2SE) ...

  5. J2EE是什么,主要包括哪些技术【转】

    (转自:https://blog.csdn.net/Ashes18/article/details/73614571) 最近最为深刻的认识:被面试老师问到了的知识,哪些是在自己心中模棱两可,似是而非的 ...

  6. J2EE、J2SE和J2ME的区别

    J2EE.J2SE和J2ME的区别 本文向大家简单介绍一下J2EE.J2SE.J2ME概念及区别,J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库. J ...

  7. 曾经想学很多很多,最后发现自己只能专心学那么很少的几个必杀技

    为什么80%的码农都做不了架构师?>>>    很多人觉得,我特能乱写,其实参加工作都10年了,每个月就算发生一件事情一个感慨,也足够可以写120篇了.今天不知道怎么回事,彻底失眠了 ...

  8. Java EE启示录

    前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓"启示录",就是这个意思. 一 ...

  9. [Review]To be coder(2011.08.01~2014.01.11-Grails-ing)

    个人主页:http://callmewhy.com/ 其实编程是一件非常有意思的事情,像造物主可以创造万物一样,每一个程序员都可以创造一片属于自己的世界.这就是我喜欢编程的原因,很简单,自由. 以下内 ...

最新文章

  1. P1034 矩形覆盖
  2. CT片居然可以这么玩:用头部CT断层扫描片复原三维头像
  3. seq2seq模型_Bart: Seq2Seq预训练模型
  4. 2008_12_24_星期三
  5. castle 组件化开发应用配制示例
  6. 深度学习练手项目(一)-----利用PyTorch实现MNIST手写数字识别
  7. 计算机辅助教学( ),27075 计算机辅助教学
  8. Gym - 102460A Rush Hour Puzzle(dfs迭代加深)
  9. 算法题目——爬楼梯(动态规划)
  10. [Swift]快速反向平方根 | Fast inverse square root
  11. python 操作系统学习_操作系统学习
  12. 创建list集合_Java 9新增的不可变集合
  13. 雪碧图PHP,Css Sprite(雪碧图、精灵图) - SegmentFault 思否
  14. Vlan中 tagged和untagged的区别
  15. VS2008 ---- VS2013各个版本下载地址
  16. SEM数据该如何分析?
  17. 心存希望,幸福就会靠近你;心存梦想,机遇就会笼罩你;心存坚持,快乐就会常伴你;心存善念,阳光就会照耀你;心存美丽,温暖就会围绕你;心存他人,真情就会回报你;心存感恩,贵人就会青睐你。
  18. 4个方面告诉你Stimulsoft.Drawing的作用和使用方式|附下载链接
  19. 深度学习概念——Epoch, Batch, Iteration
  20. 09 | 校招简历投递渠道汇总与对比分析,选对渠道才能事半功倍

热门文章

  1. 政策限制不改移动医疗投资热潮
  2. MQTT客户端(基于mosquitto库)上报温度到阿里云
  3. getchar与scanf的区别
  4. 2021-01-22:脉冲神经网络学习日志(二)【Brain-Based Devices】
  5. 中国十大知名调查研究咨询公司助力国家软实力
  6. 买卖的天猫店铺名称不满意,能不能修改?兴业君:不能哦!
  7. 网易云深度剖析Kubernetes优化与实践
  8. nodejs基础 ps模块常用API用法
  9. 学业水平考试网登录_高中学业水平考试报名系统入口
  10. javascript分支语句