JDK、JRE、JVM
-
JDK: Java Development Kit ,Java开发工具包。是 Java 开发的核心,包括了 Java 运行环境、Java工具 以及 Java 基础类库。
-
JRE: Java Runtime Environment ,Java运行环境。是运行基于Java语言编写的程序所不可缺少的运行环境。
-
JVM:Java Virtual Machine ,Java虚拟机。是Java实现跨平台的最核心部分。所有的 java 程序会首先被编译为 .class 的类文件,这种类文件可以在虚拟机上执行。由虚拟机将程序解释给本地系统执行。
什么是 java、javax、java EE、Jakarta 、Jakarta EE ?
以下是 Java 相关技术术语的详细解释及发展脉络:
一、核心概念定义
- Java
- 指 Java 编程语言及其基础平台(Java SE,Standard Edition),包含语言规范、JVM(Java 虚拟机)和核心类库。
- 示例:
java.lang.String
属于 Java SE 的核心类。
- javax
- Java 标准扩展包的命名空间前缀,最初用于 Java EE(企业版)的扩展 API,如
javax.servlet
(Servlet API)和javax.persistence
(JPA)。 - 注意:Jakarta EE 后,
javax.*
逐步迁移为jakarta.*
。
- Java 标准扩展包的命名空间前缀,最初用于 Java EE(企业版)的扩展 API,如
- **Java EE(Java Platform, Enterprise Edition)**
- 基于 Java SE 的企业级开发规范,提供 Servlet、JPA、EJB 等组件,用于构建分布式应用。
- 历史名称:1999 年称为 J2EE(Java 2 EE),2006 年更名为 Java EE。
- Jakarta
- Eclipse 基金会管理的开源项目品牌,承接原 Java EE 的技术生态。
- 名称来源:印度尼西亚首都雅加达(Jakarta),与 Java 岛(爪哇岛)呼应。
- Jakarta EE
- Java EE 的继任者,由 Eclipse 基金会维护,专注于云原生和企业级开发。
- 核心变更:包路径从
javax.*
改为jakarta.*
(如jakarta.servlet
)。
AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在通过模块化处理系统中分散的通用功能(如日志、权限、事务等),实现代码的解耦和复用。以下是其核心要点:
1. 核心思想与OOP的区别
- 核心思想:将“横切关注点”(跨越多个模块的通用功能)从业务逻辑中分离,通过“切面”统一管理。例如,日志记录、事务管理等功能不再分散在各个业务类中,而是集中到独立的切面模块。
- 与OOP的关系:
- OOP(面向对象编程):关注对象及其行为的封装(如“雇员”类的属性和方法),解决纵向的业务逻辑划分。
- AOP:补充OOP的不足,专注于横向的通用功能(如“权限检查”),解决跨模块的重复性问题。例如,OOP处理“名词”,AOP处理“动词”。
JDBC(Java Database Connectivity)是Java语言中用于连接和操作数据库的标准API(应用程序接口)。它提供了一组类和接口,允许Java程序与各种关系型数据库(如MySQL、Oracle、SQL Server等)进行交互,实现数据的增删改查(CRUD)等操作。
JDBC的核心组成:
- DriverManager
管理数据库驱动,用于建立与数据库的连接。 - Connection
表示与数据库的连接,通过它可以创建执行SQL语句的对象。 - Statement/PreparedStatement
- Statement:执行静态SQL语句(可能存在SQL注入风险)。
- PreparedStatement:预编译SQL语句,安全性更高(防止SQL注入),性能更好(可重复使用)。
- ResultSet
存储数据库查询返回的结果集,支持遍历和读取数据。 - SQLException
处理数据库操作中的异常。
Java Web开发的主流模板引擎有哪些?分别介绍并给出对比?
以下是Java Web开发中主流的模板引擎及其对比分析:
一、主流模板引擎
- Thymeleaf
- 特点:
✅ 与Spring生态深度集成,支持自然模板(静态HTML可直接浏览器预览)
✅ 严格的HTML5语法校验,支持多方言扩展 - 适用场景:
Spring Boot项目、需要前后端协作的开发模式
- 特点:
- **JSP (JavaServer Pages)**
- 特点:
⚠️ Java EE标准组件,允许在HTML中直接嵌入Java代码
⚠️ 依赖Servlet容器,需编译为.class文件执行 - 适用场景:
传统Java Web应用、遗留系统维护
- 特点:
- FreeMarker
- 特点:
✅ 支持多种输出格式(HTML/XML/JSON等)
✅ 语法灵活,适合生成复杂结构化文档 - 适用场景:
报表生成、邮件模板、代码生成工具
- 特点:
- Velocity
- 特点:
⚠️ 轻量级但功能有限,适合简单文本生成
⚠️ 性能较好但社区活跃度下降 - 适用场景:
早期Web应用、MyBatis配置文件生成
- 特点:
Java设计模式中的提法,Java工厂模式主要分为三类:简单工厂、工厂方法、抽象工厂这三种Java工厂模式
目录
SLF4J(Simple Logging Facade for Java)是一个日志门面,它提供了一个简单的日志API,允许开发者在编写日志相关代码时不需要关心具体的日志实现细节。SLF4J本身不包含具体的日志实现,而是通过不同的日志框架实现来提供具体的日志功能。常见的SLF4J实现包括 logback 、 log4j2 等。
- slf4j-reload4j 是 SLF4J 的一个实现,用于替代 log4j