출처 : 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
- 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정
- 컴파일을 하는 프로그램
- 0과 1로 이루어진 코드, 컴퓨터가 이해할 수 있다.
- JVM : 0과 1과 운영체제 사이에서 둘을 호환시켜주는 역할을 하는 것
- JVM 운영체제에게 한 번 더 번역해준다는 것(운영체제 마다 똑같은 결과)
- 스칼라, 그루비, 코틀린
- 원래는 OS마다 다른 컴파일러가 필요하지만, JAVA는 JVM과 0과 1을 OS에 맞게 번역해준다.
- 즉, 똑같은 JAVA 바이트 코드를 OS마다 다르게 해석해주는 것
- 이 JVM은 인기가 상당해서, JAVA 외의 다른 언어에서도 사용하고 있다.
- 자바 가상 머신의 약자
- Java Virtual Machine
- OS 별로 존재한다
- 바이너리 코드를 읽고 검증하고 실행한다.
- 자바 실행 환경의 약자
- Java Runtime Environment
- JRE = JVM + 자바 프로그램
- 실행에 필요한 라이브러리 파일
- JVM의 실행환경을 구성(스캐너)
- 자바 개발 도구의 약자
- Java Development Kit
- JDK = JRE + 개발을 위한 도구
- 컴파일러, 디버그 도구 등이 포함
- JAVA의 버전 = JDK의 버전
- 오래 써도 되는 버전
- 우리가 오래 지원할게요~
- 8과 11
- Oracle JDK : 오라클에서 만든 JDK, 개인에게 무료, 기업용은 유료
- Open JDK : Oracle JDK와 비슷한 성능, 언제나 무료
- JDK는 버전이 있고 각 버전별로 새로운 기능이 추가되거나 기존 기능이 사라진다.
- JDK에는 종류가 있고, 기능 자체는 모두 동일하나 성능과 비용에 약간의 차이가 있을 수 있다.
- 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 sw 가공물(하나의 파일로) 변환시키는 과정
- 독립 sw 가공물 = Artifact
- 소스 코드를 컴파일
- 테스트 코드를 컴파일
- 테스트 코드 실행
- 테스트 코드 리포트를 작성
- 기타 추가 설정한 작업들을 진행
- 패키징을 수행한다(외부 소스를 가져다가 패키징)
- 최종 sw 결과물(Artifact)를 만들어 낸다.
- 내가 작성한 코드(혹은 테스트 코드)를 컴파일을 거쳐, 작동시켜 보는 것
- 독립 SW 가공물이 나올 수 도 있고, 나오지 않을 수도 있음
- 주의 :
인터프리터 언어
는 컴파일이 필요 없다.
빌드를 수동으로 하면 각기 다른 사람이 다르게 나오고 리소스도 많이 듦 ⇒ 빌트 툴
- 소스코드의 빌드 과정을 자동으로 처리 해주는 프로그램
- 외부 소스 코드(외부 라이브러리) 자동 추가, 관리
- 설정을 위해 xml을 사용
- 간단하고 사용하기 쉽다고 함
- 복잡한 처리를 하려 하면 빌드 스크립트가 장황해져 관리가 어렵다
- 외부 라이브러리를 관리하는 구조가 없다
- 설정을 위해 xml을 사용한다
- 외부 라이브러리를 관리할 수 있다.
- 장황 빌드 스크립트 문제를 해결했다.
- 특정 경우에 xml이 복잡해진다.
- xml 자체의 한계가 있다.
- 설정을 위해 groovy 언어를 사용
- 외부 라이브러리를 관리할 수 있다.
- 유연하게 빌드 스크립트를 작성할 수 있다.
- 성능이 뛰어나다.
- 가장 최신에 나온 자바 빌드 툴로 신규 프로젝트에서 많이 사용되고 있다.
빌드
란 단순히 실행하는 것과 다르다.- 빌드 과정 자동화와 외부 라이브러리 관리를 위해 빌드 툴이 사용된다.
- 널리 쓰였던 (쓰이는) java 빌드 툴에는 ant/maven/gradle 3가지가 있다.
- 현재 주로 maven/gradle 2가지가 많이 쓰인다.