Java 执行环境
1. Java版本选择
1.1 Java版本分类与现状
目前Java版本主要分为两类:
- LTS (长期支持版) :每约2年发布一次,提供长达8年以上的支持,是生产环境的首选。代表版本有:Java 8、11、17、21、25。
- 非LTS (短期功能版) :每6个月发布一次,仅提供约6个月的支持,适合尝鲜和测试新特性。
结论:当前主流的LTS版本是 Java 17 和 Java 21。而 Java 25 作为2025年9月16日发布的最新LTS,是面向未来的选择。
1.2 Java 25:稳定且主流的新选择
Java 25的定位是稳定且将成为主流的LTS版本。
- 官方定位:Oracle官方已明确Java 25为LTS版本,提供至少8年的长期支持,直至2033年9月。
- 稳定性:作为LTS版本,其定位就是用于生产环境。它包含约18个JEP,其中大部分是正式(Final)特性,如灵活构造函数体、紧凑源文件等。同时,它也包含一些预览(Preview)和孵化(Incubating)特性,允许开发者提前试用,生产环境可暂不采用。
- 主流趋势:从Java 21开始,新项目采用最新LTS已成为趋势。Java 25作为最新一代,将逐步成为未来的主流
1.3 SUN公司给Java分的三个不同版本
- Java SE:Standard Edition
- Java EE:Enterprise Edition
- Java ME:Micro Edition
简单来说:
Java SE就是标准版,包含标准的JVM和标准库,是整个 Java 技术的基石。- Java EE就是企业版,它建立在标准版 Java SE 之上(加上了大量的API和库,Java EE的应用使用的虚拟机和Java SE完全相同),是一套“企业级功能规范”,定义了 Web、业务、数据、事务、安全等各个层面的标准。
- Java ME就和Java SE不同,它是一个针对嵌入式设备的“瘦身版”,Java SE的标准库无法在Java ME上使用,Java ME的虚拟机也是“瘦身版”。
这三者之间的关系图:
┌───────────────────────────┐ │Java EE │ │ ┌────────────────────┐ │ │ │Java SE │ │ │ │ ┌─────────────┐ │ │ │ │ │ Java ME │ │ │ │ │ └─────────────┘ │ │ │ └────────────────────┘ │ └───────────────────────────┘
(图引自:https://liaoxuefeng.com/books/java/quick-start/history/index.html)
1.4 Java SE:
它的目标是提供一个稳定且跨平台的运行环境和核心类库,用于开发桌面应用、命令行工具和服务器端的基础应用。
Java SE 的功能主要由两大部分构成:JVM (Java虚拟机) 和 核心类库 (Core Libraries) 。我们通常所说的“功能模块”,主要指的就是这些核心类库。
以下是其主要的核心模块:
总结:
模块 核心包 主要功能 基础核心 java.lang语言基础、核心对象、系统操作、多线程基础 数据结构 java.util集合框架、日期时间、工具类 输入输出 java.io,java.nio文件操作、数据流、网络通信基础 网络编程 java.netTCP/UDP 套接字、URL 处理 并发编程 java.util.concurrent线程池、并发集合、同步工具 数据库连接 java.sql连接和操作关系型数据库
掌握 Java SE 的这些核心模块,就等于拿到了进入 Java 世界大门的钥匙,也为学习更高级的 Spring、微服务、大数据等技术打下了坚实的基础。
1.5 Java EE:
Java EE (现称 Jakarta EE),它与 Java SE 构成了企业级开发的两大支柱。
它在 Java SE 的基础上,增加了一系列用于开发大规模、分布式、高可靠性、高并发企业级应用的技术规范和 API。这些规范定义了如何在多层架构中处理 Web 请求、业务逻辑、数据持久化、事务、安全等复杂问题。
Java EE 的功能主要通过一系列 “技术规范 (Specification)” 来定义,并由不同的 “容器 (Container)” 来提供实现。一个典型的 Java EE 应用服务器(如 WildFly, TomEE, GlassFish)就是一个集成了所有这些容器的平台。
以下是其核心功能模块(即核心技术规范):
总结与替代对比:
层级 核心规范 (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 等新版本以保持竞争力。
2. 安装Java
2.1 JDK、JRE的关系
- JDK:Java Development Kit
- JRE:Java Runtime Environment
JDK包含JRE,还提供了编译器、调试器等开发工具。简单地说,JRE就是运行Java字节码的虚拟机。编译成Java字节码就需要JDK。
二者关系如下:
┌─ ┌──────────────────────────────────┐ │ │ Compiler, debugger, etc. │ │ └──────────────────────────────────┘ JDK ┌─ ┌──────────────────────────────────┐ │ │ │ │ │ JRE │ JVM + Runtime Library │ │ │ │ │ └─ └─ └──────────────────────────────────┘ ┌───────┐┌───────┐┌───────┐┌───────┐ │Windows││ Linux ││ macOS ││others │ └───────┘└───────┘└───────┘└───────┘(图引自: https://liaoxuefeng.com/books/java/quick-start/history/index.html)
要安装Java,其实就是安装JDK了。
2.2 安装JDK & 设置环境变量
详见: 安装Java (Linxu 和 Windows 环境)
3. 执行Java
3.1 Java (JVM)执行
在JAVA_HOME的bin目录下找到很多可执行文件:
- java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
- javac:这是Java的编译器,它用于把Java源码文件(以
.java后缀结尾)编译为Java字节码文件(以.class后缀结尾); - jar:用于把一组
.class文件打包成一个.jar文件,便于发布; - javadoc:用于从Java源码中自动提取注释并生成文档;
- jdb:Java调试器,用于开发阶段的运行调试。
服务器端的启动运行:
java -jar -Xms512m -Xmx1024m target/demo-0.0.1-SNAPSHOT.jar
3.2 多个Java (JVM) Web应用服务执行(不同端口 )
#部署到独立安装的容器 (外部容器)
#Tomcat(conf/server.xml)
<Connector port="8080" />
#Jetty(start.ini 或 jetty.xml)
jetty.http.port=8080
#Servlet(嵌入式 Tomcat) (内联容器)
tomcat.setPort(8081)
#Spring(嵌入式 Tomcat) (内联容器)
tomcat.setPort(8081)
#Spring Boot (内联容器)
application.yml
server: port: 8080
#Nginx 配置
upstream java_backend {
server 127.0.0.1:8080;
# 可以配置多个 Java 实例做负载均衡
# server 127.0.0.1:8081;
# server 127.0.0.1:8082;
}
# 打包
mvn clean package
# 运行(指定 JVM 参数优化内存)
java -jar -Xms512m -Xmx1024m target/demo-0.0.1-SNAPSHOT.jar
3.3 多个Java 请求执行的多线程管理
3.3.1 Java 多线程管理特性:
| 特性 | Java (JVM) |
|---|---|
| 运行模式 | 多线程(单进程内) |
| 线程管理器 | 内置 JVM 调度 |
| 内存模型 | 共享堆内存 |
| 启动方式 | java -jar 或应用服务器 |
| 进程崩溃影响 | 单个线程异常可能拖垮整个 JVM |
3.3.2 Java 多任务处理的核心组件:
3.3.2.3. Java 进程监控常用命令
# 查看 Java 进程 jps -lvm # 查看线程堆栈 jstack <PID> # 查看内存使用 jmap -heap <PID> # 图形化监控(需开启 JMX) jvisualvm

浙公网安备 33010602011771号