理想的建筑师应该既是文学家又是数字家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算。
——Vitruvius(古罗马建筑师) 约公元前25年

软件架构同样需要方方面面的知识和积累。本文是我自己学习JavaEE的体系架构的时候,根据各种资料学习涂涂画画整理所得,有不对之处求轻喷,也请指出便于改正。

JavaEE是一套使用Java进行企业级Web应用开发的大家一致遵循的工业标准。
JavaEE平台提供了一个基于组件的方法来加快设计、开发、装配及部署企业应用程序。
相较于Microsoft的.NET,Sun公司的Java*E和一系列标准、技术及协议更接近或更满足互联网在智能化Web服务方面对开放性、分布性和平台无关性的要求。

JavaEE的13种核心技术规范:

1、JDBC(Java Database)数据库连接

JDBC是一组用于执行SQL的Java API ,为访问不同的数据库提供了一种统一的途径,几乎所有的关系型数据库厂商(DBMS)都提供了JDBC的服务或驱动。JDBC对数据库的访问也具有平台无关性。

JDBC处理模型

2、JNDI(Java Naming and Directory Interfaces)Java 的命名和目录接口

JNDI是命名目录服务的抽象接口集合,为企业级应用提供了统一的标准化连接,使Java能够无缝地获取任何可目录化的企业信息。在JavaEE体系中,JNDI用来定位各种对象,包括EJB、数据库驱动、JDBC数据源及消息连接等。由于JNDI是独立于目录协议的,因此还可以用JNDI访问各种特定的目录服务,如LDAP(轻量目录访问协议)、NDS(服务器目录访问服务)。

JNDI数据源

3、EJB(Enterprise JavaBean)

EJB组件:JavaBean是在编程环境(IDE)中能够被可视化处理的可重用组件,是实现分布式业务逻辑的 Java 组件。我们在开发的时候可以利用这些组件,像搭积木一样建立面向对象的分布式应用。
EJB容器:是EJB组件的运行环境,为部署EJB组件提供服务,包括事务、安全、远程客户端的网络发布、资源管理等。
EJB服务器:管理EJB容器的高端进程或应用程序,并提供对系统服务的访问。
调用EJB组件的应该称为EJB客户端,客户端可以运行在Web容器中。

EJB

4、RMI(Remote Method Invoke)远程方法调用

RMI协议能够让在某个Java虚拟机上的对象,像调用本地对象一样调用另一个Java虚拟机中的对象上的方法。它使用了序列化方式在客户端和服务器端传送数据。RMI是一种被EJB使用的更底层的协议。(stub/skeleton层提供了客户程序和服务程序彼此交互的接口)

RMI远程调用

5、Java IDL(Interface Description Language)/CORBA(Common Object Broker Architecture)Java 接口定义语言/公用对象请求代理程序体系结构

IDL是用来描述软件组件接口的一种计算机语言。IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。

6、JSP(Java Server Pages)

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
JSP可以使用Servlet提供的API,一般和JavaBean结合使用,从而将界面表现和业务逻辑分离。

JSP

7、Servlet

Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。

8、XML(Extensible Markup Language)可扩展白标记语言

XML是一种用于标记电子文件使其具有结构性的标记语言。它被用来在不同的商务过程中共享数据。XML的发展和Java是相互独立的,但是它和Java有着相同的目标,即平台独立性。通过Java和XML的组合,可以得到一个完美的具有平台独立性的解决方案。

9、JMS(Java Message Service)Java 消息服务

JMS是Java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。
JMS消息系统带来的好处:1、提供消息灵活性;2、松散耦合;3、异步性。

JMS点对点

10、JTA(Java Transaction API)Java 事务 API

在JavaEE应用中,事务是一个不可或缺的组件模型,它保证了用户操作ACID(即原子、一致、隔离、持久)属性。对于那些跨数据源(例如多个数据库,或者数据库与JMS)的大型应用,则必须使用全局事务JTA。应用系统可以由JTA定义的标准API访问各种事务监控,JTA为JavaEE平台提供了分布式事务服务,它隔离了事务与底层的资源,实现了透明的事务管理方式。

JTA

11、JTS(Java Transaction Service)Java 事务服务

JTS是一个组件事务监视器。JTS是CORBA OTS事务监控的基本实现。JTS规定了事务管理器的实现方式。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。

12、JavaMail

JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器和POP服务器。

13、JAF(JavaBean Activation Framework)

JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。大多数应用都可以不需要直接使用JAF。

JavaEE软件开发体系架构

两层架构

传统的客户服务器系统仅只简单地基于两层体系来构建,即客户端(前台)和企业信息系统(后台),没有任何中间件,业务逻辑层与表示层或数据层混在一起。这种两层架构无论从开发、部署、扩展、维护来说,综其只有一个特点——成本高。

三层架构

三层架构自上而下将系统分为表示层、逻辑层、持久层。
表示层由处理用户交互的客户端组件及其容器所组成;
业务逻辑层由解决业务问题的组件组成;
数据层由一个或多个数据库组成,并可包含存储过程。
这种三层架构,在处理客户端的请求时,使客户端不用进行复杂的数据库处理;透明地为客户端执行许多工作,如查询数据库、执行业务规则和连接现有的应用程序;并且能够帮助开发人员创建适用于企业的大型分布式应用程序。

三层架构

MVC

在MVC模式中,应用程序被划分为模型层(Model)、视图层(View)、控制层(Controller)三部分。MVC模型就是把一个应用程序的开发按照业务逻辑、数据、视图进行分离分层并组织代码。MVC要求把应用的模型按一定的层次规则抽取出来,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。模型层负责封装应用的状态,并实现功能,视图层负责将内容呈现给用户,控制层负责控制视图层发送的请求以及程序的流程。
Servlet+JSP+JavaBean(MVC)这种模式比较适合开发复杂的web应用,在这种模式下,Servlet负责处理用户请求,JSP负责数据显示,JavaBean负责封装数据。

MVC

基于JavaEE架构模式下的MVC

在这种架构模式下,模型层(Model)定义了数据模型和业务逻辑。为了将数据访问与业务逻辑分离,降低代码之间的耦合,提高业务精度,模型层又具体划分为了DAO层和业务层,DAO即Data Access Object,其主要职能是将访问数据库的代码封装起来,让这些代码不会在其它层出现或者暴露出来给其它层;业务层是整个系统最核心也是最具有价值的一层,该层封装应用程序的业务逻辑,处理数据,关注客户需求,在业务处理过程中会访问原始数据或产生新数据,DAO层提供的DAO类能很好地帮助业务层完成数据处理,业务层本身侧重于对客户需求的理解和业务规则的适应,总体说来,DAO层不处理业务逻辑,只为业务层提供辅助,完成获取原始数据或持久层数据等操作。

基于JavaEE架构模式下的MVC

  • JSP:JSP被用来产生Web的动态内容。这层把应用数据以网页的形式呈现给浏览器,然后数据按照在JSP中开发的预定的方式表示出来,这层也可以称之为布局层。
  • Servlet:JSP建立在Servlet之上,Servlet是J2EE的重要组成部分。Servlet负责处理用户请求,Java Web项目的所有配置都写在了web.xml配置文件里,当项目运行的时候,web.xml会将http请求映射给对应的Servlet类。
  • JavaBean:由一些具有私有属性的Java类组成,对外提供get和set方法。JavaBean负责数据,负责处理视图层和业务逻辑之间的通信。
  • Service:业务处理类,对数据进行一些预处理。
  • DAO:数据访问层,JDBC调用存储过程,从数据库(DataBase)那里获取到数据,再封装到Model实体类中去。

需要文中的资料可以私我。

转载请注明出处!
同时发布在GitHub-从懵逼到再入门——JavaEE完整体系架构、SegmentFault-从懵逼到再入门——JavaEE完整体系架构


http://www.taodudu.cc/news/show-1774538.html

相关文章:

  • hibernate中session 与JDBC中 connection分析
  • hibernate中uuid和native等主键生成策略
  • potplayer播放器没有声音的解决方案
  • 每次开机都要选择Windwos10才能进系统的原因及解决方法-- 【亲测有效】
  • Mysql5.7及以上版本的MySQL下载、安装及配置教程(附图)
  • 解决Mysql安装之后没有my.ini配置文件问题
  • controller报错MissingServletRequestParameterException: Required xxx parameter ‘xxx’ is not present
  • @RequestParam和@RequestBody和@PathVariable用法小结
  • 常见的三种Content-Type
  • C#字符串转Json,Json解析
  • mybatis 主从表关联查询封装返回结果
  • thinkpad笔记本电脑不按Fn键直接实现F1-F12功能的方法
  • 使用EqualsBuilder和HashCodeBuilder生成hashcode和equal方法
  • SpringBoot 添加junit单元测试+Spring Boot 的测试类库
  • mybatis传参总结
  • SpringBoot多数据源切换详解,以及开启事务后数据源切换失败处理
  • 如何查看K/3数据库表及字段详细信息
  • BigDecimal的保留位数和四舍五入的方法
  • eclipse下maven打包是出现如下错误com.sun.istack.internal不存在
  • 如何在ECLIPSE中使用MVN CLEAN INSTALL
  • 控制台运行jar中文乱码问题
  • 深入学习Java中的字符串,代码点和代码单元
  • 错误:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
  • (已解决)Mon Apr 08 14:02:29 CST 2019 WARN: Establishing SSL connection without server's
  • 导入项目后资源文件乱码---eclipse插件properties Editor安装
  • springboot项目自定义注解实现的多数据源切换--亲测有效
  • org.n3r.idworker idworker-client生成唯一id
  • Boolean.getBoolean()和Boolean.parseBoolean()
  • 精选13款Spring Boot 优质GitHub开源项目!
  • mysql 数据库自动备份(bat+计划任务方式)--亲测备份及还原成功

从蒙到入门——JavaEE完整体系架构相关推荐

  1. 从懵逼到再入门——JavaEE完整体系架构

     java 理想的建筑师应该既是文学家又是数字家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算. --Vitruvius(古罗马建筑师) 约公元前25年 ...

  2. 总结:JavaEE完整体系架构

    2019独角兽企业重金招聘Python工程师标准>>> JavaEE是一套使用Java进行企业级Web应用开发的大家一致遵循的工业标准. JavaEE平台提供了一个基于组件的方法来加 ...

  3. JavaEE体系架构

    JavaEE知识体系结构图 JavaEE体系结构图: 认识JavaEE完整体系架构(转载):作者详细解释了J2EE的体系结构,将各部分分类说明,非常详细. http://www.jizhuomi.co ...

  4. 【转】BI 入门: 体系架构及相关技术

    (1) 老板,你要这么多数据做什么?         假如你是一个商品零售公司的老板.     你的公司很先进,已经实现了业务信息化,每一笔销售单据都保存在数据库中,日积月累,已经保存了十余年的销售数 ...

  5. Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  6. 面向服务的体系架构(SOA)—入门篇

    1.面向服务的体系架构(SOA) 面向服务的架构(service-oriented architecture)是Gartner于2O世纪9O年代中期提出的面向服务架构的概念.2002年的l2月,Gar ...

  7. Linux 之八 完整嵌入式 Linux 环境及构建工具、(交叉)编译工具链、CPU 体系架构

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  8. 从零开始入门 K8s | Kubernetes 存储架构及插件使用

    作者 | 阚俊宝 阿里巴巴高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 21 讲. 关注"阿里巴巴云原生"公众号,回复关键词**&quo ...

  9. 常见的服务器架构入门:从单体架构、EAI 到 SOA 再到微服务和 ServiceMesh

    前言:架构的演变流程 单体架构 ==> 垂直架构 ==> 前后端分离 ==> EAI架构  ==> SOA架构 ==> 微服务 ==> 微服务2.0 1.单体架构: ...

  10. IT规划中的技术体系架构

    IT规划中的技术体系架构体系架构通常会建立一个共有的能帮助今后持续发展的信息扩展基础,然而,简单的设定目标是远远不够的,必须和构建人员.客户.厂商及其他相关人员进行沟通以达成共识,在构建过程中要维护该 ...

最新文章

  1. 我写代码的十八般兵器!
  2. Linux下切换用户出现su: Authentication failure的解决办法
  3. rk3399性能_AIIA AI公布首轮评估结果:瑞芯微RK3399数据抢眼
  4. Factors of Factorial(AtCoder-2286)
  5. 利用U盘安装windows 7
  6. @apioperation 作用_蜂蜜的作用与功效
  7. Sql Server 知识
  8. Operations Manager 2007 R2 Beta可下载试用
  9. 生于资本,死于泡沫,review ofo衰亡
  10. 古代汉语(王力版)笔记 绪论
  11. 基于VUE的酒店管理系统的设计与实现
  12. Importing the numpy C-extensions failed.
  13. 7-6 输出10个不重复的英文字母 python
  14. scrapy 爬虫 环境搭建入门(一)
  15. 关于jdk11没有jre文件夹
  16. 浏览器打开默认极速模式
  17. 嘉立创EDA专业版--[错误] : 导线 $1N7898 连接了“全局网络名”属性值为 GND 的网络标识
  18. js获取当前月、上一月和下一月
  19. 分享我的经历,你以为你很努力
  20. tmail.exe各项命令参数

热门文章

  1. javascript常用函数集
  2. 用Not Exists 代替Not In
  3. 剑指offer:删除链表中重复的节点
  4. 驱动调试(六)利用中断打印
  5. Python和C++的混合编程(使用Boost编写Python的扩展包)
  6. LOADRUNNER居于HTTP协议函数使用
  7. 在mysql存储过程中拼接sql解决in的字段类型不匹配问题
  8. HTML5 input新增属性
  9. spring boot对输入的字符串进行html转码
  10. Linux下调整根目录的空间大小教程