Java and Kotlin by IntelliJ IDEA - VSCode Extension (확장) 단순 리뷰

 

Java and Kotlin by IntelliJ IDEA - VSCode Extension (확장) 단순 리뷰

IntelliJ를 다시 설치할려고 JetBrains의 IntelliJ 다운로드 페이지를 가보니 새로운 항목이 보였다.

그냥 다운로드 페이지 갔는데 VSCode 확장 써보라고 나옴👍

Redhat의 vscode-java를 사용하고 있었는데, 어떤지 궁금하니 한번 사용해보자!


동작을 확인한 IJ 확장 버전

이 리뷰를 작성한 시점의 IJ 확장 버전은... 1.0.27 이다.


확장 설치 전 준비 사항

vscode-java는 프로필을 17-Java, 21-Java, 25-Java로 각각 분리해서 쓰고 있었는데,

기능 중복이 있을 것 같아서, IJ - Java and Kotlin by IntelliJ IDEA라는 새 프로필을 만들 었는데

기본 Java 설정들은 유지하기 위해 기존에 21-Java의 설정들을 복제해서 만들었다.

기존 개발 환경과 분리를 위해 신규 프로필 추가


프로필을 IJ - Java and Kotlin by IntelliJ IDEA 으로 전환하고 상태를 보면

21-Java의 설정 및 확장 설치 내용을 그대로 복제해서 만들었기 때문에, vscode-java를 쓰던 설정및 확장들이 그대로 남아있다.

IJ 설치 전에 중복이 될만 확장들을 미리 제거해주었는데..

Extension Pack for Java (제거) 에 속하는 확장 들은 거의 제거해주었다. 이 확장 자체도 제거했다.

가장 핵심이 되는 vscode-java인 Language Support for Java(TM) by Red Hat는 반드시 비활성화를 하거나 제거해야할 것 같고...

"Debugger for Java"와 "Test Runner for Java"는 새로운 IJ 확장이 디버그나 테스트 실행등을 해주므로 일단은 제거해두었다.

"Project Manager for Java"은 vscode-java에 종속적인 것 같고, 제공하는 기능(프로젝트 보기, Java 프로젝트 생성, Jar 내보내기 등등)을 거의 사용을 안해서 제거해두었다. 거의 기본 탐색기로 봐서 Java Projects 풀다운 메뉴를 열지를 않고 있음..😅

그런데 "Maven for Java"의 경우는 워크스페이스 settings.json에다가 즐겨찾기 명령 넣어두면 편할 때가 있어서 지우지 않고 냅두었다.

"Gradle for Java"는 가끔 Task 목록 볼 때가 있어서 냅뒀다.

스프링 관련해서는...

"Spring Boot Tools" 만 유지했는데,

이 확장의 경우는 새로운 IJ 확장에 대한 지원 언급이 있다.

Note: this extension requires a Java tooling extension to be installed (e.g. Language Support for Java™ by Red Hat or Java and Kotlin by IntelliJ IDEA). If none is found, you will be prompted to install one on activation.

마지막으로 정적 코드 분석기인 "SonarQube for IDE"도 제거했다.

냅둬도 될 것 같긴한데, IJ 확장에서도 정적 분석이 IntelliJ IDEA에서 나오는 내용 비슷하게 나와서...

일단 지워두기로 했다.

동작을 확인할 예제 프로젝트로는 아래의 리포지토리에 만들었고, 레거시 Spring MVC 프로젝트이고, Maven과 Gradle 빌드를 동시에 지원하게 만들었다.

동작 확인용 Spring MVC 예제 프로젝트 

이렇게 준비 먼저 해두고 설치를 해보면...

설치

마켓 플레이스 열어서...

jetbrains.intellij-server 입력하면 바로 뜬다. 확장 상세 페이지에서 [설치] 눌러주면 설치가 된다.

마켓플레이스 탭에서 검색해서 설치

가이드에서는 Ctrl + P 눌르고 나오는 입력창에 ext install JetBrains.intellij-server 이거 입력해도 된다고 한다.

ext 명령어로 설치


설치가 되면, 아래와 같이 라이선스 활성화 하라는 창이 뜨는데...

이 IJ 확장이 무료로 배포되는 건 아니라고 했다.

라이선스 활성화

가격에 대한 설명을 보면... 무료는 아니고..

사전 테스트 기간에는 확장 프로그램을 무료로 사용할 수 있고, 각 사전 테스트 빌드에는 30일의 평가 기간이 제공되며, 새 빌드가 출시될 때마다 평가 기간이 갱신된다고한다.

사전 테스트가 종료되면 IntelliJ IDEA Ultimate 구독이 필요하다고 한다.

그러니까 무료는 아님..😅

 

일단 나는 얼티밋 구독 라이선스가 있어서 JB 계정으로 활성화 했다.

  • 내년엔 돈없어서 갱신 못하고 폴백 라이선스로 다운그레이드해서 쓸 것 같음 😂

  • 특정 이전 버전을 평생 쓸 수 있게 해주는 폴백(Fallback) 라이선스 개념이 이 확장에도 적용될지는 모르겠다. 😅

활성화를 완료하면...

다음과 같이 유효기간과 라이선스 ID가 출력되고 사용이 가능해진다.

IJ 확장 활성화 완료




동작 확인

일단 VSCode를 껏다 켜고 Maven/Gradle 동시에 지원하는 프로젝트를 열어봤는데...

빌드 툴을 뭘로 정할지 선택하는 부분도 잘 나왔다.

빌드 툴 선택

여기서 Configure...를 눌러서 워크스페이스의 settings.json 설정에다가 프로젝트의 빌드 툴을 정해줄수도 있었다.

  "intellij.projects": [
{
"type": "maven",
"path": "file:///$PROJECT_DIR$"
}
],



Maven 빌드

Maven 빌드 자동 빌드 결과를 보면...

Maven 자동 빌드

IJ확장으로 자동 빌드된 것이 맞고, 

Maven 빌드 자체를 직접 하지 않고,

com.jetbrains.ls:imports-maven-plugin을 통해서 작업을 감싸서 실행하는 것 같다.


이제 type을 gradle로 바꿔서 자동 빌드 동작을 봐 보면...



Gradle 빌드

Gradle 빌드 성공

Gradle 빌드도 잘 되는 것을 확인했다.



JUnit 테스트

JUnit 테스트 실행자체도 IJ 플러그인이 실행시키는데...

그냥 실행하면 아래와 같이 뜬다. 😂

Test를 실행할 때.. JAVA_HOME 미 설정 오류

나는 시스템이나 유저(User) 전역으로 JAVA_HOME 두는게 싫어서.. 안두는 편인데...

테스트 실행 기능에서 IJ 확장은 환경변수가 설정되길 기대한다..😂

SDKMAN!을 사용하는 환경이라면 터미널에서... sdkman으로 버전 조정하고 해당 프로젝트 디렉토리가서 code . 으로 실행해주면 되겠지만...

윈도우 환경에서는 지금 이런 방식이 좀 맞지않는다는 기분이 든다..😂


하여튼 이 문제는 시스템 전역이나 유저 레벨로 JAVA_HOME 환경변수를 설정해주면 해결된다.

레드햇의 vscode-java는 아래와 같이 설정만 잘 해주면 알아서 잘 되었었는데.. 

물론 테스트는 Test Runner for Java가 실행하는 것이였긴 하지만...

  "java.configuration.runtimes": [
{
"name": "JavaSE-21",
"path": "C:\\JDK\\21",
"default": true
},
{
"name": "JavaSE-25",
"path": "C:\\JDK\\25"
},
{
"name": "JavaSE-17",
"path": "C:\\JDK\\17"
}
],

근데 JVM으로 실행되는 것 같아 보이는 IJ 확장 자체는 왜 동작은 했을까? 생각해보면...

2026-10-27 01:00:06.002 [info] System Info
os.name: Windows
os.version: 11.0
cpu.arch: X86_64
cpu.number: 32
java.home: c:\Users\사용자\.vscode\extensions\jetbrains.intellij-server-1.0.27-win32-x64\server\jbr
java.version: = 25.0.4.1+1-b601.61
java.vm.vendor: JetBrains s.r.o.
ram.xmx: 2048MB

IJ 확장 자체를 실행하는 것은 JetBrains의 JRE 25가 확장 폴더에 내장이 되어있다.

그런데 이것은 레드햇의 vscode-java도 마찬가지이다. 여긴 Temurin JRE 씀..

이런 문제로 IJ 확장에 바라는 점은...

💡명시적으로 JDK를 지정할 수 있는 옵션을 추가해주면 좋을 것 같은 생각이 들었다.

그래도 테스트를 실행을 해봐야하니...

JAVA_HOME 등의 환경 변수가 설정된 명령 프롬프트에서 해당 프로젝트를 열여서..

환경변수가 제대로 설정된 상태에서 테스트를 실행해보면...

JAVA_HOME등 환경변수가 미리 설정된 CMD에서 VSCode 실행

이번에는 테스트가 잘 통과 했음을 볼 수 있다.

테스트 러너 정상 동작함


그런데 여기서 또 아쉬운점이...

build.gradle에서

tasks.named('test') {
useJUnitPlatform()

jvmArgs '-XX:+EnableDynamicAgentLoading', '-Xshare:off'
...
}

Test Task에서 다이나믹 에이전트 로딩 허용과 클래스 데이터 공유(CDS) 기능을 끄는 옵션이 적용 되도록 했는데.

테스트 실행 로그에서 이게 뜨는 걸 보니... IJ 확장의 테스트 러너가 build.gradle의 Test Task 옵션을 보지않고 실행한다는 점을 확인했다.

Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build as described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org.mockito/org/mockito/Mockito.html#0.3
WARNING: A Java agent has been loaded dynamically ($GRADLE_HOME\.gradle\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.17.7\fbf3d6d649ed37fc9e9c59480a05be0a26e3c2da\byte-buddy-agent-1.17.7.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release

build.gradle의 Test 테스크에 이런 옵션이 있으면 알아서 처리해줬으면 좋겠는데...

이 점이 아쉬웠다..

그럼 vscode-java 환경의 Test Runner for Java는 이런 상황의 동작이 어땠느냐하면...

이렇게 Test용에 사용할 JVM 옵션을 따로 워크스페이스 Settings.json에 적어줘야했었다. 😂

  // 💡vscode-java-test가 build.gradle의 test 테스크에 설정한
// JVM 옵션을 인식하지 못해서 수동설정해야한다.
"java.test.config": {
"vmArgs": [
"-XX:+EnableDynamicAgentLoading",
"-Xshare:off"
]
}

디버깅

디버깅는 Maven 빌드 설정 상태에서 하였는데, 멈추길 원하는 부분에 중단점 찍고 테스트를 돌려보면...

디버깅 동작 확인

 
중단점에서 잘 멈추고, 조사식에 변수 열어봐도 잘 나오는것을 확인했다.

근데... 디버깅으로 테스트 돌릴 때도 surefire 플러그인이나 Test 테스크에 설정한 VM 옵션으로 알아서 적용되면 정말 좋을 텐데 적용이 안되서 테스트 결과 창에서는 다이나믹 에이전트 로딩, 클래스 데이터 공유(CDS)관련 경고가 뜨고 있다. 😂



정적 분석

정석분석의 경우는 단순하게 문제가 있는 코드를 만들어서 확인했다.

  • test01(): 동적 문자열을 로그 메시지의 인자로 사용함

  • test02(): 로거 메시지 파라미터 인자 누락

  • test03(): 항상 true 조건

VSCode IJ확장에서의 정적분석 메시지

IJ 확장에서는 위처럼 나왔는데, 오리지널 IntelliJ IDEA에서는 어떻게 나오는지도 보자!

IntelliJ IDEA에서의 정적분석 메시지 (둘의 검사 결과가 같다)


두 환경 모두 동일한 부분에 대해서 정적검사가 된 것을 확인했다.

그런데.. 이게 정적검사 메시지가 원래 한글화가 되었었나? JetBrains가 한글화에 진심 인것 같음..👍

앞으로 VSCode IJ 확장에도 IntelliJ IDEA 처럼 한글화를 진심으로 해주면 좋을것 같다. 😊 



Lombok 동작 (lombok.config 설정이 추가된 환경에서는 문제가 있음)

기본 상태에서는 알아서 잘 동작했지만....

그런데 lombok.config 설정을 추가하면 정상 처리를 하지 않는 것 같았다.

lombok.config에 설정한 내용이 정상처리 되지 않음

위의 화면을 보면 프로젝트 루트에 lombok.config를 두고, 기본 로거 변수이름을 log에서 logger로 바꾸었고, static 맴버 변수가 아니고, 인스턴스 변수로 쓰게 바꾸었는데...

IJ 확장이 인식을 못하는지 기본 값 이름인 log로만 처리하려한다.

이 상태에서 테스트를 돌리면, 이 때는 pom.xml의 내용대로 실행이 제대로 되는지? 테스트는 성공을 했다.

IDE 에디터 화면하고 빌드하고 따로노는 듯한...😂

혹시나해서 Settings.json에 JVM 추가 옵션에 수동으로 lombok.jar의 경로를 지정해봤는데 소용없었다.

  // javaagent 설정은 적용이 안되는 것 같은...🤔
"intellij.additionalJvmArgs": [
"-javaagent:\"G:/lombok/lombok-1.18.48.jar\""
],



결론

첫 느낌은 아주 좋다!

그런데 프로젝트에 사용할 JDK 경로를 명시적으로 설정해줄 수 있는 옵션이 있으면 좋을 것 같고...

테스트나 테스트 디버깅할 때.. build.gradle이나, pom.xml에 설정한 내용을 인식해줬으면

정말 고마울 것 같다 👍

그리고...

Runtime Server Protocol UI + Community Server Connectors가 해주는 Tomcat 연동 같은 기능도 넣어주면 행복할것 같은데.. 이건 스프링 부트가 있으니 왠지 안넣어줄 것 같긴하다..😅

하여튼 앞으로도 계속 발전해서 좋은 Java 확장으로 남으면 좋겠다. 👍👍👍

 

  • 게시일: 2026-10-26-a

  • 퍼머링크: vscode-java-and-kotlin-by-intellij-idea-extension-review





댓글

이 블로그의 인기 게시물

주방등을 LED 모듈로 교체하기!

전자정부 프레임워크 v5.0 교육자료 IDE, 다른 드라이브에 설치하는 완벽 가이드

SMC WSKP100 - 무선 스카이프 전화기