Gradle - Task
Java2025. 1. 19. 02:42Gradle - Task

Gradle의 개요Gradle은 빌드 자동화 도구로, 다양한 언어와 플랫폼을 지원한다. 특히 Java, Groovy, Kotlin 등과 같은 JVM 기반 언어에서 많이 사용되며, 유연한 빌드 구성을 제공한다. Gradle은 Groovy 또는 Kotlin DSL을 사용하여 빌드 스크립트를 작성할 수 있다. 이러한 유연성 덕분에 개발자들은 자신만의 빌드 프로세스를 쉽게 정의할 수 있다.Gradle의 주요 구성 요소Gradle은 여러 구성 요소로 이루어져 있으며, 그중에서도 Project, Task, Plugin이 가장 핵심적인 요소이다. Project는 Gradle 빌드의 기본 단위이며, Task는 특정 작업을 수행하는 단위이다. Plugin은 이러한 Task를 확장하거나 새로운 기능을 추가하는 역할을 한다..

자바 동시성 이슈와 얕은 복사 차이점
Java2024. 11. 3. 00:33자바 동시성 이슈와 얕은 복사 차이점

객체의 복사Java에서는 객체를 복사하는 방식에 따라 두 가지로 나뉘는데, 이 두 가지 개념을 이해하면 객체를 다룰 때 예상치 못한 부작용을 방지할 수 있다.얕은 복사 (Shallow Copy)얕은 복사는 객체의 최상위 레벨 속성만 복사하고, 중첩된 객체는 참조를 복사한다. 따라서 원본 객체와 복사된 객체는 중첩된 객체를 공유하게 된다. 예제로 살펴보면 이해가 쉬울 것이다.class Address { String city; Address(String city) { this.city = city; }}class Person implements Cloneable { String name; Address address; Person(String name, Addre..

JVM 가비지 컬렉터의 내부 동작 원리
Java2024. 9. 10. 09:19JVM 가비지 컬렉터의 내부 동작 원리

Garbage Collection(GC)Garbage Collection(GC)는 프로그래밍 언어에서 더 이상 사용되지 않는 메모리 공간을 자동으로 해제하는 메모리 관리 기법이다. GC는 주로 다음과 같은 작업을 수행한다.1. 참조 추적: 어떤 객체가 여전히 사용 중인지 추적한다.. 객체가 더 이상 참조되지 않으면 사용되지 않는 것으로 간주한다.2. 메모리 해제: 더 이상 사용되지 않는 객체의 메모리를 해제하여 다른 객체가 사용할 수 있도록 한다.GC의 주요 목적은 메모리 누수를 방지하고, 프로그래머가 수동으로 메모리를 관리해야 하는 부담을 줄이는 것이다. GC는 Java, C#, Python 등 많은 현대적인 프로그래밍 언어에서 사용된다. 장점자동 메모리 관리: 개발자가 직접 메모리 할당과 해제를 관리..

JVM 내부 구조와 동작 원리 - Runtime Data Area
Java2024. 9. 7. 00:41JVM 내부 구조와 동작 원리 - Runtime Data Area

https://hwlee9905.tistory.com/45 JVM 내부 구조와 동작 원리 - Class Loader, Execution EngineJVM은 왜 필요한가? 1. 플랫폼 독립성기존의 C와 같은 언어는 운영체제 별로 개발자가 코드를 달리 작성해야 했는데, 자바 프로그램은 한 번 작성하면, JVM이 설치된 모든 플랫폼에서 실행될 수 있hwlee9905.tistory.com이전 글에서 이어집니다.런타임 데이터 영역(Runtime Data Area)런타임 데이터 영역(Runtime Data Area)은 JVM(Java Virtual Machine)이 실행 중에 사용하는 메모리 영역을 의미한다. 이 영역은 여러 부분으로 나뉘며, 각각의 부분은 JVM이 프로그램을 실행하는 동안 특정한 역할을 한다. ..

JVM 내부 구조와 동작 원리 - Class Loader, Execution Engine
Java2024. 9. 4. 19:47JVM 내부 구조와 동작 원리 - Class Loader, Execution Engine

JVM은 왜 필요한가? 1. 플랫폼 독립성기존의 C와 같은 언어는 운영체제 별로 개발자가 코드를 달리 작성해야 했는데, 자바 프로그램은 한 번 작성하면, JVM이 설치된 모든 플랫폼에서 실행될 수 있다. 이는 "Write Once, Run Anywhere"라는 자바의 슬로건을 가능하게 한다2. 메모리 관리  JVM은 자동으로 메모리를 관리한다. 가비지 컬렉션(Garbage Collection)을 통해 더 이상 사용되지 않는 객체를 자동으로 메모리에서 해제하여 메모리 누수를 방지한다.3. 성능 최적화JIT(Just-In-Time) 컴파일러를 통해 자주 사용되는 바이트코드를 기계어로 변환하여 실행 성능을 최적화한다.4. 멀티스레딩 지원JVM은 멀티스레딩을 기본적으로 지원하여, 병렬 처리를 쉽게 구현할 수 있..

Lambda Expression 기초
Java2024. 9. 2. 02:07Lambda Expression 기초

Lambda Expression 람다 표현식은 주로 익명 함수(이름이 없는 함수)를 정의할 때 사용된. 간결하고 직관적인 코드 작성을 도와주며, 특히 함수형 프로그래밍에서 유용하게 사용된다. 람다 표현식이 사용되게 된 이유는 여러 가지가 있는데, 주로 코드의 간결성과 가독성을 높이고, 함수형 프로그래밍을 지원하기 위해 도입되었다. 람다 표현식이 사용되게 된 이유에 대해 알아보자. 1. 코드 간결화람다 표현식을 사용하면 코드가 훨씬 간결해진다. 예를 들어, 기존의 익명 클래스 사용 방식과 비교했을 때, 람다 표현식은 불필요한 코드 작성을 줄여준다.// 기존 익명 클래스 방식Runnable r1 = new Runnable() { @Override public void run() { S..

좋은 객체 지향 설계를 위한 원칙 SOLID - 예제로 알아보기
Java2024. 1. 25. 16:38좋은 객체 지향 설계를 위한 원칙 SOLID - 예제로 알아보기

자바 언어의 다형성을 이용한 객체 지향 설계를 이해하기 위해서는 다형성을 실세계로 비유하여 이해하는 것이 첫걸음인데, 실세계와 객체 지향을 1:1로 매칭하기는 쉽지 않으나 이해하기에는 좋을것이다. 일단 역할과 구현으로 세상을 구분하는 방법을 알아보자 자동차를 예로 들자면. 운전자(클라이언트)는 자동차의 역할(인터페이스)에 대해서만 알면된다. K3(구현체)든 아반떼(구현체)든 자동차는 엑셀을 밟으면 가고, 브레이크를 밟으면 멈춘다는 자동차의 역할에 대해서만 알면 그 구현체는 중요하지 않다는 것이다. 따라서 이와 같은 장점이 있다 클라이언트는 대상의 역할(인터페이스)만 알면 된다. 클라이언트는 구현 대상의 내부 구조를 몰라도 된다 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다 클라이언트..

image