javaEE和javaweb的区别

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和javaweb的区别_第1张图片

JavaEE 与 JavaSE 的区别与联系

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

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包来实现功能)

你可能感兴趣的:(学习,java,javase,javaee)