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 클래스를 정의하면 메소드 영역에는 해당 메소드(setName) 및 필드(name)를 포함하여 Person 클래스의 구조와 메소드 이름 및 상수 값과 같은 참조가 포함된 런타임 상수 풀이 저장됩니다.
힙
힙은 런타임 메모리 개체가 할당되는 곳입니다. 힙은 모든 스레드에서 공유되며 가비지 수집 프로세스가 발생하는 곳입니다.
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(Just-In-Time) 컴파일러
성능을 향상시키기 위해 런타임 시 바이트코드를 기본 기계어 코드로 변환합니다.
가비지 컬렉터
가비지 컬렉터는 JVM의 메모리를 자동으로 관리하는 역할을 합니다. 더 이상 사용되지 않는 메모리를 식별하고 할당을 취소하여 새로운 객체에 사용할 수 있도록 비워줍니다.
JRE는 Java 애플리케이션을 실행하는 데 필요한 환경을 제공하는 소프트웨어 패키지입니다. 이는 시스템에서 Java 바이트코드를 실행하도록 설계되어 Java의 "WORA(Write Once, Run Anywhere)" 원칙의 필수 부분입니다.
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<🎝>Virtual에 의해<🎝>실행됩니다. <🎝>머신<🎝>(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!