[기술 면접] Java 11 vs Java 17 차이

송진영·2023년 8월 18일
3

기술면접

목록 보기
14/24

Java 11

  • 인터페이스에 private 메서드 가능
  • Open JDK와 Oracle JDK 통합
  • G1 GC가 기본 GC로 설정
  • 람다 지역변수 var 키워드 사용 가능
  • 컬렉션, 스트림 등 메소드 추가
  • 지역 변수의 final 효과 확장

Java 17

  • recode class 키워드 사용 가능
  • 난수 생성 API 추가
  • 봉인 클래스(Sealed Class) 정식 추가
  • String 여러 줄 사용시 텍스트 블록 기능 사용 가능
  • NumberFormat, DateTimeFormatter 기능 향상
  • Stream.toList() 사용 가능
  • NullPointerException이 어떤 변수에 의해 발생했는지 설명
  • ZGC 도입

Java 11 vs Java 17 개선점

  • 로컬 변수 유형 추론의 개선:
    자바 11에서는 'var' 키워드를 사용하여 로컬 변수의 유형을 추론할 수 있게 되었다. 자바 17에서는 로컬 변수 유형 추론이 더 개선되었으며, 람다식과 익명 클래스에서도 'var'를 사용할 수 있게 되었다.

  • 새로운 기능과 개선된 API:
    자바 17에서는 다양한 새로운 기능과 API 개선이 이루어졌다. 예를 들어, 'Sealed Classes'가 도입되어 클래스의 상속을 제한하고, 'Pattern Matching for switch'가 확장되어 패턴 매칭 기능이 향상되었다.

  • Garbage Collector 개선:
    자바 17에서는 'Z Garbage Collector'의 개선과 함께 새로운 'Shenandoah Garbage Collector'가 추가되었다. 이러한 변경으로 GC 성능과 응답 시간이 개선되었다.

  • 암호화 관련 업데이트:
    자바 17에서는 암호화와 보안 관련 업데이트가 이루어졌다. 암호화 알고리즘과 보안 기능의 업데이트로 애플리케이션의 보안성이 향상되었다.

  • 언어 및 컴파일러 개선:
    자바 17에서는 언어 및 컴파일러 개선이 이루어져 더 나은 코드 작성이 가능해졌다. 예를 들어, 'sealed', 'record', 'permits' 등의 키워드를 사용하여 코드를 더 명확하고 안전하게 작성할 수 있다.

  • Deprecation과 Removal:
    자바 17에서는 일부 구식된 기능들이 표시되어 Deprecated 상태로 변경되거나, 더 이상 사용되지 않는 기능들이 제거되었다.

  • 성능 개선:
    자바 17은 전반적으로 성능 개선이 이루어져 더 빠르고 효율적인 실행이 가능해졌다.

  • 다양한 다른 업데이트:
    자바 17은 모듈 시스템, 컨테이너 지원, 런타임 성능 분석 등 여러 가지 다양한 개선 사항들을 포함하고 있다.

17이 더 좋아보이는데 왜 11을 쓸까?

  • 레거시 코드와의 호환성:
    기존에 자바 11을 사용하던 프로젝트나 레거시 코드와의 호환성을 유지해야 하는 경우에는 레거시 시스템을 유지보수하거나 통합해야 하는 경우 자바 17로 업그레이드 하는 것에 어려움을 초래할 수 있어 자바 11을 유지하는 것이 적절할 수 있다.

  • 프로젝트 특성과 요구사항:
    특정 라이브러리나 프레임워크가 자바 11을 기반으로 개발되었거나, 특정 기능을 지원하는 경우에는 자바 11을 사용하는 것이 유리할 수 있다.

  • 개발자 스킬과 경험:
    프로젝트 팀의 개발자들이 자바 1에 더 익숙하고 경험이 있을 경우 자바 11을 선택하는 것이 더 효율적일 수 있다.

  • 이전 버전과의 호환성 유지:
    자바 11은 이전 버전과의 호환성 유지를 하는 데 도움이 될 수 있다. 자바 17은 자바 8 이후의 버전과의 차이가 더 크므로, 업그레이드에는 더 많은 작업이 필요할 수 있다.

결론

2021과 2022년도에는 아직 자바 11을 사용하는 곳이 더 많은 것을 볼 때에도 결국에는 현재 프로젝트와 팀의 개발 상황에 맞는 자바 버전을 사용하는 게 좋을 것 같다.

profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글