https://www.youtube.com/watch?v=f0cAmTYo4tQ
Java 코드를 컴퓨터가 어떻게 이해하는가?
Public Static void main(String[] args) {
System.out.println("Hello World");
}
사람이 작성한 프로그래밍 언어는 컴퓨터가 바로 이해할 수 없다.
그래서 컴퓨터가 이해할수 있는 바이트코드/바이너리코드 (0111010101001) 형태로 번역하게 되는데 이 과정을 컴파일 이라고하고 컴파일을 실행하는 프로그램을 컴파일러 라고 한다.
그런데 여기서 바이너리코드의 조합, 즉 0과 1의 조합은 각 운영체제마다 다르다.
이는 같은 바이너리코드라도 윈도우에서는 정상적으로 실행되지만 MacOS에서는 실행되지 않을 수 있다는 것이다.
C언어로 개발을 한다고 하였을 때 각 운영체제에 맞는 컴파일러가 필요하다.
그래서 각 운영체제에 맞는 컴파일러로 바이너리코드를 생성해주어야 비로소 정상적으로 작동된다.
그런데 자바는 각각의 운영체제별 컴파일러가 없어도 하나의 바이너리코드로 실행이 가능하다.
자바는 하나의 자바컴파일러로 바이너리코드를 생성하고 각 운영체제별 JVM이 바이너리코드를 해석하여 실행한다.
즉 JVM은 바이너리코드와 운영체제 사이에서 둘을 호환시키는 역할을 한다.
* JVM (Java Virtual Machine) : 자바 가상머신, OS별로 존재, 바이너리코드를 읽고 검증하고 실행한다.
* JRE (Java Runtime Environment) : 자바 실행환경, JVM + '자바프로그램 실행에 필요한 라이브러리 파일'.
JVM 실행환경을 구현한다.
* JDK (Java Development Kit) : 자바개발도구, JRE + '개발을 위한 도구(컴파일러, 디버그도구 등)'
JDK에는 버전이 있고 각 버전별로 새로운 기능이 추가되거나 기존 기능이 사라진다.
Ex : JDK 5버전(Generic 추가), JDK 8버전(Lambda 추가)
LTS(LongTimeSupport) 버전은 장기지원이 가능한버전으로 가급적 LTS 버전을 이용한다.(8버전, 11버전)
JDK에는 종류가 있고 기능 자체는 모두 동일하나 성능과 비용에 약간의 차이가 있을 수 있다.
빌드와 실행
빌드 Build
: 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립SW 가공물로 변환시키는 과정이다.
* 독립 SW 가공물 = Artifact / 타이핑한 프로그램 코드들을 하나의 파일로 만들어낸 것을 의미한다.
즉 프로그램 소스코드 파일을 아티팩트로 만드는 과정을 빌드 라고한다.
빌드를 세분화하여 살펴보자면
1) 소스코드를 컴파일한다.
2) 테스트코드를 컴파일한다.
* 테스트코드 : 내가 작성한 코드를 자동 테스트해주는 코드를 추가 작성한 것.
3) 테스트코드를 실행한다.
4) 테스트코드 리포트를 작성한다.
5) 기타 추가 설정한 작업들을 진행한다.
6) 패키징을 수행한다.
* 주로 Java에서 사용하는 코드(ex. System.out.println은 JRE (Java 라이브러리)에 포함됨.
Java 라이브러리 외에 다른사람이 만들어놓은 오픈소스를 가져다 쓰게되면 우리가 사용한 코드와 사용한 오픈소스를 패키징, 하나의 파일로 묶는것을 의미한다.
(오픈소스 예시 : 대표적으로 자바로 웹애플리케이션 만들고싶으면 Spring Boot 오픈소스 이용)
7) 최종 SW 결과물(Artififact)을 만들어낸다.
실행(Run)
: 내가 작성한 코드(혹은 테스트코드)를 컴파일을 거쳐 작동시켜보는 것
독립SW 가공물이 나올수도 있고 나오지 않을 수도 있다.
* 인터프리터 언어는 컴파일이 필요없다. (javascript, python)
자바의 빌드 툴
빌드 툴 (Build Tool)
: 소스코드의 빌드 과정을 자동으로 처리해주는 프로그램
: 외부소스코드(외부라이브러리) 자동 추가, 관리
Java에서 쓰이는 빌드 툴의 종류.
1. Ant : 설정을 위해 xml을 사용하고 간단하고 사용하기 쉽다.
복잡한 처리를 하려하면 빌드스크립트가 장황해져 관리가 어렵다.
외부 라이브러리를 관리하는 구조가 없다.
2. Maven : 설정을 위해 xml을 사용하고 외부 라이브러리를 관리할 수 있고 장황한 빌드 스크립트 문제를 해결했다.
특정 경우에 대해 xml이 복잡해지며 xml 자체의 한계가 있다.
3. Gradle : 설정을 위해 groovy 언어를 사용하고 외부 라이브러리를 관리할 수 있으며 유연하게 빌드 스크립트를 작성할 수 있고 성능이 뛰어나다. 가장 최신에 나온 java 빌드 툴로 특히 신규 프로젝트에서 많이 사용된다.
자바로 개발하기 위해 필요한 기본적인 개발 환경 구축
1. JDK (자바를 해석해주는 역할) - LTS 버전으로 설치.
2. IDE (통합 개발 도구) - Java -> 인텔리제이라는 IDE를 주로 이용.(JetBrains Toolbox)
'Spec UP - Backend > Java, JDK, Servlet' 카테고리의 다른 글
JSP 게시판 만들기 (0) | 2021.12.16 |
---|---|
Java 기본 문법 구조 (0) | 2021.10.27 |
JSP_스크립트릿/표현식/선언부 (0) | 2021.10.27 |
JSP / JSP 컨테이너 (0) | 2021.10.27 |
자바개발도구 JDK, Tomcat 다운로드 및 기본 설정 (0) | 2021.10.13 |
댓글