java 실행 구조 및 JVM,JRE,JDK 차이
java의 실행 원리
java는 컴파일 언어
로서 실행하기 전 컴파일
과정을 거쳐 실행 가능한 bytecode
로 변환된다. 이 bytecode
를 실행할 때 각 OS의 호환성을 만족하는 JVM(java virtual machine)
을 통해 기계어 코드로 변환되어 코드가 실행되는 구조이다.
java 파일을 컴파일 하는 명령어
.java
파일을 아래와 같은 명령어로 컴파일하게 되면, .class 파일이 생성된다.
java 컴파일 | |
---|---|
.class
파일이 생성되면 실행이 가능한 상태라고 보면 되는데, .class
파일을 실행 하려면 아래와 같은 명령어를 사용하여 실행하면 된다. .class 확장자가 아닌 클래스명으로 실행해야 한다.
java 실행 | |
---|---|
그렇지 않으면 아래와 같은 오류가 발생하게 된다.
ubuntu@ubuntu:~/learning/javaproject/HelloWorld/bin/com/fromitive/MyFirstPackage$ java MultiplicationTable.class
Error: Could not find or load main class MultiplicationTable.class
Caused by: java.lang.ClassNotFoundException: MultiplicationTable.class
java 파일 단독 실행 시 주의사항
java 파일 단독으로 실행 할 때는 실행하고자 하는 class 안에 public static void main(string[] args)
가 있어야 한다. 컴파일은 완료가 되나 자바가 코드를 어디서 부터 실행해야 하는지 확인을 할 수 가 없어 실행 오류가 나타나게 된다.
ubuntu@ubuntu:~/learning/javaproject/practice$ javac Planet.java # 컴파일은 가능확인
ubuntu@ubuntu:~/learning/javaproject/practice$ java Planet
Error: Main method not found in class Planet, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
public static void main(string[] args)
키워드에 args
를 제외하고, 다른 키워드가 나타났을 때 또한, 오류가 발생하여 실행을 할 수 없다.
wrong-main2.java | |
---|---|
ubuntu@ubuntu:~/learning/javaproject/practice$ javac Planet.java
ubuntu@ubuntu:~/learning/javaproject/practice$ java Planet
Error: Main method not found in class Planet, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
JVM, JDK, JRM의 차이
JVM은 Java Virtual Machine
으로써 컴파일된 .class
파일을 기계어 코드로 변환해 실행시켜주는 실행기이다.
그렇다면 JVM만 있으면, java 코드가 실행되나? 그건 아니다. JRE(Java Runtime Environment)
라는 녀석이 설치가 되어야 온전하게 자바가 실행된다. 왜냐하면 우리가 보통 사용하는 System.out.println()
같은 기본적으로 제공되는 함수들의 정보는 JRE
에 있기 때문이다. 만약, java를 실행할 때 필요한 최소한의 환경(Production)을 설정하고 싶으면 JRE
라는 키워드를 떠올려주면 된다.
마지막으로 JDK
가 있다. JDK의 약자는 Java Development Kit
의 약자이고, java 프로그램을 디버깅
할 수 있게 도와주는 도구까지 포함되어 있다.
따라서 정리하자면 아래의 그림과 같다.