BackEnd/Spring

Spring 프로젝트 생성 시 각 속성들 정리

cdjiwon 2022. 3. 10. 16:10

Language 

- 개발 언어 : JAVA / Kotlin / Groovy

 

JAVA : 객체 지향 언어로 개발된 프로그래밍 언어이다. 자바는 자바 가상 머신(JVM) 을 사용하여, 운영체제와는 독립적으로 동작 할 수 있다.

 

Kotlin : Jetbrain에서 만든 프로그래밍 언어이다. 코틀린은 자바를 대체하는 언어이다.

Intellij, Android Studio 에서 코틀인을 완벽하게 지원한다.

 

호환성 

- Kotlin은 JDK6와 완벽하게 호환 가능하다.

- 구형 안드로이드 기기 지원이 된다.

- Android Studio에서 지원이 되는 언어이기 때문에 안드로이드의 빌드 시스템과도 완벽히 호환된다.

 

성능

- 코틀린은 자바만큼 빠르다

 

Groovy : 그루비 코드 중에 일부분은 자바와 똑같이 생겼다. 때문에 그루비 문법이 자바 문법을 모두 수용한다고 생각하기쉽다. 문법이 비슷하지만 두 언어는 어느 쪽도 상대방 언어의 부분 집합이 아니다. 미묘한 차이점들을 제외하면 자바 문법에서 상당히 많은 부분이 그루비 문법에 포함되어 있다.

 

Project

- 프로젝트 관리 툴 : Maven / Gradle

 

Maven : 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해 자동으로 다운로드를 받아 준다. 기존에는 Ant를 많이 사용했는데 Maven은 Ant의 단점을 보완하고 장점을 모아둔 것이다.

Spring 프로젝트에서 pom.xml(project object model)이란 이름으로 쓴다.

 

Gradle : 기본적으로 빌드 배포 도구이다. 안드로이드 앱을 만들 때 필요한 공식 빌드시스템이기도 하며 JAVA, C/C++, Python 등을 지원한다. 빌드 툴인 Ant Builder와 Groovy Script를 기반으로 구축되어 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용가능하다.

Spring Boot, Android Studio 에서 쓴다.

 

차이점기존 Maven의 경우 XML로 라이브러리를 정의하고 활용하도록 되어 있으나, Gradle의 경우 별도의 빌드스크립트를 통하여 사용할 어플리케이션 버전, 라이브러리 등의 항목을 설정할 수 있다.

 

Gradle은 메이븐보다 최대 100배 빠르다.

Project Metadata

Group은 보통 기업 명을 적는다.

Artifact는 빌드 결과물의 이름을 의미한다.

 

그 외 description이나 Package name은 필요시 수정한다.

Java 버전 또한 설정한다. ( 필자는 11.0v 사용 )

 

Packaging : Jar / War

JAR (Java Archive)

  • JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일
  • Class (JAVA리소스, 속성 파일), 라이브러리 파일을 포함함
  • JRE(JAVA Runtime Environment)만 있어도 실행 가능함 (java -jar 프로젝트네임.jar)

WAR (Web Application Archive)

  • Servlet / Jsp 컨테이너에 배치할 수 있는 웹 애플리케이션(Web Application) 압축파일 포맷
  • 웹 관련 자원을 포함함 (JSP, Servlet, JAR, Class, XML, HTML, Javascript)
  • 사전 정의된 구조를 사용함 (WEB-INF, META-INF)
  • 별도의 웹서버(WEB) or 웹 컨테이너(WAS) 필요
  • 즉, JAR파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일이다.

결론

JAR, WAR 파일 애플리케이션 리소스를 패키징 하는 방법에 차이가 있을 뿐, 뭘 사용해야 하느냐는 개발자의 판단에 따를 뿐이다. 꼭 WAR를 사용해야만 하는 이유(꼭 JSP를 사용하여 화면을 구성해야 한다 / 외장 WAS를 이용할 계획이 있다)가 아니라면 뭘 사용할지에 대한 완벽한 해답은 없는 듯하다. Spring boot에서 가이드하는 표준은 JAR이니까 JAR를 사용하여 서비스하는 것도 괜찮은 선택이라고 본다.

Dependencies

의존성 설정으로 프로젝트에서 사용하고자 하는 라이브러리를 미리 정의하는 것이다.

 

출처: https://hye0-log.tistory.com/27 [Hailey's Daily Logs_]

'BackEnd > Spring' 카테고리의 다른 글

Intellij에서 Spring 시작하기 (Gradle)  (2) 2022.03.08