본문 바로가기
Start/JAVA

Java JDK 설치

by cogito-new 2022. 8. 22.

1. 사람의 언어 ↔ 프로그래밍 언어 ↔ 기계어(0과 1로 구성)

1.1) 사람 언어와 기계어 사이의 프로그래밍 언어 동작 순서

Python JAVA C, C++, C#
Source File 작성 Source File 작성
(확장명: .java)
Source File 작성
Source File 컴파일
(명령어: javac)
컴파일러
인터프리터
(1줄씩 기계어 번역)
바이트코드 파일
(확장명: .class)
기계어 파일
(확장명: .exe)
실행 자바 가상 머신
(JVM)
실행
  실행  

2. 운영체제별 JDK 설치

*Java SE: Standard Edition (설치 대상이 아니며, Spec 정의)

*JDK: Java Development kit (Java SE에 따라 실제 구현한 도구)

2.1) JDK 종류

- OPEN JDK : Eclipse에서 안정화, 업데이트

OS(Operating System)별로 다운로드 가능, x64, x86 version

설치 시, 아래와 같이 C드라이븝 아래, Program file내 저장해야 OS 사용자가 바뀌어도 변경 요구되지 않음

https://adoptium.net/temurin/releases

 

Latest releases

Eclipse Adoptium provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. Supported platforms include Linux, macOS, Windows, ARM, Solaris, and AIX.

adoptium.net

 

→ 17.0.4 버전 설치 완료

(*17.0.3, 17.0.2 등 다양한 버전이 존재한다. 이러한 이유로 JDK 설치 후 시스템 환경 편집을 통해 변수 설정한다.)

- Oracle JDK : Oracle에서 업데이트

사용하지 않을 예정. 사이트만 업로드

https://www.java.com/ko/download/

 

2.2) JDK LTS: Long Term Support

장기간 기술 지원하는 서비스

Add to PATH : 하위폴더인 bin 과 연결시켜 줌,

- bin : 확장명.class인 바이트코드(JVM 구동 전 파일의) 저장 경로.

-Associate.jar : JDK내 필요 라이브러리 설치

 


3. 윈도우 환경 변수 설정 : Window OS에서 사용하는 정보와 Data를 설정한다.

변수 : 어떤 Data를 가지고 있는 것

윈도우 환경 변수 : 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임

윈도우 검색 창 → 시스템 환경 변수 편집 선택.

 

3.1) JAVA HOME 경로 설정

→ JAVA HOME의 환경 변수 값 : JAVA가 설치된 폴더의 경로를 의미

OS와 JDK간 정보가 이동할 떄, JAVA JDK의 지정된 경로가 있어야 동작할 수 있다. 

* 설정 이유

1. cmd창 혹은 power shell로 JAVA를 실행할 때, 정확한 경로가 필요하기 때문에 설정해준다.

2. 프로그래밍 작업 시, 다른 버전의 JAVA를 사용할 수 있음. 이런 경우, JDK의 저장 경로만 변경해줌으로서

부가적인 설정을 하지 않아도 된다.

%JAVA_HOME% : 환경 변수에 JAVA_HOME의 값을 넣어라 라는 의미.

환경 변수 선택

 

새로 만들기 → JAVA_HOME key in 후, 변수 값은 아래 사진 경로 복붙

 

JAVA HOME 저장 경로를 복사하여 붙여 넣으면 됨

 

 

3.2) PATH 경로 수정

기존의 경로가 있었지만 %JAVA_HOME%로 수정하여 입력.

 

PATH 경로를 수정하고 맨 위로 올려준다.

올려주는 이유 : cmd를 사용, path값은 위부터 아래로 검색되므로 Javac를 더 빠르게 찾을 수 있다.

→ 다른 버전의 자바를 사용하게 되면 1) PATH 변경 2) JAVA_HOME 변경

 


4. 바이트코드 파일과 자바 가상 머신

(1.1)의 작성 자료 재확인

Python JAVA C, C++, C#
Source File 작성 Source File 작성
(확장명: .java)
Source File 작성
Source File 컴파일
(명령어: javac)
컴파일러
인터프리터
(1줄씩 기계어 번역)
바이트코드 파일
(확장명: .class)
기계어 파일
(확장명: .exe)
실행 자바 가상 머신
(JVM)
실행
  실행  

 

4.1) Source File (확장명: .java) 작성 후, cmd or Power Shell에서 javac명령어를 사용해 컴파일한다. 

컴파일 완료 시, 바이트코드 파일로 전환되며 확장명은 .class이다.

- 바이트코드 파일 : JVM (JAVA Virtual Machine)이 해석 가능한 문자로 구성된 파일.

(모든 운영체제 MAC, Linux, Window에서 동일하게 만들어짐 : 범용성 ↑)

 

4.2) .class 의 바이트코드 파일은 운영체제와 상관없이 동일하지만

JVM은 운영체제별로 다르게 번역한다. 따라서 운영체제별 설치하는 JDK가 달라진다.

→ JVM은 운영체제에 종속적이다.

→이러한 구조를 목표로 JAVA 언어가 설계되었음.

 

4.3) 장, 단점

장점 : 어떤 운용체제든 바이트코드 파일(.class)의 사용이 가능하다.

단점 : 속도차가 거의 없지만, 다른 언어의 경우 운영체제별 최적화된 기계어 파일로 변환되므로

속도차이가 존재한다.


5. 소스 분석

src (=source) : 소스 파일이 저장되는 디렉토리

디렉토리 : (디렉토리 < 폴더) 파일들을 묶어 놓은 것

패키지 : Java는 소스 파일과 컴파일된 바이트코드 파일을 쉽게 관리하기 위해 package를 사용함

(묶음의 느낌)

ch01.sec06 : 패키지 디렉토리 → 패키지 디렉토리도 source의 일부분이다.

Hello.java : 소스 파일 

 

Source File

 

5.1) 패키지 디렉토리 경로

ch01이 상위에 있고, sec06이 하위에 있음.

패키지 구분시 . (마침표)로 구분한다.

 

5.2) cmd 명령어를 통한java 실행

저장된 위치를 찾아감
cd 폴더명 명령어로 원하는 폴더 진입
javac 명령어를 통해 컴파일 진행.

-d : bin에 컴파일된 결과를 저장해라.

src/ch01/se06/Hello.java : 소스파일의 경로

아래 그림과 같이 bin 폴더에 컴파일된 바이트코드 파일이 저장됨.

bin(binary) file
java 명령어를 통해 JVM 으로 기계어 번역

-cp : class path 이며, package (ch01부터 해당됨) 가 어디서부터 위치하는지 

ch01.sec06.Hello로 . javac와 다르게 마침표를 사용하는 이유는 컴파일된 바이트코드 파일은 경로가 

바이트코드 파일의 이름이 된다. 따라서 /가 아닌 마침표를 사용한다.


6. 이클립스 설치시 주의사항

JRE 3가지 탭 설명

JRE : Java Run Time Environment 자바 개발 환경 (JDK와 유사한 개념)

JRE 탭 中 1 : 이미지상 15버전. 작성자가 15.0.1 이고 다른 작업자가 15.0.2 이어도 인코딩에서 오류 발생하지 않음

→ 버전만 같으면 됨

JRE 탭 中 2 : 정확하게 업데이트 버전 지정할 때 사용. ex) 작성자, 다른 작업자 모두 15.0.2 이어야 한다.

JRE 탭 中 3 ; 이클립스가 기본적으로 가지고 있는 JDK 버전으로 사용한다. → configure JREs 클릭시 버전 확인 가능

Project Layout : source 파일과 class 파일을 나누어 저장할지, 같이 저장할지 선택

 

6.1) 표현 차이

java17 → 언어에 중점을 둔 표현

JDK17 → 개발 도구 (Development kit) 중점 표현

JRE17 → 실행 환경에 중점

JavaSE-17→스펙 내용에 중점

6.2) UTF-8

 

Bit Byte Kbyte Mbyte Gbyte Tbyte
01 8bit 1024 byte 1024 Kbyte 1024 Mbyte 1024 Gbyte

ANSL : 한글 2byte, 영어 1byte

UTF-8 : 한글3byte, 영어 1byte

인코딩시 오류를 방지하기 위해 UTF-8 사용함

6.3) package 위치

package 선언 : 소스(.java)파일의 위치와 동일한 방식으로 bin 파일 밑의 ch02.sec01에 (바이트코드파일).class 이 위치해야 한다.

이클립스에서 bin 파일은(바이트코드) 보이지 않는다. 그러나 탐색기를 통해 보면 보인다.

(* JVM으로 기계어 번역 하므로 프로그래밍 시 굳이 보일 필요가 없다.)


7. 코드 용어 이해

7.1) 패키지 선언 : 소스 파일이 해당 패키지에 있다.

ex) package ch01.sec09; → 소스파일이 src/ch01/sec09 패키지에 있다.

패키지(src + bin)

7.2) 클래스 선언 : 클래스명 = 소스파일명

ex) public class Hello{

}

주황색 중괄호 사이는 클래스 블록

 

7.3) 메소드 선언 : main → 메소드 이름

main() 메소드는 프로그램 ㅅ ㅣㄹ행 진입점이다.

ex) public static void main(string[] args){

}

주황색 중괄호 사이는 메소드 블록

7.4) 주석

// 행 주석


/* 범위 주석

*/


/**

*사이의 내용을 모두 주석처리. @parm 처럼 작성된 내용 차후 html문서화 처리가 가능함, 범위주석과 큰 차이없음

*/

7.5) 실행문은 세미콜론으로 마무리

int x; 

등 실행하는 문장의 끝을 꼭 세미콜론으로 마무리 해야 한다.

반응형

'Start > JAVA' 카테고리의 다른 글

익명 자식 객체 (Java) 3가지 사용 방식 정리.  (0) 2022.09.14
자바 객체, 상속 개념 정리(예시)  (0) 2022.09.12
클래스 생성자.  (0) 2022.09.12
Method 작성 방식 정리.  (0) 2022.09.07
이클립스 단축키.  (0) 2022.08.28