[컴파일(Compile)]
- 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정
[컴파일러(Compiler)]
[바이트 코드 (binary Code)]
- 0과 1로 이루어진 code, 컴퓨터가 이해할 수 있음.
[Java 특징]
- Java 컴파일러는 Windows JVM, MAC JVM, Linux JVM 이 각각OS에 맞춰서 번역하기때문에 컴파일러가 하나만 있어도 된다.
- JVM은 인기가 상당해서, Java 외에 다른 언어에서도 사용하고 있다.
"JDK > JRE > JVM"
[JVM]
- Java Virtual Machine
- 자바 가상 머신의 약자
- OS 별로 존재 한다.
- 바이너리 코드를 읽고 검증하고 실행한다.
[JRE]
- Java Runtime Environment
- 자바 실행 환경의 약자
- JRE = JVM + 자바 프로그램 실행에 필요한 라이브러리 파일 등
- JVM의 실행환경을 구현
[JDK]
- Java Development Kit
- 자바 개발 도구의 약자
- JDK = JRE + 개발을 위한 도구
- 컴파일러, 디버그 도구 등이 포함
즉, JDK를 설치하면, JRE와 JVM도 설치 된다.
JAVA 버전 = JDK 버전
[LTS 버전]
- Long Time Support
- 오래써도 되는 버전.
[Oracle JDK]
- 오라클에서 만든 JDK
- 개인에게는 무료
- 기업용은 유료.
[Open JDK]
- Oracle JDK와 비슷한 성능
- 언제나 무료
[빌드와 실행]
[빌드(Build)]
[테스트 코드]
- 내가 작성한 코드를 자동 테스트해주는 코드를 추가로 작성한 것.
- 빌드 과정에 포함됨
- 이 과정을 잘 하는 프로그래머를 기업이 좋아함.
[실행(run)]
- 내가 작성한 코드 (or 테스트 코드)를 컴파일을 거쳐, 작동시켜 보는것
- 독립 SW 가공물(Artifact)가 나올 수 도 있고, 나오지 않을 수 도 있다.
- 주의) 인터프린터 언어(js, python ...)는 컴파일이 필요 없다.
[빌드를 수동으로?]
- 각기 다른 사람들이 + 모든 과정이 수동(외부 코드를 다 합쳐야 한다) => 실수가 무조건 나온다. Resource가 많이 든다.
- 이를 해결하기 위해서 빌드 툴 사용
- 소스 코드의 빌드 과정을 자동으로 처리 해주는 프로그램
- 외부 소스 코드 (외부 라이브러리) 자동 추가, 관리
[빌드 툴의 종류]
[Ant]
[Maven]
[Gradle]
- 설정을 위해 groovy 언어(JVM언어)를 사용한다.
- 외부 라이브러리를 관리 할 수 있다.
- 유연하게 빌드 스크립트를 작성할 수 있다.
- 성능이 뛰어나다.
- 신규 PJ에 많이 사용.