본문 바로가기
개발/개발이야기

VS Code에서 WSL Remote환경을 이용하여 Java개발 환경 구성하기

by zian지안 2020. 7. 3.

최근에 Java 개발 환경을 구성해야 하는 일이 생겼습니다. 한동안 Java에서는 손을 놓고 있었기 때문에 PC에는 JDK도 설치되어 있지 않았습니다. 예전처럼 "Oracle JDK만 설치하고 Eclipse 또는 IntelliJ를 설치하면 되나?"라는 생각도 했습니다만, 이미 WSL 환경에서 개발하는데 익숙해진 몸은 Windows에 JDK 설치하고, 환경변수 잡는 일련의 과정들이 너무 귀찮게 느껴졌습니다.

대규모 개발이 아니라 간단한 테스트 수준의 개발환경을 의도했기 때문에 구성하고자 하는 환경의 목표는 다음과 같았습니다

  • 개발환경은 Windows가 아닌 WSL에 구성할 것
  • 무거운 Eclipse나 유료인 IntelliJ를 사용하지 않고 VS Code를 사용할 것
  • Java 개발 및 Spring Boot 개발이 가능해야 함

극단적으로는 VS Code는 에디터로만 사용하고 WSL에서 CLI로 실행시킬 수도 있겠지만.. 다행히도 VS Code는 WSL Remote Extension(https://code.visualstudio.com/remote-tutorials/wsl/getting-started)을 제공하고 있었습니다.  

WSL Remote Extension을 이용하면 Windows환경에서도 WSL환경을 Local 환경처럼 사용할 수 있게 해 줍니다. 

이 글에서는 WSL 설치에 대한 내용은 생략하고, VS Code에서 WSL Remote환경을 이용하여 Java 개발환경을 설정하는 내용에 대해서 기술하겠습니다.


WSL Remote Extension 설치

WSL이 설치된 상태에서 VS Code를 실행하면, 친절하게도 Extension을 설치하라는 안내가 나옵니다. 

 

확장에서 WSL Remote Extension을 설치합니다. 

 

Remote - WSL Extension이 설치되면, VS Code 창 왼쪽 하단에 '원격 창 열기' 버튼이 활성화됩니다. 버튼을 누르면, 화면 상단 중앙에 명령 창이 표시됩니다. 3개의 메뉴가 나오는데, 기능상 큰 차이는 없습니다. 일단 'Remote-WSL: New Window'를 선택합니다.

 

'Remote-WSL: New Window'를 선택하면 VS Code창이 재시작되면서, Remote와 관련된 서비스를 구성하는 작업을 수행합니다. 최초 실행 때는 약간 시간이 걸립니다.

 

서비스 구성이 완료되면 왼쪽 하단에 현재 선택된 Remote환경이 표시됩니다. 저는 WSL Ubuntu18.04를 사용 중이기 때문에 WSL:Ubuntu-18.04로 표시되었습니다. 또한, 왼쪽 메뉴바에서 '원격 탐색기'를 선택하면 Remote로 관리 중인 환경 목록이 표시됩니다.

자, 이제 VS Code로 WSL에 Remote로 개발하기 위한 기본 설정이 완료되었습니다.

 

WSL에 Java 개발환경 구성

이제 WSL에 Java 개발환경을 설치합니다. 현재 Java 개발환경은 Oracle 외에도 몇 가지 종류가 있지만 저는 OpenJDK를 설치하도록 하겠습니다. 테스트해야 하는 환경에 맞춰서 버전은 8 버전입니다. 

WSL-Ubuntu이므로 apt명령을 이용하여 openjdk를 설치합니다.

sudo apt install openjdk-8-jdk openjdk-8-jre

 

설치가 완료되면, 잘 설치가 되었는지 확인해 봅니다. 1.8.x 버전으로 설치가 되었습니다.

java -version

WSL에서 Java 개발환경 구성도 완료되었습니다. 이제 VS Code에서 Java 개발환경을 구성해 주어야 합니다.

 

VS Code에서 Java 개발환경 구성

VS Code에서 Java 개발 환경 구성을 위해서는 'Java Extension Pack'을 설치해야 합니다. Java 개발에 관련된 관련 Extension들도 함께 설치됩니다. 이때 Remote-WSL 환경이 실행 중이라면 '설치 on WSL'이라는 버튼이 표시됩니다. '

 

설치 on WSL'버튼을 눌러 설치하면 Extension이 Local이 아닌 Remote에 설치됩니다. 모두 설치되면 '다시 로드 필요' 버튼을 눌러 VS Code를 재시작합니다.

 

Extension설치가 완료되면 VS Code설정에서 Java설치 경로를 설정해 주어야 합니다. 참고로, WSL-Ubuntu에서는 update-alternative명령어를 이용하여 설치 경로를 확인할 수 있습니다. 저는 Java버전이 1개만 설치되어서 경로가 1가지로 나왔지만, 여러 버전의 JDK가 설치된 경우 경로를 선택할 수 있습니다.

sudo update-alternatives --config java

 

VS Code의 설정에서 java.home 설정에 Java 설치 경로를 설정합니다.

 

아무런 설정도 해 주지 않으면 시스템 기본 설정으로 적용되지만, 만일 경로가 잘못되면 Java프로젝트를 열었을 때 다음과 같이 오류 메시지가 표시됩니다.

 

이제 Java 개발환경이 구성되었습니다. 간단하게 프로젝트를 만들어서 테스트를 해 봅니다.

폴더 열기를 누르면 WSL의 파일 경로를 보여줍니다. 이대로 WSL에 이미 존재하는 폴더를 열 수 있습니다. (물론 파일 생성하는 것도 가능합니다.)

 

간단한 Sample 프로그램을 만들었습니다.

 

실행하려는 Java파일에서 마우스 오른쪽 버튼을 눌러 나오는 메뉴에서 'Run'을 선택하거나 'Ctrl+F5'를 눌러 프로그램을 실행합니다.

 

터미널 창에서 실행결과가 나오는 걸 확인할 수 있습니다.

VS Code에서 WSL Remote로 Java 개발환경 설정이 완료되었습니다. 이제 Windows 자체에 JDK를 설치하지 않고, WSL에 구성된 Java 개발환경으로 VS Code에서 Java 개발을 할 수 있습니다.

Spring Boot Extension 설치

VS Code에서는 Spring Boot에 대한 Extension도 있습니다. Spring Boot 개발환경을 위해 Extension을 설치합니다. 마찬가지로 WSL Remote환경에서 설치합니다. 'Spring Boot Extension Pack'을 Remote에 설치합니다.

 

설치가 완료된 후, 명령줄 도구(단축키: Ctrl + Shift + P)를 실행한 뒤 'Spring Initializr'를 선택하여 프로젝트를 시작합니다. Maven Project와 Gradle Project가 있는데, 여기서는 Maven Project로 생성하겠습니다.

 

사용 언어를 선택합니다. Java를 선택합니다.

 

기본 패키지를 설정합니다. 여기서는 일단 기본으로 선택하겠습니다.

 

프로젝트명을 설정합니다. 기본으로 선택하겠습니다.

 

Spring Boot 버전을 설정합니다. 가장 최신 버전으로 선택하겠습니다.

 

필요한 도구들을 선택합니다. 간단한 웹 페이지를 만들어 보려고 합니다.

 

프로젝트 경로를 설정합니다. 선택하는 폴더 경로 하위에 'demo'라는 폴더가 만들어질 것입니다.

 

생성이 완료되면 VSCode에서 해당 프로젝트를 열어줍니다.

 

Spring Boot 프로젝트가 생성된 걸 확인할 수 있습니다.  VS Code 탐색기 하단에 'SPRING-BOOT DASHBOARD'라는 메뉴가 생겼는데, 여기서 프로그램을 실행할 수 있습니다.

 

실행하면 '디버그 콘솔'에 로그가 표시되며 프로그램이 실행됩니다. 기본 설정 포트인 8080 포트로 웹 서비스가 동작하는 걸 볼 수 있습니다.

아직은 아무 페이지도 만들어 주지 않았기 때문에 404 에러 페이지가 표시됩니다. 추가적으로 코딩을 하게 되면 웹페이지가 만들어질 것입니다. 이로서 Spring Boot 개발환경까지 구성하였습니다.


VS Code에서 WSL Remote환경을 이용하여 Java 개발 환경을 구성해 보았습니다. VS Code는 범용으로 사용하는 도구이니 만큼, Eclipse나 IntelliJ와 같은 전문적은 Java 개발 IDE에 비하면 기능이나 환경면에서 부족한 것은 사실입니다. 하지만 간단하게 데모 프로그램을 작성하거나 공부를 하는 정도로는 사용할만했습니다. 

다만 WSL Remote를 이용하여 개발에 관련된 환경을 Windows가 아닌 WSL상의 Linux환경에서 관리하면서 개발할 수 있다는 것이 VS Code를 이용하는 장점입니다. 평소 사용하는 Windows 환경과 개발환경을 분리해서 사용하고 싶거나, Linux 환경과 동일하게 개발환경을 맞출 수 있다는 점에서 VS Code의 WSL Remote기능은 매우 편리했습니다.

Java는 개발환경 구성이 반이라고(...) 하는데, 개발환경 구성을 해 놓았으니 오랜만에 다시 Java 개발을 해 보아야겠습니다.