본문으로 바로가기

오랜만에 Java를 다시 보니 다소 추가된 기능들이 있는듯하다.

정리하자!

 

계속되는 Java 업데이트 따라가기

JDK는 계속 업데이트 되고 있는데 어찌 따라가야하는가?

볼때마다 무언가 다른듯아닌듯 다르다! 

버전별 지원(Security Support) 기간 확인하기

개발환경 설정시 버전 뭐 쓰지? 할때 참고하자!

일단 LTS(Long Term Support)가 붙은 버전이 우선적으로 선택할 버전인걸로~

JDK 8은 2030년 12월 31일, JDK 11 2026년 9월 30일, JDK 17 2029년 9월 30일

 

Java/OpenJDK

Check end-of-life, release policy and support schedule for Java/OpenJDK.

endoflife.date

 

버전별 업데이트 내용 파악하기

JCP(Java Community Process)라는 자바 표준화 과정의 산출물을 따라가면 업데이트를 따라갈 수 있다.

여기서 나온 산출물인,

  • JSR(Java Specification Request): JDK의 신규 스펙 및 기술을 정리한 문서
  • JLS (Java Language Specification): JSR 표준 스펙을 버전별로 구체화하여 예제코드와 함께 개발 방법을 정의한 문서.
참고: https://jerry92k.tistory.com/15([Java] JEP(JDK Enhancement Proposal) 2021.11)

를 참조하면 자세히 알 수 있겠으나, 영어랑 친하지 않으므로 아래 위키를 활용!

 

자바 버전 역사 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 자바 언어는 JDK 1.0 이후로 여러 가지 변경 사항을 겪었을 뿐만 아니라 표준 라이브러리에 대한 수많은 클래스 및 패키지 추가를 거쳤다. J2SE 1.4 이후 Java 언어의

ko.wikipedia.org

 

Java 9. 모듈 개념 도입

이전에는 패키지 관리가 따로 없어서,

  • 의존성(dependency) 정의가 없어서 라이브러리간 관계가 복잡해지고 유지보수가 힘들었음.
  • 공개범위(scope) 정의가 없어서 유지보수 중 마구 사용해서 상호참조(reflection) 문제가 발생

하여, 패키지를 모듈로 그룹화하고 패키지-패키지-모듈-모듈 간의 관계를 교통정리해주자!

 

모듈 설정법(module-info.java)

module-info.java 설정법

예제

module java.sql {
    // java.base는 굳이 넣지 않아도 자동(default)으로 추가(dependency)되는 모듈
    // requires java.base;
    
    // requires XXX: XXX를 사용(의존)함.
    requires java.logging;
    
    // requires transitive XXX: 나를 사용하는 모듈은 XXX도 사용함.
    requires transitive java.transaction.xa;
    requires transitive java.xml;
    
    // exports A: A패키지에 속하는 모든 요소를 공개
    exports java.sql;
    
    // exports A to B: A패키지에 속하는 모든 요소를 B패키지에 공개
    exports javax.sql to ;

    // 이 모듈에서 사용하는 service를 지정
    // service란 인터페이스를 구현한 클래스, 추상클래스를 확장한 클래스의 객체
    // = 이 모듈은 java.sql.Driver의 소비자(consumer)
    uses java.sql.Driver;
    
    // 리플렉션에 의한 참조(상호참조) 허용
    opens com.example.c;
}

관련용어

  • transitive dependency(의존성 전이): a→b and b→c 이면 a→c 이다. (a→b: a는 b를 의존/사용함)
  • root module(루트 모듈): 어디든 시작점이 필요한 법!? void main함수와 같은 모듈정의 분석의 시작점.
참고: https://velog.io/@riwonkim/2.-모듈의-도입을-사용한-패키지-관리의-진화

 

 

 

 

반응형