Java/Basic

Java 11 vs 17 vs 21: 주요 변화와 코드로 살펴보기

마시멜로를찾아서 2025. 3. 24. 10:16
반응형

🚀 Java 11 vs 17 vs 21: 주요 변화와 코드로 살펴보기

자바(Java)는 지속적으로 새로운 기능과 성능 개선을 선보이며 발전하고 있습니다. 이번 글에서는 Java 11, Java 17, 그리고 최신 버전 Java 21의 핵심 기능을 간단한 코드 예제와 함께 비교해보겠습니다.


📌 Java 11 (LTS)

Java 11은 현재 가장 널리 쓰이는 LTS(Long-Term Support) 버전입니다.

🔑 주요 특징

  • var 키워드 활용 확장
  • HttpClient API 정식 도입
  • Lambda 표현식의 간결화

📗 코드 예시: HttpClient 사용하기

import java.net.http.*;
import java.net.URI;

public class Java11HttpClientExample {
    public static void main(String[] args) throws Exception {
        var client = HttpClient.newHttpClient();
        var request = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com"))
            .GET()
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

✅ Java 11의 좋은 점

  • 간단하고 명료한 HTTP 요청 코드 작성 가능
  • 별도의 외부 라이브러리 없이 표준 라이브러리로 웹 요청 수행 가능

📌 Java 17 (LTS)

Java 17은 생산성과 유지보수성을 크게 높인 최신 LTS입니다.

🔑 주요 특징

  • Switch 표현식(Switch Expressions)
  • 텍스트 블록(Text Blocks)
  • Record 클래스(불변 데이터 클래스) 추가

📗 코드 예시: Switch 표현식과 Record 클래스 활용하기

public class Java17Example {
    record Person(String name, int age) {}

    public static void main(String[] args) {
        Person person = new Person("John", 30);

        String description = switch (person.age()) {
            case 20 -> "Young";
            case 30 -> "Adult";
            default -> "Unknown";
        };

        System.out.printf("%s is %s.\n", person.name(), description);
    }
}

✅ Java 17의 좋은 점

  • Switch 문이 더욱 간결하고 표현력이 높아짐
  • Record 클래스 덕분에 간단한 데이터 객체를 쉽게 정의 가능
  • 텍스트 블록을 통해 다중 라인 문자열을 보다 편리하게 처리 가능

📌 Java 21 (LTS)

Java 21은 최신 LTS 버전으로서, 가상 스레드(Virtual Threads)와 같은 혁신적인 기능을 제공합니다.

🔑 주요 특징

  • 가상 스레드(Virtual Threads) 도입
  • 패턴 매칭 기능의 확장(Pattern Matching for switch)
  • 순서가 보장되는 컬렉션(Sequenced Collections) 제공

📗 코드 예시: 가상 스레드와 패턴 매칭 활용하기

public class Java21Example {
    public static void main(String[] args) throws InterruptedException {
        // 가상 스레드 사용 예시
        Thread thread = Thread.ofVirtual().start(() -> {
            System.out.println("Hello from Virtual Thread!");
        });
        thread.join();

        // 패턴 매칭 사용 예시
        Object obj = "Hello, Java 21";

        String result = switch (obj) {
            case String s when s.length() > 5 -> "긴 문자열입니다.";
            case Integer i -> "숫자: " + i;
            default -> "알 수 없는 타입입니다.";
        };

        System.out.println(result);
    }
}

✅ Java 21의 좋은 점

  • 가상 스레드를 통해 훨씬 효율적인 병렬 처리가 가능해짐
  • 패턴 매칭이 더 강력해지고, 직관적인 코드 작성 가능

🎯 간단한 기능 비교표

기능Java 11Java 17Java 21
HttpClient API
var 키워드
Switch Expressions
Record 클래스
Text Blocks
가상 스레드(Virtual Threads)
패턴 매칭 (Pattern Matching)

✨ 결론

  • Java 11은 안정적인 환경과 기존 시스템의 호환성에 적합합니다.
  • Java 17은 코드 가독성과 유지 보수성을 극대화하고자 하는 개발자에게 유용합니다.
  • Java 21은 최신 기술과 높은 성능을 중시하는 프로젝트에 가장 이상적인 선택입니다.

 

반응형

'Java > Basic' 카테고리의 다른 글

Filter(필터)란?  (0) 2025.03.24
HttpServletResponse와 getOutputStream() 정리  (0) 2025.03.24
Spring boot vs Nestjs  (0) 2023.07.25
Spring Cloud MSA(Microservices Architecture)에서 Eureka 장/단점  (0) 2023.07.25
Excel download java spring  (0) 2023.07.25