IntelliJ IDEA 2019.3의 보다 향상된 성능 및 품질을 확인해보세요!

IntelliJ IDEA 2019.3 이 출시되었습니다! 당사의 대표 IDE에 대한 올해 세번째이자 마지막 대규모 릴리스입니다!

이번 IntelliJ IDEA 버전에서는 IDE의 성능 및 전반적인 품질 향상에 집중하였습니다. IntelliJ IDEA 팀은 다른 몇몇 JetBrains 개발팀과 함께 의미 있는 많은 시간을 투자하여 IDE를 개선하고 성능, UI 응답성, 사용 편의성, 기존 기능 등을 향상시키기 위하여 노력하였습니다.

이번 릴리스 주기의 우선 순위를 잘 정하기 위하여 그 어느때보다도 여러분의 피드백을 더 많이 고려하였습니다. 저희 이슈트래커에 개선 사항에 대한 제안을 하고 문제를 리포트해 주신 모든 분께 진심으로 감사의 마음을 전하고 싶습니다. 이번 릴리스 주기 동안 저희 팀은 이슈트래커에 3900개가 넘는 투표를 받았던 1600개 이상의 문제를 수정하였습니다.

또한, Micronaut, Quarkus, Helidon 등 새로운 마이크로서비스 프레임워크에 대한 지원 및 오랜 숙원이던 MongoDB에 대한 지원과 같이 일부 진행 중인 프로젝트에 대해서도 작업을 진행하였습니다.

이러한 노력들이 IntelliJ IDEA를 사용하여 더 즐겁게 개발하시는 데 도움이 되기를 바랍니다.

blog@2x (3)

아래에서 더 자세한 내용을 확인해주세요.

성능 향상

IntelliJ IDEA의 성능을 개선하기 위하여 노력한 끝에 다음과 같은 결과를 달성하였습니다.

  • IDE 시작 시간 단축
  • 전반적인 UI 응답성 향상, UI 및 에디터 멈춤 현상 감소
  • 메모리 소비량 감소 (특히 Gradle 프로젝트를 가져오는 경우)

올해 당사의 주요 우선 순위 중 하나는 IDE 시작 시간의 개선이었습니다. 이 목표를 달성하기 위하여 IntelliJ 플랫폼에서 수많은 변경이 있었습니다. 순차적으로 실행되던 일부 프로세스를 병렬화하였고, 초기 클래스의 로딩을 더 빠르게 하도록 클래스를 재편하였으며, macOS에서 폰트 로딩을 최적화하는 등 다양한 작업이 수행되었습니다.

UI 응답성 향상은 저희가 많은 노력을 기울인 주요 분야 중 하나입니다. 사용자 인터페이스가 반응하지 않는 것을 좋아하는 사람은 없기 때문에 IntelliJ IDEA의 다양한 부분에서 발생하던 UI 멈춤 현상을 해결하기 위하여 노력하였습니다. UI 멈춤 현상을 쉽게 신고할 수 있도록 하여 이번 릴리스 주기 동안에는 접수된 신고 사항을 처리하느라 매우 바빴습니다 (여러분들께 감사드립니다!). 1600건이 넘는 리포트에서 UI 멈춤을 유발하던 수많은 문제를 해결할 수 있었습니다.

또한, ‘경로에서 찾기’에서 정규 표현식 패턴이 매우 긴 문자열과 일치하거나 많은 수의 에디터 또는 디버거 탭을 가지고 작업할 때 IntelliJ IDEA가 멈추지 않습니다. IDE는 이제 프로젝트 트리를 더 빠르게 렌더링합니다.

그리고, Java 타입 추론을 최적화하는 데 많은 노력을 투자하여 다른 다양한 에디터 멈춤 현상도 해결하였습니다. Java 성능 개선에 대하여 말씀을 드리면 긴 메소드 호출 체인에 대한 Java 타입 추론이 이제 더 빠르게 작동합니다. Java 파일에서, 특히 수많은 인수가 전달되는 제네릭 var-args(Arrays.asList, Map.ofEntries 등)를 사용하는 메소드에서 코드 강조 표시가 빨라졌습니다. 동시에 여러 라인에 대해 호출될 때 Join Lines 액션의 성능도 개선되었습니다.

IntelliJ IDEA에 Kotlin 플러그인 v1.3.60을 번들로 포함하여 Kotlin 파일에서도 더 빠른 에디터 강조 표시가 가능하게 되었습니다.

버전 관리 서브시스템에서 성능 최적화가 수행되었습니다. 이벤트 처리와 예외처리된 파일의 취급이 최적화되었습니다. 대형 프로젝트에서 멈춤 현상이 적어지고, 상태 업데이트가 더 빨라졌습니다.

빌드 시스템에서 대규모 Gradle 프로젝트를 가져올 때 최대 메모리 소비가 감소되었습니다. Maven 프로젝트에서는 pom.xml 파일 편집 시 멈춤 현상이 제거되어, IDE는 이제 지연 없이 코드 완성 제안을 표시합니다.

저희가 달성한 성과에 대해 만족하고 있지만, 아직 끝난 것이 아닙니다! 이러한 작업을 계속해서 수행할 계획이므로 향후 릴리스에서 훨씬 더 빨라진 시작 시간과 더 많은 최적화를 기대하셔도 좋습니다.

기존 기능의 품질 개선

IntelliJ IDEA는 풍부한 플러그인 생태계를 갖추고 있으며, 저희 플러그인 저장소를 통해 수많은 훌륭한 플러그인을 이용하실 수 있습니다. 하지만, 플러그인을 로드 및 언로드할 때마다 IDE를 다시 시작해야 하는 등 플러그인을 관리하기가 약간 번거러운 단점도 존재하였습니다. IntelliJ IDEA 2019.3에서는 역동적인 플러그인 설치를 지원하는 기반 인프라를 구현하여 이 문제를 해결하였습니다. 즉, 이제 IDE를 다시 시작하지 않고 플러그인을 로드 및 언로드할 수 있다는 뜻입니다. 이 기능은 현재 테마 및 단축키 플러그인에 대해 활성화되어 있습니다. 하지만, 향후 릴리스에서 대부분의 플러그인으로 확장될 계획입니다. 이 기능은 플러그인 관리를 최대한 쉽게 만들기 위한 작업의 첫 단계 중 하나입니다.

버전 관리 서브 시스템에서 수많은 사용성 개선 작업이 수행되었습니다. 명확성을 보장하기 위하여 “Checkout as action” 을 제거하고 대신 별도로 2개의 새로운 액션 ‘New Branch from Selected’와 ‘Checkout’을 도입하여 Git 체크아웃 워크플로를 개선하였습니다. 새로운 ‘New Branch from Selected’ 액션은 새로운 브랜치를 생성하고, 추적을 설정하지 않습니다. ‘Checkout’ 액션은 자동으로 새로운 로컬 브랜치를 생성하고, 체크아웃하며, 이름이 같은 로컬 브랜치가 없을 경우 선택된 원격 브랜치의 추적을 설정합니다.

다른 VCS 호스팅 서비스에서 프로젝트를 가져올 때 사용되는 UI를 통일하기 위하여 Clone 대화 상자를 재편하였습니다. 이제 이 대화 상자에서 로그인할 수 있으며, 이미 로그인한 경우 계정 또는 조직별로 그룹화된 모든 저장소 목록이 IDE에서 즉시 미리 보기로 표시됩니다.

또한, 브랜치를 푸시하기 위하여 체크아웃할 필요가 없습니다. 이제 간단하게 브랜치 팝업 창에서 필요한 브랜치를 찾아서 푸시하면 됩니다. 그리고, 이름이 변경되거나 이동된 파일에 대한 파일 기록에 파일 이름 열을 추가했습니다. 또 하나의 유용한 개선 사항은 .gitignore(또는 .hgignore) 목록에 있더라도 Git(또는 Mercurial)에 파일을 강제로 추가할 수 있는 기능입니다.

IntelliJ IDEA 2019.2에서 Java 13 대한 기본적인 지원이 추가되었으며, 이번 릴리스에서 Java13 텍스트 블록에 대한 지원이 대폭 개선되었습니다. 최근 게시된 블로그 게시글에서 이번 변경 사항에 대한 자세한 정보를 확인할 수 있습니다.

새로운 Field Call Hierarchy 액션이 추가되었습니다. Ctrl+Alt+H(Windows, macOS, Linux)를 사용하기만 하면 선택된 필드의 계층 구조를 확인할 수 있습니다. 이를 통해 모든 항목이 훨씬 더 간단해졌습니다.

이제 ‘Show quick documentation on mouse move’ 체크박스가 활성화되어, 경고 또는 오류를 마우스로 가리키면 통일된 툴팁이 표시되고, 여기서 해당 경고 또는 오류에 대한 설명과 코드 참조 정보를 확인할 수 있습니다.
전에는 이 경우 IDE가 문서 대신 검사 툴팁만 표시하였으며, 간혹 2개의 팝업 창이 동시에 표시될 때도 있었습니다.

인텐션 액션 대화 상자의 기본 동작이 업데이트되어 인텐션 액션을 선택한 후 대화 상자를 취소하더라도 인텐션 액션이 제안 목록에서 사라지지 않습니다.

서비스 도구 창이 이제 항상 표시되어, 그 안에서 바로 구성할 수 있게 되었습니다. 또한, 이 도구 창에서 특정 실행 구성을 숨길 수도 있습니다.

기타 유용한 개선 사항:

  • 타입 불일치 툴팁이 재편되어 가독성이 향상되었습니다.
  • 프로젝트를 열 때 IntelliJ IDEA가 이제 프로젝트 이름을 표시합니다.
  • Pug (이전 Jade), Handlebars, EJS, Slim 등 삽입할 수 있는 템플릿 언어가 늘어났습니다.
  • 마우스 휠 스크롤 동작이 더 부드러워졌습니다.
  • 이제 Preferences/Settings | Appearance & Behavior | Appearance의 “Use contrast scrollbars” 체크박스를 통해 스크롤바의 가시성이 더욱 개선되었습니다.

새로운 프레임워크 및 기술 지원

이번 릴리스에서는 주로 품질 개선에 초점을 두었지만, 오랫동안 작업을 진행해왔던 몇 가지 주목할 만한 기능의 도입 준비가 완료되었습니다. 아래에서 소개될 멋진 신규 기능들은 IntelliJ IDEA Ultimate에서만 이용할 수 있음을 알려드립니다.

저희가 이번 릴리스 주기의 준비를 시작하기 오래 전부터 마이크로서비스가 큰 화젯거리가 되었습니다. 언제부턴가 저희는 마이크로서비스 기반 아키텍처를 사용해 개발 프로세스를 더 즐겁게 만들고 Java 및 Kotlin 프로젝트 개발에 많이 사용되는 프레임워크와 기술에 대한 지원을 추가하는 것을 고려하게 되었습니다. 그러던 중, 이번 릴리스에서 좋은 기회로 마이크로서비스 통합 작업을 시작하게 되었습니다.

우선, Micronaut, Quarkus, Helidon과 같은 차세대 마이크로서비스 프레임워크에 대하여 풍부한 코딩 지원과 탐색을 추가하였습니다. 그리고, Spring 외에 리액티브 웹 서비스를 사용하는 분들을 위하여 Spring Web Flux에 대한 지원을 추가하였습니다.

보통, 마이크로서비스는 HTTP/ WebSocket을 통하여 서로 통신하므로, 다음 단계는 java.net.URI / URL, Retrofit v2, OkHttp v3 같은 많이 사용되는 Java HTTP 클라이언트 API와 Spring Feign, MicroProfile REST Client 등 인기 있는 서버측 프레임워크의 클라이언트 라이브러리에 대한 지원을 추가하는 것이었습니다. 이렇게 새로 추가된 지원 덕분에 IDE는 이제 URL 완성과 HTTP/WebSocket API 탐색 기능을 제공할 수 있게 되었습니다.

다음 단계에서는 새로운 ‘Endpoints’ 도구 창을 추가하여 프로젝트 내 엔드포인트의 레이아웃을 개선하였습니다. 이 창에는 클라이언트 및 서버 API가 모두 집계되어 표시됩니다. 이 창은 점진적으로 HTTP뿐만 아니라 gRPC, GraphQL 등 모든 API가 모인 곳이 될 것입니다.

마지막으로, API 문서 사양에 대한 지원을 확대하였습니다. 이번 릴리스에서는 Swagger v2 및 OpenAPI Specification v3에 대한 지원이 추가되었습니다. 작업을 할 때 사양 우선 접근 방법을 사용하는 분들을 위하여 IDE의 API에 대한 설명이 포함된 YAML/JSON 파일에서 스키마별 유효성 검사, 코드 완성, 탐색, 사용 위치 검색 및 Rename 리팩토링이 가능하도록 지원이 도입되었습니다.

지금은 Java 및 Kotlin 프로젝트만 지원되지만, 향후 릴리스에서는 더 많은 언어와 프레임워크를 지원할 계획입니다.

또한, IntelliJ IDEA 2019.3에서는 많은 기대를 모았던 MongoDB 지원이 추가되었습니다. 지금은 초기 지원에 불과하지만, 향후 지원을 확대할 계획입니다. IntelliJ IDEA는 이제 데이터베이스 탐색기에서 컬렉션과 필드를 확인하고, 쿼리를 실행하며, 쿼리 결과를 검토할 수 있는 기능을 제공합니다.

주요 버그 수정 사항


수많은 문제가 수정되었지만, 주요한 것만 열거하면 다음과 같습니다.

  • Homebrew를 통해 Gradle이 설치된 경우 IntelliJ IDEA는 이제 해당 설치 디렉터리를 찾을 수 있습니다.
  • Gradle 홈 디렉터리를 더 쉽게 직접 설정할 수 있습니다.
  • IDE는 이제 Linux에서 KWallet을 통한 비밀번호 저장을 지원합니다.
  • JavaFX 프로젝트 작업을 수행하는 경우 IDE가 Scene Builder 탭에 포함된 Scene Builder를 사용해 FXML 파일을 표시할 수 있습니다.
  • 이제 디버그 도구 창에서 키보드 탐색이 가능합니다.
  • 검사 팝업 창에서 Ctrl+C를 사용해 선택한 텍스트를 복사할 수 있습니다.
  • IDE 창 사이를 전환할 때 포커스가 상실되지 않습니다.
  • 창 및 팝업 위치가 수정되었습니다.
  • IDE에서 Darcula 테마가 선택된 경우 호출된 macOS 창은 다크 테마로 열립니다.

또한, JetBrains Runtime 11(JBR 11)이 업데이트되어 많은 수정 사항이 통합되었습니다.

  • macOS Catalina에서의 글꼴 렌더링이 수정되었습니다.
  • macOS 10.15 Catalina에서 프로젝트를 열 때 발생하던 문제가 해결되었습니다.
  • Evaluate Expression 대화 상자의 심볼이 수정되었습니다.
  • OS와의 키보드 레이아웃 충돌이 이제 감지 됩니다.
  • 항상 이탤릭체로 나타나던 에디터 글꼴 문제가 해결되었습니다.
  • Windows에서의 시작 화면이 수정되었습니다.
  • IDE는 이제 네이티브 OS 단축키와 IDE 단축키가 충돌할 경우 경고를 보냅니다.
  • 잘못된 에디터 글꼴(이탤릭체)이 수정되었습니다.

기타 변경 내용

또한, 이번 릴리스는 Android Studio 3.5의 모든 변경 사항을 포함하고 있습니다.

그리고, Vaadin 및 Java Applets 지원 플러그인이 번들에서 제외되었습니다. 이 플러그인은 당사의 플러그인 저장소에서 다운로드 받아서 직접 설치할 수 있습니다.

이번 릴리스에서는 약간 색다른 접근 방법을 시도했습니다. 이번 릴리즈의 결과가 여러분의 마음에 들었으면 좋겠습니다! 해결된 문제들의 전체 목록을 보고 싶으면 릴리스 노트를 참조하세요.

여러분의 의견을 들려 주시기 바랍니다! Twitter, Facebook을 통해 저희에게 연락하시거나 아래에 댓글을 남겨 주세요.

새로운 기능 페이지를 방문하고 개요 동영상을 시청해 보세요.
IntelliJ IDEA 2019.3을 통해 더 안정된 버전의 Java IDE를 이용하세요!

Happy Developing!

이 글은 Zlata Kalyuzhnaya의 IntelliJ IDEA 2019.3: Better Performance and Quality글을 번역하여 기재하였습니다.

image description

Discover more