갓생사는 김초원의 개발 블로그
chocho_log
갓생사는 김초원의 개발 블로그
전체 방문자
오늘
어제
  • 분류 전체보기 (76)
    • 개발 (22)
      • Spring (4)
      • Java (3)
      • Database (2)
      • Elasticsearch (3)
      • ETC (3)
      • JPA (3)
      • 이슈 (1)
    • 코딩 테스트 (43)
      • 프로그래머스 (23)
      • 백준 (12)
      • TIP (8)
    • 자료구조 (2)
    • 알고리즘 (4)
    • 잡생각 (0)
    • 경험 (3)
      • AWS re:Invent 2024 (3)

블로그 메뉴

    공지사항

    인기 글

    태그

    • querydsl
    • war
    • jpa
    • 지연로딩
    • jar
    • Spring Boot Embedded Tomcat
    • Lazy Loading
    • 디자인패턴 #SOLID 원칙

    최근 댓글

    최근 글

    갓생사는 김초원의 개발 블로그

    chocho_log

    개발/Java

    JAVA 버전별 정리

    2021. 7. 22. 23:12

    JAVA를 주언어로 사용하는 개발자라면 JAVA 버전별 특징에 대해 꾸준히 업데이트 해놓으면 좋을것 같다. 

     

    ▶  JAVA 7

    • 2011년 7월 7일 발표
    • try-with-resource 추가 
    • switch문에서 String 사용 가능 (JAVA6에서는 switch문에서 String 사용할 수 없었다니..충격)
    • 타입추론(Type Inference): Diamond Operator <> 추가
      JAVA 7이전에는 선언시에도 제네릭 타입을 명시해야 했지만 JAVA 7부터는 컴파일러가 알아서 추론하게끔 가능해졌다.
      // JAVA 7 이전
      List<String> stringList1 = new ArrayList<String>();
              
      // JAVA 7 - Diamond Operator 추가
      List<String> stringList2 = new ArrayList<>();​

     

    ▶  JAVA 8

    • 2014년 3월 18일 발표
    • 오라클 인수 후 첫번째 버전, LTS(Long-Term-Support:장기 지원) 버전
    • 람다식(Lamda Expression), 함수형 프로그래밍 등장
    • new Date and Time API (LocalDate, LocalTime, LocalDateTime)
    • Interface default method
      - 인터페이스에 default 접근자로 메소드 선언이 가능해졌다. 또한 이를 구현하는 클래스는 default 메소드를 오버라이딩할 수 있다. 
    • Optional
    • PermGen Area 제거

     

    ▶  JAVA 9

    • 2017년 9월 21일 발표
    • 모듈시스템 등장(jigsaw)

     

    ▶  JAVA 10

    • 2018년 3월 20일 발표
    • var 키워드를 이용한 지역변수 타입 추론
    • 병렬처리 가비지컬렉션
    • 개별 쓰레드로 분리된 Stop-The-World
    • JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 할 수 있게됨

     

    ▶  JAVA 11

    • 2018년 9월 25일 발표, JAVA8에 이은 LTS 버전
    • Oracle JDK와 Open JDK의 분리 - 차이는 거의 없음
    • Oracle JDK의 구독형 유료 모델로 전환

     

    ▶  JAVA 12

    • 2019년 3월 19일 발표
    • switch문 확장
      - 이전 
      switch (day) {
          case MONDAY:
          case FRIDAY:
          case SUNDAY:
              System.out.println(6);
              break;
          case TUESDAY:
              System.out.println(7);
              break;
          case THURSDAY:
          case SATURDAY:
              System.out.println(8);
              break;
          case WEDNESDAY:
              System.out.println(9);
              break;
      }​

      - JAVA 12
      switch (day) {
          case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
          case TUESDAY                -> System.out.println(7);
          case THURSDAY, SATURDAY     -> System.out.println(8);
          case WEDNESDAY              -> System.out.println(9);
      }

     

    ▶  JAVA 13

    • 2019년 9월 17일 발표
    • switch문에 yield 예약어 추가

     

    ▶  JAVA 14

    • 2020년 3월 18일 발표
    • instanceof 패턴 매칭
    • record라는 데이터 오브젝트 선언 추가

     

    ▶  JAVA 15

    • 2020년 9월 15일 발표
    • EdDSA 암호화 알고리즘 추가
    • 스케일링 가능한 낮은 지연의 가비지 컬렉터 추가(ZGC)
    • Solaris 및 SPARC 플랫폼 지원 제거
    • 외부 메모리 접근 API
    • 클래스 봉인
      - 상속 가능한 클래스를 지정할 수 있는 봉인 클래스 제공 
      - 상속가능한 대상은 상위클래스 또는 인터페이스 패키지 내에 속해있어야 한다.

     

    ▶  JAVA 16

    • 2021년 3월 16일 발표
    • Vector API: 자동 병렬 프로세싱을 지원하는 자동 백터 API 추가 
    • Open JDK 소스를 Github에서 볼 수 있게됨.
    • 자바8에서 제거된 PermGen 대신 Metaspace 방식을 지원

     

    ▶  JAVA 17

    • 2021년 9월 15일 출시 예정 (두둥!)
    • JAVA8, 11에 이은 LTS 버전이라고 함

     

     

    모르는 것 투성이네.. 공부해야 할 것이 너무 많당 ㅠㅠ

     

    참고
    https://namu.wiki/w/Java#s-4.10
    https://www.skyer9.pe.kr/wordpress/?p=287

    '개발 > Java' 카테고리의 다른 글

    ThreadPoolExecutor 동작 원리  (0) 2025.03.10
    Java의 volatile 키워드  (0) 2021.10.21
      '개발/Java' 카테고리의 다른 글
      • ThreadPoolExecutor 동작 원리
      • Java의 volatile 키워드
      갓생사는 김초원의 개발 블로그
      갓생사는 김초원의 개발 블로그
      갓생사는 김초원의 개발 블로그 github: https://github.com/kimchowon

      티스토리툴바