지니, 개발하다.

[TIL] 면접질문01. 자바 버전에 따른 특징 및 차이, 스프링과 스프링 프레임워크에 대하여 본문

Today I Learned

[TIL] 면접질문01. 자바 버전에 따른 특징 및 차이, 스프링과 스프링 프레임워크에 대하여

dev.genii 2023. 4. 24. 23:37

면접시 확실하지 않은 개념에 대해서는 대답하지 못했다.

대답하지 못했거나 더 자세히 알아봐야겠다고 생각했던 질문들에 대해서 정리하고자 한다.


Q. Java 11과 Java 17의 차이

 

Java에는 다양한 버전이 존재한다.

그 중 가장 많이 쓰이는 버전은 Java 8/11/17이다.

이 세 가지 버전이 많이 사용되는 이유는 이 버전들이 LTS(Long Term Support) 버전이기 때문이다.

LTS란 장기간 지원으로 버전 출시 이후 8년간 보안 업데이트와 버그 수정을 지원한다.

그 외에 6개월 간격으로 non-LTS 버전들이 출시되는데, 이 버전들은 짧은 기간만 해당 버전을 지원해준다.

따라서, LTS 버전인 Java 8/11/17이 가장 많이 사용되고 있다.

 

Java8

  • 오라클이 자바 인수 후 출시한 첫 번째 LTS 버전
  • 32bit를 지원하는 마지막 공식 Java 버전
  • Oracle JDK(Oracle 지원 버전/유료) , Open JDK(오픈소스 기반/무료)로 나뉨
  • 새로운 날짜와 시간 API(LocalDateTime 등)
  • 람다식, Stream API
  • PermGen 영역 삭제
  • Static Link JNI Library
  • 자바 실행 시에(Java runtime) 필요한 대부분의 라이브러리가 rt.jar라는 한 개의 파일에 포함됨. 하나의 클래스만 필요해도 rt.jar 전체를 설치해야 하므로 비효율적

Java9 이후

자바9 이후부터 이클립스에서 프로젝트를 생성할 때 module-info.java 생성에 대한 체크를 빼지 않으면 module-info.java가 자동으로 생성된다.

자바 9부터는 rt.jar 가 사라지고 .jmod 의 확장자를 가지는 새로운 자바 압축 파일 형태의 라이브러리가 jdk에 포함된다.

파일명도 기존의 형식에서 패키지명을 연상시키는 형태로 바뀌었다.

→ 예: java.base.jmod

실제로 자바 9의 구조를 살펴보면 기존의 jar가 수많은 jmod 파일들로 대체되었다는 것을 볼 수 있다.

자바 9 이후 버전부터 생성한 모듈은 기본적으로 java.base 모듈은 따로 지정하지 않아도 사용이 가능하다.

Java11

  • Oracle JDK와 Open JDK 통합
  • Oracle JDK 구독형 유료 모델로 전환
  • 람다 지역 변수 사용법 변경
  • Third Party JDK로의 이전 필요
  • HTTP 클라이언트 표준화 기능

Java17

  • 봉인 클래스(Sealed Class) 정식 추가
  • 패턴 매칭 프리뷰 단계
  • Incubator (Foreign Function & Memory API)
  • 애플 M1 및 이후 프로세서 탑재 제품군에 대한 정식 지원
  • 난수 생성 API 추가

Q. 스프링부트의 특징

 

스프링이란?

엔터프라이즈용 Java Application 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크이다.

스프링의 특징

스프링은 이전 기술에 비해 사용방법이 상대적으로 덜 복잡하다.

개발 초기 기본 설정과 적용시킬 기술들만 잘 선택한다면, 애플리케이션의 로직 자체에 더 집중하여 비즈니스 로직을 구현할 수 있다.

무료 오픈소스이므로 누구나 사용이 가능하며 수정하여 사용하여도 무관하다.

안정적인 개발과 개선이 보장된다.

POJO 프로그래밍을 지향한다.

POJO는 순수 Java만을 사용하여 만든 객체이므로 특정 기술이나 환경에 종속되지 않기에 보다 유연하게 변화와 확장에 대처할 수 있다.

 

스프링부트란?

스프링은 기존 기술의 복잡성을 크게 줄인 프레임워크이지만, 그럼에도 불구하고 스프링을 사용하기 위해서는 여러 사항들을 설정해야한다.

이 때, 스프링부트를 사용하면 복잡한 설정정보를 간략하게 줄일 수 있다.

스프링부트는 스프링으로 애플리케이션을 만들 때 필요한 설정을 간편하게 처리해주는 별도의 프레임워크이다.

스프링부트의 특징

스프링부트는 웹서버를 내장하고있어 빠르고 간편하게 배포를 진행할 수 있다.

스프링부트를 사용하면 독립적으로 실행 가능한 Jar 파일로 프로젝트를 빌드할 수 있어 클라우드 서비스 및 도커와 같은 가상화 환경에 빠르게 배포가 가능하다.

 

Comments