ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 버전 히스토리
    2022. 7. 4. comments
    반응형
     

    다시 만나게 된 Java

    잠깐 과거로 돌아가기 Java 언어는 대학 학부생 때 OOP 학습을 위해 수업을 들었었고 방학 때에는 JWT 기반 캘린더 프로그램을 토이프로젝트로 만들어본 추억이 있다. 재미있는 프로젝트였지만 C/C+

    www.morenice.kr

    지난 작성 글에 이어 Java의 버전 정책에 대해서 이야기하려고 한다.

    Java 버전의 시작

    Java는 베타버전에 이어 JDK 1.0 버전으로 시작하였고 최초의 stable 버전은 JDK 1.0.2였다. 여기서 JDK란 Java Development Kit의 줄임말로써 Java를 위한 개발도구를 말한다. 이후 J2SE로 명칭이 변경되어 J2SE 1.1, 1.2, ...등이 배포되었다가 결국 현재 사용되고 있는 Java SE로 버전 명칭이 변경되었다.

    Java SE는 버전 6부터 시작하게 되었는데, 8버전부터 LTS(long term support) 버전을 지원하게 된다.

    여기서 잠깐, LTS 버전이란

    LTS 버전이란 말 그래도 오랜 기간동안 지원하는 안정버전(stable version)을 뜻하는데, 다수의 안정 버전을 제공하는 OS, 개발 언어, 라이브러리등에서 주로 사용되는 버전 정책으로써 기능 변경 없이 버그 수정과 보안패치를 장기간 제공하여 사용자가 해당 소프트웨어를 안정적으로 사용할 수 있도록 한다.

    개발언어를 제공하는 조직(커뮤니티 또는 회사)에서는 신규 기능 및 개선 그리고 성능을 향상시킨 새로운 버전을 빠르게 출시하고 사용자에게 널리 알리고 싶을 것이다. 그래서 6개월에서 1년 단위의 짧은 릴리즈 기간으로 출시를 하게 된다. 하지만 짧은 주기로 릴리즈를 계속 하게 되면 버그 수정 및 보안패치를 관리해야 할 버전들 또한 많아지기 때문에 점점 많은 인력과 시간이 소요되게 된다. 대부분의 소프트웨어가 그렇듯이 생애주기를 설계하여 적절한 시기가 되면 이전 버전들은 지원을 중단함으로써 이러한 문제를 해결한다. 짧은 릴리즈 주기에 맞게 사용자 입장에서도 최소한 1년 단위로 개발언어 버전 업그레이드를 고려해야 한다. python, golang등 다양한 언어들이 6개월에서 1년 주기로 릴리즈를 하고 있다.

    한편 잦은 배포 주기는 사용자에게 피로감을 주게 되는 것은 사실이다. 또한 관련된 thrid-party 라이브러리들이 주요 버전 변화에 대해 함께 지원되어야 하는데 그렇지 않게될 가능성 또한 존재하게 된다. 장기간 보안패치 또는 버그 수정만 반영을 하게 되면 안정성은 좀 더 보장된다. Java, node.js, Linux kernel, Debian(Ubuntu)등 다수의 linux 배포판들이 LTS 버전을 운용한다.

    주요 히스토리

    Version Release date
    Java SE 8 (LTS) March 2014
    Java SE 9 September 2017
    Java SE 10 March 2018
    Java SE 11 (LTS) September 2018
    Java SE 12 March 2019
    Java SE 13 September 2019
    Java SE 14 March 2020
    Java SE 15 September 2020
    Java SE 16 March 2021
    Java SE 17 (LTS) September 2021
    Java SE 18 March 2022
    Java SE 19 (will be...) September 2022

    Java는 SE 9 버전 이후로 stable version에 대해서 6개월 단위로 신규 버전 제공하며 2년 주기로 LTS 버전을 제공하는 정책을 가지고 있다. Oracle의 Java가 출시된 이후 OpenJDK가 이후 출시되기 때문에 대부분의 신규 버전 제공 시기는 자연스럽게 Oracle 버전에 종속적이다.

    가장 중요한 만료 정책은 Oracle Java 또는 OpenJDK 중 어떤 것을 사용하는지에 따라 다르다.

    2014년 최초의 LTS버전인 Java SE 8이 출시되었고 약 4년 뒤에 Java SE 11(LTS) 버전이 출시, 그리고 그 3년 뒤인 17버전이 LTS로 최근 출시되었다. 재미있는 점은 lambda, stream등이 도입된 modern java의 시작이자 첫 LTS 버전인 Java 8 버전은 굉장히 오랜기간 동안 관리한다는 점이다. 실제로 OpenJDK에서도 2026년까지 지원할 계획이고 Oracle에서는 기한이 별도로 정해지지 않을 정도이니 전세계 Java 사용 버전을 분류한다면 Java 8 비중이 상당할 것이다.  Java 개발자들에게 그 다음으로 많이 활용되는 버전은 Java 11로 유추되는데 OpenJDK에서는 2024년까지 지원된다. Java 8보다 2년 빨리 지원이 종료된다. 

    최근 Java 생태계에 입문하고 개발을 시작하면서 대부분의 프로젝트는 OpenJDK의 Java SE 11를 사용하였는데 신규 프로젝트에 대해서는 Java SE 17을 선택하였다. 17버전은 LTS 버전이기도 하고 약 1년정도 지났기 때문에 주요 third-party들이 무리없이 지원될 것이라 생각했기 때문이다. OpenJDK에서는 약 6년정도 LTS 버전을 지원해주니 만약 새로운 프로젝트를 시작한다면 LTS 버전만 선택해서 사용하는 것도 유지보수 관점에서 좋은 전략이 될 수 있다.

    See also

    반응형

    댓글

Designed by Tistory.