Java 설치 및 환경변수 설정 (m1 mac)

Junwoo Ahn·2023년 7월 9일
0

Java

목록 보기
1/1

미래에 설치 및 삭제를 해야 할 나를 위해 남겨두는 글

Java의 LTS 버전들

Java에는 8, 11, 17 버전이 Long Term Support 버전이기 때문에 가장 많이 사용된다고 한다.

설치하기

1-1. ORACLE 에서 jdk 설치하기

https://www.oracle.com/java/technologies/downloads/#jdk17-mac

오라클에서 현재 기준 LTS 버전 중 가장 최신 버전인 Java 17 버전을 다운로드 할 경우
위 공식 홈페이지에서 macOS 부분에서 다운로드를 하면 된다.

ARM64 DMG Installer를 다운받아 실행해주면 아래와 같이

/Library/Java/JavaVirtualMachines/ 경로 아래에 정상적으로 .jdk 폴더가 생성된다.

1-2. 환경변수 설정하기

이로써 설치는 완료 되었지만 환경변수를 설정하는 단계가 남아 있다.
환경변수를 설정하는 것은 운영체제가 컴퓨터의 어느 경로에서든지 해당 파일을 인식할 수 있도록 하므로 자바를 인식하기 위해서 설정한다고 볼 수 있다.

기본적으로 jdk파일 내부에 ./Contents/Home/bin 까지 경로로 설정해주는데,
bin 내부에 실행파일이 존재하기 때문이라고 합니다.

$ open ~/.zshrc

zshrc 파일 내의 가장 아래에 내용을 추가해준다.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
export PATH=${PATH}:$JAVA_HOME/bin

source ~/.zshrc 실행 이후에 아래 명령어를 통해 확인해준다.

echo $JAVA_HOME
java -version

2. zulu 설치하기

https://www.azul.com/downloads/#zulu

zulu로 다운로드를 하면
java-17.jdk 가 아닌 zulu-17.jdk로 설치가 되는 차이가 있다.

자바소스와 컴파일

JDK를 설치한 후에 JDK가 설치된 디렉토리의 bin이라는 하위 디렉토리에는
javac와 java 실행 파일이 저장되어 있다.

JRE

JRE는 Java Runtime Environment의 약자로, Java가 실행될 수 있는 최소한의 파일들이 설치되어 있는 환경이다. 때문에 JRE설치시에는 javac와 같은 자바소스를 컴파일하기 위한 실행파일은 설치되지 않는다.

javac

java compiler의 약자이다. Java 파일을 컴파일 할 목적으로 사용되는 것이 javac 실행파일이다. 컴파일이란 소스코드를 기계어로 바꾸는 행위를 의미한다.

java파일 (.java)

개발자가 작성하는 자바 프로그램을 의미한다. 자바 프로그램을 저장할 때는 .java확장자로 저장하게 되는데 이 파일을 자바파일 혹은 자바소스라고 부른다.

MyProgram.java 라는 자바파일을 실행할 경우 두 단계를 거치게 된다.

1) .java파일을 .class파일로 컴파일하는 단계
2) .class 파일을 실행하는 단계

factorio thumbnail 출처 : https://wikidocs.net/887

사진의 Compielr가 javac에 해당하고, JavaVM은 java에 해당된다.

1) 소스코드 MyProgram.java 작성
2) Compiler인 javacMyProgram.class라는 클래스 파일을 생성한다.
컴파일된 파일의 경우는 JVM이 인식 가능한 바이너리 파일이다.
3) JVM은 클래스 파일의 바이너리 코드를 해석하여 프로그램을 수행한다.
4) MyProgram 수행 결과가 컴퓨터에 반영된다.

java가 class파일을 생성하는 이유

C 혹은 C++에서 최종 결과물로 exe 파일을 만들어내는 것 처럼 java로도 exe파일을 만들어 낼 수 있지만 JVM이 exe에 포함되게 되어 exe파일이 너무 커진다는 단점이 발생한다.

C/C++의 경우 실행파일이 JVM과 같은 중간단계를 거치지 않기 때문에 빠른 속도로 수행되지만 운영체제마다 별도의 실행파일을 작성해주어야 한다.

Java는 JVM이라는 중간단계가 존재하므로 C/C++보다 속도가 느리지만,
한 번 작성한 클래스파일(*.class)은 어떤 OS에서도 사용이 가능하다.
운영체제가 달라질 때마다 컴파일을 하지 않아도 되는 장점이 있다.

JVM과 JIT

Java가 운영체제에 독립적인 이유는 JVM에 있다.
JVM은 Java언어를 특정 OS에 맞게 변경을 해준다.
이를 기계어로 변환해 주는 것이 JVM의 InterPreter와 JIT이다.

Oracle에서 JVM의 스펙과 표준을 정의하면,
Vendor(AWS, Oracle, AZUL과 같은 공급업체)에서 JVM 실물을 만들어 배포한다고 한다.

JIT는 Just-In-Time의 약자이다.

Java는 컴파일 방식과 인터프리터 방식을 모두 사용하는데,
인터프리터 방식은 소스코드를 런타임시에 한줄씩 읽기 떄문에 컴파일 방식보다 느리다.
때문에 한 번 읽어서 기계어로 컴파일한 소스코드를 저장하여 다시 번역하지 않음으로써 속도 향상이 이루어진다고 한다.

0개의 댓글

관련 채용 정보