본문 바로가기

좋아하는 것_매직IT/1.spring

4.Spring, 스프링 프레임워크 5.0 의 새로운 기능에 대해서 알아볼까요?^^

반응형

스프링 프레임워크 5.0의 출현

  • 스프링 프레임워크 4.0에서 거의 4년만에 업그레이드가 됨.

스프링 프레임워크 5.0의 주요 발전사항

그럼, 주요 발전사항에 대해서 간략하게 알아볼께요.

  • 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 에서 지금 지원하는 업그레이드된 라이브러리 버전은 아래와 같음.
  • 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 코드에서 함수형 프로그래밍 사용
            • 람다
            • 스트림
  • Reactive 프로그래밍 지원
    • Spring Framework 5.0의 가장 중요한 기능 중 하나임.
    • MSA에서는 일반적으로 Event 기반 통신을 기반으로 구축되어 있음.
      • 즉, 애플리케이션은 Event or Message 에 반응하도록 작성됨.
    • Reactive 프로그래밍은 이벤트에 반응하는 애플리케이션을 구현하는 데 초점을 맞춘 프로그래밍 스타일을 제공함.
    • JAVA 8 에는 Reactive 프로그래밍을 위한 기능은 없음.
  • 함수형 Web Framework
    • Reactive 기능을 바탕으로 함수형 Web Framework를 제공함.
      • 함수형 Web Framework는 함수형 프로그래밍 스타일을 사용해 endpoint를 정의하는 기능을 제공함.

  • Jigsaw를 사용한 자바 모듈성
    • JAVA 플랫폼은 JAVA8이 나오기 전까지 모듈식이 아니였음.
      • 아래와 같은 중요한 문제를 갖고 있었음.
        • 플랫폼의 무거움
          • JAVA 모듈성은 지난 수십년간 우려의 원인은 아니였음.
            • but, Node.js 와 같은 새로운 경량 플랫폼을 사용하면서 JAVA 플랫폼이 무거워지는 문제를 해결해야 할 필요성이 대두됨.
        • JAR Hell
          • JAVA Class Loader 가 Class 를 찾으면 사용 가능한 Class에 대한 다른 정의가 있는지 알 수 없음.
            • 즉, 발견된 첫번째 Class가 바로 로드가 됨.
          • 애플리케이션에서 필요한 특정 Class 가 여러 Jar에 모두 있는 경우, 특정 Jar에 있는 해당 Class를 로드하도록 지정할 수 있는 방법은 없음.
    • OSGi(개방형 시스템 게이트웨이 발의)
      • 1999년에 시작된 JAVA 프로젝트에 모듈성을 도입하려는 발의 중 하나
        • 각 모듈은 아래와 같이 정의할 수 있음
          • imports
            • 모듈이 사용하는 다른 번들
          • exports
            • 번들이 반출하는 패키지
        • 각 모듈은 자체 생명 주기를 가질 수 있음.
          • 즉, 자체적으로 설치/시작/중지할수 있음.
    • Jigsaw는 JAVA에 모듈성을 제공하기 위해서 JCP(Java Community Process)에서 발의됨.
      • 아래는 주요 목적임.
        • JDK용 모듈러 구조 정의 및 구현
        • JAVA 플랫폼에 구축된 애플리케이션용 모듈 시스템 정의
    • Jigsaw 는 JAVA 9에 포함됨.
  • 코틀린 지원
  • 삭제된 기능
    • Spring Framework 5.0은 JAVA, JAVA EE 및 기타 다른 프레임워크의 기준 버전이 증가함에 따라 몇 가지 프레임워크에 대한 지원을 종료함.
      • Portlets
      • Velocity
      • JasperReports
      • XML Beans
      • JDO
      • Guava

 

  • 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 프로그래밍을 지원함.
    • Framework 의 최소 지원 버전
      • 제티 9.4
      • 톰캣 8.5
      • 하이버네이트 5.2
      • 그래들 3.4

결론

  • Spring Framework 는 5.0 버전이 출시되면서 많은 변화를 겪게됨.
    • 주요변화는 아래와 같음
      • Baseline 업그레이드
      • JDK9 런타임 호환성
      • Spring Framework 코드에서 JDK8 기능 사용
      • Reactive 프로그래밍 지원
      • 함수형 Web Framework
      • Jigsaw를 사용한 자바 모듈성
      • 코틀린 지원
  • 오늘도 Spring Framework 5.0 버전 및 Spring boot 2.0 에 대한 정보의 마술(?) 한가지 획득완료! 감사합니다. ^^
300x250