자바 시작하기!

JJ·2024년 7월 3일

backEnd

목록 보기
2/16

컴파일러와 인터프리터의 차이

  • 컴파일러: 코드를 통째로 번역

  • 인터프리터: 코드를 한줄씩 번역

코드가 짧을 때는 인터프리트 방식이 빠를 때가 많다.

그러면 자바는 컴파일 언어일까 인터프리터 언어일까?

결론부터 말하자면 자바는 컴파일러와 인터프리터가 합쳐진 하이브리드 언어이다.

자바의 컴파일 과정을 살펴보면,
소스코드→(자바 컴파일러,javac)→바이트코드→(자바 인터프리터)→바이너리코드 순으로 컴파일된다.

  1. 자바 컴파일러가 자바 소스 코드(.java)을 컴파일해서 JVM이 읽을 수 있는 바이트 코드(.class)로 변환한다.
  2. 이 바이트 코드를 JVM의 클래스 로더가 JVM의 메모리에 올린다.
  3. 실행 엔진은 JVM 메모리에 올라온 바이트 코드들을 바이트 코드들을 명령어 단위로 하나씩 가져와서 기계어로 변환하고 실행시킨다. 이때 인터프리터나 JIT 컴파일러를 사용한다.

실행엔진에 인터프리터와 컴파일러가 같이 있는 이유는 인터프리터가 큰 규모에서는 느리기 때문에 이를 보완하기 위해 컴파일러를 같이 사용하는 것이다.

+) 컴파일은 빌드일까?

빌드란

프로젝트에서 쓰인 각각의 파일과 각종 리소스를 JVM이 인식할 수 있도록 패키징하는 전체 과정이다.

빌드 도구

Ant > Maven > Gradle

maven의 점유율이 높다.

maven의 특징

  • 빌드 스크립트: pom.xml
  • ant 빌드 스크립트 개선
  • 필요한 라이브러리 다운로드 후 내 컴퓨터 캐시로 저장

maven은 라이브러리를 어디서 가져올까?

→ maven repository

gradle의 장점

  • ant + maven 장점 모음집
  • 빌드 스크립트: build.gradle by groovy
  • ant, maven 빌드 스크립트 개선
  • 필요한 라이브러리 다운로드 후 내 컴퓨터 캐시로 저장
  • maven과 gradle은 같은 레포지토리에서 가져오고 있다
  • maven보다 빌드 스크립트가 더 간결해지고 부가기능이 몇 개 추가된 수준
  • 빌드 캐시
  • 점진적 빌드(Incremental build): 한 번 빌드를 한 후 수정된 사항이 있을 경우 그 부분만 빌드
  • 데몬 프로세스: 백그라운드에서 계속 실행되고 있는 프로세스

자바의 필드에 값을 대입하는 방법 4가지

  • 필드에 직접 대입 → 보안이 약함
  • 메소드로 우회해서 대입 → 여전히 값을 언제나 바꿀 수 있음
  • 생성자로 대입 → 객체를 생성할 때만 호출 가능, 옳지 않은 값을 넣어도 알기가 어려움
  • 빌더로 대입: build.setName(”songa”).setAge(20).setWeight(40);

+) 생성자는 메소드일까?

스프링과 스프링부트

스프링을 한겹 싸서 스프링부트를 만듦.

스프링의 큰 단점은 설정할 것이 너무 많다는 것이다.
그리고 스프링은 설치를 따로 해야하고 서버 구축을 스스로 해야 한다.

하지만 스프링부트는 설정과 서버 생성을 알아서 해준다.

[빌드과정에서 생긴 오류]

A problem occurred configuring root project 'projectname'.
Could not resolve all artifacts for configuration ':classpath'.
Could not resolve org.springframework.boot:spring-boot-gradle-plugin:X.X.X.
Required by:
project : > org.springframework.boot:org.springframework.boot.gradle.plugin:X.X.X
Dependency requires at least JVM runtime version XX. This build uses a Java XX JVM.

java와 spring boot의 버전이 맞지 않아 생긴 오류이다.

[해결방법]

build.gradle에서 plugin의 id 'org.springframework.boot' version 을 java 버전에 맞춰 변경해준다.

plugins {
	id 'java'
	id 'org.springframework.boot' version 'X.X.X'
}

또는 setting→build,execution,deployment→gradle→gradle JVM의 버전을 자바에 맞게 수정해주면 됨.

profile
🎀👩🏻‍💻✨🐾🌷🦅

0개의 댓글