Programming Language/Java 14

[Java] JVM(Java Virtual Machine)에 대하여

이 글에서는 Java의 JVM(Java Virtual Machine)의 정의와 구성, 구체적인 동작 원리, 관련 지식에 대해 다룹니다.JVM란 무엇인가?JVM을 사용하는 이유JVM의 동작 원리JVM: Class Loader Sub-SystemJVM: Memory Area Of JVM - RDAMethod AreaHeap AreaThreadJVM: Execution Engine관련 지식마치며.1. JVM란 무엇인가?JVM(Java Virtual Machine)은 자바 바이트 코드를 실행하는 가상머신입니다.자바 애플리케이션이 다양한 플랫폼에서 실행될 수 있도록 하는 핵심 실행 엔진으로 다음과 같이 구성됩니다.Class Loader Sub-SystemMemory Area Of JVMExecution Engin..

[Java] Java개발의 시작, JDK(Java Development Kit)에 대하여

이 글에서는 Java 애플리케이션 개발의 필수 요소인 JDK(Java Development Kit)의 정의와 구성, 그리고 JDK를 중심으로 한 개발 지식까지 함께 다룹니다.JDK란 무엇인가?JDK를 사용하는 이유JDK의 자동 빌드 시스템기타 관련 지식마치며1. JDK란 무엇인가?JDK(Java Development Kit)는 자바 애플리케이션을 개발하고 실행하는 데 필요한 모든 것을 담은 개발 도구 모음입니다.JDK는 크게 두 가지 요소로 구성됩니다.JRE(Java Runtime Environment)JRE는 자바 애플리케이션이 실행될 수 있는 환경입니다.실행에 필요한 가상 머신(Java Virtual Machine)과 표준 API를 제공하는 핵심 라이브러리(Java Class Library)로 구성되..

[Java] 자바 실행 환경, JRE에 대하여

이 글에서는 Java 애플리케이션 실행을 위한 JRE(Java Runtime Environment)의 정의와 구성, 사용하는 이유에 대해 다룹니다.JRE란 무엇인가?JRE를 사용하는 이유마치며1. JRE란 무엇인가?JRE(Java Runtime Environment)는 자바 애플리케이션 실행을 위해 JVM, JCL을 제공하는 소프트웨어 계층입니다. JRE는 다음과 같이 구성되어 있습니다.JVM(Java Virtual Machine)자바 바이트코드를 실행하는 가상 머신입니다.다양한 플랫폼에서 독립적인 실행을 가능하게 하며, 프로그램 실행 흐름을 제어합니다.JCL(Java Class Library)자바 애플리케이션이 자주 사용하는 기능을 표준 API로 제공하는 라이브러리 모음입니다.ex) java.io, j..

[Java] Java에서의 Heap과 Priority Queue(for Algorithm Guide)

목차Heap이란?Priority Queue란?패키지선언 예제주요 연산offer(element) / add(element)peek()poll()최대 힙(Max-Heap) 구현Comparator.reverseOrder() 또는 람다를 이용한 방법네거티브 트릭 (Numeric 데이터에 한정)복합 데이터의 정렬과 Comparator 구현Heap이란?완전 이진 트리(Complete Binary Tree) 형태의 자료구조로, 각 노드가 특정한 순서 조건을 만족한다. 💡완전 이진 트리 구조란?모든 레벨이 완전히 채워지며, 마지막 레벨은 왼쪽부터 순서대로 채워지는 구조정렬 조건최소 힙: 모든 부모 노드의 값 ≤ 자식 노드의 값최대 힙: 모든 부모 노드의 값 ≥ 자식 노드의 값주요 특징 및 시간복잡삽입 및 삭제: O(..

[Java] Java의 다양한 정렬 방법 1 : Primitive / Object

목차Primitive Array 정렬하기Object Array 정렬하기정리예제 코드Java에는 다양한 타입(Primitive / Object / Collections)의 배열이 존재할 수 있으며, 정렬하는 방식도 제각각입니다.이번 글에서는 Primitive / Object 배열을 정렬하는 방법에 대해 알아보겠습니다.1️⃣ Primitive Array 정렬하기Arrays.sort()는 원시 배열을 정렬할 수 있습니다. 기본적으로 오름차순 정렬이 되며, 내부적으로 Dual-Pivot Quicksort 알고리즘을 사용합니다SortPrimitiveArray.javaArrays.sort()를 사용해 Primitive Array를 정렬하는 방법은 다음과 같습니다.package pl.java.D250216;impor..

[Java] Primitive Array에 내림차순 정렬이 없는 이유

목차왜 원시 배열은 내림차순 정렬을 지원하지 않을까?원시 배열을 내림차순 정렬하는 방법정리예제 코드자바에서는 Arrays.sort() 를 사용해 원시(Primitive) 배열을 쉽게 정렬할 수 있습니다. 하지만 원시 타입 배열에 대해 내림차순 정렬은 지원되지 않습니다.이 글에서는 원시 배열에 내림차순 정렬이 지원되지 않는 이유와, 이를 해결할 수 있는 대안에 대해 알아보겠습니다.1️⃣ 왜 원시 배열은 내림차순 정렬을 지원하지 않을까?원시 배열은 기본적으로 객체가 아니기 때문에 Comparator를 사용할 수 없습니다.Arrays.sort()는 원시 타입 배열에 대해 Comparator를 지원하지 않으므로, 정렬 순서를 커스터마이즈할 수 없습니다. 반면, 객체 타입 배열(Integer[], Double[]..

Java에서 Primitive Array 정렬에 Dual-Pivot Quicksort를 선택한 이유

목차원시 배열과 객체 배열의 차이Dual-Pivot Quicksort란?원시 배열에서 Dual-Pivot Quicksort를 사용하는 이유정리Java는 원시 배열(primitive array)을 정렬할 때 Arrays.sort() 메서드를 사용하며, 이 메서드는 내부적으로 Dual-Pivot Quicksort를 사용합니다. 반면, 객체 배열(Object array)의 경우 Timsort를 사용합니다.이 글에서는 원시 배열 정렬에 Dual-Pivot Quicksort가 Timsort보다 선호되는 이유를 원시 배열의 구조와 알고리즘의 특성을 중심으로 설명하겠습니다.1️⃣ 원시 배열과 객체 배열의 차이Java에서 원시 배열과 객체 배열은 메모리 구조와 접근 방식에 차이가 있습니다.원시 배열데이터가 연속된 메모..

[Java] Java switch의 문자열 비교, 내부 원리와 성능 분석

목차switch에서 문자열을 비교하는 방법switch의 내부 동작 원리switch vs if-elseswitch 사용 시 주의사항정리예제 코드Java 7부터는 switch문에서 문자열(String)을 비교할 수 있습니다. 기존의 if-else에서 equals()를 사용하는 방식보다 더욱 깔끔하게 문자열을 비교할 수 있습니다.이번 글에서는 switch에서 문자열 비교 시, 내부적으로 어떻게 동작하는지 자세히 알아보겠습니다.1️⃣ switch에서 문자열을 비교하는 방법Java 7 이후에는 정수나 열거형 뿐 아니라 문자열도 switch문의 조건으로 사용할 수 있습니다. 이는 switch의 값과 case의 문자열을 String.equals 를 사용한 것처럼 비교하기 때문입니다.The switch statemen..

[Java] List.of()로 생성된 불변 리스트와 컬렉션 초기화

목차UnsupportedOperationException이란?List.of()를 사용한 컬렉션 초기화컬렉션 생성자의 동작 원리정리예제 코드Java 9부터 도입된 List.of()는 불변 리스트(Immutable List)를 생성하는 편리한 메서드입니다. 하지만 이 불변 리스트에 직접 요소를 추가하려고 하면 UnsupportedOperationException이 발생합니다. 그런 반면 List.of()로 생성된 불변 리스트를 컬렉션의 초기값으로 전달 후 컬렉션에 요소를 추가하면 예외가 발생하지 않습니다.이번 글에서는 List.of()로 생성된 불변 리스트와, 이를 컬렉션의 생성자로 전달할 때 내부적으로 어떻게 동작하는지 살펴보겠습니다.1️⃣ UnsupportedOperationException이란?Java..

[Java] 람다 표현식의 반환 타입 추론

목차예시 - Arrays.sort()와 Comparator 람다 표현식함수형 인터페이스 설계와 람다 표현식람다 표현식의 반환 타입 추론 과정정리예제 코드Java 8부터 도입된 람다 표현식은 간결한 코드 작성과 함수형 프로그래밍 패러다임을 지원합니다. 람다 표현식을 사용할 때 가장 큰 장점 중 하나는 **타입 추론(type inference)**으로, 메서드의 매개변수나 반환 타입을 일일이 명시할 필요가 없다는 점입니다.이번 글에서는 Comparator 인터페이스 예시와 직접 함수형 인터페이스를 설계하고, 어떻게 람다 표현식이 반환 타입을 추론하는지 자세히 알아보겠습니다.1️⃣ 예시 - Arrays.sort()와 Comparator 람다 표현식Java에서는 배열을 정렬할 때, Arrays.sort() 메서..