국비지원 학원에서 처음 Java를 처음 접했을 때 Java SE・EE, JRE, JDK, JVM, Compile 등
비슷비슷하고 생소한 용어가 갑작스레 튀어나와 당황했던 기억이 있습니다..
그때는 물론이거니와 현재에도 구글링을 하면서 어렴풋이 이해하고 넘겼는데
올해 회사에서 Java의 버젼업 업무를 하게 되어 위 용어들을 자연스럽게 써야 할 때가 도래했습니다.
이 시점에 다른 동료들에게 제대로 설명할 수 있도록 준비할 겸 용어를 정리해보려고합니다.
1. Java SE・EE
Java SE란 Java Platform Standard Edition의 줄임말로 Java의 표준 문법이라고 생각하면 됩니다.
첫 번째 글의 마지막에 'Hello World'를 출력하기 위해 사용했던 'System.out.println()'과 같은 메서드가 Java SE에 포함되어 있습니다.
Java SE는 정기적으로 버전업 되며, 이 글을 작성하는 현시점에는 16이 최신 버전이 되겠습니다.
아래의 URL에서 최신 버전을 확인할 수 있습니다.
【OracleJDK】
https://www.oracle.com/java/technologies/javase-downloads.html
【AdoptOpenJDK】
Java EE란 Enterprise Edition의 줄임말로, '기업용 시스템과 같은 대규모 개발에 사용되는 기능의 묶음'으로
Java SE에서 더 확장된 기능을 제공합니다.
특히 Tomcat과 같은 WAS에서 돌아가는 프로그램을 개발할 때 Java EE가 필요합니다.
2. JVM ・ JRE ・ JDK
JVM : Java로 만든 프로그램을 실행하기 위한 가상 머신입니다.
Java로 만드는 프로그램은 어떠한 운영체제하에서도 실행될 수 있는데, 그 이유가 바로 'Java로 만든 프로그램은 JVM(Java Virtual Machine) 위에서 실행되기 때문'입니다.
JVM은 JRE에 포함되어 있습니다.
JRE : Java 프로그램을 실행하기 위한 환경으로 Java Runtime Environment의 줄임말입니다.
운영체제에 맞는 JRE를 설치하면 Java로 만들어진 프로그램을 실행할 수 있으며,
JDK에 JRE가 포함되어 있으므로 JDK를 설치하면 JRE도 같이 설치됩니다.
JDK : Java로 프로그램을 개발, 컴파일, 디버깅 등을 하기 위해서 필요한 것으로 Java development Kit의 줄임말입니다.
저의 경우 실제 업무에서 JDK에 포함된 툴인 jar 커맨드를 활용해. class의 묶음인. jar파일의 내용을 확인하곤 합니다.
실제 JVM, JRE, JDK는 아래와 사진과 같은 구성을 하고 있습니다.
3. Java 컴파일 (Java 프로그램의 작성에서 실행까지의 과정)
Java를 사용하여 프로그램을 개발하여 실행하기 위해선 기본적으로 아래와 같은 과정을 거치게 됩니다.
1). java파일에 코드를 작성.
2) javac (Java Compiler)를 사용하여. java파일을 컴파일합니다. 컴파일한 결과로. class파일이 생성됩니다.
※ 컴파일이란? : JVM은 Java코드( . java파일)가 아닌 .class파일만을 읽을 수 있습니다.
따라서 Java로 만든 프로그램을 JVM에서 실행하기 위해서는 .java파일을 .class파일로 변환해주는 과정이 필요한데, 이 .java파일을 .class파일로 변환해주는 과정을 컴파일이라고 합니다.
3) .class파일을 실행하면 JVM에서 .class 파일을 읽어서 구현한 로직대로 프로그램을 실행해줍니다.
확실히 알기 위해 java 컴파일러를 직접 사용해서 'Hello World'를 출력해 보겠습니다.
홈 디렉터리 하위에 디렉터리를 생성한 후 메모장으로 'Hello World'를 출력하는 Java 프로그램을 작성합니다.
※ 확장자를 .java로 하는 파일을 생성하시기 바랍니다.
생성한 파일에서 마우스 우클릭 -> '연결 프로그램(H)' -> '메모장'을 선택합니다.
메모장을 열어서 'Hello World'를 출력하는 Java 프로그램을 작성합니다.
cmd를 열어서 작성한. java파일이 있는 곳으로 이동합니다.
# 파일 작성 경로로 이동
cd 파일 작성경로
# 파일 확인
dir
작성한. java파일을 javac(Java Compiler)로 컴파일합니다.
# 컴파일하기; javac .java파일
javac HelloWorld_compilTest.java
# 파일 확인
dir
컴파일의 결과인. class 파일이 생성된 것이 확인되었다면,. class파일을 실행해서 'Hello World'를 출력합니다.
# 컴파일된 .class파일실행; java 컴파일된 클래스명
# ※ 클래스명 만을 입력해야하며, 확장자 .class는 입력하지 말아야합니다.
java HelloWorld_compilTest
Hello World!! 가 잘 출력된 것을 확인할 수 있습니다.
IDE를 사용하면 위의 과정을 IDE가 전부 알아서 해주기 때문에 매우 편합니다만 실제 과정을 알지 못하면 문제가 발생했을 때 대처하기가 어렵기 때문에 Java파일의 작성에서 실행까지는 알고 있는 편이 좋습니다.
사례로 실제 제가 취준생 시절 공부하다 경험한 문제을 말하자면,
IDE에서 문법오류 없이 Java코드를 잘 작성했는데 IDE에서 프로그램을 실행해보면 오류가 나는 상황이 발생했습니다. 게다가 코드를 수정한 내용이 제대로 반영되지 않기도 하였습니다.
어이가 없었던 건 IDE를 재실행 하거나 하면 위의 문제가 해결되는 경우가 있었다는 점입니다.
아주 간단한 로직을 수정하는 중에 일어난 일이라 문제가 발생할 수 없다고 생각한 상황이라 당황해서 그런지 반나절 정도 시간을 들여서 결국엔 문제를 해결할 수 있었습니다.
원인은 IDE에서 제대로 .class파일을 생성 + 덮어쓰기를 해주지 않았기 때문이었습니다.
원인을 안 이상 해결은 쉬웠고, .class파일을 삭제하고 다시 컴파일해서 문제를 해결했습니다.
제가 그때 'Java 프로그램의 작성에서 실행까지의 과정'을 제대로 알았다면 문제를 더 쉽고 간단하게 처리할 수 있었을 겁니다.
자바 환경설정 포스트에서 이클립스에서 생성한 Java프로젝트에서는 자동으로 컴파일한. class 파일이 프로젝트 디렉터리 하위의 bin/디렉터리에 위치한 것을 확인할 수 있습니다.
회사에 들어가셔서 Spring 등의 프레임워크를 사용하시면 필연적으로 Java의 빌드 툴인 Ant, Maven, Gradle 등을 사용하시게 될 것인데 그때 사용하시는 IDE나 빌드툴의 설정에서 실행시나 빌드시 .class 파일이 어디로 생성되는지 먼저 알아두시면 혹시 문제가 발생했을 때 대처하기가 한결 쉬워질 겁니다.
'프로그래밍 > Java' 카테고리의 다른 글
Java 연산자(일본의 IT기업에서 사용하는 Java 연산자에 관련된 용어정리) (0) | 2021.05.07 |
---|---|
Java 변수 (일본 IT기업에서 사용하는 Java 변수에 관련된 용어정리) (0) | 2021.05.05 |
Windows 10에서 OpenJDK11(AdoptOpenJDK11) 개발환경 설정 (0) | 2021.05.02 |
댓글