Które IDE wybrać – Eclipse vs IntelliJ IDEA

Temat wyboru IDE dla Javy od zawsze był kontrowersyjny i trochę zmieniał na przestrzeni ostatnich kilkunastu lat. Jeszcze jakieś 10 lat temu główny wybór dokonywał się pomiędzy Eclipse IDE - środowiskiem wywodzącym się z projektu eclipse rozwijanego przez firmę IBM oraz NetBeansem rozwijanym przez Sun Microsystems, a obecnie przez Oracle. W 2001 roku (czyli jeszcze przed powstaniem eclipse) udostępniona została także pierwsza wersja Intellij IDEA , narzędzia od czeskiej firmy Jetbrains, na bazie którego powstały również środowiska do innych języków programowania takich jak Python, czy PHP. Oprócz wymienionej trójki istnieje jeszcze JDeveloper , czyli kolejne środowisko rozwijane przez Oracle, jednak cieszy się ono marginalną popularnością. W środowisku akademickim można spotkać jeszcze środowisko o nazwie BlueJ stworzone na Uniwersytecie w Kent, które posiada pewne zalety z punktu widzenia początkujących, jednak znacząco odstaje od pozostałych wymienionych narzędzi pod względem funkcjonalności do zastosowań profesjonalnych, czy półprofesjonalnych. W chwili pisania tego artykułu, czyli mniej więcej połowie 2016 roku według jednej z największych ankiet przeprowadzanych w świecie programistów Javy przez ZeroTurnaround możemy zauważyć, że po raz pierwszy w historii IntelliJ IDEA jest najpopularniejszym środowiskiem wyprzedzając eclipse. Warto też zwrócić uwagę na dominację tych dwóch środowisk w porównaniu do NetBeansa. Warto brać pod uwagę fakt, że wielu deweloperów zarzuca nierzetelność badania i fakt, że w innych ankietach to Eclipse nadal jest wiodącym środowiskiem z co najmniej kilkuprocentową przewagą.

eclipse vs intellij

Eclipse - wady i zalety

eclipse neon

Największą zaletą Eclipsejest to, że środowisko jest open source i całkowicie darmowe nawet do zastosowań komercyjnych. Niezależnie, czy tworzymy proste aplikacje, czy rozbudowane aplikacje webowe korzystające z Javy EE, nie musimy ponosić żadnych kosztów. Eclipse jest łatwo rozszerzalną platformą z bogactwem pluginów dostępnych w eclipse marketplace, więc o ile "gołe" IDE niekoniecznie daje ogromne możliwości, to już po dodaniu kilku wtyczek, możemy całość skonfigurować dokładnie pod swoje potrzeby otrzymując doskonałe wsparcie dla pobocznych technologii takich jak JavaFX, JavaEE, czy Spring. Jeśli mowa o ostatnim z wymienionych, to firma Pivotal, czyli ludzie odpowiedzialni za rozwój Spring framework, oparli swoje oficjalne środowisko właśnie o eclipse i jest ono dostępne pod nazwą Spring Tools Suite. Znajdziemy w nim wsparcie praktycznie dla wszystkich aspektów tworzenia zaawansowanych aplikacji oraz regularne aktualizacje. Jeśli chodzi o samego eclipse, to najczęściej pojawiającymi się zarzutami jest powolność, duża zajętość ramu, czy zawieszanie się. Osobiście mój Eclipse z zainstalowanymi dosyć obszernymi pluginami (efxclipse, jboss tools, spring tools suite) na starcie potrzebuje ok 550MB ramu - raczej uważam to za standard. Nie pamiętam kiedy zdarzyło mi się ostatnio, aby środowisko przestało działać, pojawiały się co najwyżej bardzo krótkie przywieszenia, które jednak nie wpływały negatywnie na produktywność i na pewno nie występują co chwilę. Co ciekawe często trafimy na głosy, że to IntelliJ jest najwolniejszym IDE, niektórzy nawet proponują swoje triki (np. zwiększanie ilości ramu), które mają temu pomóc. Ogólnie jest to więc kwestia mocno sporna i występująca w przypadku obu środowisk. Eclipse podzielony jest na kilka wersji, np. "For Java developers", "For Java EE developers". W drugim przypadku dostajemy środowisko z narzędziami (preinstalowanymi pluginami), które rozbudowują możliwości IDE o tworzenie aplikacji biznesowych po stronie serwera. Jeżeli tworzymy tylko aplikacje desktopowe, to pierwsze, które zajmuje dużo mniej miejsca w zupełności nam wystarczy. W przypadku Eclipse for JEE developers otrzymujemy podstawowe wsparcie dla tworzenia takich elementów jak np. servlety, możliwość uruchamiania serwera z poziomu IDE, podpowiadanie składni HTML i Javascript, a po doinstalowaniu np. JBoss Tools również zaawansowane narzędzia wspierające tworzenie komponentów EJB, podpowiedzi w plikach konfiguracyjnych JPA, Batch API itp., oraz aplikacji pisanych z wykorzystaniem Angular JS. Wśród wad eclipse można też wymienić interfejs użytkownika, który w większości jest intuicyjny, ale przydałoby mu się odświeżenie i lifting. Ciemny motyw graficzny niestety tylko podkreśla te wady.

IntelliJ IDEA - wady i zalety

intellij idea logo

Twórcy nazywają IntelliJ IDEA jako the most intelligent Java IDE i trzeba przyznać, że coś w tym jest. Automatyczne podpowiedzi, które oferuje to środowisko naprawdę potrafią zaskoczyć w bardzo pozytywnym stopniu. IntelliJ mocno stawia na produktywność i pracę bez użycia myszy. Jeśli wolisz klikać to myślę, że eclipse jest dużo bardziej intuicyjny, jeśli jednak poświęcisz chwilę czasu na naukę skrótów klawiaturowych w IntelliJ, to oszczędzisz sporo czasu w przyszłości (i choć w eclipse można skonfigurować wszystko praktycznie dokładnie tak samo, to jednak miło jest mieć takie funkcje out of the box). Jeśli tworzysz (lub zamierzasz tworzyć) aplikacje na Androida, to warto wiedzieć, że przez długi czas Google rozwijało plugin do Eclipse i była to w zasadzie jedyna droga do tworzenia aplikacji na tę platformę. Od 2013 roku wszystko się jednak zmieniło i Google rozwija teraz Android Studio, które jest oficjalnym środowiskiem rozwoju aplikacji na Androida, które bazuje na IntelliJ IDEA Community. Android Studio jest obecnie jedynym sensownym wyborem jeśli chodzi o tworzenie aplikacji na system Android. IntelliJ IDEA dzieli się na dwie wersje. Community, która pozwoli nam rozwijać aplikacje w Javie SE oraz wersję Ultimate posiadającą wsparcie dla Javy EE, Springa i tworzenia aplikacji webowych (HTML, JavaScript). Podpowiadanie i edytowanie kodu HTML oraz Javascript w przypadku IntelliJ jest nieco lepsze i bardziej intuicyjne niż w przypadku Eclipse. W przypadku Springa funkcjonalności są porównywalne z tymi, które otrzymujemy z Spring tools suite, a przy Javie EE IntelliJ jest porównywalny do tego co oferuje JBoss Tools w eclipse. Zaletą dla niektórych może być to, że w przypadku IntelliJ wszystkie te funkcjonalności są wbudowane w platformę, nie musimy instalować dodatkowych pluginów jak w przypadku Eclipse. Jeśli jesteś wielbicielem ciemnych motywów graficznych lub dużo pracujesz przy komputerze wieczorami, to docenisz to, że IntelliJ ma bardzo ładny ciemny motyw graficzny o nazwie darcula. To co znacząco odróżnia IntelliJ od Eclipse to fakt, że w jednym oknie pracujemy wyłącznie na jednym projekcie, Jeśli chcesz podejrzeć kod z innego projektu musisz go otworzyć w nowym oknie lub zamknąć aktualne. O ile w przypadku dużych projektów nie ma to większego znaczenia i nie zabiera nam niepotrzebnie zasobów, tak przy nauce może być trochę problematyczne i niewygodne. Patrząc na ilość pamięci, które potrzebuje to środowisko, wygląda to bardzo podobnie jak w eclipse. Środowisko (Ultimate) z otwartym mini projektem potrzebuje na starcie nieco ponad 500MB ramu. Małe porównanie w spoczynku (eclipse z 30 projektami, IntelliJ z 1):

eclipse intellij performance

Bardzo ważnym czynnikiem, który musimy brać pod uwagę, przy wyborze IntelliJ IDEA jest fakt, że jeśli zaczniemy uczyć się trochę bardziej zaawansowanych rzeczy (JavaEE, Spring, Hibernate itp.), to wsparcie dla tych frameworków w sensie podpowiadania składni, dodatkowych kreatorów plików konfiguracyjnych itp. uzyskamy wyłącznie w wersji Ultimate. Jeśli jesteśmy studentami, możemy ją uzyskać do celów edukacyjnych bezpłatnie rejestrując się na stronie JetBrains. Jeśli jednak studentem nie jesteśmy to do wyboru mamy opcję za 149€ rocznie w przypadku wykorzystania na własny użytek lub 499€ rocznie w przypadku licencji dla firmy (obie do użytku komercyjnego). Jeśli pracujemy w firmie i to ona sponsoruje nam licencję to kosztu nie odczujemy, ale w przypadku, gdy się uczymy, ponad 600zł rocznie jest już niemałym wydatkiem.

Które IDE wybrać?

Oba przedstawione środowiska dają bardzo zbliżone funkcjonalności. IntelliJ oferuje bardziej zaawansowane i inteligentne opcje podpowiadania składni, refactoringu, jednak myśląc o tworzeniu bardziej zaawansowanych aplikacji musimy mieć na uwadze konieczność subskrypcji. Warto przed wyborem rozpatrzyć kilka możliwych ścieżek:

  • Jeśli dopiero zaczynasz naukę i nie jesteś studentem, a masz plany pisać nie tylko proste aplikacje - wybierz eclipse. Jest darmowy, daje zaawansowane funkcje po dodaniu kilku pluginów. Większość (myślę, że ok 80%) tutoriali, które znajdziesz w sieci opartych jest o eclipse (te na stronach Oracle o NetBeansa). Późniejsze ewentualne przejście na IntelliJ nie jest problemem.
  • Jeśli zaczynasz naukę i jesteś studentem - wybierz IntelliJ IDEA. Środowisko daje duże możliwości nawet bez dodawania żadnych pluginów (wersja Ultimate), a jako student otrzymasz bezpłatną licencję na wersję Ultimate. Miej na uwadze, że po zakończeniu studiów za licencję trzeba zapłacić kilkaset zł rocznie.
  • Chcesz tworzyć aplikacje na Androida - wybierz Android Studio
  • Programujesz od jakiegoś czasu i zastanawiasz się co jest lepsze? Środowiska są bardzo podobne, bez samodzielnego przetestowania obu przez dłuższy czas nie jesteśmy w stanie Ci jednoznacznie na to pytanie odpowiedzieć. Osobiście korzystamy z obu środowisk mniej więcej 50/50 czasu i oba uważamy za świetne narzędzia.

Jeśli dopiero zaczynasz, to weź też pod uwagę fakt, że 95% możliwości zarówno eclipse jak i IntelliJ nie będziesz wykorzystywać przez pierwszych kilka miesięcy. To co Ci w zupełności wystarczy to kilka podstawowych skrótów klawiaturowych. Decyzja o zmianie środowiska z jednego na drugie jest w zasadzie bezproblemowa i w kilka dni będziesz w stanie nauczyć się obsługi każdego z nich przynajmniej na podstawowym poziomie.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.