Java
플랫폼Java로 작성된 프로그램이 실행되는 특정한 환경
모든 Java 플랫폼은 JVM과 Java API로 구성된다.
Java API
- Java로 응용 프로그램을 만들 때 사용할 수 있는 소프트웨어 구성 요소의 모음
- 쉽게 말하자면, Java로 프로그래밍을 할 때 유용하게 사용할 수 있는 클래스들의 집합을 뜻한다.
Java SE
Java 프로그래밍 언어의 핵심 기능을 제공하는 플랫폼
대표적으로 JDK가 있으며, 주요 패키지로는 java.lang.*
, java.io.*
, java.util.*
, java.awt.*
등이 있다.
우리가 StringTokenizer을 사용할 수 있는 이유는 Java SE 플랫폼이 제공하는 JDK의 java.util
패키지 덕분이다.
Java EE (Jakarta EE)
대규모, 다층, 확장성, 신뢰성 등을 특징으로 하는 기업용 웹 기반 애플리케이션을 개발하고 실행하기 위한 플랫폼
Java SE 플랫폼 위에 구축되어 있다.
ex) JDBC
, JSP
, Servlet
, XML
, WAS
등
Java ME
JavaFX
풍부한 GUI를 제공하여 RIA을 개발할 수 있도록 하는 플랫폼
UI
, 이벤트 처리
, 미디어 재생
등의 기능을 JavaFx로 개발할 수 있다.
RIA
- 중앙 서버와 독립한 클라이언트-서버 구조의 애플리케이션
JDK (Java Development Kit)
Java로 개발 시 필요한 개발 도구 모음
JRE, JVM을 포함한다.
개발 도구로는 javac
(컴파일), java
(실행), javap
, apt
, jar
등이 있으며, jdk-version
> bin
에서 확인할 수 있다.
JRE (Java Runtime Environment)
Java 프로그램을 실행할 때 필요한 환경을 제공하는 소프트웨어
JVM, Library를 포함한다.
Java 코드를 라이브러리와 결합하여 JVM 인스턴스를 만들고, 코드가 실행될 수 있도록 한다.
jdk-version
> lib
에서 확인할 수 있다.
JVM (Java Virtual Machine)
Java를 사용한 프로그램을 구동하는 프로세서
특징
1) OS에 종속받지 않고 독립적으로 개발이 가능하다.
-> 하나의 자바 바이트 코드로 모든 OS에서 동작할 수 있기 때문이다.
2) OS에게 메모리를 할당 받고 자동으로 관리한다.
과정
소스코드(.java)
-> 컴파일(javac.exe)
-> 자바 바이트코드(.class)
-> JVM
-> 이진 코드
-> HW
JVM (Java) vs WOCA (C)
- OS에 독립적 / OS에 종속적
- OS가 달라도 같은 이진 코드를 반환함 / OS마다 다른 이진 코드를 반환함
JVM이 Java 프로그램을 실행하기 위해 OS로부터 메모리를 할당 받은 공간
자바 애플리케이션이 실행될 때 사용되는 데이터들이 이곳에 적재된다.
Runtime Data Area는 총 5개의 영역으로 구분된다.
1) Method Area
2) Heap Area
3) Stack Area
4) PC Register
5) Native Method Stack
JDK & JRE & JVM 도식화
참고
- https://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html
- https://www.ibm.com/docs/ko/i/7.3?topic=java-platform
- https://aws.amazon.com/ko/what-is/java-runtime-environment/
- https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC
- https://velog.io/@ddangle/Java-JVMJava-Virtual-Machine