프로그래밍 언어는 일종의 언어입니다. 저희가 일상에서 사용하는 언어는 한글인데, 세계적으로는 헐씬 다양한 언어가 존재합니다. 이러한 언어의 다양성은, 비슷한 근원을 가진 언어도 존재하지만, 그만큼 다양한 문법, 어휘 등의 존재를 이야기 하기도 합니다. 즉 언어의 갯수만큼 인간이 언어를 사용하는 방식이 다양하다는 의미입니다.
프로그래밍 언어도 마찬가지로서, C, C++, Java 등 유사한 문법을 가진 언어들도 있고, Java, Python 등 전혀 다른 문법을 가진 언어들도 있습니다. 소스 코드라는 것은, 이러한 문법을 지켜가며 작성된 프로그래밍 언어의 모음입니다. 문법만 지킨다면 단순히 메모장에 작성하여도 상관 없습니다. 하지만 사람의 언어에 비해서 문법이 더 정확해야 한다는 점과 더불어, 수많은 언어의 문법을 직접 지켜가며 코드를 작성하는 것은 매우 고난이도의 작업입니다.
그래서 일반적으로 소프트웨어 개발을 진행하기 위해 다양한 도구를 사용합니다. 앞서 Java 언어로 만들어진 소프트웨어를 실행하기 위해 필요한 도구들에 대한 이야기를 하였습니다. 여기서 소개하는 도구는 소스 코드 자체를 작성하기 위한 도구들 입니다.
Code Editor
Code Editor는 이름 그대로 소스 코드를 편집하기 위한 도구입니다. 앞서 Java 언어에 대한 설명을 하면서 JDK 등 Java를 이용한 개발 프로젝트에 필요한 도구들에 대한 이야기를 하였습니다. 다만 JDK의 경우 이미 존재하는 소스 코드를 해석, 실행하는데 사용하는 도구입니다. 소스 코드를 작성하는 부분은 전혀 관여하지 않습니다.
Code Editor는 JDK와는 반대로, 소스 코드를 실행하는 기능 자체는 전무한 반면, 소스 코드의 작성을 편리하게 하기 위해 문법 체크, 자동 들여쓰기 및 완성 등의 기능을 포함한 텍스트 편집기의 일종입니다. 일반적으로 다양한 프로그래밍 언어를 지원합니다. 대표적으로 사용되는 Code Editor들로는 Sublime Text, Vim, Visual Studio Code 등이 있습니다. 이중 Visual Studio Code는 Code Editor 이기는 하지만, 다양한 플러그인으로 인해 일부 개발자들은 IDE 대용으로 사용하기도 합니다.
일반적으로 개발에 사용되는 IDE는 유료인 경우가 많으며, 무료 버전이 존재하더라도 많은 기능이 결여된 채로 출시됩니다. 대표적인 예시로 다양한 언어를 지원하지 않거나, HTML 내부의 Javascript 코드를 구분하지 않는다는 등의 기능이 결여되어 있습니다. 그래서 일반적으로 웹 개발을 진행하는 과정에서, Java로 작성을 주로하는 Spring Boot의 코드는 IDE를 활용하고, Javascript를 포함하는 HTML 작업을 진행할 때는 Code Editor를 사용하게 됩니다.
IDE
IDE는 Integrated Development Environment의 약자입니다. 해석하면 통합 개발 환경이라는 뜻이며, 실제로 역할도 비슷합니다. Java를 이용한 개발을 생각해 볼 때, 기본적으로 JDK가 필요할 것이며, Java 소스 코드를 작성하기 위한 Code Editor의 기능이 필요할 것입니다. IDE의 경우 그 기능을 전체적으로 포함한 소프트웨어 입니다.
IDE의 경우 Code Editor와는 별개로 특정 언어에 대한 개발을 지원하기 위한 소프트웨어인 경우가 많습니다. 특히 Java IDE로 가장 흔하게 사용되는 Intellij IDEA의 개발사에서는 언어와 용도에 따른 IDE를 종류별로 출시하기도 합니다. 앞서 Code Editor에서도 설명하였듯, Visual Studio나 Xcode와 같이 자체적으로 무료인 경우도 있고, IDEA 처럼 유료 버전과 무료 버전이 별개로 존재하는 경우가 존재합니다.
본 강의에서 사용할 Intellij IDEA의 경우, Java 프로젝트 관리 도구에 대한 지원, HTML 언어 지원, JDK 감지 및 사용 등의 기능을 포함하고 있습니다. 즉 Java를 이용하기 위한 대부분의 기능을 가지고 있습니다. 최근의 버전들의 경우 JDK를 설치하는 기능까지 포함하고 있습니다.
IDE or Code Editor?
각각은 장단점을 가지고 있습니다. IDE의 경우 개발하고자 하는 목표 소프트웨어가 분명할 경우, 명백히 더 많은 기능을 가지고 있으며, 비교적 덜 상세한 설정을 필요로 합니다. 그래서 일반적으로 Code Editor에 비해 더 무겁고 많은 용량을 차지하고, 실행에 필요한 자원 역시 늘어납니다. IDE를 사용하던 Code Editor 사용하던, 그 역량을 최대한 활용하기 위해서는 사용하고자 하는 언어를 어떻게 사용하는지, 프로젝트 관리는 어떻게 하는지, 프로그램을 실행하는 과정 등 여러가지 개발과 관련된 지식을 습득하여야 합니다.
본 강의에서 사용하게 되는 Visual Studio Code와 Intellij IDEA의 다운로드 링크 입니다. IDEA의 경우 오른쪽의 Community Edition을 사용하여도 무방합니다. Ultimate 버전의 경우, Spring Framework 지원, JavaScript 지원 등 추가적인 기능이 있지만, 기본적인 기능은 CE로도 사용 가능합니다.