Java Version History and Features

Java Version History and Features - HowToDoInJava

 

Java Version History and Features

Learn about the different version history of java and features. This page covers all versions from JDK 1 to the latest Java 17 release.

howtodoinjava.com

버전별 변경사항(eng)

 

Java Versions and Features

Java Versions and Features

 

Java Versions and Features

You can use this guide to get practical information on how to find and install the latest Java, understand the differences between Java distributions (Adoptium, AdoptOpenJdk, OpenJDK, OracleJDK etc.), as well as get an overview of Java language features, i

www.marcobehler.com

 

java 버전별 차이 & 특징 (****한글판)

java 버전별 차이 & 특징

 

java 버전별 차이 & 특징

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

velog.io

java 8

  • Lambda
    Java 8 이전 익명 클래스의 사용을 람다를 이용하여 더욱 간결하고 직관적으로 구현 가능
  • Stream
    자바 8은 스트림 API를 통해 컬렉션을 처리하면서 발생하는 모호함과 반복적인 코드 문제와 멀티코어 활용 어려움이라는 두 가지 문제를 모두 해결

Java 9

     모듈시스템 등장(jigsaw)

Java 10

  • var 키워드
  • 병렬 처리 가비지 컬렉션 도입으로 인한 성능 향상
  • JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 가능

자바 버전별 역사 및 특징

 

자바 버전별 역사 및 특징

자바 버전별 역사 및 특징 JDK 1.0a2 1995년 5월 23일 발표. 자바 언어 자체가 정식으로 발표된 날 이때의 명칭은 Oak JDK 1.0 1996년 1월 23일 발표 1.0.2 버전에서 이름이 Java 로 변경 JDK 1.1 1997년 2월 19..

techvu.dev

위와 비슷함( Java12 까지 정리됨)
Java SE 10
2018년 3월 20일 발표 일반 지원은 2018년 9월에 종료되었다. var 키워드를 이용한 지역 변수 타입 추론

병렬 처리 가비지 컬렉션, 개별 쓰레드로 분리된 Stop-The-World 등이 추가 되었다.

  • 기존에는 Stop-The-World 가 발생하면 GC 를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작한다. 근데 이게 개별 쓰레드로 분리되어서 Stop-The-World 시간이 개선된것 같다.
    JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당할 수 있게 되었다.

JDK에서 루트 인증 기관(CA) 인증서의 기본 세트를 제공하게 되었다. Enhanced for Loop 를 위한 바이트코드 생성

  • Enhanced for Loop 에 대한 바이트코드 생성이 개선되어 해당 루프에 대한 컴파일 접근 방식이 개선되었다.

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

 

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

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

docs.microsoft.com

MS 문서?

(8과 11 비교 중)

G1GC
Java 11의 기본 가비지 수집기는 G1GC(G1 가비지 수집기)입니다. G1GC의 목표는 대기 시간과 처리량 간의 균형을 유지하는 것입니다. G1 가비지 수집기는 높은 확률의 일시 중지 시간 목표를 충족하여 높은 처리량을 달성하려고 시도합니다. G1GC는 전체 컬렉션을 방지하도록 설계되었지만 동시 컬렉션이 메모리를 충분히 빨리 회수할 수 없는 경우 전체 GC 대체가 발생합니다. 전체 GC는 젊고 혼합된 컬렉션과 동일한 수의 병렬 작업자 스레드를 사용합니다.


병렬 GC

병렬 수집기는 Java 8의 기본 수집기입니다. 병렬 GC는 여러 스레드를 사용하여 가비지 수집 속도를 높이는 처리량 수집기입니다.


엡실론

엡실론 가비지 수집기는 할당을 처리하지만 메모리를 회수하지는 않습니다. 힙이 소진되면 JVM이 종료됩니다. 엡실론은 수명이 짧은 서비스와 가비지를 사용하지 않는 것으로 알려진 애플리케이션에 유용합니다.

 

JAVA 버전별 특징

JAVA 버전별 특징 (tistory.com)

 

JAVA 버전별 특징

JAVA 8 기본 GC > Parallel GC Lambda Expression Repeating Annotation import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Repea..

kudl.tistory.com

JAVA 8

  • 기본 GC > Parallel GC
  • Lambda Expression
  • Repeating Annotation
  • 새로운 날짜와 시간 API(LocalDate, LocalTIme, LocalDateTime)
  • Interface Default Method
  • Stream API

JAVA 9

  • Java를 인터프리터 언어 셸처럼 사용할 수 있는 JShell이 추가
  • private 인터페이스 메소드
  • immutable collection
  • 64비트 버전만 출시
  • 프로퍼티 파일에 UTF-8 지원

JAVA 10

  • var 키워드를 이용한 지역 변수 타입 추론
  • 병렬 처리 가비지 컬렉션
  • 개별 쓰레드로 분리된 Stop-The-World
  • 루트 CA 목록

JAVA 11

  • 기본 GC > G1 GC
  • 람다 파라미터에 대한 지역 변수 문법
  • 엡실론 가비지 컬렉터

엡실론 가비지 수집기는 할당을 처리하지만 메모리를 회수하지는 않는고 힙이 소진되면 JVM이 종료된다. 엡실론은 수명이 짧은 서비스와 가비지를 사용하지 않는 것으로 알려진 애플리케이션에 유용하다.

Epsilon GC를 사용할 경우 우리가 작성한 어플리케이션이 외부 환경으로부터 고립된 채로 실행되기 때문에 실제 내 어플리케이션이 얼마나 메모리를 사용하는 지에 대한 임계치나 어플리케이션 퍼포먼스 등을 보다 정확하게 측정할 수 있다.

  • HTTP 클라이언트 표준화(HttpClient 추가)

JAVA 12

  • Shenandoah GC 추가. Shenandoah는 ZGC와 비슷하게 대량의 메모리 처리에 우수한 퍼포먼스를 내지만 좀 더 많은 옵션을 제공한다는 장점이 있다. Shenandoah는 레드 햇에서 개발한 GC인데, 실제로는 ZGC보다 앞선 Java 8부터 개발하기 시작해서 12가 나올 때 release를 하였다

[9 부터 G1GC 가 default]

 

나만 모르고 있던 - Java 9 (Java9 빠르게 훑어 보기)

나만 모르고 있던 - Java 9 (Java9 빠르게 훑어 보기) | Popit

 

나만 모르고 있던 - Java 9 (Java9 빠르게 훑어 보기) | Popit

지난 9월 공식 릴리즈된 Java9에 대해서 알아 보고자 구글링 통해서 찾은 문서중 괜찮은 문서 가 있어서 발번역해 봅니다. 본 문서는 Java9의 신규기능과 변경사항에 대해 빠르게 훑어 보는것을 목

www.popit.kr


gc

Java 가비지 컬렉터(GC) 이해하기

Java 가비지 컬렉터(GC) 이해하기

 

Java 가비지 컬렉터(GC) 이해하기

Garbage Collector(GC)란? 우선 GC가 뭐하는 녀석인지 살펴보겠습니다. 가비지 컬렉터는 가비지 컬렉션(Garbage Collection)을 해주는 녀석입니다. 한글로 하면 쓰레기 수집인데, 도대체 무슨 쓰레기를 수집

readystory.tistory.com

우선 Java 11에서는 EpsilonZ Garbage Collector(ZGC)가 추가되었습니다. 엡실론이라니 이름이 멋있어서 무슨 뜻이 있나 하고 검색해보니 그리스어로 숫자 5라는 의미도 있고, 엡실론 델타 논법이라 해서 수학적 용어로도 쓰인다고 합니다.(그래서 왜 GC 이름이 엡실론인건데..)

Epsilon은 메모리 할당은 처리하지만 사용되지 않는 영역에 대해 재활용하지 않습니다. 그리고 기존에 다른 알고리즘의 GC들은 Java Heap 영역이 가득 찼을 경우 OS에 요청하여 추가적으로 Heap 영역을 할당 받았는데, Epsilon의 경우 Java Heap 영역을 모두 소진하게 되면 JVM이 Shut down 됩니다. Epsilon의 목적은 제한된 영역의 메모리 할당을 허용함으로써 최대한 latency overhead를 줄이는 데에 있습니다. Epsilon GC를 사용할 경우 우리가 작성한 어플리케이션이 외부 환경으로부터 고립된 채로 실행되기 때문에 실제 내 어플리케이션이 얼마나 메모리를 사용하는 지에 대한 임계치나 어플리케이션 퍼포먼스 등을 보다 정확하게 측정할 수 있습니다.

ZGC대량의 메모리를 low-latency로 잘 처리하기 위해 디자인 된 GC 입니다. Oracle에 따르면 multi-tera bytes 크기의 Heap도 관리할 수 있다고 합니다. ZGC는 어플리케이션과 Concurrently하게 동작하는데, Heap Reference를 위해 Load barrier를 사용합니다. 이 Load barrier는 이전 버전에서 사용하던 G1(Garbage First) GC보다 딜레이가 낮습니다. Java 12를 기준으로 했을 때 ZGC의 경우 64bit 운영체제에서만 동작한다고 하는데, 이는 ZGC가 64비트 크기의 Color Point 방식으로 Heap 영역에 있는 객체들을 관리하기 때문입니다. ZGC가 내세우는 최대 장점 중 하나는 'stop-the-world'의 시간이 절대 10ms를 넘지 않는다는 것인데, 구체적인 숫자로 자신있게 얘기하는 것 보니 신뢰해도 좋을 것 같습니다.

마지막으로 Java 12에서 도입된 GC는 Shenandoah GC 입니다. Shenandoah는 ZGC와 비슷하게 대량의 메모리 처리에 우수한 퍼포먼스를 내지만 좀 더 많은 옵션을 제공한다는 장점이 있습니다. Shenandoah는 레드 햇에서 개발한 GC인데, 실제로는 ZGC보다 앞선 Java 8부터 개발하기 시작해서 12가 나올 때 release를 한거라고 합니다. 그 때문인지 Java 8, 10 버전에서도 호환이 가능합니다.


리액티브 프로그래밍

[RxJava] RxJava 프로그래밍(1) - 리액티브 프로그래밍

[RxJava] RxJava 프로그래밍(1) - 리액티브 프로그래밍

 

[RxJava] RxJava 프로그래밍(1) - 리액티브 프로그래밍

서버 다수와 통신하게 되면 API 호출 각각에 콜백을 추가하게 된다. 콜백이 늘어나면 애플리케이션의 복잡성도 증가(callback hell)하게 된다. RxJava는 자바로 리액티브 프로그래밍을 할 수 있는 라이

12bme.tistory.com

리액티브 프로그래밍데이터 흐름과 전달에 관한 프로그래밍 패러다임이다. 기존의 명령형(imperative) 프로그래밍은 주로 컴퓨터 하드웨어를 대상으로 프로그래머가 작성한 코드가 정해진 절차에 따라 순서대로 실행된다. 그러나 리액티브 프로그래밍은 데이터 흐름을 먼저 정의하고 데이터가 변경되었을때 연관되는 함수나 수식이 업데이트되는 방식이다.

 

Reactive 프로그래밍이란?

1. Reactive 프로그래밍이란?

 

1. Reactive 프로그래밍이란?

Reactive에 대한 글을 써보려 합니다. ^^;; 병렬 처리 라이브러리 중 하나인 Coroutine에 대한 글은 이전에 작성했었는데 Reactive에 대한 글은 작성한 적이 없더라구요. Reactive에 대한 글을 정리하려는

als2019.tistory.com

데이터와 데이터 스트림에 영향을 미치는 모든 변경 사항을 관련된 모든 당사자들에게 전파하는 모든 프로그램을 리액티브 프로그램이라고 할 수 있습니다. 리액티브 프로그래밍을 하면 다음과 같은 이점을 얻을 수 있습니다.

  • 간결해진 Thread 사용
  • 간단한 비동기 연산
  • 콜백 지옥의 제거

Reactive Programming 101 : 리액티브 프로그래밍이 뭔가요

Reactive Programming 101 : 리액티브 프로그래밍이 뭔가요 | juneyr.dev

 

Reactive Programming 101 : 리액티브 프로그래밍이 뭔가요

그날이 왔다. 여러가지 api 콜을 합쳐서 다시 하나의 응답으로 만들어 내보내주는 코드를 보는데, 이해를 전혀 못하겠는 때가.. 그래서 이번주는 Reactive Programming 101이다. 처음에 구현체로 내가 마

juneyr.dev

 

'링크모음' 카테고리의 다른 글

CI/CD  (0) 2022.08.16
JVM  (0) 2022.08.16
스트림 API  (0) 2022.08.16
GC 방식  (0) 2022.08.16
모듈시스템  (0) 2022.08.16

+ Recent posts