原文地址:http://www.javadby.com/J2EE/20071004/1023.html


J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向。   首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,当然目前主要是.NET和Java两大主流体系。   J2EE可以说指Java在数据库信息系统上实现,数据库信息系统从早期的dBase、到Delphi/VB等C/S结构,发展到B/S(Browser浏览器/Server服务器)结构,而J2EE主要是指B/S结构的实现。   J2EE又是一种框架和标准,框架类似API、库的概念,但是要超出它们。如果需要详细了解框架,可先从设计模式开始学习。   J2EE是一个虚的大的概念,J2EE标准主要有三种子技术标准:WEB技术、EJB技术和JMS,谈到J2EE应该说最终要落实到这三个子概念上。   这三种技术的每个技术在应用时都涉及两个部分:容器部分和应用部分,Web容器也是指Jsp/Servlet容器,你如果要开发一个Web应用,无论是编译或运行,都必须要有Jsp/Servlet库或API支持(除了JDK/J2SE以外)。   Web技术中除了Jsp/Servlet技术外,还需要JavaBeans或Java Class实现一些功能或者包装携带数据,所以Web技术最初裸体简称为Jsp/Servlet+JavaBeans系统。   谈到JavaBeans技术,就涉及到组件构件技术(component),这是Java的核心基础部分,很多软件设计概念(设计模式)都是通过JavaBeans实现的。   JavaBeans不属于J2EE概念范畴中,如果一个JavaBeans对象被Web技术(也就是Jsp/Servlet)调用,那么JavaBeans就运行在J2EE的Web容器中;如果它被EJB调用,它就运行在EJB容器中。   EJB(企业JavaBeans)是普通JavaBeans的一种提升和规范,因为企业信息系统开发中需要一个可伸缩的性能和事务、安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系统。   至此,JavaBeans组件发展到EJB后,并不是说以前的那种JavaBeans形式就消失了,这就自然形成了两种

JavaBeans技术:EJB和POJO,POJO完全不同于EJB概念,指的是普通JavaBeans,而且这个JavaBeans

不依附某种框架,或者干脆可以说:这个JavaBeans是你为这个应用程序单独开发创建的。   J2EE应用系统开发工具有很多:如JBuilder、Eclipse等,这些IDE首先是Java开发工具,也就是说,它们

首要基本功能是可以开发出JavaBeans或Java class,但是如果要开发出J2EE系统,就要落实到要么是

Web技术或EJB技术,那么就有可能要一些专门模块功能(如eclipse需要lomboz插件),最重要的是,因为

J2EE系统区分为容器和应用两个部分,所以,在任何开发工具中开发J2EE都需要指定J2EE容器。   J2EE容器分为WEB容器和EJB容器,Tomcat/Resin是Web容器;JBoss是EJB容器+Web容器等,其中Web容器直

接使用Tomcat实现的。所以你开发的Web应用程序可以在上面两种容器运行,而你开发的Web+EJB应用则

只可以在JBoss服务器上运行,商业产品Websphere/Weblogic等和JBoss属于同一种性质。   J2EE容器也称为J2EE服务器,大部分时它们概念是一致的。   如果你的J2EE应用系统的数据库连接是通过JNDI获得,也就是说是从容器中获得,那么你的J2EE应用系统基本

与数据库无关,如果你在你的J2EE应用系统耦合了数据库JDBC驱动的配置,那么你的J2EE应用系统就有数

据库概念色彩,作为一个成熟需要推广的J2EE应用系统,不推荐和具体数据库耦合,当然这其中如何保证

J2EE应用系统运行性能又是体现你的设计水平了。   衡量J2EE应用系统设计开发水平高低的标准就是:解耦性;你的应用系统各个功能是否能够彻底脱离?是否不

相互依赖,也只有这样,才能体现可维护性、可拓展性的软件设计目标。   为了达到这个目的,诞生各种框架概念,J2EE框架标准将一个系统划分为WEB和EJB主要部分,当然我们有时不

是以这个具体技术区分,而是从设计上抽象为表现层、服务层和持久层,这三个层次从一个高度将J2EE

离开来,实现解耦目的。   因此,我们实际编程中,也要将自己的功能向这三个层次上靠,做到大方向清楚,泾渭分明,但是没有技术上

约束限制要做到这点是很不容易的,因此我们还是必须借助J2EE具体技术来实现,这时,你可以使用EJB

规范实现服务层和持久层,Web技术实现表现层;   EJB为什么能将服务层从Jsp/Servlet手中分离出来,因为它对JavaBeans编码有强制的约束,现在有一种对

JavaBeans弱约束,使用Ioc模式实现的(当然EJB 3.0也采取这种方式),在Ioc模式诞生前,一般都是

通过工厂模式来对JavaBeans约束,形成一个服务层,这也是是Jive这样开源论坛设计原理之一。   由此,将服务层从表现层中分离出来目前有两种可选架构选择:管理普通JavaBeans(POJO)框架(如Spring、

JdonFramework)以及管理EJB的EJB框架,因为EJB不只是框架,还是标准,而标准可以扩展发展,所以,

这两种区别将来是可能模糊,被纳入同一个标准了。 但是,个人认为:标准制定是为某个目的服务的,

总要牺牲一些换取另外一些,所以,这两种架构会长时间并存。   这两种架构分歧也曾经诞生一个新名词:完全POJO的系统也称为轻量级系统(lightweight),其实这个名词本

身就没有一个严格定义,更多是一个吸引人的招牌,轻量是指容易学习容易使用吗?按照这个定义,其实轻

量Spring等系统并不容易学习;而且EJB 3.0(依然叫EJB)以后的系统是否可称为轻量级了呢?   前面谈了服务层框架,使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可

以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关,一般是通过标签库

(taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。   这样,表现层和服务层的分离是通过两种框架达到目的,剩余的就是持久层框架了,通过持久层的框架将数据库

存储从服务层中分离出来是其目的,持久层框架有两种方向:直接自己编写JDBC等SQL语句(如iBatis);

使用O/R Mapping技术实现的Hibernate和JDO技术;当然还有EJB中的实体Bean技术。   持久层框架目前呈现百花齐放,各有优缺点的现状,所以正如表现层框架一样,目前没有一个框架被指定为标准

框架,当然,表现层框架现在又出来了一个JSF,它代表的页面组件概念是一个新的发展方向,但是复杂的

实现让人有些忘而却步。   在所有这些J2EE技术中,虽然SUN公司发挥了很大的作用,不过总体来说:网络上有这样一个评价:SUN的理论

天下无敌;SUN的产品用起来撞墙;对于初学者,特别是那些试图通过或已经通过SUN认证的初学者,赶快

摆脱SUN的阴影,立即开溜,使用开源领域的产品来实现自己的应用系统。   最后,你的J2EE应用系统如果采取上面提到的表现层、服务层和持久层的框架实现,基本你也可以在无需深刻

掌握设计模式的情况下开发出一个高质量的应用系统了。   还要注意的是: 开发出一个高质量的J2EE系统还需要正确的业务需求理解,那么域建模提供了一种比较切实可

行的正确理解业务需求的方法,相关详细知识可从UML角度结合理解。   当然,如果你想设计自己的行业框架,那么第一步从设计模式开始吧,因为设计模式提供你一个实现JavaBeans

或类之间解耦参考实现方法,当你学会了系统基本单元JavaBean或类之间解耦时,那么系统模块之间的解

耦你就可能掌握,进而你就可以实现行业框架的提炼了,这又是另外一个发展方向了。   以上理念可以总结为一句话:     J2EE开发三件宝: Domain Model(域建模)、patterns(模式)和framework(框架)。   推荐一套高质量的J2EE开源系统: JPestore   如果初学者没有理解,欢迎继续讨论,大胆提出你心中的疑问。

J2EE框架学习经典总结相关推荐

  1. Java开源——常见J2EE框架简介

    Java开源--常见J2EE框架简介 Spring Framework Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口 ...

  2. SpringMVC框架--学习笔记(上)

    1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...

  3. Java框架学习顺序是哪些?

    Java编程是互联网行业不可或缺的一门编程语言,也是世界第一编程语言,Spring.Struts.Hibernate是经典中的经典,最常用的框架类型.下面小编就为大家详细的介绍一下Java框架学习顺序 ...

  4. 十.激光SLAM框架学习之LeGO-LOAM框架---算法原理和改进、项目工程代码

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  5. 强化学习经典model-free方法总结

    强化学习经典model-free方法总结 1. 基于值函数(value-based)的方法 1.1 sarsa 1.2 Q-learning 1.3 DQN 1.4 Double DQN 1.5 Du ...

  6. Java开源 J2EE框架(二)

    Java开源 J2EE框架(二) 2007-01-06 12:34 Jofti [Java开源 其它开源项目] Jofti可对在缓存层中(支持EHCache,JBossCache和OSCache)的对 ...

  7. php 里的cl框架手册,CI框架学习笔记(一)

    本文是CI框架学习笔记的第一篇,主要介绍了CI框架的环境安装,基本术语以及框架流程,非常的详细,有需要的朋友可以参考下 最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直 ...

  8. 强化学习经典算法笔记(十九):无监督策略学习算法Diversity Is All You Need

    强化学习经典算法笔记19:无监督策略学习算法Diversity Is All You Need DIAYN核心要点 模型定义 目标函数的构造 DIAYN算法细节 目标函数的优化 SAC的训练 判别器的 ...

  9. 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)

    强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...

  10. Android 框架学习4:一次读懂热门图片框架 Picasso 源码及流程

    Android 框架学习1:EventBus 3.0 的特点与如何使用 Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线 Android 框架学习3:我从 EventB ...

最新文章

  1. 如何让网页不受电信114劫持
  2. 现实世界的Windows Azure:采访Figlo的全球合作伙伴支持经理Nathan Brouwer
  3. manual php,PHP - Manual: 介绍 (官方文档)
  4. QML做类似Android圆形头像
  5. 项目属性--生成事件--后期生成事件命令行
  6. bootstrap3 - 分页
  7. 软件测试--缺陷报告常见问题03
  8. 怎么新建web程序_前端程序员发展潜力最好,那该怎么学好web前端开发?
  9. 天行健,君子自强不息
  10. python微信群管理开禁言_微信群主怎么禁言一个人?操作方法介绍!
  11. 20172328《程序设计与数据结构》第二周学习总结
  12. 期货发展的几个重要时间点和事件
  13. SQI SERVER2016安装选项
  14. Swipe 移动端滑动插件使用详解
  15. 一学期c语言的学习总结
  16. 疫情之下,互联网产品逆势爆发
  17. 服务器运维事项,云服务器的运维工作要注意的事项
  18. zbb20180619 mysql windows环境下MySQL重启的命令行说明
  19. Spring Data JPA-根据Repository接口关键字生成SQL
  20. harmonyos 2.0体验,Harmonyos 2.0

热门文章

  1. 计算机操作知识试题及答案真题,计算机操作系统期末考试题及答案
  2. FireMonkey 界面的玩法
  3. php调用纯真ip,php调用纯真IP数据库进行IP定位
  4. 基于Java的推箱子游戏设计与实现#毕业设计
  5. Adobe Illustrator for Mac 2020 24.0.1版 — 矢量绘图工具
  6. 内存数据库 TimesTen
  7. 哆点Linux客户端上网
  8. vscode生成vue模板快捷键_vscode之快速生成vue模板
  9. LiquidCrystal_I2C 显示不正常 只显示第一个首字符!
  10. 大型网站技术架构演进与性能优化