본문 바로가기
[ java ]

Java 8을 사용하는 이유? Java 11과 비교, Java 버전에 맞는 JDK 이름

by 히앤님 2022. 8. 31.
반응형
SMALL

SMALL

1. 왜 JAVA 8을 사용하나?

1) Oracle 지원기간이 길다.

Oracle JDK 지원 기간이 다음과 같다.

Java 8 : 2030년 12월
Java 11 : 2026년 9월
Java 17 : 2029년 9월

옛날에 나온 Java 8이 그 이후 나온 11과 17보다 길다.

2) 자바는 객체지향형 프로그램이지만 JDK1.8부터 함수형 프로그래밍도 지원한다.

객체지향형 프로그래밍은 프로그램을 명령어의 목록으로 보는 것이 아니라 여러개의 독립된 단위(=객체)로 보기 시작하여 묶고, 재사용하고, 이리저리 만져서 조립하는 방법이라고 표현할 수 있다.

절차지향형 프로그래밍은 말 그대로 순서대로 진행하는 것이다.

함수형 프로그래밍은 순수한 함수를 사용해서 상태를 제어한다기 보다는 빨리 처리하는데 초점을 맞춘다. 실행 순서를 지정할 필요가 없기 때문에 비절차형 언어라고도 부른다. 외부에 영향을 받지 않아 동일한 입력값을 넣으면 항상 동일한 리턴값을 반환하는 함수 기능을 수행한다. 때문에 함수의 실행이 프로그램에 영향을 주지 않는다. 쉽게 말해 객체지향 프로그래밍은 객체들의 관계를 중심으로 긴밀한 관계성이 있어 상태에 따라 결과가 달라질 수 있지만, 함수형 프로그래밍은 그 자체로 처리만 해주기 때문에 각각의 동작들이 분리되어 있어 프로그램이 얼마나 오래 실행되고 있었는지 상관없이 같은 결과값을 도출해준다.(참조 투명성 – 값을 다시 할당하지 않는 것)

JDK 1.8은 2014년도에 출시되었고 다음과 같은 기능과 특징들이 있다.

람다식(Lambda expressions) - Stream
함수형 인터페이스 (Functional Interface)
디폴트 메서드 ( Default Method)
JVM의 변화
병렬 배열 정렬(Parallel Array Sorting)
컬렉션을 위한 대용량 데이터 처리 ( 스트림 )
Optional
Base64 인코딩과 디코딩을 위한 표준 API
새로운 날짜, 시간 API (Date & Time API

Java 8 을 기점으로 시대의 흐름에 맞게 병렬 프로세싱을 활용하고자 했고, 그로 인해 기존 버전에서는 구현하기 힘들었던 부분을 함수형 프로그래밍과 비동기 논블로킹 방식을 도입하여 해결했다. 

Java11은 기능추가가 된 것들이 많다. 그럼에도 불구하고 java8을 사용하는 이유는

1) 외부 개발 툴과의 연동성에서 가장 안정적이다. java11부터 요금정책이 바뀌어서 Oracle JDK 말고 Open JDK를 사용해야함.
2) Java11과 크게 차이가 나지 않는다. 따라서 java8 릴리즈 지원 안하면 그때 버전 업그레이드를 해도 됨.

2. JAVA 버전에 맞는 JDK 이름은?

원래는 Java SE 1.1, Java SE 1.2 같은 이름이다가 java 5부터 숫자로 붙여진다.
java SE 8 까지는 JDK 버전을 찍으면 JDK 1.8.x.x로 찍히는데 9버전부터는 그냥 JDK 9.x.x로 나온다.
따라서 Java 8 까지는 JDK1.8이라고 쓰지만, 9 이상은 JDK 9 로 쓴다.

자바 버전

java8 까지는 JRE와 JDK를 따로 다운로드 할 수 있도록 제공했다.

하지만 java9부터는 이런구분이 사라지고 항상 JDK를 다운로드하도록 변경되었다.

JDK의 디렉토리 구조도 변경되어 더이상 명시적인 JRE 폴더가 없다.

 

JRE(Java Runtime Environment) : JAVA 로만 개발할 때 사용되는 도구들 포함(JVM + java command-line tool)

JDK(Jaba Development Kit) : JRE + 컴파일러 + javadoc + javac 등등 기타 도구

 

반응형
LIST

댓글