闲与仙人扫落花 發表於 2026-2-14 13:13:00

Java SE 和 Java EE 的核心功能模块

<h3>Java SE :</h3>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">它的目标是提供一个稳定且跨平台的运行环境和核心类库,用于开发桌面应用、命令行工具和服务器端的基础应用。

Java SE 的功能主要由两大部分构成:JVM (Java虚拟机) 和 核心类库 (Core Libraries) 。我们通常所说的“功能模块”,主要指的就是这些核心类库。</span></pre>
</div>
<p>&nbsp;</p>
<p><span style="font-size: 14px">以下是其主要的核心模块:</span></p>
<h4>1. JVM (Java Virtual Machine) - 跨平台的核心</h4>
<blockquote>
<p>虽然不直接是“类库”,但它是 Java SE 的灵魂。</p>
<ul>
<li>作用:负责将字节码 (.class文件) 解释或编译成特定操作系统能理解的机器码并执行,也就是编译成不同的平台(x86、ARM等)CPU的指令集,然后,不同平台的虚拟机负责加载字节码并执行。</li>
<li>核心价值:&nbsp;“一次编写,到处运行” (Write Once, Run Anywhere)&nbsp;。正是 JVM 的存在,使得同一个 Java 程序可以在 Windows、macOS、Linux 等不同平台上无缝运行<span class="hyc-common-markdown__link">。</span></li>
<li><span class="hyc-common-markdown__link">SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性做得非常好,低版本的Java字节码完全可以正常运行在高版本的JVM上。</span></li>
</ul>
</blockquote>
<h4>2. Java 语言基础与核心类库 (<code>java.lang</code>)</h4>
<blockquote>
<p>这是最核心、最基础的包,也是唯一会被自动导入到每个 Java 程序中的包。</p>
<ul>
<li>基础数据类型包装类:如&nbsp;<code>Integer</code>,&nbsp;<code>Double</code>,&nbsp;<code>Boolean</code>&nbsp;等,用于在面向对象的世界里操作基本数据类型。</li>
<li>核心对象:如&nbsp;<code>Object</code>&nbsp;(所有类的根父类)、<code>String</code>、<code>StringBuilder</code>。</li>
<li>系统操作:如&nbsp;<code>System</code>&nbsp;(用于访问系统属性和标准输入输出)、<code>Runtime</code>&nbsp;(用于与运行时环境交互)。</li>
<li>多线程基础:如&nbsp;<code>Thread</code>&nbsp;类和&nbsp;<code>Runnable</code>&nbsp;接口。</li>
<li>数学运算:<code>Math</code>&nbsp;类。</li>
<li>异常处理:<code>Throwable</code>,&nbsp;<code>Exception</code>,&nbsp;<code>Error</code>&nbsp;等基础异常类<span class="hyc-common-markdown__link">。</span></li>
</ul>
</blockquote>
<h4>3. 集合框架 (Collections Framework) (<code>java.util</code>)</h4>
<blockquote>
<p>这是进行数据组织和管理的数据结构(<span style="color: rgba(255, 0, 0, 1)">通常也称为容器</span>),极大地简化了数组和集合的操作。</p>
<ul>
<li>核心接口:<code>List</code>&nbsp;(有序列表),&nbsp;<code>Set</code>&nbsp;(不重复集合),&nbsp;<code>Map</code>&nbsp;(键值对映射), Queue&nbsp;(队列)。</li>
<li>常用实现类:<code>ArrayList</code>,&nbsp;<code>LinkedList</code>,&nbsp;<code>HashSet</code>,&nbsp;<code>HashMap,LinkedList</code>等。</li>
<li>工具类:<code>Arrays</code>&nbsp;(数组工具),&nbsp;<code>Collections</code>&nbsp;(集合工具),提供了排序、搜索等静态方法<span class="hyc-common-markdown__link">。</span></li>
<li><span class="hyc-common-markdown__link"><span style="color: rgba(255, 0, 0, 1)">通过封装包含业务方法的 Java 类组件 +&nbsp;容器的运行模式,在不同层次和用途中出现了常见的容器(Servlet 容器 , EJB 容器, Spring 容器, Web 容器)来负责组件的创建、销毁、事务管理和安全控制等</span>。</span></li>
</ul>
</blockquote>
<h4>4. I/O 与 NIO (New I/O) (<code>java.io</code>,&nbsp;<code>java.nio</code>)</h4>
<blockquote>
<p>用于处理数据的输入和输出,以及与文件系统的交互。</p>
<ul>
<li>传统 I/O (<code>java.io</code>)&nbsp;:基于流 (Stream) 模型,如&nbsp;<code>FileInputStream</code>,&nbsp;<code>FileOutputStream</code>,&nbsp;<code>BufferedReader</code>,&nbsp;<code>PrintWriter</code>。</li>
<li>新 I/O (<code>java.nio</code>)&nbsp;:基于通道 (Channel) 和缓冲区 (Buffer) 模型,提供了更高的性能和更灵活的操作,尤其适合处理大文件和网络 I/O<span class="hyc-common-markdown__link">。</span></li>
</ul>
</blockquote>
<h4>5. 网络编程 (<code>java.net</code>)</h4>
<blockquote>
<p>提供了低层次的网络通信能力。</p>
<ul>
<li>TCP/IP 套接字:<code>Socket</code>&nbsp;和&nbsp;<code>ServerSocket</code>&nbsp;类,用于实现可靠的流式数据传输。</li>
<li>UDP 数据报:<code>DatagramSocket</code>&nbsp;和&nbsp;<code>DatagramPacket</code>&nbsp;类,用于实现无连接的数据报传输。</li>
<li>URL 处理:<code>URL</code>&nbsp;类及相关类,用于访问万维网上的资源<span class="hyc-common-markdown__link">。</span></li>
</ul>
</blockquote>
<h4>6. 并发编程 (<code>java.util.concurrent</code>)</h4>
<blockquote>
<p>这是构建高性能、多线程应用的强大工具包,远比基础的&nbsp;<code>Thread</code>&nbsp;类丰富。</p>
<ul>
<li>线程池:<code>ExecutorService</code>,&nbsp;<code>ThreadPoolExecutor</code>,用于高效管理线程生命周期。</li>
<li>并发集合:如&nbsp;<code>ConcurrentHashMap</code>,&nbsp;<code>CopyOnWriteArrayList</code>,为多线程环境提供了安全的集合类。</li>
<li>同步器:如&nbsp;<code>CountDownLatch</code>,&nbsp;<code>CyclicBarrier</code>,&nbsp;<code>Semaphore</code>,用于协调多个线程之间的工作<span class="hyc-common-markdown__link">。</span></li>
</ul>
</blockquote>
<h4>7. 数据库连接 (JDBC) (<code>java.sql</code>,&nbsp;<code>javax.sql</code>)</h4>
<blockquote>
<p>提供了一套标准的 API,用于连接和操作各种关系型数据库(如 MySQL, PostgreSQL, Oracle)。</p>
<ul>
<li>核心接口:<code>Connection</code>&nbsp;(数据库连接),&nbsp;<code>Statement</code>&nbsp;(SQL语句),&nbsp;<code>ResultSet</code>&nbsp;(查询结果集)。</li>
<li>作用:JDBC 是 Java 程序与数据库之间沟通的桥梁,它抽象了不同数据库的差异,让开发者可以用统一的方式访问数据<span class="hyc-common-markdown__link">。</span></li>
</ul>
</blockquote>
<h4>8. XML 处理 (<code>javax.xml</code>)</h4>
<blockquote>
<p>提供了解析和处理 XML 文档的标准 API,如 DOM 和 SAX 解析器。</p>
</blockquote>
<h4>9. 日期与时间 API (Java.time) (<code>java.time</code>)</h4>
<blockquote>
<p>Java 8 引入的全新日期时间 API,取代了旧的&nbsp;<code>Date</code>&nbsp;和&nbsp;<code>Calendar</code>&nbsp;类,设计更合理,使用更方便,且是不可变且线程安全的<span class="hyc-common-markdown__link">。</span></p>
</blockquote>
<h3>总结:</h3>
<table>
<thead>
<tr><th>模块</th><th>核心包</th><th>主要功能</th></tr>
</thead>
<tbody>
<tr>
<td>基础核心</td>
<td><code>java.lang</code></td>
<td>语言基础、核心对象、系统操作、多线程基础</td>
</tr>
<tr>
<td>数据结构</td>
<td><code>java.util</code></td>
<td>集合框架、日期时间、工具类</td>
</tr>
<tr>
<td>输入输出</td>
<td><code>java.io</code>,&nbsp;<code>java.nio</code></td>
<td>文件操作、数据流、网络通信基础</td>
</tr>
<tr>
<td>网络编程</td>
<td><code>java.net</code></td>
<td>TCP/UDP 套接字、URL 处理</td>
</tr>
<tr>
<td>并发编程</td>
<td><code>java.util.concurrent</code></td>
<td>线程池、并发集合、同步工具</td>
</tr>
<tr>
<td>数据库连接</td>
<td><code>java.sql</code></td>
<td>连接和操作关系型数据库</td>
</tr>
</tbody>
</table>
<blockquote>
<p>掌握 Java SE 的这些核心模块,就等于拿到了进入 Java 世界大门的钥匙,也为学习更高级的 Spring、微服务、大数据等技术打下了坚实的基础。</p>
</blockquote>
<h3>&nbsp;</h3>
<hr>
<p>&nbsp;</p>
<h3>Java EE :</h3>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">Java EE (现称 Jakarta EE),它与 Java SE 构成了企业级开发的两大支柱。

它在 Java SE 的基础上增加了一系列的API和库。方便处理 Web应用、数据库、消息服务等。

Java EE 的功能主要通过一系列 “技术规范 (Specification)” 来定义,并由不同的 “容器 (Container)” 来提供实现。一个典型的 Java EE 应用服务器(如 WildFly, TomEE, GlassFish)就是一个集成了所有这些容器的平台。</span></pre>
</div>
<p>&nbsp;</p>
<p><span style="background-color: initial; color: rgba(85, 85, 85, 1); font-size: 14px">以下是其核心功能模块(即核心技术规范) VS&nbsp; 常用替代实现:</span></p>
<h4>1. Web 层技术</h4>
<blockquote>
<p>这一层负责处理所有来自客户端的 HTTP 请求和响应。</p>
<ul>
<li>
<p>Servlet API (<code>javax.servlet</code>)</p>
<ul>
<li>作用:Java EE Web 技术的绝对基石。它定义了 Java 类如何响应 HTTP 请求的标准。所有 Java Web 框架(如 Spring MVC, Struts)底层都依赖于 Servlet。</li>
<li>类比:相当于 Web 应用的“发动机”或“神经中枢”<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
<li>
<p>JavaServer Pages (JSP) &amp; Expression Language (EL)</p>
<ul>
<li>作用:一种动态网页技术,允许在 HTML 代码中嵌入 Java 代码片段或标签,用于生成动态内容。通常与 JSTL (JSP Standard Tag Library) 配合使用。</li>
<li>现状:随着模板引擎(如 Thymeleaf, FreeMarker)和前端框架的兴起,JSP 已不再是主流,但仍是 Java EE 规范的一部分<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
<li>
<p>JavaServer Faces (JSF)</p>
<ul>
<li>作用:一个基于组件的 MVC Web 框架,旨在通过拖拽组件的方式快速构建用户界面,类似于 .NET 的 ASP.NET Web Forms。</li>
<li>现状:在企业级市场有一定份额,但在新项目中,Spring Boot + 现代前端框架的组合更为流行<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
</ul>
</blockquote>
<h4>2. 业务层技术</h4>
<blockquote>
<p>这一层封装了应用程序的核心业务逻辑。</p>
<ul>
<li>Enterprise JavaBeans (EJB)
<ul>
<li>作用:用于封装业务逻辑、事务和远程调用的组件模型,是传统 Java EE 的核心。它运行在 EJB 容器中,容器会自动为其管理事务、安全、并发和远程调用等复杂问题。</li>
<li>类型:主要包括会话 Bean (处理业务逻辑)、消息驱动 Bean (处理异步消息) 和实体 Bean (已过时,被 JPA 取代)<span class="hyc-common-markdown__link">。</span></li>
<li>对比 Spring:EJB 是 Java EE 官方的“重量级”解决方案,而 Spring 提供了一个更“轻量级”、更灵活的替代方案,这也是 Spring 变得如此流行的原因之一<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
</ul>
</blockquote>
<h4>3. 数据持久层技术</h4>
<blockquote>
<p>这一层负责将内存中的对象数据与关系型数据库进行映射和管理。</p>
<ul>
<li>Java Persistence API (JPA)
<ul>
<li>作用:Java EE 中最重要和最常用的持久化规范。它定义了一种对象关系映射 (ORM)&nbsp;的标准,使开发者可以将 Java 对象与数据库表关联,而无需编写大量的 JDBC 样板代码。</li>
<li>实现:Hibernate 和 MyBatis&nbsp;是JPA 里两个非常流行的持久层框架。当在 Spring Boot 中使用&nbsp;<code>spring-boot-starter-data-jpa</code>&nbsp;时,底层通常就是 Hibernate。&nbsp;当在 Spring Boot 中使用&nbsp;&nbsp;<code>mybatis-spring-boot-starter‌</code>&nbsp;&nbsp;&nbsp;时,底层通常就是 mybatis<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
</ul>
</blockquote>
<h4>4. 基础服务</h4>
<blockquote>
<p>这些是支撑整个应用运行的基础服务(企业级服务,横跨各层)。</p>
<ul>
<li>
<p>Contexts and Dependency Injection (CDI)</p>
<ul>
<li>作用:Java EE 的依赖注入 (DI) 和上下文管理标准。它提供了强大的类型安全的依赖注入能力,并管理着 bean 的生命周期和作用域(如 Request, Session, Application Scope)。</li>
<li>重要性:是Java EE 应用组装的“胶水”,也是与 Spring 框架 DI 理念相对应的官方标准<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
<li>
<p>Java Transaction API (JTA)</p>
<ul>
<li>作用:用于管理分布式事务的 API。它允许将多个资源(如两个不同的数据库,或数据库与消息队列)的操作纳入到一个单一的、原子性的事务中,确保数据一致性(“要么全做,要么全不做”)<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
<li>
<p>Java Message Service (JMS)</p>
<ul>
<li>作用:用于在应用程序的不同部分之间进行异步消息传递的 API。它支持点对点和发布/订阅两种消息模型,是实现系统解耦和削峰填谷的关键技术<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
<li>
<p>JavaMail</p>
<ul>
<li>作用:用于发送电子邮件的 API。</li>
</ul>
</li>
<li>JNDI
<ul>
<li>作用:命名与目录服务,用于查找和访问企业中的各种资源。</li>
<li>现状:已被流行的Spring框架中,用依赖注入 (IoC/DI)&nbsp;和&nbsp;Spring 的配置通过注解的方法进行替代使用。</li>
</ul>
</li>
<li>
<p>Bean Validation</p>
<ul>
<li>作用:通过注解(如&nbsp;<code>@NotNull</code>,&nbsp;<code>@Size(min=2, max=140)</code>)来标准化数据验证的规范,可以应用于方法参数、返回值、字段等<span class="hyc-common-markdown__link">。</span></li>
</ul>
</li>
</ul>
</blockquote>
<h4>5. 安全与运维</h4>
<blockquote>
<ul>
<li>安全:提供基于角色的访问控制、认证和加密机制。</li>
<li>容错与高可用:通过集群、负载均衡和故障转移等技术,保证系统稳定运行。</li>
</ul>
</blockquote>
<h3>总结与替代对比:</h3>
<table>
<thead>
<tr><th>层级</th><th>核心规范 (Java EE)</th><th>主要功能</th><th>现代替代/常用实现</th></tr>
</thead>
<tbody>
<tr>
<td>Web 层</td>
<td>Servlet, JSP, JSF</td>
<td>处理 HTTP 请求,生成动态网页</td>
<td>Spring MVC, JAX-RS (REST)</td>
</tr>
<tr>
<td>业务层</td>
<td>EJB</td>
<td>封装复杂的、有状态的事务性业务逻辑</td>
<td>Spring Framework&nbsp;(核心是 Spring Core/Beans)</td>
</tr>
<tr>
<td>持久层</td>
<td>JPA</td>
<td>对象关系映射 (ORM),简化数据库操作</td>
<td>Hibernate/MyBatis (JPA 实现), Spring Data JPA</td>
</tr>
<tr>
<td>基础服务</td>
<td>CDI, JTA, JMS, JNDI,&nbsp;Bean Validation</td>
<td>依赖注入、事务、消息、资源查找、数据校验</td>
<td>Spring Framework&nbsp;(提供了同名或更优的实现)<br><br></td>










</tr>










</tbody>









</table>
<p>&nbsp;</p>
<div class="hyc-common-markdown__table-wrapper">&nbsp;</div>
<blockquote>
<p>&nbsp;Java EE/Jakarta EE 是一套官方、全面但相对“重”&nbsp;的企业级开发规范。而&nbsp;Spring 生态通过提供更简单、更灵活、松耦合的编程模型,成为了流行的 Java 企业开发的标准。理解 Java EE 的核心(如 Servlet, JPA, CDI, JTA)对于深入理解 Spring 的工作原理和阅读传统企业项目代码至关重要。如今,Jakarta EE 也在积极拥抱云原生,推出了 Jakarta EE 10/11 等新版本以保持竞争力。</p>















</blockquote><br><br>
来源:https://www.cnblogs.com/dev-xp/p/19615162
頁: [1]
查看完整版本: Java SE 和 Java EE 的核心功能模块