일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 클래스영역
- Java
- IF문
- 대문자 변환
- 플랫폼독립성
- 자바
- 제어키워드
- 소문자 변환
- 알고리즘
- push에러
- 자바버전차이
- 프록시패턴
- 약수구하기
- 스프링 스프링부트 차이
- 코딩테스트
- 합 구하기
- 자바의 메모리구조
- 노출모듈패턴
- 반복제어문
- 자바의 구조
- 이터레이터패턴
- 디자인패턴
- 403error
- 참조자료형
- 코테
- 문자열
- 평균구하기
- 선택제어
- Algorithm
- 메서드영역
- Today
- Total
지니, 개발하다.
[TIL] 면접질문01. 자바 버전에 따른 특징 및 차이, 스프링과 스프링 프레임워크에 대하여 본문
[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 파일로 프로젝트를 빌드할 수 있어 클라우드 서비스 및 도커와 같은 가상화 환경에 빠르게 배포가 가능하다.