본문 바로가기
Language & Library/JAVA

Java 버전별 특징(upto Java12)

by 댓츠굿 2018. 12. 2.




Java 개요

ㆍ썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어

ㆍ창시자는 제임스 고슬링

ㆍ2010년에 썬이 오라클에 인수되어서 현재 Java의 저작권자는 오라클이며, 2019년 1월부터 유료화되었다. 

   단, Java EE는 이클립스 재단의 소유이다.




Java 버전별 특징


Java 12

2019.03 

문법적으로 Switch문 확장

이외에 가비지 컬렉터 개선, 마이크로 벤치마크 툴 추가, 성능 개선




Java 11

2018.09

일반 지원은 2023년 9월, 연장 지원은 2026년 9월에 종료될 예정이다. 

이클립스 재단으로 넘어간 Java EE가 JDK에서 삭제되고, JavaFX도 JDK에서 분리되어 별도의 모듈로 제공된다. 

람다 파라미터에 대한 지역변수 문법 : (var x, var y) -> x.process(y)  =>  (x, y) -> x.process(y)

         IntStream.of(1, 2, 3)

               .filter((var i) -> i % 2 == 0)
               .forEach(System.out::println);

         IntStream.of(1, 2, 3)

               .filter(i -> i % 2 == 0)
               .forEach(System.out::println);

HTTP 클라이언트 표준화 기능 추가 : Java 9, 10에 사용되었던 jdk.incubator.http 패키지가 표준화되어 java.net.http 패키지로 추가

네스트 기반 액세스 컨트롤(Nest-based access controls)

    액세스 가능성을 확장하는 브릿지 메소드 삽입 지원 컴파일러의 필요성 제거

다이나믹 클래스-파일 콘스탄스(Dynamic class-file constans) 

    새로운 형태의 구체화 가능한 클래스파일 상수를 만드는데 요구되는 비용과 간섭을 줄이고, 표현력과 성능을 위한 보다 다양한 옵션 제공 

엡실론(Epsilon) 가지비 컬렉터 : 오버헤드의 최저지연과 할당 제한이 가능한 완전한 수동 가비지 컬렉터 적용

The Z Garbage Collector(ZGC) : 대기 시간이 낮은 확장 가능한(Scalable Low-Latency) GC이다.

플라이트 레코더(Flight Recorder) : 자바 애플리케이션과 핫스팟 JVM의 오류 해결을 위한 낮은 오버헤드 데이터 수집 프레임워크 제공

가장 커다란 변화는 바로 라이센스 부분.



Java 10

2018.03

ㆍvar 키워드를 이용한 지역변수 선언 및 타입추론 가능

불변(Unmodifiable) Collection 향상

ㆍ병렬 처리 가비지 컬렉션 도입으로 인한 성능 향상

ㆍ개별 쓰레드로 분리된 Stop-The-World

ㆍ루트 CA 목록 등 추가

ㆍJDK의 Repository가 하나로 통합

ㆍJVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 가능

ㆍ실험적인 Java 기반의 JIT(Just In Time) 컴파일러 추가

ㆍDeprecated된 API는 Java SE 10에서 모두 삭제




Java 9

2017

Java용 REPL, JShell 등장 (대화식 REPL(Read Eval print Loop) 도구 제공)

Modular System (Jigsaw)지원

불변 Collection 생성 메소드 제공

Java 9는 익명 클래스에 대한 Diamond Operator를 허용 (anonymous inner 클래스에서 diamond operator 사용 가능)

try-with-resources 개선

인터페이스 내 private 메소드 사용 가능

Reactive Stream API 추가

Optional To Stream

HTTP2 Client

ㆍiCMS GC Deprecated 




Java 8

2014

오라클 인수 후 첫번째 버전

JDK는 2개 버전으로 나뉨. 하나는 폐쇄적인 상업 코드 기반의 Oracle JDK, 하나는 오픈 소스 기반의 OpenJDK이다.

   - Oracle JDK는 OpenJDK에는 없는 재산권이 걸린 플러그인을 제공)

   - Oracle JDK에 존재하고 OpenJDK에는 없는 대표적 기능으로 글꼴 라이브러리와 Java Web Start가 있다. 

     사용자의 웹 브라우저에서 자바 애플릿을 실행하려면 필요한 기능이다. 서버 애플리케이션 개발에는 쓰이지 않는 기능들이다.

Lambda 및 함수형프로그래밍, Default Method Interface, Default Method이용한 다중상속지원, 메소드 참조

JEP에 의해서 새로운 기능들이 발의되기 시작.

병철처리에 접합한 구조로 진화

ㆍSerial/SerialOld GC는 Java 8부터 Deprecated 됨 (옛날 자바 버전으로 개발된 초창기 레거시 애플리케이션에서는 아직도 쓰임)

API : Nashorn (JS엔진), new Date and Time API, Stream API, Collection에 대한 함수형화 (Interface에 default로 인해 가능)

          새로운 날짜와 시간 API인 java.time 패키지를 제공



Java 7

2011 

JVM : Dynamic Language support (invoked dynamic - new byte operation)

Language : try-resource, String in Switch, generics 내 타입추론, 숫자에서 underscore 사용 가능

API : Concurrency 강화, NIO 강화, sort강화, crypto강화, GPU강화

JavaFX가 기본으로 포함

JDK 7에서 정식으로 G1 GC를 포함하여 제공

안정적인 ARM지원



Java 6

2006

가비지 컬렉터 G1(Garbage First) GC 지원

JDK 6에서는 G1 GC를 early access라고 부르며 그냥 시험 삼아 사용할 수만 있도록 한다.

보안, 성능 강화 

JVM/Swing에 있어 많은 Performance 향상(synchronization, compiler, GC,start-up time)




Java 5

2004

기능적으로 가장 많은 변화가 생긴버전 (Generics가 가장 대표적)

ㆍLanguageI: Generics , annotation, auto boxing, enum,vararg ,foreach, static imports 도입

API : java.util.concurrent API, scanner class






참조 : 나무위키


반응형