콘텐츠
Spring Tool Suite(STS) 설치 이후
이전 포스트 Spring 개발의 시작 STS(Spring Tool Suite) 설치하기에서 STS 를 설치해 스프링 기반 웹 애플리케이션을 개발하기 위한 조건을 갖추었습니다.
그 이전에도 가볍게 다루었지만 VSCode 와 같은 프로그래밍에 적합한 텍스트 편집기와 이클립스와 같은 대중화된 IDE를 두고 STS를 쓰는걸까? 궁금해지더군요.
그래서 가볍게 정리를 해봤던 김에 좀 더 상세하게 STS가 무엇인지 정리해 봐야겠단 생각이 들게 되었습니다.
IDE 란?
IDE 는 Intergrated Development Environment 의 약자로 한글로 이야기 하자면 통합 개발 환경이란 의미 입니다.
더욱 쉽게 이해하자면 우리가 프로그램을 개발할 때 여러가지 소프트웨어를 사용하게 되는데 IDE 에서 이런 소프트웨어 들을 통합해서 개발 할 수 있게 만들어 줍니다.
대표적으론 이클립스(Eclipse) 라는 소프트웨어가 있죠. 자바 애플리케이션을 개발할 때 널리 사용 됩니다.
이클립스와 같이 각 프로그래밍 언어 마다 특화 되어 있는 IDE가 존재 하는데 C# 은 Visual Studio, Python 을 위한 PyCharm 등이 있죠.
코드 에디터 VSCode
그런데 요즘은 또 Node.js 등을 개발할 땐 이런 IDE 가 아닌 코드 에디터 VSCode(Visual Studio Code)를 사용합니다.
본래 역할은 텍스트 편집기 지만 여러 확장 기능을 통해 거의 IDE 수준으로 개발이 가능해 졌거든요.
IDE 대비 장점으로 사용 시 체감 되는 아주 큰 장점이 있는데 코드 에디터는 매우 가볍습니다.
그래서 엔터프라이즈급의 규모가 큰 애플리케이션의 개발엔 IDE 를 통한 관련 프레임워크(지금 포스트 에서 다루는 스프링 등) 를 활용하지만 가벼운 서비스의 애플리케이션을 개발할 땐 코드 에디터를 이용해 개발하는 것도 선호 되며 자연스러워 졌습니다
Spring Tool Suite(STS) 는 그래서 무엇인가?
자, 그럼 다시 돌아와서 STS 에 대해 정리해보겠습니다.
저번에 제 블로그 포스트를 보셨거나 STS 를 다운로드 및 설치해보신 분은 아시겠지만 이클립스와 거의 흡사한 모습을 지닌 소프트웨어임을 알 수 있습니다.
일단 먼저 STS 에 대해 가볍게 정리하겠습니다. STS 는 주로 자바 언어를 사용하는 스프링 프레임워크 기반의 애플리케이션을 개발할 때 사용 됩니다.
그리고 이 소프트웨어는 위에서 언급한 이클립스를 기반으로 좀 더 스프링 프레임워크에 특화 하여 만든 소프트웨어 입니다.
그래서 보편적으로 STS 를 설명하면 스프링을 개발하기 위한 이클립스 기반 IDE 다 라고 말할 수 있었습니다.

이클립스 확장 플러그인 STS
그런데 STS 는 독립된 IDE 형태로도 제공 되지만 기존 이클립스 환경을 그대로 사용, STS 관련 도구도 쓰고 싶다 했을 때 확장해서도 사용 가능 합니다.
설치하는 방법은 간단 합니다. 바로 이클립스 마켓플레이스를 통해 설치하여 사용할 수 있죠.
플리그인을 제공하게 되면서 기존 이클립스 IDE 환경을 유지, 신규로 스프링 개발을 위한 최신 도구를 추가할 수 있게 됩니다.
그래서 가끔 스프링 개발을 시작하며 여러 블로그 글을 보다 보면 혼동이 올 수 있습니다.
블로그 글 마다 STS 를 직접 설치, 사용하면서 작성 된 글이 있고 이클립스 환경에서 플러그인으로 붙인 다음 사용하는 경우가 있거든요.
두 방식 모두 스프링 기반 앱 개발은 문제 없이 가능하고 개발자의 선호에 따라 선택하면 됩니다.
Sptring Tools 4 등장 이후

그런데 이는 Spring Tools 4 부터는 조금 잘못된 표현이 되었습니다.
그 이유는 Spring Tools 4 버전 부터 IDE에 구애 받지 않고 현대 개발 트렌드에 맞춰 텍스트 편집기인 VSCode 기반으로도 제공되고 있기 때문입니다.
Spring Tools 4 는 STS 의 최신 버전이고 이는 전통적으로 이클립스 기반으로 제공되던 STS 와 다르게 VSCode, Theia IDE 기반으로도 제공 되고 있습니다.
그래서 만약 VSCode 기반의 STS4(보편적으로 커뮤니티 에선 ST4 보단 STS4 로 사용 됩니다.) 으로 개발한다 했을 땐 이는 IDE 가 아닌 것이죠.

Spring Tools 4 공식 소개에서 IDE agnostic 는 한글로 IDE 비종속성 입니다.
즉, 구 STS 에서 STS4 가 되면서 이젠 이클립스 뿐 아니라 경량 코드 에디터, Theia 같은 다른 코딩 환경에서 사용할 수 있도록 업데이트 되었단 내용 입니다.
그래서 개발자가 선호하는 환경에 맞춰 스프링을 개발 할 수 있게 되었다 설명하고 있습니다.
Spring Tool Suite 에 포함된 도구
자, 그래서 우리가 스프링 개발을 위해 STS 를 사용한다는 것은 이해 했습니다. 그럼 STS 에 어떤 도구들이 포함되어 있는 걸까요?
예를 들어 저는 스프링을 개발 하려고 메이븐을 설치했습니다. 그런데 알고보니 이미 STS 내에 메이븐이 Embedded(내장) 되어 제공 되어 있었어요.
이처럼 별도로 설치하지 않아도 기본적으로 포함 되어 있는 STS 주요 도구들은 다음과 같습니다.
- 메이븐(Maven): 제가 블로그에서도 이미 다룬 적 있는 빌드 자동화 도구 입니다.
- 그래들(Gradle): 메이븐과 역할이 유사한 빌드 자동화 도구며 프로그래밍 언어인 Groovy 를 기반으로 하고 있습니다.
- 깃(Git): 버전 관리 시스템 혹은 형상 관리 시스템으로 불리는 도구 입니다. SVN 과 같은 역할을 합니다.
- 스프링 부트(Spring Boot): 이것도 이전 포스팅에서 가볍게 다루었습니다. 스프링 기반의 앱을 쉽게 개발, 실행, 배포할 수 있게 해줍니다.
- Pivotal tc Server Integration: Pivotal tc Server 는 Apache Tomcat 의 진보 된 WAS 입니다.
- Embedded Servlet Containers Support: Spring Boot 애플리케이션 개발 시 내장된 서블릿 컨테이너(예: Tomcat, Jetty, Undertow)를 사용하여 애플리케이션을 실행하고 테스트할 수 있게 해줍니다.
이 외에도 여러 도구들이 존재 합니다. 그래서 이 중 이미 알고 있거나 별도로 설치하려 했던 도구가 있다면 이미 내장 된 도구를 사용해 보는것도 좋겠습니다.
JDK 는 내장되어 있나요?
결론부터 말하자면 이클립스 기반 STS 의 경우 내장되어 있긴 한데 이는 IDE 를 실행 시키기 위한 기능들만 보유하고 있어 앱 개발 시엔 별도의 JDK(OpenJDK, Oracle JDK 등) 를 설치하고 연결하여 사용할 것을 권장하고 있습니다.
오늘 이렇게 STS 를 정리하며 많은 것을 배웠습니다. 설치 했을 땐 계속 이클립스와 STS 간 혼동이 오고 어떻게 사용하는 것이 옳은지 궁금 했고 VSCode 나 이클립스 기반 중 무엇을 선택해야 할지도 고민이 되었었는데요 지금은 좀 정리가 되었습니다.
다음 포스팅 에선 STS4 가 과거 버전과 어떤 차이점을 지니는 지 한번 정리해 보면 좋을 것 같네요