ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA 버전별 history
    프로그래밍 언어/JAVA 2020. 5. 3. 15:32

    Java version History

    JCP(Java Community Process; http://jcp.org ) → JSR(Java Specification Request)

    jcp는 JVM 명세 뿐만 아니라 새로운 자바 기술 명세를 제안하고 제공

    jcp에서 jsr 요청하여 해당 jsr이 tck를 거쳐야 비로소 완성

     

     

     

     

    JDK 1.0

    최초의 버전, 1996년 1월 23일에 발표

    JDK 1.1

    1997년 2월 19일에 발표, Inner class, JavaBeans, RMI, JIT compiler, reflection, JDBC 등이 추가되었다.

     

    RMI(java Remote Method Invocation) 

      • 서로 다른 컴퓨터들 상에 있는 객체들 사이의 상호작용을 가능하게 하는 방식

    Reflection

      • 실행중인 프로그램 내부를 검사하고 내부의 속성을 수정할 수 있도록 하는 기능

    Inner class

      • 클래스나 인터페이스 내부에 선언된 클래스
      • 코드를 읽기 쉽고 더 오래 유지하기 위해 사용

     

    J2SE 1.2

    codename : Playground

    1998년 12월 28일에 발표, Swing GUI, CORBA, Collections, Java plug in, Java IDL 등이 추가되었다.

    기존 59개의 패키지에서 1520개의 클래스로 규모가 늘어남

     

    JIT(just-in-time compilation)

      • 인터프리터 방식에 정적 컴파일 방식을 접목한 것, 같은 함수가 여러 번 불릴 때 캐싱함

    CORBA(Common Object Request Broker Architecture)

      • 어플리케이션들끼리 어디에 위치하든, 누가 만들었건 관계없이 상호간 통신을 보장하는 시스템 통합 기술

    Collections framework

      • 다수의 데이터를 쉽고 효과적으로 처리할 수 있도록 표준화된 방법을 제공하는 클래스의 집합
      • 인터페이스를 사용하여 구현
      • Iterator 와 Enumeration이용해 데이터를 효율적으로 얻을 수 있다.

     

     

    J2SE 1.3

    codename Kestrel

    2000년 3월 8일에 발표, HotSpot, JNDI, JPDA, JavaSound 등이 추가되고 RMI가 CORBA를 지원하도록 변경

     

    HotSpot JVM

      • Sun Microsystem사의 java 엔진 이름, JVM 구현의 한 종류

    JNDI(Java Naming and Directory Interface)

      • 네이밍 서비스와 디렉토리 서비스의 기능을 자바 프로그래밍 언어로 제공하는 인터페이스

     

    J2SE 1.4

    codename Merlin

    2002년 2월 6일에 발표, assert, 정규표현식, IPv6, Non-blocking I/O, JAXP, Java Web Strat 등을 지원

     

    Non-blocking I/O (Asynchronous I/O)

      • I/O시 멈추고 기다리지 않고 다른 작업을 진행하면서 처리를 기다린다.
      • 상황에 맞게 사용하면 자원을 효율적으로 사용할 수 있게 된다.

     

    JAXP

      • 통합 XML 파서 및 XSLT 프로세서

     

    J2SE 5

    codename Tiger

    2004년 9월 30일에 발표, 기능적으로 많은 변화가 생긴 버전 Generics, Annotation, Enumeration, Varargs, for each loop 등이 추가되었다.

     

    Generics

      • 일반적인 코드를 작성하고, 이 코드를 다양한 타입의 객체에 대하여 재사용하는 프로그래밍 기법
      • 주로 java Collection에서 많이 사용된다. (ArrayList<T>)

    Annotation

      • 자바 소스코드에 추가하여 사용할 수 있는 메타데이터의 일종
      • @Override, @Deprecated

    Varargs

      • 가변 인수, 필요에 따라 매개변수를 가변적으로 조정할 수 있는 기술

    For each loop

     

    라이브러리 개선

      • RMI 객체들에 대한 자동 stub 생성
      • Swing
      • java.util.concurrent

     

    Java SE 6

    2006년 12월 11일에 발표, JVM/Swing 최적화, GC알고리즘 개선

    JVM의 GC(Garbage Collection) 개선

      • 메모리 관리 기법, 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능

     

    Java SE 7

    2011년 7월 7일에 발표, Dynamic language 지원, switch문에서 String 사용, concurrency 강화 등 이 적용

     

    openjdk7

      • modular VM, lamda expression 지원
      • General Availability 는 2011/07/28 - 첫번째 버전 release
      • openjdk7은 cross-compilation을 지원하지 않음
      • jdk7은 parallel native library 지원
      • PARALLEL_COMPILE_JOBS=N
      • HOTSPOT_BUILD_JOBS=N

     

    Java SE 8

    2014년 3월 18일에 발표, Lambda Expression, Nashorn JavaScript, Annotation on Java types, 시간 API 등이 추가

    JEP 153 : JavaFX

    JEP 122 : JVM의 Permanent generation 삭제

     

    Lambda Expression

      • 식별자 없이 실행 가능한 함수 표현식
      • 불필요한 코드를 줄이고 가독성을 높이는 것이 목적

     

    openjdk8

      • functional interface
      • Lamda expression
      • stream, new data/time API
      • apache ant 없어지고, speed, multicore를 이용한 빌드 지원
      • partial and incremental builds
      • cross-compilation
      • easier environment setup

     

    Java SE 9

    2017년 9월 21일에 발표, Project Jigsaw를 이용해 JDK를 모듈화를 함

    Jshell, Ahead-of-time compilation 등 추가

     

    Java SE 10

    2018년 3월 20일에 발표

    로컬변수 타입 추론, 병렬처리 GC 등 추가

    JDK 레퍼지토리 하나로 통합 , JVM 힙 영역을 시스템 메모리가 아닌 다른 메모리에도 할당할 수 있게 됨

     

    JEP 307 : Parallel full GC for G1

     

    Java SE 11

    2018년 3월 20일 발표, 해당 버전은 LTS로 제공

    JavaFX, Java EE and CORBA modules have been removed from JDK

    Java 애플릿 및 Java Web Start은 더 이상 사용할 수 없음

    unicode 10.0.0 지원

     

    JEP 309: Dynamic class-file constants

    JEP 333: ZGC: a scalable low-latency garbage collector (Experimental)

    JEP 335: Deprecated the Nashorn JavaScript engine

     

    Java SE12

    2019년 3월 19일 발표

    GC:G1 알고리즘 개선

     

    JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)

     

    Java SE 13

    2019년 9월 17일 발표

     

    JEP-351: ZGC: Uncommit Unused Memory

     

    Java SE 14

    2020년 3월 17일 발표

     

    JEP-345: NUMA-Aware Memory Allocation for G1

    JEP-365: ZGC on Windows

    JEP-364: ZGC on macOS

    JEP-366: Deprecate the ParallelScavenge + SerialOld GC Combination

    JEP-363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector

    '프로그래밍 언어 > JAVA' 카테고리의 다른 글

    JVM3  (0) 2020.05.02
    JVM2  (0) 2020.04.26
    JVM  (0) 2020.04.26
    NIO - Buffer  (0) 2020.04.03
    추상 클래스와 인터페이스  (0) 2020.03.29
Designed by Tistory.