좌: gradle (22초), 우: maven (38초)
gif 출처: https://gradle.org/maven-vs-gradle/
Gradle은 거의 모든 유형의 소프트웨어를 빌드할 수 있을 만큼 충분히 유연하도록 설계된 오픈 소스 빌드 자동화 도구다. 이 도구는 고성능으로 인해 다양한 종류의 소프트웨어를 만드는 데 널리 사용된다. 프로젝트 구조를 개발하기 위해 Java 및 Groovy 기반 DSL(Domain-Specific Language)에서 작동한다. Gradle은 다양한 플랫폼에서 테스트 및 배포하여 모바일 및 웹 애플리케이션 생성을 지원한다. 기능으로 인해 Android 애플리케이션 개발을 위한 공식 도구로 선호된다.
Maven은 자바 빌드 도구로서 Apache Ant를 대안으로 오픈 소스 프로젝트 관리 도구다. 이 도구는 표준화, 즉 짧은 시간 내에 표준 레이아웃의 소프트웨어를 개발하는 것에 중점을 둔다. 이를 통해 Java 프로젝트를 만들 수 있지만 다른 언어에서도 사용할 수 있다. Maven은 응용 프로그램의 구조화를 위해 XML(Extensible Markup Language)을 사용한다.
Gradle | Maven |
---|---|
Gradle은 도메인별 언어(DSL) 프로젝트 개발을 기반으로 한다. | Maven은 순수 Java 언어 기반 소프트웨어 개발을 기반으로 한다. |
프로젝트 구조를 생성하기 위해 Groovy 기반의 DSL(Domain-specific Language)을 사용한다. | 프로젝트 구조를 생성하기 위해 XML(Extensible Markup Language)을 사용한다. |
새로운 기능을 추가하여 애플리케이션을 개발하는 것에 초점을 둔다. | 주어진 시간 제한에 응용 프로그램을 개발하는 것에 초점을 둔다. |
현재 실행 중인 작업만 추적하도록 최적화되어 있으므로 maven보다 성능이 좋다. | 소프트웨어 생성 중에 로컬 임시 파일을 생성하지 않으므로 많은 시간을 사용한다. |
Java 컴파일을 피한다. (Gradle 3.4부터 클래스가 변경되었지만 상수가 변경되지 않은 경우 다시 컴파일할 필요가 없다.) | Java 컴파일이 필요하다. |
사용자가 익숙해지기까지 많은 시간을 소비해야 하는 새로운 도구다. | 이 도구는 많은 사용자에게 알려진 도구이며 쉽게 사용할 수 있다. |
dependencies {
compileOnly "org.projectlombok:lombok:1.18.22"
// compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
}
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
</dependencies>
같은 내용이어도 Gradle이 훨씬 간단한 것을 확인할 수 있다!
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.22
Gradle이 많이 발전하고 있지만, 그래도 Maven이 Gradle보다 많이 사용되는 듯하다. (검색량이 사용량이랑 비례한다면)
참고
“Community Home.” Gradle Docs, https://docs.gradle.org/current/userguide/userguide.html.
“Introduction.” Maven, https://maven.apache.org/what-is-maven.html.
“Gradle vs Maven Comparison.” Gradle, https://gradle.org/maven-vs-gradle/.
Champeau, Cédric. “Incremental Compilation, the Java Library Plugin, and Other Performance Features in Gradle 3.4.” The Gradle Blog, Gradle, 25 Feb. 2017, https://blog.gradle.org/incremental-compiler-avoidance.
“Difference between Gradle and Maven.” GeeksforGeeks, 23 Dec. 2020, https://www.geeksforgeeks.org/difference-between-gradle-and-maven/.
인증은 사용자가 누구인지 확인하는 절차다. 인증의 예시로 회원가입, 로그인이 있다.
인가는 사용자에게 해당 리소스에 대한 접근 권한이 있는지 확인하는 절차다.
실제 사례와 비교하면 인증은 공항에서 보안 검색대를 지나갈 때 신분증을 제시해 신원을 "인증"한다. 그런 다음 게이트에 도착하면 승무원에게 탑승권을 제시해 승무원이 탑승을 "인가"(승인)하고 비행기에 탑승할 수 있다.
인증 | 인가 |
---|---|
인증은 사용자가 누구인지 확인한다. | 인가는 사용자에게 해당 리소스에 대한 접근 권한이 있는지 확인한다. |
인증은 비밀번호, 일회용 핀, 생체 정보 및 사용자가 제공하거나 입력한 기타 정보를 통해 작동한다. | 인가는 조직에서 구현하고 유지 관리하는 설정을 통해 작동한다. |
인증은 올바른 ID 및 액세스 관리 프로세스의 첫 번째 단계다. | 인가는 항상 인증 후에 이루어진다. |
참고
Auth0. “Authentication vs. Authorization.” Auth0 Docs, https://auth0.com/docs/get-started/authentication-and-authorization.
“What Is the Difference between Authentication and Authorization?” SailPoint, 20 July 2021, https://www.sailpoint.com/identity-library/difference-between-authentication-and-authorization/.