728x90
반응형

스프링 이니셜라이저를 사용하여 프로젝트를 생성 할 때 궁금했던 부분을 정리해보고자 한다.

 

 

나같은 경우 STS툴 썼을 땐 메이븐(Maven), IntelliJ툴 썼을 땐 그레들(Gradle) 둘 다 써본 입장으로

메이븐이 기본 세팅 부분이나 의존성 추가하는 부분에 있어서 꽤 편리했다고 생각한다!

지금도 개인 프로젝트는 그레들로 만들고 있지만, 둘 다 익숙해지기 위해서

편향적으로 선택해 작업하기 보다는 골고루 익혀두면 실무에서도 유용할 것 같아

다음번에는 오랜만에 메이븐으로 프로젝트 도전해 보는 걸로 :)

 

spring initializr

 

Gradle과 Maven은 주요 빌드 도구로, Java와 다른 JVM 언어를 사용하여 프로젝트를 관리하고 빌드하는 데 사용된다.

다음은 Gradle과 Maven의 주요 특징과 차이점이다.

Maven
- XML 기반 설정: Maven은 프로젝트 구조와 라이프사이클 관리를 위해 XML 기반의 설정 파일(pom.xml)을 사용한다. 이 설정 파일은 프로젝트 정보, 의존성, 빌드 설정 및 플러그인 설정을 포함한다.
- 약속된 라이프사이클: Maven은 표준 빌드 라이프사이클을 정의하고, 각 라이프사이클에 연결된 특정 명령어를 제공한다. 이를 통해 빌드, 패키징, 테스트, 배포 등의 작업을 간단하게 수행할 수 있다.
- 중앙 저장소: Maven은 중앙 저장소를 통해 프로젝트 의존성을 관리하며, 필요한 라이브러리 및 아티팩트를 다운로드한다.
- 제한된 스크립팅 언어: Maven은 XML 기반으로 설정되어 있어서 복잡한 빌드 작업을 수행하기 위해 스크립팅 언어를 사용하기 어렵다.

Gradle
- Groovy 또는 Kotlin 기반 DSL: Gradle은 Groovy 또는 Kotlin 기반의 스크립트로 빌드 스크립트를 작성한다. 이를 통해 빌드 스크립트를 보다 간결하게 작성할 수 있다.
- 라이프사이클 기반이 아닌 작업 지향: Gradle은 태스크(Task)라는 개념을 사용하여 빌드 작업을 정의한다. 이는 더 세밀한 커스터마이징을 가능하게 한다.
- 용도에 맞게 다양한 플러그인: Gradle은 다양한 플러그인을 지원하며, Java, Android, 웹 개발, 프로젝트 관리 등 다양한 용도의 프로젝트에 대응할 수 있다.
- 멀티 프로젝트 빌드: Gradle은 멀티 프로젝트 구성을 지원하고 각 프로젝트 간에 의존성을 관리할 수 있다.
- 빌드 캐싱: Gradle은 빌드 캐싱을 지원하여 중복된 작업을 최소화하고 빌드 속도를 향상시킬 수 있다.

 


빌드 도구를 선택할 때 고려사항:
- 프로젝트 요구사항:

프로젝트의 규모, 복잡성 및 요구사항에 따라 Gradle 또는 Maven을 선택

Maven은 단순한 프로젝트 빌드 및 종속성 관리에 적합

Gradle은 더 복잡한 프로젝트 및 커스터마이징된 빌드 스크립트에 적합

- 언어 선호도:

Groovy 또는 Kotlin이 편하다 > Gradle

XML 기반 설정이 익숙하다 > Maven 선택 추천


코틀린(Kotlin)그루비(Groovy)는 둘 다 자바 가상 머신(JVM) 위에서 동작하는 프로그래밍 언어이다.

그러나 이 두 언어 간에는 몇 가지 중요한 차이점이 있다.

1. 컴파일러와 정적 타입 검사
- 코틀린은 정적 타입 검사(static type checking)를 갖는 언어로, 컴파일러가 코드를 미리 분석하여 타입 불일치 오류를 발견할 수 있다. 이로 인해 런타임에 발생하는 많은 예외를 방지할 수 있다.
- 그루비는 동적 타입 언어(dynamic typing)로, 변수의 타입을 런타임에 결정한다. 따라서 컴파일러는 타입 오류를 잡을 수 없고, 런타임 오류가 발생할 가능성이 높다.

 

2. 선택한 언어의 목적
- 코틀린은 주로 안드로이드 앱 개발 및 서버 측 개발을 위한 현대적이고 정적 타입의 언어로 개발되었다.
- 그루비는 스크립트 언어로 시작하여 빌드 스크립트, 테스트 스크립트, DSL(Domain-Specific Language) 개발 및 간단한 웹 애플리케이션을 작성하기 위한 목적으로 사용된다.

 

3. 표현력
- 그루비는 매우 간결하고 표현력이 뛰어난 언어로, 코드를 더 읽기 쉽게 만들 수 있다. 그루비는 동적인 언어로서 매우 유연한 문법을 갖고 있다.
- 코틀린도 간결한 문법을 갖고 있지만, 정적 타입 검사로 코드 안정성을 높인다.

 

4. 자바 호환성
- 코틀린은 자바와 완벽하게 상호 운용 가능하도록 설계되었다. 따라서 기존 자바 코드와의 통합이 매우 쉽다.
- 그루비도 자바와의 호환성이 높지만, 타입 안정성 측면에서 코틀린에 비해 제한적이다.

 

5. 성능
- 코틀린은 정적 타입 검사로 인해 실행 시간에 불필요한 타입 검사를 줄이고 최적화할 수 있어서 실행 속도가 빠를 수 있다.
- 그루비는 동적 타입 언어이기 때문에 실행 시간에 더 많은 타입 검사와 오버헤드가 발생할 수 있다.

 

따라서 코틀린과 그루비는 각각의 사용 사례와 선호하는 프로그래밍 스타일에 따라 선택해야 한다.

코틀린은 안정성과 성능을 중요하게 생각하는 프로젝트에 적합하며, 그루비는 스크립트 및 빠른 프로토타이핑을 위한 작업에 적합하다.

728x90
반응형

+ Recent posts