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<🎝>通过<🎝>提供<🎝><🎝>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中文网其他相关文章!