기술면접 관련 및 참고하기

Java 8 vs Java 11 ?

지팡구 2023. 3. 5. 04:32

우리가 프로젝트를 진행하다보면 여러 라이브러리와 언어의 버전과 관련된 선택을 해야하는 경우가 발생합니다.

누군가는 버전업되면 다 좋은거 아니야? 라고 생각할 수있지만, 개발자들은 이를 하나하나 따져보고 적절한 trade off를 통해서 사용하고자 하는 도구들의 버전을 선택해야 한다고 생각합니다.

 

이 글은 자바의 버전 선택과 관련된 내용을 담고있습니다. 


Java라는 언어를 사용하는 사람들은 자바가 객체지향 언어인 것도 알고있고, 이식성의 장점이나 메모리를 자동으로 관리해주는 장점 등을 알고있다. 오늘은 이러한 부분을 넘어선 자바 8과 자바 11 버전을 비교해서 학습한 내용을 정리하려고 한다.

 

자바의 버전 

현재까지 자바는 19버전까지 출시되어 있으며 올해 3월 20 버전이 출시된다고 알려저있다. 

자바는 각 버전을 업데이트하면서 불필요한 기능들 지원하지 않고 새로운 방향성에 맞춰 추가된 기능들이 존재한다.

자바의 버전을 선택할 때 사람들은 11과 8을 많이 비교하는데, 직접 확인해보고 정리해보고자 한다. 

 

-- Java 8 --

우선 Java 8 버전에서는 많은 부분들이 추가되고 삭제되었는데 대표적으로 아래와 같다.

  • Lambda : 람다를 사용함으로써 더욱 간결하고 직관적으로 코드 구현이 가능해졌다.
  • Stream api  : 컬랙션을 처리해야하는 상황에서 반복적인 코드와 모호함이 섞인 코드, 멀티코어의 활용이 어려웠던 문제를 Stream을 통해 해결했다. 
  • Interface default and static methods : 인터페이스에 디폴트 메소드와 정적 메소드를 포함할 수 있게 되었다.
  • function interface (함수형 인터페이스) :  하나의 기능을 제공하는 단 하나의 추상 메소드를 정의하는 인터페이스가 추가되었다. 
  • LocalDate, LocalTIme 시간관련 라이브러리 제공 : 날짜 관련 로직을 쉽게 작성할 수 있도록 도와줌
  • Optional 지원 : 옵셔널을 통해 null에 대한 참조를 안전하게 가능하며, NPE 상황을 쉽게 처리가능 할 수 있도록 도와줌 
  • 배열의 병렬 처리 : 이전 버전까지만 해도 배열을 정리할 때는 Arrays.sort() 메소드를 사용했는데, 이 메소드는 정렬이 순차적으로 실행된다는 점, Java 8 버전부터는 Arrays.parallelSort()를 지원해줌으로써 병렬적으로 배열 정렬 가능
  • 가비지 컬렉터(GC) : Java 8의 Default Gc는 Parall GC

 

자바 8 버전에서 추가되거나 업그레이드 된 내용 중 가장 직관적이고 체감되는 부분만 정리했다.

(외에도 다양한 점이 바뀌었으니 직접 확인해보는 것이 좋겠다... )


-- Java 11 -- 

  • String class에 새로운 메소드 추가 
  • 컬렉션 인터페이스에 새로운 메소드 추가  : toArray() 메소드를 오버로딩 하는 메소드 추가 및 원하는 타입의 배열을 선택해서 반환이 가능해짐
  • Predicate 인터페이스에 새로운 메소드 추가 : 부정을 나타내는 not() 메소드 추가
  • 람다에서 로컬변수 var 사용 가능
  • JavaC를 이용해 컴파일 하지않고 바로 자바 파일을 실행할 수 있음
  • 가비지 컬렉터(GC) : Java 11의 Default GC는 G1 GC

마무리

 

What's New in JDK 8

What's New in JDK 8 Java Platform, Standard Edition 8 is a major feature release. This document summarizes features and enhancements in Java SE 8 and in JDK 8, Oracle's implementation of Java SE 8. Click the component name for a more detailed description o

www.oracle.com

 

java 버전별 차이 & 특징

Java 버전별 특징들을 찾아보면서 좋은 글이 있어 해당 글을 정리한 포스팅입니다.최신 Java 버전은 이제 6개월마다 따른다. 수많은 새로운 버전이 출시됨에 따라 기본적으로 다음과 같은 사용 시

velog.io

 

Java 11로 전환해야 하는 이유 - Azure

Java 8에서 Java 11로 전환할 경우의 이점을 평가 중인 의사 결정권자를 위한 요약 수준의 문서입니다.

learn.microsoft.com

이글을 정리하면서 추가적으로 알게된 내용

 

데이터 컬렉션과 스트림의 차이

 : 컬렉션의 주 관심사는 데이터를 어떻게 저장하고 접근하는지를 목표로 하지만, 스트림은 데이터를 어떻게 계산할지를 주 관심사로 두고있다는 점!

 

왜 사람들이 Java 8을 선택할까?

 : 우선 Java 8 버전과 11버전의 지원 기간을 비교했을때, 8 버전은 2030년까지 지원을 해주고, 11버전은 26년까지 지원해준다. 이말을 해석해보면 우선 8버전을 사용하는 비중이 높고, 안정성이 높다는 것을 알 수 있다.  자바 8 버전은 외부 개발 툴과의 연동성에 있어서 가장 안정적이라는 말을 들어 본 적이 있다. 그리고 자바 11부터는 요금 정책이 바뀌어서 Oracle JDK가 아닌 Open JDK를 사용해야한다고 알고 있다. ( 결국 안정적인 측면이 가장 컸다)