Java 生态系统是围绕和支持 Java 编程语言的广泛的工具、技术、库和框架。它包含开发、部署和管理 Java 应用程序所需的一切。它围绕 JDK、JRE、JVM
JVM 就像一个翻译器,允许您的计算机运行 Java 程序和编译成 Java 字节码的其他语言。它将代码转换为计算机硬件可以理解和执行的代码。
加载中
将 .class 文件加载到内存中。定位、加载和链接类文件(Java 字节码)以供执行。
链接
初始化
初始化是 JVM 准备使用类或接口的最后一步。此步骤发生在类加载(到内存中)并链接之后。
方法区
方法区 存放方法、变量、运行时常量池、方法代码等类级数据。
public class Person { private String name; public void setName(String name) { this.name = name; } }
当你定义一个类Person时,方法区存储Person类的结构,包括它的方法(setName)和字段(name),以及包含方法名称和常量值等引用的运行时常量池。
堆
堆是分配运行时内存对象的地方。堆在所有线程之间共享,并且是垃圾收集过程发生的地方。
Person p = new Person();
当您创建一个新的 Person 对象时,它会在堆上分配。
堆栈区域
堆栈区域存储帧,其中包含局部变量、操作数堆栈以及对正在执行的类的运行时常量池的引用。每个线程都有自己的堆栈。
public void someMethod() { int a = 10; int b = 20; int sum = a + b; }
每次调用 someMethod 时,都会将一个新帧推送到堆栈区域。该框架包括局部变量(a、b 和 sum)、用于中间计算的操作数堆栈以及对运行时常量池中方法的类的引用。
节目计数器(PC)注册
PC包含当前正在执行的JVM指令的地址。每个线程都有自己的PC寄存器。
原生方法堆栈
与 Java 堆栈类似,但用于本机方法。
口译员
解释器读取Java字节码并逐行执行,将每条字节码指令转换为CPU可以执行的机器级指令序列。
即时 (JIT) 编译器
在运行时将字节码转换为本机机器代码以提高性能。
垃圾收集器
垃圾收集器负责自动管理 JVM 中的内存。它识别并释放不再使用的内存,将其释放以用于新对象。
JRE是一个软件包,提供运行Java应用程序所需的环境。它被设计为在机器上执行 Java 字节码,使其成为 Java 的“一次编写,随处运行”(WORA)原则的重要组成部分。
public class Person { private String name; public void setName(String name) { this.name = name; } }
Person p = new Person();
public void someMethod() { int a = 10; int b = 20; int sum = a + b; }
JDK (Java Development Kit) │ ├── JRE (Java Runtime Environment) │ │ │ ├── JVM (Java Virtual Machine) │ │ ├── Class Loader │ │ ├── Bytecode Verifier │ │ ├── Execution Engine │ │ │ ├── Interpreter │ │ │ ├── Just-In-Time (JIT) Compiler │ │ │ └── Garbage Collector │ │ └── Runtime Libraries (core libraries like java.lang, java.util, etc.) │ │ │ └── Java APIs (Core libraries and additional libraries) │ ├── Development Tools (like javac, jdb, jar, javadoc, etc.) └── Documentation (API docs, guides)JRE 的关键组件
执行任务
JRE通过提供JVM和Java应用程序的执行 🎝>必要的库和资源。JRE确保JVM拥有一切它需要执行这些任务在任何平台上。思考 JRE作为完整的包,包括JVM,它做重型提升、和其他组件支持执行Java应用程序。
班级图书馆
JRE包括一组标准Java类库,提供可重用代码用于执行常见任务,例如数据结构,I/O,网络,并发,还有更多。
Java原生接口(JNI)
JNI允许Java应用程序与本地交互代码用语言编写语言C或C++。此功能对于集成特定于平台功能至关重要或使用现有原生库。
保安经理
安全管理器针对Java应用程序执行安全策略,限制操作例如 文件访问、网络连接、和执行潜在不安全代码。
JDK是一个工具,使开发人员能够编写、编译、调试、并运行Java应用程序。它是JRE的超集并且包括附加工具用于Java开发。
javac(Java编译器)
javac是使用将转换Java源代码代码(.java文件)转换为字节码(.class文件)。这个字节码然后由Java虚拟执行 机器(JVM)。
java(Java应用程序启动器)
java命令启动一个Java应用程序。它加载所需的必要的类文件,解释字节码,并启动应用程序。
jdb(Java调试器)
jdb是命令行调试器用于Java程序。它允许您在运行时检查和调试Java应用程序。
jar(Java存档工具)
jar工具包多个文件到一个单个存档文件,通常和一个.jar扩展名。这些JAR文件用于分发Java应用程序和图书馆。
javadoc(Java文档生成器)
javadoc从Java源代码生成HTML文档,使用特殊/***/评论已知为文档评论。
Feature/Aspect | JVM | JRE | JDK |
---|---|---|---|
Purpose | Executes Java bytecode | Provides the environment to run Java applications | Provides tools to develop, compile, debug, and run Java applications |
Includes | JVM itself, which includes class loader, bytecode verifier, and execution engine | JVM + Core libraries (like java.lang, java.util, etc.), and other runtime components | JRE + Development tools (like javac, jdb, jar, etc.), documentation |
Components | - Class Loader - Bytecode Verifier - Execution Engine (Interpreter, JIT) |
- JVM - Core Java libraries - Java Plug-in - Java Web Start |
- JRE - Java Compiler (javac) - JAR Tool (jar) - Debugger (jdb) - Documentation Generator (javadoc) - Other development tools |
Main Functionality | Executes Java bytecode, enabling platform independence | Provides the minimum requirements to run Java applications | Allows developers to write, compile, and debug Java code |
Who Uses It? | End-users running Java applications | End-users running Java applications | Java developers writing and compiling Java applications |
Installation Size | Smallest | Larger than JVM but smaller than JDK | Largest (includes JRE and development tools) |
Developer Tools | No | No | Yes (includes compiler, debugger, profiler, etc.) |
Required to Run Java Programs | Yes | Yes | No (but needed to create Java programs) |
Platform Independence | Provides platform independence by abstracting the underlying hardware | Yes, because it includes the JVM | Yes, it includes everything from JRE |
Examples of Usage | - Running any Java application (e.g., desktop applications, servers) | - Running Java applications in production or end-user environments | - Writing and compiling Java code - Packaging applications - Debugging |
Availability | Part of JRE and JDK | Standalone or part of JDK | Standalone package |
JDK (Java Development Kit) │ ├── JRE (Java Runtime Environment) │ │ │ ├── JVM (Java Virtual Machine) │ │ ├── Class Loader │ │ ├── Bytecode Verifier │ │ ├── Execution Engine │ │ │ ├── Interpreter │ │ │ ├── Just-In-Time (JIT) Compiler │ │ │ └── Garbage Collector │ │ └── Runtime Libraries (core libraries like java.lang, java.util, etc.) │ │ │ └── Java APIs (Core libraries and additional libraries) │ ├── Development Tools (like javac, jdb, jar, javadoc, etc.) └── Documentation (API docs, guides)
以上是Java 生态系统概述的详细内容。更多信息请关注PHP中文网其他相关文章!