JavaEE概念简介

这篇文章旨在澄清J2EE范例中使用的首字母缩写词和概念。 J2EE代表Java to Platform,Entreprise Edition。 它使创建模块化Java应用程序成为可能,并将其部署在应用程序服务器上。 它依赖于Java SE,Java SE是一组Java库的核心,所有Java应用程序都在该Java库上实现。

一般概念

在深入探讨J2EE之前,这里提醒您一些一般概念:

  • 多层应用程序 –多层应用程序(或多层体系结构)是分为多个逻辑部分的应用程序,这些逻辑部分(通常)在多台服务器上实现。 例如,具有用户及其浏览器,应用程序服务器和位于单独服务器上的数据库的3层模型处理应用程序服务器请求。
  • 多层服务 –考虑3层模型中的服务时,应用程序服务器是提供对用户请求的响应的服务。 数据库服务器提供对应用程序服务器查询的答案。
  • Java Bean –这些Java类包含私有属性,可使用getter和setter方法进行访问。 从技术上讲,这些类还必须具有无参数构造函数并实现Serializable接口。

J2EE 5概念

J2EE多层应用程序(来自J2EE教程)

  • Java EE应用程序模型 –此模型描述了实现服务的多层体系结构。 定义服务定义的边界并没有明确定义。 实际上,服务是一个逻辑概念,其具体/实际对应项取决于实现这些概念的应用程序。 例如,它是客户机/服务器模型中的服务器。
  • Java EE Server –它是J2EE范例中的3层范例的应用服务器。 它由Web层(服务JSP页面)和业务层(管理企业Java Bean)组成。
  • Java EE组件 –“组件”是指与其他组件结合使用以构建应用程序的独立软件单元。
    • Web组件 –生成页面或返回给用户查询的内容的Web层的一部分。 通常,这些是Java Servlet,JavaServer Faces和Java Server Pages。
    • Applet –作为对用户请求的响应的一部分发送的小型Java软件应用程序,旨在在用户的浏览器中运行。 小程序与Javascript竞争。
    • 应用程序客户端 –例如,用Java编写的桌面应用程序。
    • 企业Java Bean –参见下文。
  • Java EE客户端 –此概念重组了其他三个概念:
    • Web客户端(或瘦客户端) –在过去(不是这样),返回客户端请求的网页通常包含在将结果返回给客户端之前在应用程序服务器上执行的代码脚本。 这些页面被视为EE客户。 例如,可以查询雇员列表并根据查询的用户显示不同的结果。 今天,大多数开发人员不再在其网页中包含脚本。 这被认为是不好的做法。 他们倾向于使用MVC设计原则,该原则禁止这些页面中的脚本。
    • 小程序
    • 应用客户端
  • Java EE服务器通信 –这是指瘦客户机与应用程序客户机与应用程序服务器之间发生的通信。 通常,瘦客户端和小程序与Web层通信,而应用程序客户端与EJB通信。
  • 您也不太清楚吗? 您认为这很麻烦? 欢迎来到俱乐部! 这就是为什么REST原则以及MVC设计原则在当今Web应用程序开发中盛行的原因。

  • EJB(企业Java Bean) –这是一个逻辑概念,与传统Java Bean没有任何关系。 它基本上试图将业务逻辑封装在多层应用程序的后端(即服务器端)上。 它最初试图解决的一个关键问题是数据库的事务完整性。 警告:已经有多个版本的EJB,而版本3.0与先前的版本明显不同。
  • JavaBean组件 –它是Java Bean的同义词,主要用于JSP范例中。
  • Java EE容器 –此处是组装Java EE组件的部署位置(即,在应用程序服务器上)。 其中一个定义了包含servlt和JSP页面的Web容器,以及包含Entreprise Java Bean的EJB容器。 还定义了用于独立应用程序的应用程序客户端容器和浏览器中的applet容器。
  • 部署描述符 –这是一个XML文件,提供打包应用程序的部署信息。 有关更多信息,请参见此处 。
  • SOAP(简单对象访问协议) –它是一种在Web上提供的服务之间交换消息的协议。 消息是根据XML构造的,可以通过许多传输层(最常见的是HTTP)进行交换。 SOAP与JSON和类似REST的服务竞争。
  • WSLD(Web服务描述语言) –它使用XML文档(名称,位置,通信模式)描述网络服务。
  • UDDI(通用描述,发现和集成)ebXML –用于在线发布有关产品和服务的信息。
  • Java Servlet – Servlet是一个Java类,用于处理传入的用户HTTP请求并返回结果。
  • JSP(JavaServer页面) –经过处理以生成静态内容的基于文本HTML文档(即一种模板)。 它可以包含脚本代码段,这些代码段被执行以呈现最终的静态文档。
  • JSTL(JavaServer页面标准标记库) – JSP中用于模仿脚本代码功能的一组标准标记。 例如,遍历客户端列表以显示其相应信息。 如今,此类标记已取代了JSP中的脚本代码。 它们通常用于生成用信息填充页面以显示给用户。
  • JSF(Java Server Face) –这些是JavaServer Page,其中包含JavaServer Face标记(与JSTL标记相似)。 另外,JSF允许定义页面之间的导航模型(类似于Spring Web流)。 它还包括Facelets。
  • Facelets – Facelets是JSF的MVC视图部分。 它基本上使用提供的数据(例如,带有客户端列表)将模板转换为HTML文档。 它还可以提取部分生成的文档(例如HTML正文),并将其包含在另一个模板中。 这等效于Sitemesh所做的事情。
  • 基于XML的Web服务的Java API(JAX-WS) –一种使用XML通信定义Web服务的方法。
  • 用于XML绑定的Java API(JAXB) –一种将Java Bean来回转换(通常)为XML文档的方法。 有关更多详细信息,请参见此处 。
  • JTA(Java事务API) –意味着通过自动提交和回滚来分隔数据库事务。
  • JMS(Java消息服务) –一种API,允许通过Internet在应用程序和服务之间可靠且异步地交换消息。 ActiveMQ实现JMS。
  • JavaMail API –一种从应用程序发送电子邮件的方法。
  • JAXP(用于XML处理的Java API) –启用XML文档的处理。
  • JAXR(用于XML注册表的Java API) –一种API,允许访问包含元数据的注册表。 它基于XML。
  • JDBC(Java数据库连接性) –该API使应用程序可以直接与数据库执行SQL事务。
  • JCA(Java EE连接器体系结构) –它帮助应用程序获得与信息系统(通常是数据库)的连接。 有关更多详细信息,请参见这篇文章 。
  • JPA(Java持久性API) –这是一个ORM(对象/关系映射)定义,用于帮助将对象存储在数据库中。 有关示例,请参见此处 。
  • JNDI(Java命名和目录接口) –一种存储和检索资源或使用其名称访问资源的方法。 有关更多详细信息,请参见这篇文章 。
  • JAAS(Java身份验证和授权服务) –身份验证和控制对服务的访问的手段。

J2EE 6附加概念

使用J2EE 6,可以使用Java源代码中的注释执行许多配置。

  • JAX-RS –定义类似REST服务的API。
  • 托管Bean –可以执行注入的Java对象。 在Spring中,这些对象将是带有@Autowired注释的属性的对象(例如)。
  • CDI(上下文和依赖注入) -实现和执行依赖注入的机制。 在Spring中,将提到应用程序上下文,控制反转(IoC)和依赖项注入(DI)。
  • Bean验证 –一种根据预定义规则确保Java Bean状态有效的方法。
  • JACC(容器的Java授权合同) –指定EE容器与授权提供者之间的关系和事务。
  • JASPIC(Java身份验证服务提供者接口) –这是JACC的补充身份验证SPI(即服务API)。 它定义了应用程序如何访问传统的身份验证服务。

总体而言,Spring和J2EE朝着同一方向缓慢收敛。

参考: 技术说明博客上的JCG合作伙伴 Jerome Versrynge 对JavaEE概念的介绍 。

翻译自: https://www.javacodegeeks.com/2013/02/introduction-to-javaee-concepts.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程新手的疑惑:代码循环如何画出一个简单的三角形

对一个编程新手来说,最先知道了解的莫过于代码执行的三种结构,顺序结构、循环结构和选择结构。 其中个人认为相对难以理解的是循环结构,而针对循环结构的练习题最多的就是循环画出一种简单图形,比如三角形。 当初我在学习写三角形…

解析PHP跳出循环的方法以及continue、break、exit的区别介绍

PHP中的循环结构大致有for循环&#xff0c;while循环&#xff0c;do{} while 循环以及foreach循环几种&#xff0c;不管哪种循环中&#xff0c;在PHP中跳出循环大致有这么几种方式&#xff1a; 代码&#xff1a; <?php$i 1;while (true) { // 这里看上去这个循环会一直执行…

js php 数据类型判断,【js基础】变量类型判断

类型判断方法比较&#xff1a;如果需要想详细了解&#xff0c;请看下文:注&#xff1a;原封不动复制备份&#xff0c;防止删帖在JavaScript中&#xff0c;有5种基本数据类型和1种复杂数据类型&#xff0c;基本数据类型有&#xff1a;Undefined, Null, Boolean, Number和String&…

HTML阻止iframe跳转页面并使用iframe在页面内嵌微信网页版

昨天看到这篇文章[置顶]开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面 就想弄一个winform结合html5的一个小东西&#xff0c;突有兴致&#xff0c;想在里面嵌套一个微信网页版。 好了&#xff0c;想法一出来&#xff0c;就行动吧&#xff0c;最终效果…

使用Spring Data Redis进行缓存

在下面的示例中&#xff0c;我将向您展示如何使用Spring Data – Redis项目作为Spring 3.1中引入的Spring Cache Abstraction的缓存提供程序。 我对如何使用Spring的基于Java的配置有很多疑问&#xff0c;因此我将同时提供基于XML和Java的配置供您查看。 依存关系 在此示例中使…

标准模板库(STL)学习指南之set集合

set是关联容器。其键值就是实值&#xff0c;实值就是键值&#xff0c;不可以有重复&#xff0c;所以我们不能通过set的迭代器来改变set的元素的值&#xff0c;set拥有和list相同的特性&#xff1a;当对他进行插入和删除操作的时候&#xff0c;操作之前的迭代器依然有效。当然删…

搜狗语料库数据整编

1 #!/bin/bash2 if [ -z "$1" ] ; then3 echo "请指定输入目录"4 exit 15 elif [ ! -d $1 ] ; then6 echo "[$1]不是一个合法的输入路径"7 exit 18 fi9 if [ -z "$2" ] ; then 10 echo "请指定输出目录" 11 exi…

linux oracle swd.oui,centos7安装oracle11g报错,请问怎么解?

centos7安装oracle11g报错&#xff0c;请问怎么解&#xff1f;在centos7下安装oracle11g到85%时报错提示Error in invoking target install of makefile ins_ctxm.mk查了log提示如下INFO: Start output from spawned process:INFO: ----------------------------------INFO:INF…

CSS布局技巧之——各种居中

居中是我们使用css来布局时常遇到的情况。使用css来进行居中时&#xff0c;有时一个属性就能搞定&#xff0c;有时则需要一定的技巧才能兼容到所有浏览器&#xff0c;本文就居中的一些常用方法做个简单的介绍。 注&#xff1a;本文所讲方法除了特别说明外&#xff0c;都是兼容…

OpenJPA:内存泄漏案例研究

本文将提供完整的根本原因分析详细信息以及解决影响Oracle Weblogic Server 10.0生产环境的Java堆内存泄漏&#xff08;Apache OpenJPA泄漏&#xff09;的方法。 这篇文章还将演示在管理javax.persistence.EntityManagerFactory生命周期时遵循Java Persistence API最佳实践的重…

了解真实的rem手机屏幕适配

rem 作为一个低调的长度单位&#xff0c;由于手机端网页的兴起&#xff0c;在屏幕适配中得到重用。使用 rem 前端开发者可以很方便的在各种屏幕尺寸下&#xff0c;通过等比缩放的方式达到设计图要求的效果。 rem 的官方定义『The font size of the root element.』&#xff0c;…

JDBC查询Oracle全部表名称,如何使用JDBC API从Oracle数据库中的现有表中检索记录?...

您可以使用UPDATE查询来更新/修改表中记录的现有内容。使用此功能&#xff0c;您可以更新表的所有记录或特定记录。语法UPDATE table_nameSET column1 value1, column2 value2...., columnN valueNWHERE [condition];要使用JDBC API更新表中记录的内容&#xff0c;您需要-注…

JUnit与EasyMock合作

开发人员始终需要注意所产生的代码。 在实施新功能或修复某些错误之后&#xff0c;应确保它们能够正常工作。 至少可以借助单元测试来实现。 由于此博客致力于Java编程语言&#xff0c;因此今天我将撰写有关JUnit 4.1和EasyMock 3. 1框架的文章。 这些框架的主要目的是简化单元…

nodejs获取当前url和url参数值

//需要使用的模块 http url 当前url http://localhost:8888/select?aa001&bb002 var http require(http); var URL require(url); http.createServer(function(req, res){var arg url.parse(req.url).query; //方法一arg > aa001&bb002var arg url.parse(…

以A表中的值快速更新B表中记录的方法

1、问题描述 有两张表&#xff0c;A表记录了某些实体的新属性&#xff0c;B表记录了每个实体的旧属性&#xff0c;现在打算用A中的属性值去更新B中相同实体的旧属性&#xff0c;如下图所示&#xff1a; 类似这样的需求&#xff0c;怎样做比较高效呢&#xff1f; 2、制作模拟数…

linux日志文件备份,LINUX 自动备份程序日志(shell)

定期备份脚本案列用tar压缩7天前日志删除7天压缩完日志删除压缩完356天前日志#&#xff01;/bin/bash#delete expire log#script name drop_log#script default remove 7 day log and remove remove archived a year ago#make date 2015/06/15result_clientfind /orafile/app/s…

HTML 网页创建

最简单的方式就是创建一个文本文档&#xff0c;然后将.txt后缀改为.html或者htm。 完成上面的步骤会创建一个完全空白的网页&#xff0c;下面填充一点内容&#xff0c;代码实例如下: <!DOCTYPE html> <html> <head> <meta charset" utf-8">…

Hadoop赠品–综述

各位极客&#xff0c; Packt Publishing关于Apache Hadoop 的书籍赠品已经结束。 您可以在此处找到比赛的原始帖子。 获奖者 将会获得这本书奖的6位幸运获奖者是&#xff08;姓名出现在他们的电子邮件中&#xff09;&#xff1a; Hadoop真实世界解决方案手册 Sellamuthu&…

企业级应用与互联网应用的区别

企业级应用&#xff1a;商业组织、大型企业而创建并部署的解决方案及应用。涉及的外部资源众多、事务密集、数据量大、用户众多、同时必须有较强的安全性考虑。 企业应用和互联网应用从根本来说是相同的&#xff0c;都是基于因特网、HTTP、浏览器的一种应用&#xff0c;但面向的…

hdu-2602 Bone Collector

题目 http://acm.hdu.edu.cn/showproblem.php?pid2602 分析 基础背包问题,有一个容量为V的背包,各种骨头有大小和价值两种属性,求背包能装的骨头的最大价值. AC代码 #include "bits/stdc.h" using namespace std; int val[1010], vol[1010], dp[1010]; int main(int…