Java SE :
- 它的目标是提供一个稳定且跨平台的运行环境和核心类库,用于开发桌面应用、命令行工具和服务器端的基础应用。
- Java SE 的功能主要由两大部分构成:JVM (Java虚拟机) 和 核心类库 (Core Libraries) 。我们通常所说的“功能模块”,主要指的就是这些核心类库。
复制代码
以下是其主要的核心模块:
1. JVM (Java Virtual Machine) - 跨平台的核心
虽然不直接是“类库”,但它是 Java SE 的灵魂。
- 作用:负责将字节码 (.class文件) 解释或编译成特定操作系统能理解的机器码并执行,也就是编译成不同的平台(x86、ARM等)CPU的指令集,然后,不同平台的虚拟机负责加载字节码并执行。
- 核心价值: “一次编写,到处运行” (Write Once, Run Anywhere) 。正是 JVM 的存在,使得同一个 Java 程序可以在 Windows、macOS、Linux 等不同平台上无缝运行。
- SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性做得非常好,低版本的Java字节码完全可以正常运行在高版本的JVM上。
2. Java 语言基础与核心类库 (java.lang)
这是最核心、最基础的包,也是唯一会被自动导入到每个 Java 程序中的包。
- 基础数据类型包装类:如 Integer, Double, Boolean 等,用于在面向对象的世界里操作基本数据类型。
- 核心对象:如 Object (所有类的根父类)、String、StringBuilder。
- 系统操作:如 System (用于访问系统属性和标准输入输出)、Runtime (用于与运行时环境交互)。
- 多线程基础:如 Thread 类和 Runnable 接口。
- 数学运算:Math 类。
- 异常处理:Throwable, Exception, Error 等基础异常类。
3. 集合框架 (Collections Framework) (java.util)
这是进行数据组织和管理的数据结构(通常也称为容器),极大地简化了数组和集合的操作。
- 核心接口:List (有序列表), Set (不重复集合), Map (键值对映射), Queue (队列)。
- 常用实现类:ArrayList, LinkedList, HashSet, HashMap,LinkedList等。
- 工具类:Arrays (数组工具), Collections (集合工具),提供了排序、搜索等静态方法。
- 通过封装包含业务方法的 Java 类组件 + 容器的运行模式,在不同层次和用途中出现了常见的容器(Servlet 容器 , EJB 容器, Spring 容器, Web 容器)来负责组件的创建、销毁、事务管理和安全控制等。
4. I/O 与 NIO (New I/O) (java.io, java.nio)
用于处理数据的输入和输出,以及与文件系统的交互。
- 传统 I/O (java.io) :基于流 (Stream) 模型,如 FileInputStream, FileOutputStream, BufferedReader, PrintWriter。
- 新 I/O (java.nio) :基于通道 (Channel) 和缓冲区 (Buffer) 模型,提供了更高的性能和更灵活的操作,尤其适合处理大文件和网络 I/O。
5. 网络编程 (java.net)
提供了低层次的网络通信能力。
- TCP/IP 套接字:Socket 和 ServerSocket 类,用于实现可靠的流式数据传输。
- UDP 数据报:DatagramSocket 和 DatagramPacket 类,用于实现无连接的数据报传输。
- URL 处理:URL 类及相关类,用于访问万维网上的资源。
6. 并发编程 (java.util.concurrent)
这是构建高性能、多线程应用的强大工具包,远比基础的 Thread 类丰富。
- 线程池:ExecutorService, ThreadPoolExecutor,用于高效管理线程生命周期。
- 并发集合:如 ConcurrentHashMap, CopyOnWriteArrayList,为多线程环境提供了安全的集合类。
- 同步器:如 CountDownLatch, CyclicBarrier, Semaphore,用于协调多个线程之间的工作。
7. 数据库连接 (JDBC) (java.sql, javax.sql)
提供了一套标准的 API,用于连接和操作各种关系型数据库(如 MySQL, PostgreSQL, Oracle)。
- 核心接口:Connection (数据库连接), Statement (SQL语句), ResultSet (查询结果集)。
- 作用:JDBC 是 Java 程序与数据库之间沟通的桥梁,它抽象了不同数据库的差异,让开发者可以用统一的方式访问数据。
8. XML 处理 (javax.xml)
提供了解析和处理 XML 文档的标准 API,如 DOM 和 SAX 解析器。
9. 日期与时间 API (Java.time) (java.time)
Java 8 引入的全新日期时间 API,取代了旧的 Date 和 Calendar 类,设计更合理,使用更方便,且是不可变且线程安全的。
总结:
模块核心包主要功能基础核心java.lang语言基础、核心对象、系统操作、多线程基础数据结构java.util集合框架、日期时间、工具类输入输出java.io, java.nio文件操作、数据流、网络通信基础网络编程java.netTCP/UDP 套接字、URL 处理并发编程java.util.concurrent线程池、并发集合、同步工具数据库连接java.sql连接和操作关系型数据库掌握 Java SE 的这些核心模块,就等于拿到了进入 Java 世界大门的钥匙,也为学习更高级的 Spring、微服务、大数据等技术打下了坚实的基础。
Java EE :
- Java EE (现称 Jakarta EE),它与 Java SE 构成了企业级开发的两大支柱。
- 它在 Java SE 的基础上增加了一系列的API和库。方便处理 Web应用、数据库、消息服务等。
- Java EE 的功能主要通过一系列 “技术规范 (Specification)” 来定义,并由不同的 “容器 (Container)” 来提供实现。一个典型的 Java EE 应用服务器(如 WildFly, TomEE, GlassFish)就是一个集成了所有这些容器的平台。
复制代码
以下是其核心功能模块(即核心技术规范) VS 常用替代实现:
1. Web 层技术
这一层负责处理所有来自客户端的 HTTP 请求和响应。
- Servlet API (javax.servlet)
- 作用:Java EE Web 技术的绝对基石。它定义了 Java 类如何响应 HTTP 请求的标准。所有 Java Web 框架(如 Spring MVC, Struts)底层都依赖于 Servlet。
- 类比:相当于 Web 应用的“发动机”或“神经中枢”。
- JavaServer Pages (JSP) & Expression Language (EL)
- 作用:一种动态网页技术,允许在 HTML 代码中嵌入 Java 代码片段或标签,用于生成动态内容。通常与 JSTL (JSP Standard Tag Library) 配合使用。
- 现状:随着模板引擎(如 Thymeleaf, FreeMarker)和前端框架的兴起,JSP 已不再是主流,但仍是 Java EE 规范的一部分。
- JavaServer Faces (JSF)
- 作用:一个基于组件的 MVC Web 框架,旨在通过拖拽组件的方式快速构建用户界面,类似于 .NET 的 ASP.NET Web Forms。
- 现状:在企业级市场有一定份额,但在新项目中,Spring Boot + 现代前端框架的组合更为流行。
2. 业务层技术
这一层封装了应用程序的核心业务逻辑。
- Enterprise JavaBeans (EJB)
- 作用:用于封装业务逻辑、事务和远程调用的组件模型,是传统 Java EE 的核心。它运行在 EJB 容器中,容器会自动为其管理事务、安全、并发和远程调用等复杂问题。
- 类型:主要包括会话 Bean (处理业务逻辑)、消息驱动 Bean (处理异步消息) 和实体 Bean (已过时,被 JPA 取代)。
- 对比 Spring:EJB 是 Java EE 官方的“重量级”解决方案,而 Spring 提供了一个更“轻量级”、更灵活的替代方案,这也是 Spring 变得如此流行的原因之一。
3. 数据持久层技术
这一层负责将内存中的对象数据与关系型数据库进行映射和管理。
- Java Persistence API (JPA)
- 作用:Java EE 中最重要和最常用的持久化规范。它定义了一种对象关系映射 (ORM) 的标准,使开发者可以将 Java 对象与数据库表关联,而无需编写大量的 JDBC 样板代码。
- 实现:Hibernate 和 MyBatis 是JPA 里两个非常流行的持久层框架。当在 Spring Boot 中使用 spring-boot-starter-data-jpa 时,底层通常就是 Hibernate。 当在 Spring Boot 中使用 mybatis-spring-boot-starter 时,底层通常就是 mybatis。
4. 基础服务
这些是支撑整个应用运行的基础服务(企业级服务,横跨各层)。
- Contexts and Dependency Injection (CDI)
- 作用:Java EE 的依赖注入 (DI) 和上下文管理标准。它提供了强大的类型安全的依赖注入能力,并管理着 bean 的生命周期和作用域(如 Request, Session, Application Scope)。
- 重要性:是Java EE 应用组装的“胶水”,也是与 Spring 框架 DI 理念相对应的官方标准。
- Java Transaction API (JTA)
- 作用:用于管理分布式事务的 API。它允许将多个资源(如两个不同的数据库,或数据库与消息队列)的操作纳入到一个单一的、原子性的事务中,确保数据一致性(“要么全做,要么全不做”)。
- Java Message Service (JMS)
- 作用:用于在应用程序的不同部分之间进行异步消息传递的 API。它支持点对点和发布/订阅两种消息模型,是实现系统解耦和削峰填谷的关键技术。
- JavaMail
- JNDI
- 作用:命名与目录服务,用于查找和访问企业中的各种资源。
- 现状:已被流行的Spring框架中,用依赖注入 (IoC/DI) 和 Spring 的配置通过注解的方法进行替代使用。
- Bean Validation
- 作用:通过注解(如 @NotNull, @Size(min=2, max=140))来标准化数据验证的规范,可以应用于方法参数、返回值、字段等。
5. 安全与运维
- 安全:提供基于角色的访问控制、认证和加密机制。
- 容错与高可用:通过集群、负载均衡和故障转移等技术,保证系统稳定运行。
总结与替代对比:
层级核心规范 (Java EE)主要功能现代替代/常用实现Web 层Servlet, JSP, JSF处理 HTTP 请求,生成动态网页Spring MVC, JAX-RS (REST)业务层EJB封装复杂的、有状态的事务性业务逻辑Spring Framework (核心是 Spring Core/Beans)持久层JPA对象关系映射 (ORM),简化数据库操作Hibernate/MyBatis (JPA 实现), Spring Data JPA基础服务CDI, JTA, JMS, JNDI, Bean Validation依赖注入、事务、消息、资源查找、数据校验Spring Framework (提供了同名或更优的实现)
Java EE/Jakarta EE 是一套官方、全面但相对“重” 的企业级开发规范。而 Spring 生态通过提供更简单、更灵活、松耦合的编程模型,成为了流行的 Java 企业开发的标准。理解 Java EE 的核心(如 Servlet, JPA, CDI, JTA)对于深入理解 Spring 的工作原理和阅读传统企业项目代码至关重要。如今,Jakarta EE 也在积极拥抱云原生,推出了 Jakarta EE 10/11 等新版本以保持竞争力。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |