백엔드 멘토링

2023.02.01 - Java 8의 특징

piedra_de_flor 2023. 2. 2. 17:20

먼저 자바의 버전에 대해서 말하자면 Java는 6개월에 새로운 버전을 출시하며, 3년 마다 LTS 버전을 출시한다는 정책을 가지고 있다.

여기서 LTS란 Long Term Support의 약자로 유지보수를 지원하는 버전이다. 쉽게 말해 자바의 새로운 버전이 6개월 마다 나온다고 하더라도 LTS 버전은 여전히 지원이 된다는 얘기이다

현재까지 출시된 LTS 버전들은 다음과 같다.

 

  • 2014년 java 8
  • 2017년 java 11
  • 2021년 java 17

 

javaSE9 이후로는 2년 마다 LTS 버전을 출시하기로 했다.

2014년에 나왔음에도 불구하고 현재까지도 java 8을 사용하는 업계들이 많기에 java 8 의 특징을 알아놓는 것은 매우 유용하다.

 


 

java 8 의 특징

 

  1. Lambda (람다) 표현식

java에서 함수형 프로그래밍을 구현할 수 있도록 해주는 기능이며, 일반적으로 한 메소드를 작성할 때 -> 를 사용해 별도의 메소드 작성 대신 간단하게 표현할 수 있도록 해주는 기능이다.

public int plus(int a, int b) {
    return a + b;
}

기존에 이러한 정수 a와 b를 받아 더해주는 메소드가 있었고, 이 메소드를 람다표현식으로 바꾸어 주면

 

(a, b) -> a + b;

 

이러하게 매우 간단한 짧은 문장으로 바꾸어 작성 할 수 있다.


 

  2. Stream

 

기존의 for문이나 while 문과 같이 반복문을 처리하는 기능으로 for문과 while문에 비해 멀티스레딩(병렬처리) 이 가능하다라는 차이가 존재한다.

반복문을 처리할 때 스레드 풀에 남는 스레드가 있다면, 스레드들을 가져와서 작업을 나누어 작업하는 방식이다.

 


 

 

 3. interface - default 메소드

 

기존의 인터페이스 에서는 메소드에 대한 구현이 불가능 했다, 하지만 하나의 인터페이스안에서도 여러 클래스에서 공통적으로 사용되는 메소드가 있을 수 있다.

그럴 때 java 8 이전에서는 각각 클래스 마다 메소드를 일일히 하나씩 구현을 해줘야 하는 불편함이 있었지만

default 메소드는 인터페이스 내에서도 메소드를 구현할 수 있게끔 해주는 기능이다.

 


 

 

  4. optional 

 

하나의 객체가 null 값을 가질 때 Nullpointerexception등 여러 문제점이 발생 할 수 있다.

이러한 문제들의 발생을 예방하는 차원에서 null값을 가지는 객체를 보다 안전하게 처리하기 위한 Wrapper 클래스이다.