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의 값을 넣어라 라는 의미.
3.2) PATH 경로 수정
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 : 소스 파일
5.1) 패키지 디렉토리 경로
ch01이 상위에 있고, sec06이 하위에 있음.
패키지 구분시 . (마침표)로 구분한다.
5.2) cmd 명령어를 통한java 실행
-d : bin에 컴파일된 결과를 저장해라.
src/ch01/se06/Hello.java : 소스파일의 경로
아래 그림과 같이 bin 폴더에 컴파일된 바이트코드 파일이 저장됨.
-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 |
0과 1 | 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;
등 실행하는 문장의 끝을 꼭 세미콜론으로 마무리 해야 한다.
'LANGUAGE > JAVA' 카테고리의 다른 글
익명 자식 객체 (Java) 3가지 사용 방식 정리. (0) | 2022.09.14 |
---|---|
자바 객체, 상속 개념 정리(예시) (0) | 2022.09.12 |
클래스 생성자. (0) | 2022.09.12 |
Method 작성 방식 정리. (0) | 2022.09.07 |
이클립스 단축키. (0) | 2022.08.28 |