JDK(Java Development Kit)
- 자바 애플리케이션을 개발하기 위한 환경을 지원하며,
JRE(자바 실행 환경)와 컴파일러나 jar등 개발에 유용한 도구들을 포함하고 있다. - 자바 프로그램을 개발하기 위해서는 JDK를 사용해야 한다.
Open JDK / Oracle JDK
OpenJDK(Open Java Development Kit)
- 무료로 사용 가능한 오픈 소스 Java 구현체로 개발 목적이나 비상업적 목적으로 사용하는 경우 적합
라이센스 및 지원
- 오픈 소스 프로젝트로서 오픈 소스 라이센스를 사용
- 무료로 사용하고 상업적으로 활용 가능하며, Oracle JDK와 달리 유료 지원 없이도 커뮤니티 지원을 받을 수 있다.
업데이트 정책
- 여러 제공업체 및 커뮤니티 멤버들이 협력하여 개발하므로 업데잍트 및 지원이 계속 된다.
- Open JDK LTS 버전은 다른 제고업체 및 커뮤니티로부터 장기 지원을 받을 수 있다.
추가 기능
- 주로 오픈 소스 기반으로 제공되며, 추가 기능이나 패치는 주로 커뮤니티의 기여에 의해 개발됨
커뮤니티 참여
- 다양한 개발자, 기업 및 커뮤니티의 협력으로 개발되며, 더 많은 커뮤니티가 참여 가능
Oracle JDK(Oracle Java Development Kit)
- 상용 라이센스를 필요로 하는 Java 구현체
라이선스 및 지원
- Oracle Corporation이 개발하고 제공하는 상용 라이센스를 요구
- 상업적으로 사용하려면 Oracle로부터 유료 지원 또는 구독 구매해야함
- 무료로 사용할 수 있는 개발 및 테스트 목적의 라이센스도 제공
업데이트 정책
- 상용 라이센스 또는 구독 고객에만 LTS(장기 지원) 버전의 업데이트를 제공
추가 기능
- 일부 추가 기능이나 커뮤니티 버전과는 다른 특정 기능을 제공하지만, 유로 라이센스 고객을 대상으로 제공
커뮤니티 참여
- Oracle Corporation이 중심이 되어 개발되기 때문에 개발 프로세스에 대한 커뮤니티 참여가 상대적으로 적음
Version - 6부터
JDK 6(2006년)
- Java Compiler API와 함께 컴파일러 API가 추가되어 동적으로 소스 코드를 생성하고 컴파일이 가능해짐
- Scripting API를 통해 스크립트 언어와의 통합을 지원
JDK 7(2011년)
- 다중 catch 블록, 문자열 switch문, 자동 자원 관리(try-with-resources)등의 언어 개선 사항이 도입됨
- Fork/Join 프레임워크를 통해 병렬 프로그래밍을 간소화하고 향상시킴
JDK 8 (2014년, LTS)
- 람다 표현식과 스트림 API가 도입되어 함수형 프로그래밍을 지원
- java.time 패키지로 새로운 날짜 및 시간 API 도입됨
- PermGen 영역이 제거되고 Metaspace 도입됨
- Oracle사에서 지원하는 유료 버전인 Oracle JDK와 오픈소스 기반의 무료 버전인 Open JDK로 나뉨
- 23년도 9월에 연장 지원 종료 예정
JDK 9 (2017년)
- 모듈 시스템 (Project Jigsaw)이 도입되어 코드 모듈화를 지원
- 리액티브 프로그래밍을 위한 Reactive Streams API가 추가됨
JDK 10 (2018년)
- 로컬 변수 형식 추론 (var 키워드)이 도입됨
JDK 11 (2018년, LTS)
- JDK 11부터는 Oracle의 라이선스 정책 변경으로 인해 긴 기간 동안 지원되는 LTS 버전이 등장
- Oracle JDK와 Open JDK 통합되고 Oracle JDK가 구독형 유료 모델로 전환
- HTTP 클라이언트 (HTTP/2 지원)와 지원된 로케일과 국제화 기능이 개선됨
- 26년 9월에 연장 종료 예정
JDK 17 (2021년, LTS)
- 8. 11 버전을 이을 세번째 LTS 버전
- Pattern Matching과 Sealed Classes와 같은 언어 개선이 이루어짐
- Foreign Function & Memory API가 도입되어 네이티브 코드와 상호 작용을 지원
- 애플 M1 및 이후 프로세서 탑재 제품군에 대한 정식 지원
- 의사난수 생성기를 통해 예측하기 어려운 난수를 생성하는 API 추가
Spring Boot
- 스프링 기반의 어플리케이션을 쉽게 개발하고 실행하기 위한 도구와 프레임워크
- 개발자들이 설정 작업에 많은 시간을 투자하지 않고도 빠르게 웹 어플리케이션 및 마이크로서비스를 개발할 수 있도록 돕는데 중점을 두고 있음
특징
스타터(Parent POM)
- Spring Boot는 스타터 의존성을 제공하여 프로젝트에 필요한 의존성을 간편하게 추가할 수 있다
자동 설정(Auto-Configuration)
- Spring Boot는 애플리케이션에 필요한 설정을 자동으로 추측하고 구성한다.
개발자가 추가적인 설정을 직접 작성하지 않아도 된다.
통합된 개발 환경
- Spring Boot는 개발, 테스트, 배포, 모니터링 등의 측면에서 통합된 환경을 제공하며,
내장형 웹 서버(예: Tomcat, Jetty)를 사용하여 애플리케이션을 간단히 실행할 수 있다.
스프링 생태계와 통합
- Spring Boot는 스프링 프레임워크와 원활하게 통합되어 스프링 기반 애플리케이션을 쉽게 구축할 수 있도록 한다.
마이크로서비스 지원
- Spring Boot는 마이크로서비스 아키텍처를 구현하기에 적합하며,
Spring Cloud 프로젝트와의 통합을 통해 마이크로서비스 패턴을 지원한다.
Version
Spring Boot 1.x
- 초기 버전으로 Spring Framework 4.x와 함께 사용됨
- 자동 설정, 스프링 부트 스타터, 내장형 웹 서버 지원 등의 기능이 포함
Spring Boot 2.x
- JDK 8, 11, 16 지원
- Spring Framework 5.x와 함께 사용됨
- 리액티브 프로그래밍 지원 (WebFlux)
- 모듈화된 구성 및 외부 설정 소스 확장
- 스프링 부트 애플리케이션의 모니터링 및 관리를 위한 Actuator 제공
- 더 많은 내장형 웹 서버와 스프링 프레임워크 기능 업그레이드
- 개선된 애플리케이션 시작 시간과 성능 최적화
- 개선된 자동 설정 및 확장 기능
- Spring boot 2.6.x는 22년 11월에 상용 종료되어 그 이전 버전들은 다 상용 종료 상태
- Spring boot 2.7.x는 23년 11월에 상용 종료 예정
Spring Boot 3.x
- JDK 17이상 지원
- Spring Framework 6.x와 함께 사용됨
- Java EE를 Jakarta EE 9로 대체한다.
- javax.* 에서 jakarta.*로 변경된다.
- AOT maven, gradle 플러그인 제공
- Spring AOT 엔진은 빌드 시 Spring 애플리케이션을 분석화하고 최적하는 도구
-> 어플리케이션 시작 시간을 빠르게 가능
- Spring AOT 엔진은 빌드 시 Spring 애플리케이션을 분석화하고 최적하는 도구
'Java-Study' 카테고리의 다른 글
Java Study : 12주차 - 프로그래머스 문제풀이 (0) | 2023.02.03 |
---|---|
Java Study : 12주차 - 학점 산출 프로그램 만들기 (0) | 2023.02.03 |
Java Study : 11주차 - 백준 문제풀이 (0) | 2023.01.22 |
Java Study : 11주차 - 자바 입출력 (0) | 2023.01.22 |
Java Study : 10주차 정리 - 예외처리 (0) | 2023.01.14 |