Post

[Java] 자바를 공부하기 전에 알아두면 좋은 것들

Java를 공부하기 전에 알아두면 좋은 것들을 간단히 정리해봤습니다.

🖥️ 컴퓨터가 코드를 이해하는 과정

컴퓨터는 0과 1만 알아듣는다.
따라서 영어로 되어있는 코드를 0과 1로 되어있는 코드로 변환하고 컴퓨터가 알아듣게 만든다.

  • 컴파일 : 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정
  • 컴파일러 : 컴파일을 하는 프로그램
  • 바이트 코드(바이너리 코드) : 0과 1로 이루어진 코드, 컴퓨터가 이해할 수 있음

그런데 0과 1의 조합은 운영체제마다 다르다. 즉, Windows에서 Hello Word를 출력하는 바이트 코드를 MacOS나 Linux에 전달한다고 똑같은 결과가 나오는 것이 아니다. 그래서 C언어와 같은 언어들은 각 OS 별로 컴파일러가 따로 존재한다.

하지만 Java는 조금 특별하다.

Java는 OS 별로 JVM이 존재하고, 이 JVM이 자바 컴파일러가 변환한 똑같은 바이트 코드를 OS 마다 동일한 결과로 해석해준다.

즉, 원래는 OS 마다 다른 ‘컴파일러’가 필요하지만, Java는 JVM이 0과 1(바이너리 코드)을 OS에 맞게 번역해준다.

JVM은 인기가 상당해서, Java 외에 다른 언어에서도 사용하고 있다.

❓ JVM, JRE, JDK

JDK > JRE > JVM 으로 포함되어 있는 관계이다.

✅ JVM (Java Virtual Machine)

  • 자바 가상 머신의 약자
  • OS 별로 존재
  • 바이너리 코드를 읽고 검증하고 실행한다.

✅ JRE (Java Runtime Environment)

  • 자바 실행 환경의 약자
  • JRE = JVM + 자바 프로그램이 실행에 필요한 라이브러리 파일 등
  • JVM의 실행 환경을 구현

✅ JDK (Java Development Kit)

  • 자바 개발 도구의 약자
  • JDK = JRE + 개발을 위한 도구
  • 컴파일러, 디버그 도구 등이 포함

JDK에는 버전이 있고, 각 버전 별로 새로운 기능이 추가되거나 기존 기능이 사라진다.

  • Java8, Java11 등

JDK에는 종류가 있고, 기능 자체는 동일하나 성능과 비용에 약간의 차이가 있을 수 있다.

  • Oracle JDK : 오라클에서 만든 JDK. 개인에게 무료, 기업용은 유료
  • Open JDK : Oracle JDK와 비슷한 성능. 언제나 무료

🖥️ 빌드와 실행

  • 빌드란 단순히 실행하는 것과 다르다
✅ 빌드 (build)
소스 코드 파일을 여러 과정을 거쳐 컴퓨터에서 실행할 수 있는 독립 SW 가공물(Artifact)로 변환시키는 과정
✅ 실행 (run)
내가 작성한 코드(혹은 테스트 코드)를 컴파일을 거쳐, 작동 시켜보는 것
독립 SW 가공물(Artifact)이 나올 수도 있고, 나오지 않을 수도 있다.

🖥️ Java 빌드 툴 (build tool)

빌드 과정 자동화와 외부 라이브러리 관리를 위해 빌드 툴이 사용된다.

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

널리 쓰였던(쓰이는) Java 빌드 툴에는 ant, maven, gradle 3가지가 있다.

✅ Ant

  • 설정을 위해 xml을 사용한다.
  • 간단하고 사용하기 쉽다고 한다.
  • 복잡한 처리를 하려 하면 빌드 스크립트가 장황해져 관리가 어렵다.
  • 외부 라이브러리를 관리하는 구조가 없다.

⇒ 요즘엔 사용 안 함(사용한 걸 본 적도 거의 없다고 함).
2000년대 초/중반에 많이 사용되었다고 카더라

✅ Maven

  • 설정을 위해 xml을 사용한다.
  • 외부 라이브러리를 관리할 수 있다.
  • 장황한 빌드 스크립트 문제를 해결했다.
  • 특정 경우에 xml이 복잡해진다.
  • xml 자체의 한계가 있었다.

⇒ Ant가 가지고 있는 단점들을 대부분 극복
사용해 본 적은 없으나, 사용하는 것은 많이 봤다고 함
지금도 쓰는 경우가 있으나 신규 프로젝트에는 지양하는 편

✅ Gradle

  • 설정을 위해 groovy 언어(JVM 언어)를 사용한다.
  • 외부 라이브러리를 관리할 수 있다.
  • 유연하게 빌드 스크립트를 작성할 수 있다.
  • 성능이 뛰어나다.

⇒ 가장 최신에 나온 JAVA 빌드 툴이다.
(특히 신규 프로젝트에) 많이 사용되고 있다.


참고자료
This post is licensed under CC BY 4.0 by the author.

-

-