题外话:这个系列是为了记录学习Java EE的轨迹,也算是读书笔记,是我先看完了一遍教程对相关概念有了一个大体印象以后准备再重头细看一遍时同步写的博客。感想就是其实以前课堂上老师教的课都是很有作用的,如果你能很好地掌握设计模式、计算机网络的相关知识,那么对你理解Java EE会有很大的帮助。可能是大三才有了以后要找工作的实感,似乎慢慢知道自己该学些什么,不像大一大二想努力的时候还是很迷茫找不到方向。其实现在也常常否定自己,觉得自己醒悟的太晚,大三了代码能力还是很差。但是也会觉得其实生活也待我不薄,也会有很多小确信,比如看到博客浏览量每天都在增加,看到陌生的人因为我的博客关注我······上面都是题外话啦,我们开始吧!

敲黑板:本章主要介绍Java EE的基础概念,以及与之相关的一些组件和技术。通过对Java EE体系的宏观性介绍,阐述企业及软件开发的基本体系结构。通过对容器——组件的介绍,阐述Java EE的编程思想及优势。

本章的重点为Java EE的编程思想、体系结构,以及它的容器与组件。

1.1Java EE的由来

1.1.1软件开发的发展历程(为了完整性会很简单地介绍一下,想要深入了解的可以自行搜索哦)

软件开发是个比较年轻的行业,它的发展历程和其他传统工业、传统技术很相似。它的发展受到了市场需求和硬件的推动和制约,同时也反过来推动了市场需求和硬件的发展。目前比较主流的软件技术发展历程大致可分为3个阶段:第一阶段是软件技术发展的早期(1940~1960),个人作品阶段;第二个阶段是结构化程序设计及高级语言大发展时期(1960~1980),作坊生产阶段;第三个阶段是从80年代到现在,是软件工程技术及面向对象语言的大发展时期,软件开发的工业革命。(从名字就很好理解这些阶段的主要特点了)

1.1.2企业级软件项目开发的体系结构

企业级应用程序的概念:这里的企业级是指那些应用规模巨大,集成了很多应用功能,需要处理巨量数据的软件开发项目。

企业级软件开发的规模一般具有以下特点:1)基于网络的应用(而不是基于机器);2)巨量的数据集成;3)高度的安全性;4)具备可扩展性。

目前软件开发的两大方向为:

C/S体系结构:

由客户端(Client)和服务器端(Server)两部分构成。用户想要使用这个系统,首先必须先安装它的客户端,比如我们手机里的QQ等软件,这也是它的一个缺点。客户端负责人机界面的交互及业务控制方面的操作,服务器端主要负责数据的交互和保存。优点就是系统安全性高,通信效率高,能处理大量数据,交互性强。

B/S体系结构:

由浏览器(Browser)和服务器(Server)组成。要注意的是浏览器只是起到了“浏览”的作用,它仅仅把程序需要传递的页面在浏览器中呈现出来,本身不对数据做任何处理。在这种体系结构中,服务器内部进行了一个分层,应用服务器负责实现业务处理和控制,可以近似认为代替了C/S中客户端的部分功能,数据库服务器负责对数据库的管理和对数据的具体交互。优点就是你只需要一个浏览器不需要安装客户端,而且服务器的分层有效地使程序和数据分离,提高了独立性。(这个系列介绍的Java EE是针对B/S体系结构提出的解决方案)

1.2认识Java EE

1.2.1 Java EE简介(有很多抽象的概念我都在括号里给了我觉得比较好理解的解释,除此之外还有很多不同的解释,不理解的话可以查阅资料找到自己最喜欢的解释^^)

Java EE的全称是Java Platform Enterprise Edition。它是基于Java语言的一种软件设计体系结构(软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系),所以它不是一种语言,也不是集成开发环境(是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具),而是一种标准中间件体系结构(中间件一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境)。Java EE作用在于标准化企业级多层应用系统的部署,简化开发过程。好比盖大楼,采用的是砖混结构还时框架结构。

软件开发的过程是一个不断标准化、专业化、抽象化的过程。从面向对象到Java EE是进一步抽象了开发过程中的应用对象,并且对开发过程中各个组件的接口进行了统一的、标准化的规范。

一个典型的Java EE结构的软件应用系统,从逻辑上划分,包括三层:表示层、业务层及数据持久层

表示层:负责对客户的响应,并进行一定的业务控制(转发和指派)

业务层:主要负责对业务数据的具体控制和响应,并负责对具体数据发起编辑请求

数据持久层:主要负责对数据库系统的控制和管理,业务层的数据请求都需要通过持久层的处理来完成与具体数据库数据的交互。

Java EE就是通过上面三层的设计,给出了一个标准的软件架构和设计方案。Java EE设计的内容非常多而且是一直在进行扩展,因为除了它自己设计出来的具体组件之外,很多公司也在不断地遵循它的标准设计适合自己产品的组件,Java EE有巨大的影响力。

1.2.2Java EE的编程思想(容器—组件)

容器—组件的编程思想,从逻辑上说就是把完成具体功能的工具以组建的形式“装入”一个容器之中,具体的实现方式是要求组件对所有数据的接收和发送必须通过容器才能完成。也就是说服务器发出的请求是由容器分发到响应组件进行处理的,处理的结果又交给容器,由容器决定最后的输出方式。

这样做可以用统一的标准处理数据,并且让容器与系统其他部分保持很高的独立性。这个思想是面向对象中类的封装性的一种延续,只不过比起类封装一个特定的数据模式,容器封装的是更大的一组特定的功能。

Java EE的容器会给组件提供一些底层的基础功能来完成组件与外界的数据互交。Java EE提供了一个统一的标准规范实现了组件与容器之间既保持相对独立,又有比较强大的数据交互能力。

最常见的Java EE容器是Web容器和EJB容器。它们所包含的组件会在容器的Java虚拟机中进行初始化。组件根据容器提供的标准服务来与外界进行互交。这些服务主要包括命名服务、数据库连接服务、持久化、消息服务、事务支持和安全性服务等。大部分底层的基础功能都由容器提供,可以让开发者专注于对业务逻辑的设计。

从实现原理看,容器与组件之间的通信除了Java程序本身的算法完成具体操作外,更重要的是通过一个部署描述文件来解决容器如何向组件提供服务,提供哪种服务的问题,这个文件是一个用XML语言写成的文件,可以想一想生活中各种家电说明书的作用。

这个文件会随着系统的复杂而不断变得复杂,所以设计人员也在不断优化,比如Java EE5推出了支持在组件中实现直接对注解的引用,Java EE5还对配置做了模块化的设置。这里就不细说了,感兴趣的小伙伴自行查阅资料吧。

感觉也没有很多字但是写了挺久的,因为好多地方要停下来仔细想想,这一块我觉得还是有点抽象,建议大家多回味一下~

Java EE入门教程系列第一章Java EE的概述(一)——初识Java EE相关推荐

  1. Java EE入门教程系列第二章JSP(三)——JSP指令与动作组件

    2.3 指令与动作组件 2.3.1 page指令 page指令的基本语法为: <%@ page 属性1="属性1的值" 属性2="属性2的值"···%&g ...

  2. D3.js的v5版本入门教程(第一章)—— 如何在项目中使用D3.js

    D3.js的v5版本入门教程(第一章) 1.需要的一些工具 这个其实随便!最简单的就是建一个.txt文件就可以敲起代码来!作者本人用的是myeclipse(主要需要安装tomcat),因为写的是前端, ...

  3. ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...

  4. HT合泰单片机入门教程(第一章 HT单片机环境搭建)

    目录 系列文章目录 前言 一.合泰单片机的优势 二.IDE安装 1.HT-IDE3000下载 2.HT-IDE3000安装 三.烧录软件安装 1.HOPE3000下载 2.HOPE3000安装 总结 ...

  5. Java EE入门教程系列第三章JavaBean(二)——JavaBean在JSP中的应用

    3.2 JavaBean在JSP中的应用 3.2.1 JSP的标签 这里讨论的只是在动态页面中调用JavaBean的方法,静态的可以自己去了解哦~~ JSP技术提供了3个关于JavaBean组件的动作 ...

  6. java hello work_Java入门教程系列 – 第一个程序 “hello, world”

    "Hello, World"程序指的是指在计算机屏幕上输出"Hello, World!"(意为"世界,你好!")这行字符串的计算机程序.一般 ...

  7. R语言入门教程知识 第一章 R语言

         R语言 R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. R语言特点 R作为一种统计分析软件,是集统计 ...

  8. ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...

  9. Android项目驱动式开发教程 第2版,《Android项目驱动式开发教程》第一章开发入门.ppt...

    <Android项目驱动式开发教程>第一章开发入门 1.4 项目框架分析 4 android:versionName="1.0" > 5 8 第9行代码andro ...

最新文章

  1. 资产支持证券(Asset-Backed Security)
  2. wcf:rest_REST:管理多对多关系
  3. VC中设置头文件的搜索路径~~
  4. python如何运用ols_使用OLS回归(Python,StatsModels,Pandas)预测未来值
  5. linux基础知识点总结-最实用!(环境搭建,系统分区,常用命令,vim文本)
  6. DevExpress GridControl 导出为Excel
  7. Kafka-partition
  8. 高德地图热力图,高德自带热力图heatmap
  9. 【LeetCode - 248】中心对称数 III
  10. ROOT工具为漏洞利用大开“方便之门”
  11. android 屏幕尺寸适配实现方案
  12. Python数据可视化:5种绘制柱状图表的方法(附源码)
  13. 逆向脱壳-fsg手动脱壳
  14. pyscripter支持python什么版本_PyScripter在Windows上具有多个Python版本
  15. 如何提升小目标的检测效果
  16. MathType在Word中功能异常的解决办法汇总(持续更新)
  17. Linux服务器CPU使用率过高排查与解决思路
  18. 滑块验证码通杀方案--python破解代码
  19. day04 爬取豌豆荚app数据的两种方法
  20. NPDP产品经理小知识-创意工具(Scamper)

热门文章

  1. 怎么判断手机天线坏了_如何确认iphone6wifi天线坏了
  2. html5 i标签什么意思,快速了解HTML5 b和i标签
  3. 错误集(大概会持续更新)
  4. hiho 挑战赛16 A.王胖浩与三角形
  5. 怎么写安卓手机脚本_拉结尔手游攻略,云手机全自动挂机刷副本及装备
  6. 四色建模法 模型分析和设计
  7. 基于C++实现视频聊天软件(一)
  8. linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数
  9. 研究生项目狗自救指南
  10. [帮助理解PO文件]KDE中国/I18N/L10N