Wybór środowiska Java IDE

Aktualizacja: grudzień 2018 r .

Każdy programista Java potrzebuje edytora programowania lub środowiska IDE, które może pomóc w bardziej grubych częściach pisania języka Java oraz korzystania z bibliotek klas i struktur. Decyzja o tym, który edytor lub IDE będzie dla Ciebie najbardziej odpowiedni, zależy od kilku rzeczy, w tym charakteru rozwijanych projektów, Twojej roli w organizacji, procesu wykorzystywanego przez zespół programistów oraz Twojego poziomu i umiejętności jako programisty. Dodatkowe rozważania dotyczą tego, czy zespół ustandaryzował narzędzia i Twoje osobiste preferencje.

Trzy IDE najczęściej wybierane do programowania w języku Java po stronie serwera to IntelliJ IDEA, Eclipse i NetBeans. Nie są to jednak jedyne wybory, a ta recenzja będzie zawierała również kilka lekkich IDE.

W tym podsumowaniu wykonałem nowe instalacje IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018-09 dla deweloperów Java EE i Apache NetBeans (inkubujące) IDE 9 na komputerze Mac. Sprawdziłem również kilka projektów Java o otwartym kodzie źródłowym, aby móc przetestować wszystkie środowiska IDE w tych samych projektach.

O tej aktualizacji

Ta recenzja IDE została opublikowana po raz pierwszy we wrześniu 2016 r. I została zaktualizowana w grudniu 2018 r. W tych latach język Java, interfejsy API, ekosystem JVM i niektóre frameworki znacznie się rozwinęły. Java EE 8 wprowadziła lub zaktualizowała wiele specyfikacji technologii Java, w tym JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 i JSF (JavaServer Faces) 2.3 w celu tworzenia interfejsów użytkownika po stronie serwera. Java EE 8 była także ostatnią wersją Java Enterprise firmy Oracle: Eclipse Foundation przejęła odpowiedzialność za zarządzanie technologią, którą przemianowała na Jakarta EE. W międzyczasie JUnit przeszedł do wersji 5, przerywając integracje; IDEA i Eclipse mają natywne wsparcie dla JUnit 5, ale od tego momentu NetBeans nie.

Wszystkie te zmiany powinny być częścią Twojej oceny IDE, czy to do ogólnego użytku, czy do konkretnego projektu.

NetBeans 10 dodaje obsługę JUnit 5 i JDK 11

Wydany w styczniu 2019 r. NetBeans 10 dodaje obsługę JDK 11 i JUnit 5.

Podstawy: Czego potrzebujesz od środowiska Java IDE

Przynajmniej masz nadzieję, że Twoje IDE obsługuje Javę 8 i / lub 11 (wersje LTS), Scala, Groovy, Kotlin i wszystkie inne języki JVM, których regularnie używasz. Chciałbyś również, aby obsługiwał główne serwery aplikacji i najpopularniejsze platformy internetowe, w tym Spring MVC, JSF, Struts, GWT, Play, Grails i Vaadin. Twoje IDE powinno być kompatybilne z każdym systemem kompilacji i kontroli wersji, którego używa twój zespół programistów; przykłady obejmują Apache Ant with Ivy, Maven i Gradle, a także Git, SVN, CVS, Mercurial i Bazaar. Aby uzyskać dodatkowe punkty, IDE powinno być w stanie obsłużyć warstwę klienta i bazy danych swojego stosu, obsługując wbudowany JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate i Java Persistence API.

Wreszcie, masz nadzieję, że Twoje środowisko Java IDE pozwoli Ci edytować, budować, debugować i testować systemy z łatwością i wdzięcznością. Idealnie byłoby nie tylko inteligentne uzupełnianie kodu, ale także refaktoryzację i metryki kodu. Jeśli jesteś w sklepie, który zajmuje się programowaniem opartym na testach, potrzebujesz wsparcia dla swoich frameworków testowych i stubbingu. Jeśli twoja grupa korzysta z systemu biletowego i CI / CD, najlepiej, jeśli twoje IDE może się z nimi połączyć. Jeśli musisz wdrożyć i debugować w kontenerach i chmurach, Twoje IDE powinno Ci w tym pomóc.

Pamiętając o tym fundamencie, rozważmy kandydatów.

IntelliJ IDEA

IntelliJ IDEA, wiodące środowisko Java IDE zarówno pod względem funkcji, jak i ceny, jest dostępne w dwóch wersjach: bezpłatnej edycji społecznościowej i płatnej edycji Ultimate, która ma dodatkowe funkcje.

Wersja Community jest przeznaczona do programowania maszyn JVM i Androida. Obsługuje Java, Kotlin, Groovy i Scala; Android; Maven, Gradle i SBT; oraz Git, SVN, Mercurial, CVS i TFS.

Edycja Ultimate, przeznaczona do tworzenia aplikacji internetowych i korporacyjnych, oprócz innych systemów kontroli wersji, obsługuje Perforce; obsługuje JavaScript i TypeScript; obsługuje Java EE, Spring, GWT, Vaadin, Play, Grails i inne frameworki; i obejmuje narzędzia bazy danych i obsługę języka SQL.

Chodzi o to, że komercyjna (Ultimate) edycja zyska swoje miejsce na biurku profesjonalisty, uzasadniając płatną subskrypcję zwiększoną produktywnością programisty. Jeśli zarabiasz od 50 000 do 100 000 USD rocznie jako programista Java, nie potrzeba dużego wzrostu produktywności, aby zapewnić szybki zwrot z inwestycji w abonament biznesowy IDEA o wartości 500 USD rocznie. W kolejnych latach cena spada w przypadku firm, jest znacznie niższa w przypadku start-upów i osób prywatnych oraz jest bezpłatna dla uczniów, nauczycieli, „mistrzów języka Java” i programistów open source.

IntelliJ zachęca IDEA do głębokiego wglądu w kod, ergonomię programisty, wbudowane narzędzia programistyczne i doświadczenie w programowaniu poliglotowym. Przyjrzyjmy się bliżej i zobaczmy, co oznaczają te funkcje i jak mogą Ci pomóc.

Martin Heller

Głęboki wgląd w Twój kod

Edytory Java mają możliwość kolorowania składni i prostego uzupełniania kodu. IDEA wykracza poza to, zapewniając „inteligentne uzupełnianie”, co oznacza, że ​​może wyświetlić listę najbardziej odpowiednich symboli mających zastosowanie w bieżącym kontekście. Są one uszeregowane według osobistej częstotliwości korzystania. „Ukończenie łańcucha” idzie głębiej i wyświetla listę odpowiednich symboli  dostępnych za pomocą metod lub metod pobierających  w bieżącym kontekście. IDEA uzupełnia również statyczne składowe lub stałe, automatycznie dodając wszelkie potrzebne instrukcje importu. We wszystkich uzupełnieniach kodu IDEA próbuje odgadnąć typ symbolu środowiska wykonawczego, zawęzić wybór na podstawie tego i dodać rzutowanie klas w razie potrzeby.

Kod Java często zawiera inne języki jako ciągi znaków. IDEA może wstrzykiwać fragmenty kodu SQL, XPath, HTML, CSS i / lub JavaScript do literałów Java String. W tym przypadku może refaktoryzować kod w wielu językach; na przykład, jeśli zmienisz nazwę klasy w instrukcji JPA, IDEA zaktualizuje odpowiednią klasę jednostki i wyrażenia JPA.

Podczas refaktoryzacji fragmentu kodu jedną z rzeczy, które zwykle chcesz zrobić, jest również refaktoryzacja wszystkich duplikatów tego kodu. IDEA Ultimate może wykryć duplikaty i podobne fragmenty oraz zastosować do nich refaktoryzację.

IntelliJ IDEA analizuje kod podczas ładowania i podczas pisania. Oferuje inspekcje mające na celu wskazanie możliwych problemów i, jeśli chcesz, listę szybkich napraw wykrytego problemu.

Ergonomia programisty

IntelliJ zaprojektował IDEA z myślą o twórczym przepływie programisty - czyli  „byciu w strefie”. Okno narzędzia projektu pokazane po lewej stronie na rysunku 1 znika z widoku po prostym kliknięciu myszą, dzięki czemu można skoncentrować się na edytorze kodu. Wszystko, co chcesz zrobić podczas edycji, ma skrót klawiaturowy, w tym wyświetlanie definicji symboli w wyskakującym okienku. Chociaż nauka skrótów wymaga czasu i praktyki, w końcu stają się one drugą naturą. Nawet nie znając skrótów, programista może łatwo i szybko nauczyć się obsługi IDEA.

Projekt debuggera IDEA jest szczególnie przyjemny. Wartości zmiennych pojawiają się bezpośrednio w oknie edytora, obok odpowiedniego kodu źródłowego. Kiedy zmienia się stan zmiennej, zmienia się również jej kolor podświetlenia.

Wbudowane narzędzia programistyczne

IntelliJ IDEA zapewnia ujednolicony interfejs dla większości głównych systemów kontroli wersji, w tym Git, SVN, Mercurial, CVS, Perforce i TFS. Możesz zarządzać wszystkimi zmianami bezpośrednio w IDE. Ponieważ testowałem IDEA, chciałem, aby ostatnia zmiana w bloku kodu źródłowego pojawiła się w oknie edytora jako adnotacja (tak jak w Visual Studio). Jak się okazuje, jest do tego wtyczka.

IDEA integruje również narzędzia do budowania, programy uruchamiające testy i narzędzia pokrycia, a także wbudowane okno terminala. IntelliJ nie ma własnego programu profilującego, ale obsługuje kilka profilerów innych firm za pośrednictwem wtyczek. Należą do nich YourKit, stworzony przez byłego głównego programistę IntelliJ, oraz VisualVM, który jest przepakowaną wersją profilera NetBeans.

Debugowanie Javy może być uciążliwe, gdy tajemnicze rzeczy dzieją się w klasach, dla których nie masz kodu źródłowego. IDEA zawiera dekompilator dla tych przypadków.

Programowanie serwera Java często wymaga pracy z bazami danych, dlatego IDEA Ultimate zawiera narzędzia bazodanowe SQL i NoSQL. Jeśli potrzebujesz więcej, dedykowane środowisko SQL IDE (DataGrip) jest dostępne w ramach subskrypcji obejmującej wszystkie produkty, która jest tylko trochę droższa niż subskrypcja IDEA Ultimate.

IntelliJ IDEA obsługuje wszystkie główne serwery aplikacji JVM i może wdrażać i debugować na serwerach, rozwiązując główny problem dla programistów Java Enterprise. IDEA obsługuje również Dockera za pośrednictwem wtyczki, która dodaje okno narzędzia Docker. (Mówiąc o wtyczkach, IntelliJ ma ich wiele).

Programowanie Polyglot

IDEA rozszerzyła pomoc w kodowaniu dla Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS i innych frameworków. Nie wszystkie z nich to frameworki Java. Oprócz Java, IDEA rozumie wiele innych języków po wyjęciu z pudełka, w tym Groovy, Kotlin, Scala, JavaScript, TypeScript i SQL. Jeśli potrzebujesz więcej, obecnie istnieją setki wtyczek językowych IntelliJ, w tym wtyczki dla R, Elm, Go, Rust i D.

Eclipse IDE

Eclipse, od dawna najpopularniejsze środowisko Java IDE, jest darmowe i open source i jest napisane głównie w Javie, chociaż jego architektura wtyczek umożliwia rozszerzenie Eclipse na inne języki. Eclipse powstał w 2001 roku jako projekt IBM mający na celu zastąpienie rodziny IDE IBM Visual Age opartej na Smalltalk przenośnym IDE opartym na Javie. Celem projektu było zaćmienie Microsoft Visual Studio, stąd nazwa.

Mobilność Javy pomaga Eclipse działać na wielu platformach: Eclipse działa w systemach Linux, Mac OS X, Solaris i Windows. Java Standard Widget Toolkit (SWT) jest przynajmniej częściowo odpowiedzialna za wygląd i działanie Eclipse, na dobre lub na złe. Podobnie Eclipse zawdzięcza swoje działanie (lub, jak mówią niektórzy, jego brak) JVM. Eclipse ma reputację powolnego działania, co nawiązuje do starszego sprzętu i starszych maszyn JVM. Jednak nawet dziś może wydawać się powolny, zwłaszcza gdy aktualizuje się w tle z zainstalowanymi wieloma wtyczkami.

Częścią obciążenia występującego w Eclipse jest jego wbudowany kompilator przyrostowy, który jest uruchamiany za każdym razem, gdy ładuje plik i kiedy aktualizujesz kod. Jest to bardzo dobre rozwiązanie i zapewnia wskaźniki błędów podczas pisania.

Niezależnie od systemu kompilacji projekt Eclipse Java utrzymuje również model swojej zawartości, który obejmuje informacje o hierarchii typów, referencjach i deklaracjach elementów Java. Jest to również dobra rzecz i umożliwia kilka asystentów edycji i nawigacji, a także widok konspektu.

Aktualna wersja Eclipse to 2018-09. Zainstalowałem Eclipse IDE dla programistów Java EE, ale jest wiele innych pakietów instalacyjnych, w tym opcja instalacji minimalnego zestawu Eclipse SDK i dodawania wtyczek tylko w razie potrzeby. Ostatnia opcja nie jest jednak dla osób o słabym sercu: nietrudno jest wprowadzić konflikty między wtyczkami, które w rzeczywistości nie  mówiły,  że są niekompatybilne.

Martin Heller

Rozszerzalna obsługa narzędzi

Ekosystem wtyczek jest jedną z mocnych stron Eclipse, a także jest źródłem sporadycznej frustracji. Rynek Eclipse zawiera obecnie ponad 1600 rozwiązań, a wtyczki stworzone przez społeczność mogą, ale nie muszą działać zgodnie z reklamą. Mimo to, wtyczki Eclipse obejmują obsługę ponad 100 języków programowania i prawie 200 frameworków do tworzenia aplikacji.

Obsługiwana jest również większość serwerów Java: jeśli zdefiniujesz nowe połączenie z serwerem z Eclipse, dojdziesz do listy folderów dostawców, poniżej której znajdziesz około 30 serwerów aplikacji, w tym dziewięć wersji Apache Tomcat. Sprzedawcy komercyjni zwykle łączą swoje oferty w jedną całość: na przykład w ramach oprogramowania pośredniego Red Hat JBoss Middleware znajduje się tylko jeden element, który obejmuje WildFly i EAP Server Tools, a także JBoss AS.

Edycja, przeglądanie, refaktoryzacja i debugowanie

Pierwsze doświadczenia programisty z Eclipse mogą być niepokojące, a nawet mylące. Dzieje się tak, ponieważ Twoim pierwszym zadaniem jest dostosowanie się do koncepcyjnej architektury Eclipse obszarów roboczych, perspektyw i widoków, których funkcje są określane przez zainstalowane wtyczki. Na przykład podczas tworzenia serwerów Java prawdopodobnie będziesz korzystać z perspektyw przeglądania w językach Java, Java EE i Java; widok eksploratora pakietów; perspektywa debugowania; perspektywa synchronizacji zespołu; narzędzia internetowe; perspektywa rozwoju bazy danych; oraz perspektywa debugowania bazy danych. W praktyce wszystko to zacznie mieć sens, gdy otworzysz potrzebne widoki.

Często istnieje więcej niż jeden sposób wykonania danego zadania w Eclipse. Na przykład, możesz przeglądać kod za pomocą eksploratora projektów i / lub perspektywy przeglądania Java; który wybierzesz to kwestia gustu i doświadczenia.

Obsługa wyszukiwania w języku Java umożliwia znajdowanie deklaracji, odwołań i wystąpień pakietów, typów, metod i pól języka Java. Możesz także użyć szybkiego dostępu do wyszukiwania i używać szybkich widoków, aby wyświetlać takie rzeczy, jak konspekty zajęć.