본문 바로가기
Spec UP - Backend/Java, JDK, Servlet

자바를 공부하기 전 기초 지식

by TIS_Ha 2021. 12. 17.
반응형

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)

반응형

댓글