Language - spring initializr 정복하기(2)
Language 1. JavaJava는 1995년에 발표된 객체지향 프로그래밍 언어로, 플랫폼 독립성과 강력한 생태계를 기반으로 한 대표적인 언어입니다.특징정적 타입 언어: 모든 변수와 메서드의 타입이 컴파일
jwinjection.tistory.com
Spring Boot - spring initializr 정복하기(3)
Spring Boot1. SNAPSHOT이 없는 버전예: 3.4.0, 3.3.6특징릴리즈(Release) 버전: 최종적으로 안정화된 버전이며, 정식으로 배포된 상태.변경되지 않음: 한 번 배포되면 해당 버전 번호에 해당하는 코드는
jwinjection.tistory.com
Project Metadata - spring initializr 정복하기(4)
Project Metadata1. Group (그룹 ID)예: com.example의미:프로젝트가 속한 그룹(조직, 회사 등)을 정의하며, 일반적으로 역방향 도메인 이름 형식을 사용.Maven 또는 Gradle에서 프로젝트를 고유하게 식별하는
jwinjection.tistory.com
Project
1. Gradle (Groovy 기반)
Gradle은 Groovy 언어를 사용하여 빌드 스크립트를 작성하는 강력한 빌드 도구입니다. Groovy는 동적 타입 스크립팅 언어로, Java 기반 환경에서 유연한 문법과 기능을 제공합니다.
특징
- DSL (Domain Specific Language): Groovy를 활용하여 선언적이면서도 유연한 빌드 스크립트를 작성할 수 있음.
- Dependency 관리: 프로젝트 의존성을 관리하고, Maven 및 Ivy 리포지토리와 호환됨.
- 성능 최적화: Gradle의 incremental build와 build cache 기능으로 빠른 빌드 속도를 제공.
- 다목적: 자바, Kotlin, 안드로이드 앱 빌드 등 다양한 환경에서 사용 가능.
Gradle-Groovy의 단점
- Groovy DSL의 자유로운 문법이 초심자에게는 난해하게 느껴질 수 있음.
- 대규모 프로젝트에서 스크립트 복잡도가 증가.
예제
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
}
2. Gradle (Kotlin 기반)
Gradle Kotlin DSL은 Groovy 대신 Kotlin 언어를 사용하여 빌드 스크립트를 작성하는 방법입니다. Kotlin은 정적 타입 언어로 IDE 지원과 코드 완성 기능이 강력합니다.
특징
- 타입 안정성: Kotlin DSL은 정적 타입 언어의 이점을 활용하여 IDE에서 더 나은 코드 완성과 오류 탐지를 제공.
- 표준 문법: Kotlin 언어의 문법을 따르므로 Kotlin을 사용하는 개발자에게 친숙.
- Gradle의 모든 기능 지원: Groovy와 동일한 기능 제공.
Gradle-Kotlin의 단점
- Groovy DSL에 비해 덜 성숙하며, 특정 설정에서 복잡도가 증가할 수 있음.
- Groovy DSL에 비해 문법이 덜 직관적으로 느껴질 수 있음.
예제
plugins {
kotlin("jvm") version "1.8.0"
id("java")
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
testImplementation("org.junit.jupiter:junit-jupiter:5.8.1")
}
3. Maven
Maven은 Gradle보다 오래된 빌드 도구로, XML 기반의 설정 파일을 사용하여 프로젝트를 빌드하고 관리합니다. Java 생태계에서 널리 사용되며, 의존성 관리와 프로젝트 구조 표준화를 중점으로 합니다.
특징
- XML 기반: 모든 설정이 pom.xml에 작성되며, 선언적 방식으로 설정.
- 의존성 관리: Maven Central Repository와 호환되며, 프로젝트 의존성을 효과적으로 관리.
- 프로젝트 표준화: 디렉토리 구조와 라이프사이클이 표준화되어 있어 다른 개발자가 쉽게 이해 가능.
- 플러그인 기반: 다양한 플러그인을 제공하여 확장 가능.
Maven의 단점
- XML 설정 파일이 장황하며 가독성이 떨어질 수 있음.
- Gradle에 비해 유연성이 부족.
예제
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.4</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
비교 요약
특징 | Gradle-Groovy | Gradle-Kotlin | Maven |
언어 | Groovy | Kotlin | XML |
가독성 | 유연하지만 복잡할 수 있음 | 더 나은 가독성 | 장황하고 규격화됨 |
성능 | 빠름 | 빠름 | 비교적 느림 |
코드 완성 지원 | 제한적 | 강력한 IDE 지원 | 제한적 |
유연성 | 높음 | 높음 | 낮음 |
배우기 쉬움 | 중간 | 쉬움 | 초심자에게 익숙 |
Gradle은 최신 프로젝트에서 더 많이 사용되며, Kotlin DSL은 최근 트렌드에서 선호됩니다. Maven은 표준화된 방식과 XML을 선호하는 환경에서 여전히 널리 쓰이고 있습니다.
어떤 것을 선택하든, 프로젝트의 복잡도와 팀의 기술 스택에 맞게 선택하는 것이 중요합니다.
'웹 개발 > 🍃 SpringBoot' 카테고리의 다른 글
Spring Boot - spring initializr 정복하기(3) (0) | 2024.12.17 |
---|---|
Language - spring initializr 정복하기(2) (0) | 2024.12.17 |
스프링부트 동작방식 (0) | 2024.10.23 |
REST API (0) | 2024.10.23 |
Spring | HandlerInterceptor를 이용한 로그인구현 (0) | 2024.03.15 |