[Jong's Java] 용어 정리 (JDK,JRE,JVM, Compile, Gradle, run, build)

Eric·2022년 7월 23일
0

Java 공부

목록 보기
1/1
post-thumbnail

[컴파일(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)]

  • 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 SW 가공물로 변화시키는 과정

  • 독립 SW 가공물 = Artifact

    1. 소스코드를 컴파일 한다.
    1. 테스트 코드를 컴파일 한다.
    1. 테스트 코드를 실행한다.
    1. 테스트 코드 리포트를 작성한다.
    1. 기타 추가 설정한 작업들을 진행한다.
    1. 패키징을 수행한다.
    1. 최종 Artifact를 만들어 낸다.

[테스트 코드]

  • 내가 작성한 코드를 자동 테스트해주는 코드를 추가로 작성한 것.
  • 빌드 과정에 포함됨
  • 이 과정을 잘 하는 프로그래머를 기업이 좋아함.

[실행(run)]

  • 내가 작성한 코드 (or 테스트 코드)를 컴파일을 거쳐, 작동시켜 보는것
  • 독립 SW 가공물(Artifact)가 나올 수 도 있고, 나오지 않을 수 도 있다.
  • 주의) 인터프린터 언어(js, python ...)는 컴파일이 필요 없다.

[빌드를 수동으로?]

  • 각기 다른 사람들이 + 모든 과정이 수동(외부 코드를 다 합쳐야 한다) => 실수가 무조건 나온다. Resource가 많이 든다.
  • 이를 해결하기 위해서 빌드 툴 사용

[빌드 툴(Build Tool)]

  • 소스 코드의 빌드 과정을 자동으로 처리 해주는 프로그램
  • 외부 소스 코드 (외부 라이브러리) 자동 추가, 관리

[빌드 툴의 종류]

[Ant]

  • 설정을 위해 xml을 사용한다.

  • 간단하고 사용하기 쉽다고 한다.

  • 복잡한 처리를 하려 하면, 빌드 스크립트가 장황해서 관리가 어렵다.

  • 외부 라이브러리를 관리하는 구조가 없다.

  • 2000년대 초반/중반에 많이 사용되었던 것.

[Maven]

  • 설정을 위해 xml을 사용한다.

  • 외부 라이브러리를 관리할 수 있다.

  • 장황한 빌드 스크립트 문제를 해결했다.

  • 특정 경우에 xml이 복잡해진다.

  • xml 자체의 한계가 있다.

  • Ant가 가지고 있는 단점들을 대부분 극복, 지금도 쓰이고 있으나, 신규 PJ에는 지양하는 편.

[Gradle]

  • 설정을 위해 groovy 언어(JVM언어)를 사용한다.
  • 외부 라이브러리를 관리 할 수 있다.
  • 유연하게 빌드 스크립트를 작성할 수 있다.
  • 성능이 뛰어나다.
  • 신규 PJ에 많이 사용.
profile
Ærlighed i små ting er ikke nogen lille ting.

0개의 댓글