Java/버전별 변화(10)
-
Java 19
레코드 패턴 매칭(프리뷰)기존에는 instanceof를 통해 해당 객체인지 확인 후, 형변환을 통해 객체를 사용해야 했습니다.record Point(int x, int y) {}public void test(Object o) { if (o instanceof Point) { Point p = (Point) o; ... }}하지만 레코드 패턴 매칭을 통해 형변환 로직을 제거하고 record의 구성요소를 직접 추출해서 사용할 수 있습니다.public void test1(Object o) { if (o instanceof Point p) { int sum = p.x + p.y; ... }}public void test2(Object o) ..
2025.05.14 -
Java 18
Java API CharsetJava API의 기본 Charset이 UTF-8로 지정되었습니다.간단한 웹 서버를 제공하는 커맨드라인 툴 제공정적 파일만 제공하는 간단한 웹 서버를 시작할 수 있는 새로운 커맨드라인 툴을 제공합니다.참고로 우리가 일반적으로 사용하고 있는 Apache, Nginx과 같이 실무에 사용할 수 있는 수준의 서버는 아닙니다.해당 서버는 테스트, 개발 및 디버깅 용으로 사용할 수 있습니다.jwebserver -p 9000@Snippet 어노테이션 추가Java Document 주석/** */에 @Snippet 어노테이션이 추가되었습니다.finally 구문 deprecatejava의 에러핸들링을 위한 try ~ catch ~ finally 구문이 있습니다.try { ...} cat..
2025.05.07 -
Java 17
switch의 pattern matching Java의 표현력을 향상시키기 위해 아래와 같은 예시로 switch문의 pattern matching 기능을 강화했습니다. static record Human (String name, int age, String profession) {} public String checkObject(Object obj) { return switch (obj) { case Human h -> "Name: %s, age: %s and profession: %s".formatted(h.name(), h.age(), h.profession()); case Circle c -> "This is a circle"; case Shape s -> "It is just a shape"; c..
2022.08.23 -
Java 11
추가된 기능 새로운 HTTP Client 추가 새로운 HTTP Client가 추가되었습니다. 새로운 HTTP Client는 성능적으로 개선되었고, HTTP/1.1과 HTTP/2 프로토콜을 모두 지원하고 있습니다. HttpClient httpClient = HttpClient.newBuilder() .version(HttpClient.Version.HTTP_2) .connectTimeout(Duration.ofSeconds(20)) .build(); HttpRequest httpRequest = HttpRequest.newBuilder() .GET() .uri(URI.create("http://localhost:" + port)) .build(); HttpResponse httpResponse = http..
2022.01.06 -
Java 15
새로운 기능 Sealed Classes Java의 Class 계층 구조는 상속을 통해 코드 재사용을 가능하게 합니다. 많은 Class들은 상속되고 재사용되고 있습니다. 하지만 그래픽 라이브러리에서 Shape의 종류와 같이 도메인에 존재하는 다양한 가능성을 모델링 하는 것이 목적인 경우에는 subClass 집합을 제한했을 때, 모델링이 더 간소화 될 수 있습니다. Sealed Class의 목표는 개별 클래스를 선언할 때, 상속 받을 수 있는 종류의 클래스도 함께 선언하도록 하는 것입니다. 이를 통해 class의 무분별한 상속을 통한 확장이 발생하지 않도록 하는게 가장 중요한 목표입니다. public abstract sealed class Person permits Employee, Manager { } 예..
2021.10.07 -
Java 14
미리 보여주는 기능 Records Record는 POJO 데이터 모델에서 반복적인 코드를 줄이기 위해 도입되었습니다. 기존의 POJO 데이터 모델의 클래스에는 생성자, Getter, Setter, equals, toString 등을 직접 작성해야 했습니다. 그러나 Record의 경우에는 아래와 같이 선언하면 자동적으로 앞의 요소들이 생성됩니다. public record User(int id, String password) { }; 새로운 기능 NullPointerException의 개편 기존의 NullPointerException은 발생한 이유에 대해 많은 정보를 담고 있지 않았습니다. 명확하게 어떤 문제인지 직접 유추했어야 하는데 이 부분이 조금 더 강화되었습니다. 이전 버전 Exception in t..
2021.09.25