Java IDE 선택

업데이트 날짜 : 2018 년 12 월 .

모든 Java 개발자에게는 Java 작성과 클래스 라이브러리 및 프레임 워크 사용의 복잡한 부분을 지원할 수있는 프로그래밍 편집기 또는 IDE가 필요합니다. 가장 적합한 편집기 또는 IDE를 결정하는 것은 개발중인 프로젝트의 특성, 조직에서의 역할, 개발 팀에서 사용하는 프로세스, 프로그래머로서의 레벨 및 기술을 포함하여 여러 가지 사항에 따라 달라집니다. 추가 고려 사항은 팀이 도구를 표준화했는지 여부와 개인 선호도입니다.

서버 측 Java 개발을 위해 가장 자주 선택되는 세 가지 IDE는 IntelliJ IDEA, Eclipse 및 NetBeans입니다. 그러나 이것이 유일한 선택은 아니며이 리뷰에는 가벼운 IDE도 포함됩니다.

이번 검거를 위해 저는 IntelliJ IDEA Ultimate 2018.3, Java EE 개발자 용 Eclipse IDE 2018‑09 및 Mac에서 Apache NetBeans (인큐베이팅) IDE 9를 새로 설치했습니다. 또한 동일한 프로젝트에서 모든 IDE를 테스트 할 수 있도록 여러 오픈 소스 Java 프로젝트를 확인했습니다.

이 업데이트 정보

이 IDE 리뷰는 2016 년 9 월에 처음 게시되었으며 2018 년 12 월에 업데이트되었습니다. 그 사이에 Java 언어, API, JVM 에코 시스템 및 일부 프레임 워크가 크게 발전했습니다. Java EE 8은 서버 측 사용자 인터페이스 구축을위한 JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 및 JSF (JavaServer Faces) 2.3을 포함하여 많은 Java 기술 사양을 도입하거나 업데이트했습니다. Java EE 8은 Oracle의 최종 Java 엔터프라이즈 릴리스이기도합니다. Eclipse Foundation이 기술 관리를 담당했으며 Jakarta EE로 브랜드를 변경했습니다. 한편 JUnit은 버전 5로 발전하여 통합을 깨뜨 렸습니다. IDEA와 Eclipse는 모두 JUnit 5를 기본적으로 지원하지만이 글을 쓰는 시점에서 NetBeans는 지원하지 않습니다.

이러한 모든 변경 사항은 일반적인 용도로든 특정 프로젝트를 위해 든 IDE 평가의 일부 여야합니다.

NetBeans 10은 JUnit 5 및 JDK 11에 대한 지원을 추가합니다.

2019 년 1 월에 출시 된 NetBeans 10은 JDK 11 및 JUnit 5에 대한 지원을 추가합니다.

기초 : Java IDE에서 필요한 것

최소한 IDE가 Java 8 및 / 또는 11 (LTS 버전), Scala, Groovy, Kotlin 및 정기적으로 사용하는 기타 JVM 언어를 지원하기를 바랍니다. 또한 Spring MVC, JSF, Struts, GWT, Play, Grails 및 Vaadin을 포함한 주요 애플리케이션 서버 및 가장 인기있는 웹 프레임 워크를 지원하기를 원할 것입니다. IDE는 개발 팀이 사용하는 빌드 및 버전 제어 시스템과 호환되어야합니다. 예를 들어 Ivy, Maven 및 Gradle이있는 Apache Ant와 Git, SVN, CVS, Mercurial 및 Bazaar가 있습니다. 추가 크레딧을 얻으려면 IDE가 포함 된 JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate 및 Java Persistence API를 지원하여 스택의 클라이언트 및 데이터베이스 계층을 처리 할 수 ​​있어야합니다.

마지막으로 Java IDE를 사용하여 시스템을 쉽고 우아하게 편집, 빌드, 디버그 및 테스트 할 수 있기를 바랍니다. 이상적으로는 지능적인 코드 완성뿐 아니라 리팩토링 및 코드 메트릭스가 있습니다. 테스트 중심 개발을 수행하는 상점에있는 경우 테스트 프레임 워크 및 스터 빙에 대한 지원이 필요합니다. 그룹에서 티켓 시스템과 CI / CD를 사용하는 경우 IDE에서 연결할 수있는 것이 가장 좋습니다. 컨테이너 및 클라우드에 배포하고 디버깅해야하는 경우 IDE가이를 지원해야합니다.

그 기초를 염두에두고 경쟁자들을 고려해 봅시다.

IntelliJ IDEA

IntelliJ IDEA는 기능과 가격면에서 최고의 Java IDE로 두 가지 버전으로 제공됩니다. 무료 Community 버전과 추가 기능이있는 유료 Ultimate 버전입니다.

Community 에디션은 JVM 및 Android 개발 용입니다. Java, Kotlin, Groovy 및 Scala를 지원합니다. 기계적 인조 인간; Maven, Gradle 및 SBT; Git, SVN, Mercurial, CVS 및 TFS.

웹 및 엔터프라이즈 개발을위한 Ultimate 버전은 다른 버전 제어 시스템과 함께 Perforce를 지원합니다. JavaScript 및 TypeScript를 지원합니다. Java EE, Spring, GWT, Vaadin, Play, Grails 및 기타 프레임 워크를 지원합니다. 데이터베이스 도구 및 SQL 지원이 포함됩니다.

아이디어는 상용 (Ultimate) 에디션이 프로그래머 생산성 향상을 통해 유료 구독을 정당화하여 전문가의 데스크톱에서 자리를 차지할 것이라는 것입니다. Java 개발자로서 연간 $ 50,000 ~ $ 100K를 벌고 있다면 연간 $ 500 비즈니스 IDEA 구독에 대한 빠른 ROI를 제공하는 데 생산성이 크게 향상되지는 않습니다. 그 후 기업의 경우 가격이 내려 가고 스타트 업과 개인에게는 훨씬 저렴하며 학생, 교사, "Java 챔피언"및 오픈 소스 개발자에게는 무료입니다.

IntelliJ는 코드, 개발자 인체 공학, 기본 제공 개발자 도구 및 다중 언어 프로그래밍 경험에 대한 깊은 통찰력을 위해 IDEA를 선전합니다. 드릴 다운하여 이러한 기능의 의미와 이러한 기능이 어떻게 도움이되는지 살펴 보겠습니다.

마틴 헬러

코드에 대한 깊은 통찰력

Java 편집기에는 구문 색상 지정 및 간단한 코드 완성이 제공됩니다. IDEA는 그 이상으로 "스마트 완성"을 제공합니다. 즉, 현재 컨텍스트에서 적용 할 수있는 가장 관련성 높은 기호 목록을 팝업 할 수 있습니다. 개인 사용 빈도에 따라 순위가 결정됩니다. "체인 완성"은 더 깊어지고  현재 컨텍스트에서 메서드 또는 게터통해 액세스 할 수있는 적용 가능한 기호 목록을 표시합니다  . 또한 IDEA는 정적 멤버 또는 상수를 완성하여 필요한 import 문을 자동으로 추가합니다. 모든 코드 완성에서 IDEA는 런타임 심볼 유형을 추측하고 선택 사항을 수정하며 필요에 따라 클래스 캐스트를 추가합니다.

Java 코드는 종종 다른 언어를 문자열로 포함합니다. IDEA는 SQL, XPath, HTML, CSS 및 / 또는 JavaScript 코드 조각을 Java 문자열 리터럴에 삽입 할 수 있습니다. 이를 위해 여러 언어로 코드를 리팩토링 할 수 있습니다. 예를 들어 JPA 문에서 클래스의 이름을 바꾸면 IDEA는 해당 엔티티 클래스와 JPA 표현식을 업데이트합니다.

코드 조각을 리팩토링 할 때 일반적으로 원하는 작업 중 하나는 해당 코드의 모든 복제본을 리팩터링하는 것입니다. IDEA Ultimate는 중복 및 유사한 조각을 감지하고 리팩토링을 적용 할 수도 있습니다.

IntelliJ IDEA는 코드가로드 될 때와 입력 할 때 코드를 분석합니다. 가능한 문제를 지적하는 검사와 원하는 경우 감지 된 문제에 대한 빠른 수정 목록을 제공합니다.

개발자 인체 공학

IntelliJ는 개발자의 창의적 흐름 ( 일명  "존재")을 염두에두고 IDEA를 설계했습니다 . 그림 1의 왼쪽에 표시된 프로젝트 도구 창은 간단한 마우스 클릭으로보기에서 사라 지므로 코드 편집기에 집중할 수 있습니다. 편집하는 동안 수행하려는 모든 작업에는 팝업 창에 기호 정의를 표시하는 것을 포함하여 키보드 단축키가 있습니다. 지름길을 배우려면 시간과 연습이 필요하지만 결국에는 제 2의 천성이됩니다. 단축키를 몰라도 개발자는 쉽고 빠르게 IDEA 사용법을 배울 수 있습니다.

IDEA 디버거의 디자인은 특히 좋습니다. 변수 값은 편집기 창에서 해당 소스 코드 옆에 표시됩니다. 변수의 상태가 변경되면 강조 표시 색상도 변경됩니다.

기본 제공 개발자 도구

IntelliJ IDEA는 Git, SVN, Mercurial, CVS, Perforce 및 TFS를 포함한 대부분의 주요 버전 제어 시스템을위한 통합 인터페이스를 제공합니다. IDE에서 바로 모든 변경 관리를 수행 할 수 있습니다. IDEA를 테스트 하면서 소스 코드 블록 의 마지막 변경 사항 이 편집기 창에 주석으로 표시 되기를 원했습니다 (Visual Studio에서와 같이). 결과적으로이를위한 플러그인이 있습니다.

또한 IDEA는 빌드 도구, 테스트 실행기, 커버리지 도구 및 내장 터미널 창을 통합합니다. IntelliJ에는 자체 프로파일 러가 없지만 플러그인을 통해 여러 타사 프로파일 러를 지원합니다. 여기에는 전 IntelliJ 리드 개발자가 만든 YourKit과 NetBeans 프로파일 러의 리 패키지 버전 인 VisualVM이 포함됩니다.

Java 디버깅은 소스 코드가없는 클래스에서 이상한 일이 발생할 때 고통 스러울 수 있습니다. IDEA는 이러한 경우를위한 디 컴파일러와 함께 제공됩니다.

Java 서버 프로그래밍에는 종종 데이터베이스 작업이 포함되므로 IDEA Ultimate에는 SQL 및 NoSQL 데이터베이스 도구가 포함됩니다. 더 많은 것이 필요한 경우, IDEA Ultimate 구독보다 조금 더 비싼 모든 제품 구독의 일부로 전용 SQL IDE (DataGrip)를 사용할 수 있습니다.

IntelliJ IDEA는 모든 주요 JVM 애플리케이션 서버를 지원하고 서버에 배포 및 디버깅 할 수 있으므로 Enterprise Java 개발자의 주요 문제점을 해결할 수 있습니다. 또한 IDEA는 Docker 도구 창을 추가하는 플러그인을 통해 Docker를 지원합니다. (플러그인과 관련하여 IntelliJ에는 많은 기능이 있습니다.)

다국어 프로그래밍

IDEA는 Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS 및 기타 프레임 워크에 대한 코딩 지원을 확장했습니다. 이들 모두가 Java 프레임 워크는 아닙니다. Java 외에도 IDEA는 Groovy, Kotlin, Scala, JavaScript, TypeScript 및 SQL을 포함한 다른 많은 언어를 즉시 이해할 수 있습니다. 더 필요한 경우 현재 R, Elm, Go, Rust 및 D 용 플러그인을 포함하여 수백 개의 IntelliJ 언어 플러그인이 있습니다.

이클립스 IDE

오랫동안 가장 인기있는 Java IDE 인 Eclipse는 무료이며 오픈 소스이며 대부분 Java로 작성되었지만 플러그인 아키텍처를 사용하면 Eclipse를 다른 언어로 확장 할 수 있습니다. Eclipse는 2001 년 Smalltalk 기반 IBM Visual Age IDE 제품군을 휴대용 Java 기반 IDE로 대체하기위한 IBM 프로젝트로 시작되었습니다. 이 프로젝트의 목표는 Microsoft Visual Studio의 이름을 바꾸는 것이 었습니다.

Java의 이식성은 Eclipse가 크로스 플랫폼이되도록 도와줍니다. Eclipse는 Linux, Mac OS X, Solaris 및 Windows에서 실행됩니다. Java Standard Widget Toolkit (SWT)은 좋든 나쁘 든 이클립스의 룩앤필을 적어도 부분적으로 담당합니다. 마찬가지로 이클립스의 성능은 JVM 때문이다. Eclipse는 느리게 실행되는 것으로 유명하며 이는 구형 하드웨어 및 구형 JVM을 생각하게합니다. 그러나 오늘날에도 많은 플러그인이 설치된 백그라운드에서 자체적으로 업데이트되는 경우 속도가 느려질 수 있습니다.

Eclipse에서 발생하는 오버 헤드의 일부는 파일을로드 할 때마다 그리고 코드를 업데이트 할 때마다 실행되는 내장 증분 컴파일러입니다. 이것은 균형이 잘 잡혀 있으며 입력 할 때 오류 표시기를 제공합니다.

빌드 시스템과는 독립적으로 Eclipse Java 프로젝트는 Java 요소의 유형 계층, 참조 및 선언에 대한 정보를 포함하는 컨텐츠 모델도 유지합니다. 이것은 균형이 잘 잡혀 있으며 여러 편집 및 탐색 도우미와 개요보기를 사용할 수 있습니다.

현재 Eclipse 버전은 2018‑09입니다. Java EE 개발자 용 Eclipse IDE를 설치했지만 최소 Eclipse SDK를 설치하고 필요한 경우에만 플러그인을 추가하는 옵션을 포함하여 다른 많은 설치 패키지가 있습니다. 마지막 옵션은 그러나, 심장 약한되지 않습니다 : 실제로하지 않은 플러그인 간의 충돌 소개 어렵지 않다  라고  그들이 호환되지 않는합니다.

마틴 헬러

확장 가능한 도구 지원

플러그인 생태계는 이클립스의 강점 중 하나 일뿐만 아니라 때때로 좌절감을 느끼게합니다. Eclipse 마켓 플레이스에는 현재 1,600 개 이상의 솔루션이 포함되어 있으며 커뮤니티에서 제공 한 플러그인은 광고 된대로 작동하거나 작동하지 않을 수 있습니다. 하지만 Eclipse 플러그인에는 100 개 이상의 프로그래밍 언어와 거의 200 개의 애플리케이션 개발 프레임 워크에 대한 지원이 포함되어 있습니다.

대부분의 Java 서버도 지원됩니다. Eclipse에서 새 서버 연결을 정의하면 공급 업체 폴더 목록이 표시되며 그 아래에는 Apache Tomcat 9 개 버전을 포함하여 약 30 개의 애플리케이션 서버가 있습니다. 예를 들어, Red Hat JBoss Middleware에는 WildFly 및 EAP Server Tools와 JBoss AS가 포함 된 항목이 하나뿐입니다.

편집, 찾아보기, 리팩토링 및 디버깅

Eclipse에 대한 개발자의 첫 경험은 혼란스럽고 혼란 스러울 수 있습니다. 이는 첫 번째 작업이 Eclipse의 작업 공간, 관점 및보기의 개념적 아키텍처에 적응하는 것이기 때문입니다. 그 기능은 설치 한 플러그인에 따라 결정됩니다. 예를 들어, Java 서버 개발의 경우 Java, Java EE 및 Java 브라우징 관점을 사용합니다. 패키지 탐색기보기; 디버깅 관점; 팀 동기화 관점; 웹 도구; 데이터베이스 개발 관점; 및 데이터베이스 디버깅 관점. 실제로 필요한 뷰를 열면 모든 것이 이해되기 시작합니다.

Eclipse에서 주어진 작업을 수행하는 방법은 종종 여러 가지가 있습니다. 예를 들어, 프로젝트 탐색기 및 / 또는 Java 브라우징 Perspective를 사용하여 코드를 찾아 볼 수 있습니다. 당신이 선택하는 것은 취향과 경험의 문제입니다.

Java 검색 지원을 통해 Java 패키지, 유형, 메소드 및 필드의 선언, 참조 및 발생을 찾을 수 있습니다. 빠른 액세스를 사용하여 검색하고 빠른보기를 사용하여 수업 개요와 같은 항목을 팝업 할 수도 있습니다.