반응형
현재 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 버전이므로 장기적인 지원이 보장된 버전이므로 앞으로도 유익한 기능이 나올 것으로 기대한다.
반응형