사이먼's 코딩노트

[SpringBoot] 개념 정리 본문

Java/SpringBoot

[SpringBoot] 개념 정리

simonpark817 2024. 5. 2. 23:30

[개념 정리 1]

  • SpringBoot를 진행하기 전, 몇 가지 개념들을 정리를 해보려한다.
  • 먼저 JVM, JRE, JDK에 대한 개념 정리를 해봅시다.

 

[JVM (Java Virtual Machine)]

  • JVM은 자바 가상 머신이라는 뜻으로, 바이너리(바이트) 코드를 읽고 검증 후 실행할 수 있게 만들어준다.
  • 다시 말해 자바 프로그램이 어느 기기, 어느 OS에서도 실행될 수 있게 만들어준다.
  • JVM은 자바 프로그램의 메모리를 효율적으로 관리 및 최적화해준다.

 

[JRE (Java Runtime Environment)]

  • JRE은 자바 실행(런타임) 환경이라는 뜻으로, JVM에 자바 프로그램에 필요한 라이브러리 파일을 포함한다.
  • JRE는 JVM의 실행 환경을 구현해주는 역할을 한다.
  • 다시 말해 클래스 라이브러리를 통해 작성한 Java 코드를 라이브러리와 결합한 후에 JVM에 넘겨 실행을 시키는 역할을 한다.

 

[JDK (Java Development Kit)]

  • JDK은 자바 개발 도구라는 뜻으로, JDK를 설치하면 JRE와 JVM이 자동으로 설치된다.
  • JDK는 JRE에 개발을 위한 도구가 합쳐있다고 생각하면 좋다.

JVM, JRE, JDK 비교

 

[개념 정리 2]

  • 다음은 Build Tool(빌드 도구)인 Ant, Maven, Gradle에 대한 개념 정리를 해봅시다.
  • 그 전에 먼저 Build(빌드)를 간단하게 설명하자면, 빌드는 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 과정을 말한다.
  • Build Tool은 위에서 말한 Build를 진행하기 위해 사용되는 도구를 의미한다.

 

[Ant]

  • Ant는 자바 빌드 도구로서 XML 기반의 스크립트를 사용한다.
  • Ant는 project, target으로 구성되며, target 안에 task를 구현한다.
  • Ant는 외부 라이브러리 관리가 불가능하지만, 간단하고 사용하기엔 쉽다.
  • Ant를 사용하기 위해선 build.xml 파일을 작성하고 실행해야한다.
  • 요즘에는 Ant를 거의 사용하지 않는 추세다.

 

[Maven]

  • Maven은 Ant 이후에 나온 자바 빌드 도구로서 자동으로 라이브러리와 의존성을 관리하는 기능이 있다.
  • Maven도 XML 기반의 스크립트를 사용하며, pom.xml 파일로 의존성을 관리한다.
  • 현재도 사용은 하지만, 신규 프로젝트를 진행할 때는 지양하는 편이다.

 

[Gradle]

  • Gradle은 가장 최신 자바 빌드 도구로서 Groovy(그루비) 언어를 사용한다.
  • Gradle은 Ant와 Maven의 장점을 모두 결합한 도구로서, 외부 라이브러리 관리가 당연히 가능하고, build.gradle 파일에 유연하게 빌드 스크립트를 작성할 수 있다.
  • 성능이 매우 뛰어나기 때문에 신규 프로젝트를 진행할 때 많이 사용하는 편이다.

Ant, Maven, Gradle

 

[개념 정리 3]

  • 마지막으로 정리해볼 개념은 API, 라이브러리, 프레임워크이다.
  • 개인적으로 가장 많이 헷갈리는 개념이라고 생각이 들기 때문에 이번에 확실히 정리해봅시다.

 

[API (Application Programming Interface)]

  • API는 두 개 이상의 소프트웨어 컴포넌트 사이에서 상호작용을 할 수 있도록 정의된 인터페이스를 의미한다.
  • API는 연결장치 또는 매개체와 같은 역할을 하며, 일반적으로 함수, 프로토콜 또는 클래스를 구성한다.
  • API는 다른 개발자들이 사용할 수 있는 함수, 메서드, 클래스 등을 정의하는 것이다.
  • 또한, 다른 소프트웨어 개발자들이 이를 사용하여 특정 서비스나(구글맵, 기상청, 카카오 등) 기능 사용이 가능하다.

 

[라이브러리 (Library)]

  • 라이브러리는 개발자들이 자주 사용하는 코드 집합체다.
  • 라이브러리는 여러 기능을 제공하며, 이를 사용하여 개발자들은 복잡한 기능을 쉽게 구현할 수 있다.
  • 라이브러리는 여러 개발자가 공유하여 사용할 수 있는 코드 모음집이라고 생각하면 좋다.
  • 대표적인 예시로는 JQuery나 Tailwind, Pandas 등 수많은 라이브러리가 있다.

 

[프레임워크 (Framework)]

  • 프레임워크는 개발자들이 애플리케이션을 개발하는 데 사용되는 구조를 제공한다.
  • 프레임워크는 일련의 규칙과 구조를 정의하고, 애플리케이션 작성 시 이런한 규칙과 구조를 따르도록 한다.
  • 프레임워크는 보통 여러 컴포넌트와 라이브러리를 포함하며, 개발자가 특정 기능을 구현하기 위해 이를 조합하여 사용한다.
  • 쉽게 말해서 웹 페이지를 하나 구현하기 위해 Spring Boot와 같은 프레임워크를 사용하면 80%의 기본 구조를 제공받고, 개발자는 나머지 20%를 기본 구조안에서 직접 구현할 수 있어야한다.
  • 대표적인 예시로는 SpringBoot, React, Vue.js 등이 있다.

라이브러리와 프레임워크의 차이점

 

반응형