JDK 8과 JDK 17의 차이점 및 새로운 기능

배경 소개

Java는 풍부한 생태계와 수많은 개발자가 있는 널리 사용되는 프로그래밍 언어입니다. Java의 공식 구현은 Oracle의 JDK(Java Development Kit)이며 최신 버전은 JDK 17이며 JDK 8은 장기 지원 버전(LTS)입니다.

2014년에 출시된 JDK 8은 Lambda 표현식, Stream API, 새로운 날짜 및 시간 API 등과 같은 많은 중요한 새 기능을 도입했습니다. 그리고 2021년에 JDK 17이 출시될 예정이며 성능, 보안 및 언어 기능이 개선되고 개선되었습니다.

이 기사에서는 JDK 8과 JDK 17의 차이점과 새로운 기능을 소개합니다.

JDK 8의 새로운 기능

다음은 JDK 8의 몇 가지 새로운 기능입니다.

  1. 람다 식
  2. 스트림 API
  3. 새로운 날짜/시간 API
  4. 인터페이스 기본 방법
  5. 방법 참조
  6. 유형 주석
  7. 더 나은 Nashorn 엔진
  8. 병렬 배열

이러한 새로운 기능은 Java, 특히 Lambda 표현식 및 Stream API의 프로그래밍 효율성과 코드 가독성을 크게 향상시켜 개발자가 효율적인 기능 코드를 보다 편리하게 작성할 수 있도록 합니다.

JDK 17의 새로운 기능

다음은 JDK 17의 몇 가지 새로운 기능입니다.

  1. 스위치 표현 개선
  2. 클래스 기반 레코드(레코드)
  3. 봉인된 클래스
  4. instanceof에 대한 패턴 일치
  5. 오라클 메모리 할당
  6. 향상된 예외 처리
  7. 강화된 보안
  8. 향상된 성능
  9. 향상된 가비지 컬렉터
  10. 새로운 언어 기능

JDK 17의 새로운 기능은 언어 기능, 성능, 보안, 가비지 수집기 등 Java 개발의 여러 측면을 다룹니다. 그 중 클래스 기반 레코드(Records)와 Sealed Class는 Java 코드를 보다 간결하고 읽기 쉽게 만들 수 있는 매우 중요한 언어 기능입니다. 동시에 예측 메모리 할당 및 개선된 가비지 수집기 또한 Java 프로그램의 성능과 안정성을 향상시킵니다.


JDK 8과 JDK 17의 코드 비교 예

다음은 JDK8과 JDK17의 몇 가지 차이점을 보여주는 몇 가지 간단한 예입니다. 물론 실제 개발에는 특정 애플리케이션 시나리오와 함께 분석해야 할 다른 많은 변경 사항과 개선 사항이 있습니다.

람다 식

// JDK8
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.forEach(n -> System.out.println(n));

// JDK17
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.forEach((var n) -> System.out.println(n));

instanceof에 대한 패턴 일치

// JDK8
if (obj instanceof String) {
    
    
    String str = (String) obj;
    System.out.println(str.toUpperCase());
} else {
    
    
    System.out.println(obj);
}

// JDK17
if (obj instanceof String str) {
    
    
    System.out.println(str.toUpperCase());
} else {
    
    
    System.out.println(obj);
}

새 도서관

// JDK8
// 没有Java Flight Recorder库
// 没有ZGC垃圾回收器

// JDK17
// 使用Java Flight Recorder记录CPU时间
JFR.enable();
// 使用ZGC垃圾回收器
System.setProperty("jdk.garbageCollector", "Z");

새로운 설정 연산 API

JDK8은 컬렉션에 대한 작업을 보다 간결하고 편리하게 만드는 Stream API를 도입했습니다. 이를 기반으로 JDK17은 Stream을 List 또는 Set로 쉽게 변환할 수 있는 toList()및 와 같은 몇 가지 새로운 API를 추가합니다 .toSet()

// JDK8
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().filter(n -> n % 2 == 0).mapToInt(Integer::intValue).sum();

// JDK17
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenList = list.stream().filter(n -> n % 2 == 0).toList();
Set<Integer> oddSet = list.stream().filter(n -> n % 2 != 0).toSet();

개선된 Switch 문

JDK17은 조건으로 표현식 사용을 지원하고 분기문으로 Lambda 표현식 사용을 지원하는 새로운 Switch 문을 도입합니다.

// JDK8
String dayOfWeek = "MON";
switch (dayOfWeek) {
    
    
    case "MON":
    case "TUE":
    case "WED":
    case "THU":
    case "FRI":
        System.out.println("Weekday");
        break;
    case "SAT":
    case "SUN":
        System.out.println("Weekend");
        break;
    default:
        System.out.println("Invalid day");
}

// JDK17
String dayOfWeek = "MON";
String dayType = switch (dayOfWeek) {
    
    
    case "MON", "TUE", "WED", "THU", "FRI" -> "Weekday";
    case "SAT", "SUN" -> "Weekend";
    default -> {
    
    
        System.out.println("Invalid day");
        yield "Invalid day";
    }
};

새 HTTP 클라이언트 API

JDK11은 HTTP 요청을 보다 쉽고 편리하게 처리할 수 있는 새로운 HTTP 클라이언트 API를 도입했습니다.

// JDK8
// 使用第三方HTTP库

// JDK17
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://www.example.com/"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

요약하다

JDK 8과 JDK 17은 모두 Java 개발을 위한 중요한 릴리스이며 둘 다 중요한 새 기능과 개선 사항을 많이 소개합니다. JDK 8은 장기 지원 릴리스이지만 JDK 17의 새로운 기능과 개선 사항을 통해 최신 Java 개발에 더 적합합니다. Java 개발자의 경우 JDK 17의 새로운 기능과 개선 사항을 마스터하면 개발 효율성과 코드 품질을 개선하는 데 도움이 됩니다.

실제 개발에서 개발자는 프로젝트 요구 사항 및 개발 시나리오에 따라 적절한 JDK 버전을 선택할 수 있습니다. 일부 오래된 프로젝트의 경우 안정성과 호환성을 보장하기 위해 JDK 8을 사용해야 할 수 있으며, 일부 새 프로젝트의 경우 JDK 17을 사용하여 최신 기술과 기능을 활용하여 코드 가독성과 성능을 개선할 수 있습니다.

요컨대, JDK의 지속적인 업데이트와 개선은 Java 개발자에게 더 많은 선택과 기회를 제공하여 Java가 지속적으로 발전하고 개선되도록 했습니다. JDK의 새 버전이 앞으로도 계속해서 Java 기술의 개발과 혁신을 촉진할 것으로 기대합니다.

다운로드 링크

JDK8 다운로드 주소

Oracle 공식 웹사이트 다운로드 링크: Java SE Development Kit 8 다운로드
OpenJDK 커뮤니티 웹사이트 다운로드 링크

JDK17 다운로드 주소

Oracle 공식 웹사이트 다운로드 링크: Java SE Development Kit 17 다운로드
OpenJDK 커뮤니티 웹사이트 다운로드 링크

Supongo que te gusta

Origin blog.csdn.net/qq_37686995/article/details/129949487
Recomendado
Clasificación