java

Java8 VS Java11

curiousKidd 2023. 12. 7. 10:54
반응형
현재 java8과 java11을 사용하고 있습니다.
하지만 java8과 java11의 차이점도 모르고 사용중이었기에, 정리를 해보았습니다.

Java 8의 특징

람다 표현식 (Lambda Expressions)

  • Java 8에서는 함수형 프로그래밍을 지원하기 위해 람다 표현식이 도입되었습니다. 이를 통해 익명 함수를 간결하게 표현할 수 있게 되었습니다.

스트림 API

  • 스트림 API는 데이터 컬렉션을 처리하기 위한 기능을 제공하며, 병렬 처리를 통해 성능을 향상시킬 수 있습니다.

메서드 참조 (Method References)

  • 메서드 참조를 사용하여 기존 메서드를 다른 메서드로 참조하고 호출할 수 있습니다.

기본 메서드 (Default Methods)

인터페이스에 기본 메서드를 추가할 수 있게 되어, 인터페이스 변경 시 기존 코드와의 호환성을 유지할 수 있습니다.

새로운 날짜 및 시간 API

  • java.time 패키지를 통해 더 강력하고 현대적인 날짜 및 시간 처리 기능이 제공됩니다.

Java 11의 특징

로컬 변수 문법 개선

  • var 키워드를 통해 지역 변수의 타입 추론이 개선되었습니다.

HTTP 클라이언트

  • Java 11에는 내장된 HTTP 클라이언트가 추가되어, HTTP 요청 및 응답을 쉽게 처리할 수 있습니다.

모듈 시스템

  • Java 9에서 도입된 모듈 시스템은 Java 11에서도 지원되며, 모듈화된 코드를 더욱 효율적으로 관리할 수 있습니다.

가상 머신 개선

  • Java 11은 성능 개선과 메모리 관리를 향상시키는 여러 가상 머신 개선을 포함하고 있습니다.

Java 8 vs Java 11

  • LTS (Long-Term Support)
    • Java 8: Java 8은 Oracle의 지원을 받는 LTS 버전으로서, 2030년까지 지원이 예정되어 있습니다.
    • Java 11: Java 11 역시 LTS 버전으로, 2026년까지 지원이 예정되어 있습니다. 여러 업체에서도 지원을 제공하고 있습니다.
  • 기능 추가
    • Java 8: Java 8은 람다 표현식, 스트림 API, 기본 메서드, 인터페이스의 변화와 같이 많은 새로운 기능을 도입했습니다. 이로 인해 코드 작성이 더 간결해졌고, 병렬 프로그래밍을 더 쉽게 할 수 있게 되었습니다.
    • Java 11: Java 11은 Java 9, 10의 중간 버전과 비교하여 상대적으로 적은 수의 새로운 기능을 포함하고 있습니다. 그러나 몇 가지 중요한 변경 사항이 있으며, 가상 머신 및 성능 개선도 이루어졌습니다.
  • 모듈 시스템
    • Java 8: Java 8에서는 모듈 시스템이 아직 도입되지 않았습니다.
    • Java 11: Java 11에서는 Java 9에서 도입된 모듈 시스템이 계속 발전하며 유지되었습니다. 이는 모듈화된 코드를 관리하는 데 도움이 됩니다.
  • 호환성
    • Java 8: Java 8은 대부분의 인기있는 라이브러리 및 도구와 호환됩니다.
    • Java 11: Java 11은 몇 가지 라이브러리 및 도구의 호환성 문제를 일으킬 수 있으므로 업그레이드 전에 주의해야 합니다.

Java 8에서 새로 추가된 기능.

  • Heap Permanent Generation 제거
  • 인터페이스에 디폴트 메소드와 정적 메소드 추가
  • 함수형 인터페이스, 람다 표현식, 메소드 참조 기능 추가
  • 스트림 API 도입
  • 새로운 날짜 관련 라이브러리 추가
  • Optional 지원
  • 병렬 처리 지원

 

Java 11에서 새로 추가된 기능.

  • Spring에 새로운 메소드 추가
  • Files 클래스에 새로운 메소드 추가
  • 컬렉션 인터페이스에 새로운 메소드 추가
  • Predicate 인터페이스에 새로운 메소드 추가
  • 람다에서 로컬 변수 Var 사용
  • 자바 파일 실행 방식 단순화

 

Java 8과 Java 11 중 무엇을 선택할 것인가?

현재 기업을 보면 Java 8 혹은 Java 11을 주로 채택하여 사용하고 있는 것 같다. 개인적으로는 Java 8의 기능을 수용하면서 더 나은 라이브러리가 추가 되었고, 성능이 개선된 G1 GC를 사용하는 Java 11을 사용하는 편이다. 또한 Java 11은 LTS 버전이므로 장기적인 지원이 보장된 버전이므로 앞으로도 유익한 기능이 나올 것으로 기대한다.

반응형

'java' 카테고리의 다른 글

Java11  (0) 2023.12.07
Java8  (0) 2023.12.07
자바 메모리 구조  (0) 2023.08.16
함수형 인터페이스  (0) 2023.04.06
Java Stream  (0) 2023.03.28