JavaEE

JavaEE 概念

Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为 Jakarta EE(这个名称应该还没有得到群众认可)。是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件。JavaEE指的是一套规范,也可以认为是遵循JavaEE规范、使用JavaSE实现的技术和框架。
JavaEE 是 Java 应用最广泛的部分。

例如:
JavaSE包含socket的内容,JavaEE则是提出JSR902、JSR903规范,按照规范中的要求把socket封装成Servlet供直接使用;
JavaSE包含annotation和自定义注解API(Pluggable Annotation Processing API)的内容,JavaEE则是提出JSR269规范,所有框架中定义的注解都必须符合该规范,典型的例如lombok中的@Getter/@Setter注解就是符合JSR269规范的,当然你也可以依据JSR269的要求,自己实现一个@Getter/@Setter注解;
这就是JavaEE和JavaSE的区别,目前官网上最新的是JavaEE7的内容:
JavaEE7

网上一般会讲JavaEE的13个规范,实际上JavaEE 7 规范不止13个,加粗的是实现了这些规范的框架:

Web层

提供Web交互,数据传输等方面的组件

  1. 关注于为客户端生成各种格式内容的视图模块:JSP JSTL EL JSF
  2. 关注于Web实时交互的模块:WebSocket Java API——SpringBoot框架
  3. 关注于提供Web服务的Java Web Service模块:JAX-WS JAX-RS——SpringBoot框架
  4. 关注于交互数据规范的模块:JSON-P JAXB
  5. 关注于Web请求和响应的模块:Servlet——SpringBoot框架

企业信息层(EIS)

提供与其他企业中间件或服务交互的组件

  1. 关注于与数据库交互的模块:JDBC——Hibernate框架、SpringData Jpa框架
  2. 关注于Java持久化的模块:JPA——Hibernate框架、SpringData Jpa框架
  3. 关注于Java信息服务的模块:JMS——ActiveMq消息中间件
  4. 关注于Mail服务的模块:JavaMail API
  5. 关注于与遗留系统交互的模块:JCA
  6. 关注于执行批量任务的模块:Batch——Spring Batch3.0批处理框架

通用(Common)

提供公用组件

  1. 关注于上下文与依赖注入的模块:CDI——Spring框架
  2. 关注于整合安全的模块:JACC JASP JAAS
  3. 关注于JavaEE平台规范注解的模块:JavaEE通用注解(JavaEE common Annotation)
  4. 关注于数据校验的模块:Bean验证API(Bean Validation)——Hibernate Validator验证框架
  5. 关注于JavaEE管理的模块:JavaEE管理API(JavaEE Management API)
  6. 关注于提供查找组件,资源或服务的间接层模块:JNDI

业务层(Core)

提供简化业务逻辑编写的组件

  1. 关注于用于开发可移植,可重用,可伸缩的企业应用编程模型:EJB
  2. 关注于用于开发简化的,轻量级的,容器管理的,基于POJO的编程模型:托管Beans(Managed Beans)
  3. 关注于提供面向切面编程的模块:拦截器API(Interceptor)
  4. 关注于提供事务管理的模块:JTA
  5. 关注于优化并发编程的模块:JavaEE并发工具包(Concurrency Utilities for Java EE)

关于JavaSE规范和JavaEE规范,参考:
JavaSE规范,Java规范,JSR规范全面整理

只要知道了JavaEE包含哪些规范,就能知道自己大概要掌握哪些技术了。

PS:用Bean Validation框架校验真的很省事啦~

JavaSE

$java_home/jre/lib/rt.jar里的全部内容,比如java目录下的lang包、util包、io/nio包等14个包的内容,一般是一些基础类库,例如包装类、collection、concurrent并发包、函数式接口、反射、注解等,简单粗暴的讲,JavaSE就是jdk包含的内容;

JavaEE 与 JavaSE 的区别与联系

JavaEE 是在 JavaSE 的基础上构建的,是对 JavaSE 的扩展,增加了一些更加便捷的应用框架。除了 EE 和 SE,还有为移动端而生的 JavaME,但目前应用不算广泛。三者的关系可以用下图概括:

JavaEE和JavaWeb的区别

JavaEE的技术包括两个部分,开发B/S架构(网站)和C/S架构(客户端)的内容,也就相当于QQ网页版和QQ桌面客户端的区别,B/S架构的那一套也就是我们所说的JavaWeb,C/S架构也就是桌面应用(客户端),所以说JavaEE包含了JavaWEB,这也就是JavaEE和JavaWeb的区别。

同样的,对于JavaWeb服务器和JavaEE服务器的区别,tomcat是JavaWeb服务器,tomEE是JavaEE服务器,tomEE包含tomcat。

使用Java开发的桌面客户端比较少,最有名的要属Eclipse了,Eclipse就是用java开发的桌面应用。至于为什么java很少用来开发桌面应用,这又是一个具有争议话题了。

JavaEE与Java 的关系

Java刚开始的时候,因为各种应用和生态不成熟,很多东西需要有人牵头制定强制规范引导Java的发展,于是Java EE曾经引领了企业级应用的开发。

但随着时代的进步,以及越来越多的公司和组织参与到Java世界,出现了各种各样的Java EE组件的代替者,比如Hibernate、Spring就是其中两个典型。相反,Java官方制定的各种Java EE规范反而不太受欢迎,他们制定了JSF规范,但实际企业开发喜欢用Struts 2、Spring MVC;他们制定了EJB规范,但实际企业开发往往还是喜欢用Spring;他们制定了JPA规范,但实际企业开发往往还是喜欢直接用Hibernate、MyBatis。

现代企业级应用常用的各种框架和工具,比如Struts 2、Spring、Hibernate、jBPM、Activiti、Lucene、Hadoop、Drools、CXF等这些大家耳熟能详的组件,全部都不是来自Oracle官方,但是却在企业应用中开发经常用到的。

现在企业里面,真正常用的JavaEE规范有什么?Servlet、JSP、JMS、JNDI。这些技术都只是充当了一个程序的入口而已。

Oracle之所以可能考虑放弃Java EE,正体现了Oracle对丧失Java控制权的无奈。企业的本质是逐利,Oracle每年为制定Java EE规范投入不少人力、财力,但制定的规范最终并没有获得市场的青睐,所以Oracle可能放弃这种吃亏不讨好的事情。

但Java不同,2016年6月,Java在商业语言排行榜上的市场份额将近21%,庞大到恐怖的市场份额,背后隐藏着巨大各种专利使用费和盈利商机,任何一个理智的公司都不会放弃这个会下金蛋的母鸡。

由此可见,oracle上提供的java EE是官方指定的javaEE规范,里面都是符合官方指定的javaEE组件,我们用SSM,SSH开发后台时使用到的只有Servlet、JSP、JMS等少量的java EE规范,没有必要使用orcale提供的java EE版本,直接使用jdk就可以(当然还需要maven等管理第三方的jar包来实现功能)

javaEE和javaweb的区别相关推荐

  1. java和javaweb的区别_javaee, javaweb和javase的区别以及各自的知识体系

    javaee, javaweb和javase的区别以及各自的知识体系 来源 https://blog.csdn.net/weixin_39297312/article/details/79454642 ...

  2. J2EE与javaweb的区别

    1.Java分类 Java分为JavaSE(Java标准版).J2EE(Java企业版)和JavaME(Java微型版): JavaSE(Java Standard Edition),一般用来开发桌面 ...

  3. java和javaweb的区别_java和javaweb有什么关系吗?它们之间的区别是什么?

    可能很多入门学习java已经有一段时间的朋友还是没有很清楚,java和javaweb之间的一些联系是什么?或者说,这两者之间有一些什么样的区别呢?下面我们一起来看看吧. 首先我们需要弄清楚java跟W ...

  4. javase和javaee的区别(javase和javaee和javame的区别)

    JavaEE的EJB3.0和EJB2.0的区别有哪些呢? JavaEE折叠EJB3.0和EJB2.0的区别从架构图可以看出,无论Web结构或EJB结构,提供实现的功能相差不多,这样,我们的业务核心组件 ...

  5. JDK、JRE、JVM的区别及JavaSE、JavaEE和JavaME的区别?

    1.JRE(Java Runtime Environment java运行环境) 包括JAVA虚拟机和JAVA程序所需的核心类库,如果想要运行一个开发好的JAVA程序,计算机中只要安装JRE即可 2. ...

  6. JavaEE 和 JavaSE的区别

    Java分为三个版本:Java SE(标准版).Java EE(企业版).Java ME(微型版).其中JavaSE就是大家学JavaEE和JavaME的基础,换而言之学Java先从JavaSE开始, ...

  7. JavaSE、JavaEE、JavaWeb分不清?

    Java分为三大版本,SE即标准版,包含了Java核心类库,主要用来开发桌面应用:EE即企业版,包含SE,又有扩展部分(Servlet,JDBC等),主要用来开发分布式网络程序:ME即微型版,包含了S ...

  8. Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念

    1.尚硅谷 视频课程:https://www.bilibili.com/read/cv5216534 初学者可按照尚硅谷公开的JAVA视频最快学习路线: JavaSE --> MySQL–> ...

  9. JavaEE是什么?JavaSE又是什么?两者的区别有哪些?

    Java作为最流行的编程语言受到了许多人的喜爱,其在编程中的地位自不必多说.对于许多才刚刚入门Java的朋友来讲,常常会产生这样的困惑,JavaEE是什么?JavaSE又是什么?两者的区别有哪些?学哪 ...

最新文章

  1. python中变量的作用域有几种_Python中变量的作用域(variable scope)
  2. 解决hibernate对Sql Server分页慢的问题
  3. 分布式思想和rpc解决方案介绍
  4. Date和TimeZone的关系
  5. Bootstrap 默认栅格系统
  6. seaborn单变量/双变量/多变量绘图
  7. Kudu :Service unavailable: Soft memory limit exceeded at xxx% of capacity
  8. String类的equals()与==的区别
  9. HCIE Secuirty 防火墙内容安全组合 备考笔记(幕布)
  10. 经典排序算法(四)--基数排序Radix Sort
  11. 简易水下航行器舵控arduino,蓝牙通讯
  12. [Bucket CTF 2023]
  13. Oracle EBS R12 创建会计科目失败诊断和处理
  14. Linux 之pureftp 的部署和优化
  15. php狼人杀,《狼人杀专业术语》 一秒变成狼圈人!
  16. ipadpro怎么分屏_2020款iPad Pro开箱测评:下一个十年,打开AR新世界的大门
  17. java特种兵 怎么样_java特种兵
  18. Mecanim动画——MatchTarget绑定
  19. 学习C语言的第一步安装
  20. ireport开发报表实现金额大写

热门文章

  1. 八位“Booth二位乘算法”乘法器
  2. 红海or蓝海?数据分析告诉你:在线教育的井喷与未来
  3. 网络游戏运营的整体流程
  4. 前端框架综述(8)前端
  5. 《Patterns, Principles, and Pract》— chapter15 Value Objects
  6. ElementUI图片上传 回显
  7. AI规则迎来进化:从“阿西莫夫三原则”到“李彦宏四原则”
  8. python 字典循环赋值,Python字典循环添加一键多值的用法实例
  9. OpenCV+Mediapipe手势动作捕捉与Unity引擎的结合
  10. 我的人工智能梦(一、前言)