【方向盘】Java EE几十种技术,“活着的”还剩几何(企业应用技术篇)

简介: 眼看它起高楼,眼看它宴宾客
本文已被 https://yourbatman.cn收录; 女娲Knife-Initializr工程可公开访问啦;程序员专用网盘 https://wangpan.yourbatman.cn;技术专栏源代码大本营: https://github.com/yourbatman/tech-column-learning;公号后台回复“ 专栏列表”获取全部小而美的 原创技术专栏

你好,这里是Java方向盘,我是方向盘(YourBatman),坐稳扶好,开始发车。

Title Link
所属专栏 【方向盘】-Java EE
源代码 https://github.com/yourbatman/FXP-java-ee
程序员专用网盘公益上线啦,注册送1G超小容量,帮你实践做减法 https://wangpan.yourbatman.cn
Java开发软件包(Mac) https://wangpan.yourbatman.cn/s/rEH0 提取码:javakit
女娲工程 http://152.136.106.14:8761
版本约定 [Mac OS 12.5],[IntelliJ IDEA 2022.2],[Java EE:6、7、8],[Jakarta EE:8、9、9.1]

📚前言

若你还不太清楚Java EE是什么,可先移步这里:什么是Java EE?

上篇文章已经聊过了Java EE最重要的部分:Web应用技术,发现情况“惨不忍睹”,8项技术仅剩Servlet依旧保持主流,其它的均已淘汰或濒临淘汰。“此景”详情可移步阅读:上篇文章

本文继续,继续领略Java EE的企业应用技术,它曾在企业级开发中叱咤风云,来看看它现在的生存现状。为了便于理解,还是贴上这张分类图:
在这里插入图片描述

✍正文

在这里插入图片描述

Part2: 企业应用技术

Enterprise Application Technologies,共13种规范。
在这里插入图片描述

✌1. Bean Validation

推荐学习指数 ⭐️⭐️⭐️⭐️⭐️

在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节。比如参数不能为null,email必须符合email的格式,如果手动进行if判断或者写正则表达式判断无意开发效率太低,在时间、成本、质量的博弈中必然会落后。正所谓专业的事情交给专业的组件去做,我们可把校验层抽象出来,这就是Bean Validation。

Bean Validation简直就是业务开发中祛掉坏味道代码的利器,完美的实现契约式编程,大大提高开发效率,降低出错概率。
在这里插入图片描述

API的GAV

<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>2.0.2</version>
</dependency>

代表API

  • Validation、ConstraintViolation
  • @Valid、@GroupSequence、@ConvertGroup
  • @Notnull、@Min、@NotEmpty

Bean Validation的实现有Apache的 Bval和Hibernate Validator,前者可忽略,后者几乎成为唯一实现。

✌2. EJB

推荐学习指数 ⭐️⭐️

Enterprise JavaBeans它就是鼎鼎大名的EJB,也叫企业级JavaBean。EJB技术的诞生标志着Java Beans的运行正式从客户端领域扩展到服务器领域

用于基于组件的事务性分布式编程。EJB不仅指定了bean格式,而且定义了运行bean的容器必须提供的一组服务。因此,开发人员无需担心服务细节,例如安全性,事务支持或任何远程对象访问。如此以至,想运行EJB必须有EJB容器,如JBoss,WebLogic,WebSphere等......就问你重不重?
在这里插入图片描述

API的GAV

<dependency>
    <groupId>jakarta.ejb</groupId>
    <artifactId>jakarta.ejb-api</artifactId>
    <version>3.2.6</version>
</dependency>

代表API

  • EJBContext
  • @EJB、@DependsOn、@Singleton、@SessionBean、@Stateless

由EJB容器提供实现。

✌3. DI

推荐学习指数 ⭐️⭐️⭐️

Dependency Injection该规范比较简单,约定了一些标准注解:

  • @Inject
  • @Named
  • @Qualifier
  • @Scope
  • @Singleton

API的GAV

<dependency>
    <groupId>jakarta.inject</groupId>
    <artifactId>jakarta.inject-api</artifactId>
    <version>1.0.3</version>
</dependency>

代表API:如上

CDI容器、Spring IoC容器、Guice容器等均有提供实现。

✌4. CDI

推荐学习指数 ⭐️⭐️⭐️

Contextual Dependency Injection上下文依赖注入。其实它包含两个概念:

  1. Context:上下文。可以绑定生命周期,可以与有状态的组件交互
  2. DI:依赖注入。以类型安全的方式注入一个组件到应用中去,包括指定特定实现注入

Spring的容器我们熟悉,CDI就是Java EE的容器。

API的GAV

<dependency>
    <groupId>jakarta.enterprise</groupId>
    <artifactId>jakarta.enterprise.cdi-api</artifactId>
    <version>2.0.2</version>
</dependency>

代表API

  • CDI、CDIProvider、Bean、InjectionPoint
  • @Model、@Stereotype、@Produces

✌5. JPA

推荐学习指数 ⭐️⭐️⭐️⭐️

Java Persistence API:Java持久层API。描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
在这里插入图片描述
API的GAV

<dependency>
    <groupId>jakarta.persistence</groupId>
    <artifactId>jakarta.persistence-api</artifactId>
    <version>2.2.3</version>
</dependency>

代表API

  • EntityManager
  • @Entity、@Column、@Cacheable
  • @ManyToMany、@ManyToOne、@NamedQuery

其实JPA的实现除了Hibernate,还有Eclipsellink,OpenJPA或Batoo。

✌6. JMS

推荐学习指数 ⭐️⭐️⭐️

Java Message Service:Java消息服务。两个应用程序之间需要进行通信,我们使用一个JMS服务,进行中间的转发,通过JMS 的使用,我们可以解除两个程序之间的耦合。也是我们常说的MQ。

JMS有一个类似协议 AMQP,请注意区分

在这里插入图片描述
API的GAV

<dependency>
    <groupId>jakarta.jms</groupId>
    <artifactId>jakarta.jms-api</artifactId>
</dependency>

代表API

  • JMSContext、JMSProducer、JMSConsumer
  • Message、TextMessage、MapMessage
  • MessageListener

ActiveMQ是对JMS的典型实现。

✌7. JavaMail

推荐学习指数 ⭐️⭐️⭐️

JavaMail:Java邮件。顾名思义,帮助我们发送Email电子邮件用的。方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如SMTP,POP3,IMAP,还有MIME。

API的GAV

<dependency>
    <groupId>jakarta.mail</groupId>
    <artifactId>jakarta.mail-api</artifactId>
    <version>1.6.7</version>
</dependency>

代表API

  • Address、BodyPart、Header
  • Transport、Multipart

并不是发邮件不重要,而是实际使用中我们大概率不需要关心其底层API,而使用更高层级的封装工具。

✌8. JTA

推荐学习指数 ⭐️⭐️⭐️

Java Transaction API (JTA):用于描述Java EE框架中事务管理器与应用程序,资源管理器,以及应用服务器之间的事务通讯。简而言之:分布式事务规范。XA是分布式协议规范,而JAT是Java中对XA协议的实现。

API的GAV

<dependency>
    <groupId>jakarta.transaction</groupId>
    <artifactId>jakarta.transaction-api</artifactId>
    <version>1.3.3</version>
</dependency>

代表API

  • Transaction、TransactionManager、TransactionSynchronizationRegistry
  • @Transactional、@TransactionScoped

✌9. Common Annotation

推荐学习指数 ⭐️⭐️⭐️⭐️

Common Annotations for the Java Platform:Java平台通用注解。这就是我们特别熟悉的JSR 250 通用注解:

  • @Resource / @Resources
  • @PostConstruct
  • @PreDestroy
  • @@Generated:用于标注某段代码是生成的而非人写的,该注解基本不使用

API的GAV

<dependency>
    <groupId>jakarta.annotation</groupId>
    <artifactId>jakarta.annotation-api</artifactId>
    <version>1.3.5</version>
</dependency>

代表API:同上

值得注意的是,该jar 没必要导入,因为自JDK 6开始已经被集成到Java SE内部了。

✌10. JCA

推荐学习指数 ⭐️

Java EE Connector Architecture:Java连接体系架构,是对Java EE标准集的重要补充。因为它注重的是将Java程序连接到非Java程序和软件包中间件的开发。

JCA的目标:企业应用程序集成方面,它提供的标准化体系结构让Java EE组件能够对异构 EIS进行“即插即用”的访问,其中包括ERP、事务处理、老式数据库系统等。

API的GAV

无单独Jar,是一种架构说明

代表API:无

✌11. Batch

推荐学习指数 ⭐️

Batch Applications for the Java Platform:Java平台的批处理规范。从它出生起就被认为是抄袭Spring Batch项目的,所以没啥好聊的~

API的GAV

<dependency>
    <groupId>jakarta.batch</groupId>
    <artifactId>jakarta.batch-api</artifactId>
    <version>1.0.2</version>
</dependency>

代表API

  • Batchlet
  • PartitionMapper、PartitionCollector
  • JobOperator、BatchRuntimeException

✌12. Concurrent

推荐学习指数 ⭐️

Concurrency Utilities for Java EE:Java企业平台并发工具。额......希望是和企业平台整合,所以定义了一堆借口。结果是:一句话,没啥用,JUC足矣。

API的GAV

<dependency>
    <groupId>jakarta.enterprise.concurrent</groupId>
    <artifactId>jakarta.enterprise.concurrent-api</artifactId>
    <version>1.1.2</version>
</dependency>

代表API

  • ContextService
  • ManagedTask
  • Trigger

✌13. Interceptors

推荐学习指数 ⭐️

它是Java EE的拦截器,和EJB一起使用。如@AroundInvoke、@Intercerptors

API的GAV

<dependency>
    <groupId>jakarta.interceptor</groupId>
    <artifactId>jakarta.interceptor-api</artifactId>
    <version>1.2.5</version>
</dependency>

代表API

  • InvocationContext
  • @Interceptor、@AroundInvoke、@AroundTimeout、@AroundConstruct

✍总结

企业应用技术是Java EE为企业级开发量身打造的一系列技术合集,曾经叱咤市场数十年,现在回头再看早已风头不再,不禁让人感叹。

共包含13项具体技术,其中:

  • 1个仍为主流:Bean Validation
  • 2个还比较重要:JPA、Common Annotation
  • 其它的存在感已越来越弱,几近消亡

Web应用技术 + 企业应用技术覆盖了Java EE体系的核心内容,下文将继续补充剩下的3个part。

推荐阅读

在这里插入图片描述

我是方向盘(YourBatman):前25年不会写Hallo World、早已毕业的大龄程序员。高中时期《梦幻西游》骨灰玩家,网瘾失足、清考、延期毕业、房产中介、保险销售、送外卖...是我不可抹灭的黑标签

  • 🎓2013.07 清考、毕业答辩3次未通过、延期毕业
  • 🏷2013.08-2014.07 宁夏中介公司卖二手房1年,毕业后第1份工作
  • ️️🏷2014.07-2015.05 荆州/武汉,泰康人寿卖保险3月、饿了么送外卖2月,还有炸鸡排、直销等第2345份工作
  • 🏷2015.08 开始从事Java开发,闯过外包,呆过大厂!擅长抽象思维,任基础架构团队负责人
  • 🏷2021.08 因“双减政策”失业!历经9面,终获美团外卖L8的offer
  • 🙅🏻‍♀️Java架构师、Spring开源贡献者、CSDN博客之星年度Top 10、领域建模专家、写作大赛1/2届评委
  • 📚高质量代码、规范践行者;DDD领域驱动深度实践;即将出版书籍《Spring奇淫巧技》

在这里插入图片描述

序号 专栏名称 简介
01 【方向盘】-程序人生 程序人生,人生程序
02 【方向盘】-资讯/新特性 IDEA、JDK、Spring技术栈......新特性
03 【方向盘】-IntelliJ IDEA 熟练使用IDEA就相当拥有物理外挂,助你高效编码
04 【方向盘】-Bean Validation 熟练掌握数据校验,减少90%的垃圾代码
05 【方向盘】-日期时间 帮你解决JDK Date、JSR 310日期/其实 的一切问题
06 【方向盘】-Spring类型转换 Spring类型转换-框架设计的基石
07 【方向盘】-Spring static static关键字在Spring里的应用
08 【方向盘】-Cors跨域 关于跨域请求问题,本专栏足矣
09 【方向盘】-Jackson Almost Maybe是最好的Jackson专栏
10 【方向盘】-Spring配置类 专讲@Configuration配置类,你懂的
11 【方向盘】-Spring技术栈 暂无所属小分类的,Spring技术栈大分类
12 【方向盘】-JDK 暂无所属小分类的,JDK技术栈大分类
13 【方向盘】-Servlet Servlet规范、Web相关内容专题
14 【方向盘】-Java EE 从Java EE到Jakarta EE,30年弹指一挥间
15 【方向盘】-工具/提效 开发工具、软件工具,目标是提效
16 【方向盘】-Spring技术栈新特性 Spring Framework、Spring Boot、Spring Cloud、Spring其它技术
17 【方向盘】-基本功 每个Javaer,都需要有扎实的基本功
... ... ...
99 源代码库 大多数专栏均配有源代码,都在这里
目录
相关文章
|
24天前
|
存储 监控 安全
单位网络监控软件:Java 技术驱动的高效网络监管体系构建
在数字化办公时代,构建基于Java技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
47 11
|
1月前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
65 7
|
16天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
2天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
1月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
14天前
|
存储 缓存 前端开发
JavaEE初阶——初识EE(Java诞生背景,CPU详解)
带你从零入门JAVAEE初阶,Java的发展历程认识什么是cpu,cpu的工作原理,cpu是如何进行计算的,cpu的架构,指令集,cpu的核心,如何提升cpu的算力,cpu的指令,,cup的缓存,cpu的流水线
|
2月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
2月前
|
前端开发 Java 数据库连接
你不可不知道的JAVA EE 框架有哪些?
本文介绍了框架的基本概念及其在编程领域的应用,强调了软件框架作为通用、可复用的软件环境的重要性。文章分析了早期Java EE开发中使用JSP+Servlet技术的弊端,包括可维护性差和代码重用性低等问题,并阐述了使用框架的优势,如提高开发效率、增强代码规范性和可维护性及提升软件性能。最后,文中详细描述了几种主流的Java EE框架,包括Spring、Spring MVC、MyBatis、Hibernate和Struts 2,这些框架通过提供强大的功能和支持,显著提升了Java EE应用的开发效率和稳定性。
143 1
|
2月前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
62 1
|
2月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
66 3
下一篇
开通oss服务