반응형

spring boot (with spring initialize) / java 11 / intellij

 

 


 

오늘 한 일은 다음과 같다.

  • 자바 버전을 jdk 1.8 에서 jdk 11로 변경하였다.
  • spring initializer 를 이용해 초기 셋팅을 했다.
  • 실행을 해보았다.

 

 


java 8 ? java 11 ?

기존에는 jdk 1.8 버전을 사용했었다.

오늘 jdk 11로 바꾸었고, 앞으로는 쭉 jdk 11 을 사용할 예정이다.

 

왜 1.8 을 사용했고 왜 11 로 넘어가는가 ?

처음 배운게 1.8 기준이었고 지금 공부하는 스프링은 11 기준으로 설명하기때문에....
그냥 하라는대로 했다. 일단 시키는대로 했다.

그렇게 우선 배우고 나서 한참 뒤에 버전에 대한 차이를 알 수 있었다. 

 


 

JDK 1.8

  • 함수형 프로그래밍(lambda), 병렬 프로그래밍(stream)
  • 메모리 구조 변경 (perm 영역 삭제)

본인이 생각하는 jdk 1.8의 가장 큰 변화는 위 2가지 이다.

 

시대가 변하면서 프로그래밍의 패러다임에도 변화가 추가되었다.

절차지향 - 객체지향 - 함수지향

OOP 이후, 함수지향적 프로그래밍 이라는 패러다임이 등장했는데,

객체지향 대표주자 java 는 시대에 뒤떨어지지 않게 함수형 프로그래밍도 가능하도록 업데이트 되었다.

 

또한, 하드웨어적 변화에도 잘 대응하였다.

몇년사이 비약적으로 상승하는 하드웨어의 성능으로 인해 소프트웨어적인 변화도 있었는데

멀티코어를 이용한 병렬프로그래밍이 그 대표적인 예시다.

java는 stream 을 추가하여 병렬프로그래밍도 대비해두었다.

 

 

언어적 변화, api들이 추가된것 뿐만 아니라

메모리구조에서도 큰 변화가 있었는데

바로 perm 영역 삭제이다. (대신 metaspace 추가)

 

perm 영역은 고정적으로 할당되었어야 했는데
(Class meta data, method meta data, static var , const literal 등 meta data들을 저장)

불필요하게 많아서 낭비되거나 사이즈를 넘어가는일에 대해서는 분명한 단점이었다.
(GC 대상이 되지 않는다는점도 .)

하여, java8 에서는 perm 대신 가변영역인 metaspace를 추가하였고

메모리를 더욱 효율적으로 사용할 수 있게 되었다.

 

참고로 jdk 1.8 은 oracle 의 java 인수 후 첫 버전이다.

 

 


JDK 11

이제 11로 전환해서 잘 모르겠다.

일단 훑어본 내용은 GC가 눈에띈다.

전반적으로 성능개선에 관한 내용이 많이 보이고,

default Garbage Collector 가 G1 이라고 한다.

 

해당 내용은 다음 문서를 참조하였다.

docs.microsoft.com/ko-kr/azure/developer/java/fundamentals/reasons-to-move-to-java-11

 

Java 11로 전환해야 하는 이유 - Azure

Java 8에서 Java 11로 전환할 경우의 이점을 평가 중인 의사 결정권자를 위한 요약 수준의 문서입니다.

docs.microsoft.com

 

 


 

 

spring initializr

사이트를 이용하여 편하게 초기설정을 하였다.

사이트에 접속하면 spring boot 의 초기 설정을 도와주는 페이지가 나오고

본인은 다음과 같이 설정하였다.

  • project : gradle
  • language : java
  • spring boot : 2.4.5
  • packaging : Jar
  • java : 11
  • dependencies : spring web (우측상단 add dependencies 클릭 후 검색하여 선택)

 

project : 빌드 도구를 gradle로 사용하겠다. 가독성, 유연함 때문에 gradle이 maven 을 누르고 대세가 되었다.

language : 나는 코틀린이나 그루비는 모른다.

spring boot : 가장 최신버전을 선택했다. (스냅샷은 정식버전이 아니다.)

project metadata : 그룹명, 아티팩트 등 은 원하는대로 입력하면 된다.

packaging : war가 jar 보다 좀 더 큰 개념이라고 보면 된다. 나는 jar 로 했다.

java : 11 버전으로 선택했다.

dependencies : 웹 프로젝트 할거라서 웹 선택

 

 


 

sptring boot 실행

 

initializr 을 통해 얻은 zip 파일 압축을 풀고 intelliJ 에서 열었다.

 

특별한 작업 없이 기본 구성으로 스프링을 실행해보았다.

브라우저를 열고 127.0.0.1:8080 을 입력하였다.

다음과 같이 정상적으로 동작하는것을 확인할 수 있었다.

 

 

 

참고로 실패하면 나오는 화면은 다음과 같다.

 

 

 

 

 

 

 

 

 

 

반응형

'개발 > SPRING BOOT' 카테고리의 다른 글

spring boot static 말고 다른 경로 설정  (1) 2021.08.06
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기