BackEnd/Java
-
Java 21. 가상 스레드BackEnd/Java 2024. 12. 15. 07:00
프로세스(Process): 컴퓨터에서 실행되고 있는 프로그램입니다.스레드(Thread): 프로세스 내 더 가벼운 공유 메모리 단위로, 작업의 효율적인 병렬 실행을 가능하게 하는 실행 흐름의 단위입니다. Native Thread Model Java에서 스레드를 만들어 실행하게 되면, JVM 내부의 자바 스레드 객체와 OS의 커널 스레드(Native Thread)가 모두 생성됩니다. 자바 스레드와 OS의 커널 스레드가 1:1로 매핑되기 때문에 1:1 스레딩 모델이라고도 부릅니다. 다음 코드는 3개의 자바 스레드 객체와 3개의 OS 커널 스레드를 생성하고 1:1로 매핑합니다. public static void threadExample01() throws Exception { for (int i = 0..
-
Java 18-21. 주요 변경 내용BackEnd/Java 2024. 12. 13. 23:00
Math APIclamp 함수 (Java 21) clamp 함수는 테스트할 값 value가 min과 max 사이에 있는지 확인하는 기능입니다. 사이에 있으면 value를 반환하고, 더 작으면 min 값을, 더 크면 max 값을 반환합니다.public static int clamp(long value, int min, int max) { if (min > max) { throw new IllegalArgumentException(min + " > " + max); } return (int) Math.min(max, Math.max(value, min));} String APIindexOf 함수 기존 indexOf() 함수는 특정 문자의 위치를 처음부터 찾거나 특정 지점부터 찾을 수 있었습니다..
-
Java 21. Switch Pattern MatchingBackEnd/Java 2024. 12. 12. 22:00
Switch Pattern Matching Java 17 preview, Java 21 정식 기능이 되었습니다. 기존 switch expression의 경우, switch selector에 char / byte / short / int / 문자열 / Enum만 들어갈 수 있었습니다. private String calculateTestGrade(int score) { return switch (score) { // score: switch selector case 5 -> "A"; case 4, 3 -> "B"; case 2, 1 -> "C"; default -> "F"; }; } Java 21. switch pattern matching의 등장으..
-
Java 21. Record PatternBackEnd/Java 2024. 12. 11. 23:00
Record Pattern Java 19 preview, Java 21 정식으로 출시된 Record Pattern은 Record 클래스를 instanceof pattern matching과 함께 사용할 때 내부 필드에 바로 접근할 수 있는 기능입니다. 다음은 Record 클래스와 instanceof pattern matching을 함께 사용한 코드입니다. record Point(double x, double y) { } public static void findDistanceIfPoint(Object object) { if (object instanceof Point p) { double distance = Math.hypot(p.x(), p.y()); System..
-
Java 12-17. 주요 변경 내용BackEnd/Java 2024. 12. 10. 23:00
String 클래스 API indent 함수 (Java 12) 문자열의 각 줄에 들여쓰기를 추가하거나 제거하는 데 사용됩니다.String str = """ A BC DEF """.indent(3);매개변수 n > 0: 각 줄의 시작에 n개의 공백을 추가합니다.매개변수 n 매개변수 n = 0: 줄은 변경되지 않고 줄 끝에 개행 문자만 추가됩니다. stripIndent 함수 (Java 15) 문자열의 각 줄에서 공통된 선행 공백(들여쓰기)을 제거합니다.String str = " A\n B\n C";System.out.println(str.stripIndent()); // A, B, C 앞 공통된 공백 한 칸씩 제거됩니다. formatted 함수 (Java 15) String.fo..
-
Java 17. Sealed ClassBackEnd/Java 2024. 12. 9. 07:00
Sealed Class Java 15 preview, Java 17 정식으로 출시된 기능으로 봉인된 클래스입니다. 다음은 Animal 추상 클래스를 상속 받은 Dog와 Cat 클래스입니다.public abstract class Animal {}class Dog extends Animal { public String bark() { return "멍멍"; }}class Cat extends Animal { public String purr() { return "야옹"; }} 만약 Animal의 하위 클래스로 Dog와 Cat, 두 클래스로만 제한하고 싶은 경우 Sealed 클래스를 사용합니다. 즉, Sealed 클래스는 하위 클래스를 지정된 클래스로만 제한하는 기능입니다. 다음은 ..
-
Java 16. Record ClassBackEnd/Java 2024. 12. 8. 09:00
Record Class Java 14 preview, Java 16 정식으로 출시된 기능으로 데이터 전달을 위해 등장한 클래스입니다. 다음은 데이터 전달을 위한 DTO 클래스입니다.import java.time.LocalDate;import java.util.Objects;public final class FruitDto { private final String name; // 과일 이름 private final int price; // 과일 가격 private final LocalDate date; // 과일 입고 일자 public FruitDto(String name, int price, LocalDate date) { this.name = name; this.price =..
-
Java 16. instanceof Pattern MatchingBackEnd/Java 2024. 12. 8. 08:00
instanceof Pattern Matching Java 14 preview, Java 16 정식 기능으로 출시된 기능으로 변수의 타입을 확인하고, 원하는 타입이 맞다면 값을 바로 할당해주는 기능입니다. instanceof 어떤 변수가 특정 타입의 인스턴스인지 확인하는 기능입니다. 다음은 Dog와 Cat 클래스가 Animal 클래스를 상속받고 있는 경우, 인수의 타입을 확인하여 로직을 수행하는 코드입니다. public String sound(Animal animal) { if (animal instanceof Dog) { Dog dog = (Dog) animal; return dog.bark(); } else if (animal instanceof Cat) { ..