반응형
스프링 프레임워크 5.0의 출현
- 스프링 프레임워크 4.0에서 거의 4년만에 업그레이드가 됨.
스프링 프레임워크 5.0의 주요 발전사항
- Baseline 업그레이드
- JDK9 런타임 호환성
- Spring Framework 코드에서 JDK8 기능 사용
- Reactive 프로그래밍 지원
- 함수형 Web Framework
- Jigsaw를 사용한 자바 모듈성
- 코틀린 지원
- 삭제된 기능
- 참고페이지
그럼, 주요 발전사항에 대해서 간략하게 알아볼께요.
- Baseline 업그레이드
- Spring Framework 5.0은 JDK8 / JAVA EE7 기준선을 가지고 있음.
- 즉, 이전 JDK 및 JAVA EE버전은 더이상 지원이 되지 않음.
- Spring Framework 5.0을 위한 기본 JAVA EE7 스펙 중 일부는 아래와 같음.
- Servlet 3.1
- JMS 2.
- JPA 2.1
- JAX-RS 2.0
- Bean Validation 1.1
- Spring Framework 5.0을 위한 기본 JAVA EE7 스펙 중 일부는 아래와 같음.
- 즉, 이전 JDK 및 JAVA EE버전은 더이상 지원이 되지 않음.
- Spring Framework 5.0 에서 지금 지원하는 업그레이드된 라이브러리 버전은 아래와 같음.
- Jackson 2.6+
- EhCache 2.10+ / 3.0 GA
- Hibernate 5.0+
- JDBC 4.0+
- XmlUnit 2.x+
- OkHttp 3.x+
- Netty 4.1+
- Spring Framework 5.0은 JDK8 / JAVA EE7 기준선을 가지고 있음.
- JDK9 런타임 호환성
- Spring Framework 5.0은 JDK9와 런타임 호환성을 가짐.
- Spring Framework 코드에서 JDK8 기능 사용
- Spring Framework 4.x 의 기본버전은 JAVA SE 6임
- JAVA 6/7/8을 지원한다는 것을 의미함.
- JAVA SE 6/7을 지원하면 Spring Framework 코드에 제약 조건이 적용됨.
- Framework 코드는 JAVA 8의 새로운 기능을 사용할 수 없음.
- 즉, Spring Framework의 코드는 JAVA 8로 업그레이드 되는 동안 이전 버전의 JAVA를 사용하도록 제한되어왔음.
- Spring Framework 5.0의 기본버전은 JAVA 8임.
- 즉, Spring Framework가 JAVA 8의 새로운 기능을 제공하도록 업그레이드됨.
- 이로인해, 더 읽기 쉽고 실행가능한 Framework 소스코드가 생성됨.
- 사용된 JAVA 8 기능 중 일부내용은 아래와 같음.
- Core Spring Interface 의 JAVA 8 기본 메소드
- JAVA 8 리플렉션 향상을 기반으로 한 내부 코드 개선
- Framework 코드에서 함수형 프로그래밍 사용
- 람다
- 스트림
- 즉, Spring Framework가 JAVA 8의 새로운 기능을 제공하도록 업그레이드됨.
- Spring Framework 4.x 의 기본버전은 JAVA SE 6임
- Reactive 프로그래밍 지원
- Spring Framework 5.0의 가장 중요한 기능 중 하나임.
- MSA에서는 일반적으로 Event 기반 통신을 기반으로 구축되어 있음.
- 즉, 애플리케이션은 Event or Message 에 반응하도록 작성됨.
- Reactive 프로그래밍은 이벤트에 반응하는 애플리케이션을 구현하는 데 초점을 맞춘 프로그래밍 스타일을 제공함.
- JAVA 8 에는 Reactive 프로그래밍을 위한 기능은 없음.
- but, Reactive 프로그래밍을 지원하는 다양한 Framework 가 존재함.
- Reactive stream
- Reactive API를 정의하려는 언어 중립적 시도
- 참고페이지
- Reactor
- Spring pivotal 팀이 제공하는 Reactive stream의 JAVA 구현
- 참고페이지
- https://projectreactor.io/
- 참고페이지에 들어가면 아래의 설명글이 뜬다^^;
- Reactor is a fourth-generation reactive library, based on the Reactive Streams
specification, for building non-blocking applications on the JVM.
- Reactor is a fourth-generation reactive library, based on the Reactive Streams
- Spring WebFlux
- Reactive 프로그래밍을 기반으로 웹 애플리케이션을 개발할 수 있음.
- Spring MVC 와 비슷한 프로그래밍 모델을 제공함.
- 참고페이지
- Reactive 프로그래밍을 기반으로 웹 애플리케이션을 개발할 수 있음.
- Reactive stream
- but, Reactive 프로그래밍을 지원하는 다양한 Framework 가 존재함.
- 함수형 Web Framework
- Reactive 기능을 바탕으로 함수형 Web Framework를 제공함.
- 함수형 Web Framework는 함수형 프로그래밍 스타일을 사용해 endpoint를 정의하는 기능을 제공함.
- 함수형 Web Framework는 함수형 프로그래밍 스타일을 사용해 endpoint를 정의하는 기능을 제공함.
- Reactive 기능을 바탕으로 함수형 Web Framework를 제공함.
- Jigsaw를 사용한 자바 모듈성
- JAVA 플랫폼은 JAVA8이 나오기 전까지 모듈식이 아니였음.
- 아래와 같은 중요한 문제를 갖고 있었음.
- 플랫폼의 무거움
- JAVA 모듈성은 지난 수십년간 우려의 원인은 아니였음.
- but, Node.js 와 같은 새로운 경량 플랫폼을 사용하면서 JAVA 플랫폼이 무거워지는 문제를 해결해야 할 필요성이 대두됨.
- JAVA 모듈성은 지난 수십년간 우려의 원인은 아니였음.
- JAR Hell
- JAVA Class Loader 가 Class 를 찾으면 사용 가능한 Class에 대한 다른 정의가 있는지 알 수 없음.
- 즉, 발견된 첫번째 Class가 바로 로드가 됨.
- 애플리케이션에서 필요한 특정 Class 가 여러 Jar에 모두 있는 경우, 특정 Jar에 있는 해당 Class를 로드하도록 지정할 수 있는 방법은 없음.
- JAVA Class Loader 가 Class 를 찾으면 사용 가능한 Class에 대한 다른 정의가 있는지 알 수 없음.
- 플랫폼의 무거움
- 아래와 같은 중요한 문제를 갖고 있었음.
- OSGi(개방형 시스템 게이트웨이 발의)
- 1999년에 시작된 JAVA 프로젝트에 모듈성을 도입하려는 발의 중 하나
- 각 모듈은 아래와 같이 정의할 수 있음
- imports
- 모듈이 사용하는 다른 번들
- exports
- 번들이 반출하는 패키지
- imports
- 각 모듈은 자체 생명 주기를 가질 수 있음.
- 즉, 자체적으로 설치/시작/중지할수 있음.
- 각 모듈은 아래와 같이 정의할 수 있음
- 1999년에 시작된 JAVA 프로젝트에 모듈성을 도입하려는 발의 중 하나
- Jigsaw는 JAVA에 모듈성을 제공하기 위해서 JCP(Java Community Process)에서 발의됨.
- 아래는 주요 목적임.
- JDK용 모듈러 구조 정의 및 구현
- JAVA 플랫폼에 구축된 애플리케이션용 모듈 시스템 정의
- 아래는 주요 목적임.
- Jigsaw 는 JAVA 9에 포함됨.
- 참고페이지
- JAVA 9의 새로운 특징
- Jigsaw 프로젝트 빠르게 시작하기 ^^
- 그리고, Spring Framework 5.0에서는 Jigsaw 모듈에 대한 지원이 포함됨.
- 참고페이지
- JAVA 플랫폼은 JAVA8이 나오기 전까지 모듈식이 아니였음.
- 코틀린 지원
- 코틀린(Kotlin)이란?
- 표현력이 뛰어나며 짧고 읽기 쉬운 코드를 가능하게 하는 정적으로 형식화된 JVM 언어
- 2011년 7월, 젯브레인사가 공개
- 참고페이지
- 표현력이 뛰어나며 짧고 읽기 쉬운 코드를 가능하게 하는 정적으로 형식화된 JVM 언어
- Spring Framework 5.0 에서 지원함.
- 코틀린(Kotlin)이란?
- 삭제된 기능
- Spring Framework 5.0은 JAVA, JAVA EE 및 기타 다른 프레임워크의 기준 버전이 증가함에 따라 몇 가지 프레임워크에 대한 지원을 종료함.
- Portlets
- Velocity
- JasperReports
- XML Beans
- JDO
- Guava
- Spring Framework 5.0은 JAVA, JAVA EE 및 기타 다른 프레임워크의 기준 버전이 증가함에 따라 몇 가지 프레임워크에 대한 지원을 종료함.
- Spring boot 2.0의 새로운 기능에 대해서 알아볼까요?
- Spring boot 의 역사
- 2014년 Spring boot의 첫번째 버전이 출시됨.
- Spring boot 2.0의 중요 업데이트
- JDK 기본 버전
- JAVA 8
- 기준 Spring 버전
- Spring Framework 5.0
- Spring boot 2.0 은 WebFlux를 이용한 Reactive Web 프로그래밍을 지원함.
- JDK 기본 버전
- Framework 의 최소 지원 버전
- 제티 9.4
- 톰캣 8.5
- 하이버네이트 5.2
- 그래들 3.4
- Spring boot 의 역사
결론
- Spring Framework 는 5.0 버전이 출시되면서 많은 변화를 겪게됨.
- 주요변화는 아래와 같음
- Baseline 업그레이드
- JDK9 런타임 호환성
- Spring Framework 코드에서 JDK8 기능 사용
- Reactive 프로그래밍 지원
- 함수형 Web Framework
- Jigsaw를 사용한 자바 모듈성
- 코틀린 지원
- 주요변화는 아래와 같음
- 오늘도 Spring Framework 5.0 버전 및 Spring boot 2.0 에 대한 정보의 마술(?) 한가지 획득완료! 감사합니다. ^^
300x250
'좋아하는 것_매직IT > 1.spring' 카테고리의 다른 글
6.Spring, 스프링 IoC 컨테이너에 대해서 이해한번 해봅시다. ^^ (0) | 2021.01.02 |
---|---|
5.Spring, 의존성 주입에 대해서 이해한번 해봅시다. ^^ (0) | 2021.01.02 |
3.Spring, 스프링 프로젝트에는 어떤것이 있을까요? ^^ (0) | 2021.01.01 |
2.Spring, 스프링 프레임워크의 모듈은 어떤것이 있을까? (0) | 2021.01.01 |
1.Spring, 도대체 무엇이 스프링 프레임워크일까? ^^ .. 한번 간단하게 알아보자! (0) | 2021.01.01 |