Memilih IDE Java Anda

Diperbarui: Desember 2018 .

Setiap pengembang Java membutuhkan editor pemrograman atau IDE yang dapat membantu bagian-bagian yang lebih grungier dalam menulis Java dan menggunakan pustaka dan kerangka kerja kelas. Memutuskan editor atau IDE mana yang paling cocok untuk Anda bergantung pada beberapa hal, termasuk sifat proyek yang sedang dikembangkan, peran Anda dalam organisasi, proses yang digunakan oleh tim pengembangan, dan level serta keterampilan Anda sebagai programmer. Pertimbangan tambahan adalah apakah tim telah membuat standar alat, dan preferensi pribadi Anda.

Tiga IDE yang paling sering dipilih untuk pengembangan Java sisi server adalah IntelliJ IDEA, Eclipse, dan NetBeans. Namun, ini bukan satu-satunya pilihan, dan ulasan ini akan menyertakan beberapa IDE ringan juga.

Untuk ringkasan ini, saya melakukan penginstalan baru dari IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 untuk Java EE Developers, dan Apache NetBeans (inkubasi) IDE 9 di Mac. Saya juga memeriksa beberapa proyek Java open source sehingga saya dapat menguji semua IDE pada proyek yang sama.

Tentang pembaruan ini

Review IDE ini pertama kali diterbitkan pada September 2016, dan telah diperbarui pada Desember 2018. Pada tahun-tahun berikutnya, bahasa Java, API, ekosistem JVM, dan beberapa kerangka kerja telah berkembang secara signifikan. Java EE 8 memperkenalkan atau memperbarui banyak spesifikasi teknologi Java, termasuk JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0, dan JSF (JavaServer Faces) 2.3 untuk membangun antarmuka pengguna sisi server. Java EE 8 juga merupakan rilis final Java enterprise dari Oracle: The Eclipse Foundation telah mengambil alih pengelolaan teknologi, yang telah diganti namanya menjadi Jakarta EE. Sementara itu, JUnit telah maju ke versi 5, memutus integrasi; IDEA dan Eclipse keduanya memiliki dukungan asli untuk JUnit 5, tetapi pada tulisan ini NetBeans tidak.

Semua perubahan ini harus menjadi bagian dari evaluasi IDE Anda, baik untuk penggunaan umum atau untuk proyek tertentu.

NetBeans 10 menambahkan dukungan untuk JUnit 5 dan JDK 11

Dirilis pada Januari 2019, NetBeans 10 menambahkan dukungan untuk JDK 11 dan JUnit 5.

Dasar: Yang Anda butuhkan dari Java IDE

Minimal, Anda berharap IDE Anda mendukung Java 8 dan / atau 11 (versi LTS), Scala, Groovy, Kotlin, dan bahasa JVM lainnya yang biasa Anda gunakan. Anda juga ingin mendukung server aplikasi utama dan kerangka kerja web paling populer, termasuk Spring MVC, JSF, Struts, GWT, Play, Grails, dan Vaadin. IDE Anda harus kompatibel dengan sistem kontrol versi dan versi apa pun yang digunakan tim pengembangan Anda; Contohnya termasuk Apache Ant dengan Ivy, Maven, dan Gradle, bersama dengan Git, SVN, CVS, Mercurial, dan Bazaar. Untuk kredit ekstra, IDE Anda harus dapat menangani lapisan klien dan basis data tumpukan Anda, mendukung JavaScript yang disematkan, TypeScript, HTML, SQL, Halaman JavaServer, Hibernate, dan API Persistensi Java.

Terakhir, Anda berharap Java IDE memungkinkan Anda mengedit, membangun, men-debug, dan menguji sistem Anda dengan mudah dan lancar. Idealnya, Anda tidak hanya memiliki penyelesaian kode yang cerdas, tetapi juga pemfaktoran ulang dan metrik kode. Jika Anda berada di toko yang melakukan pengembangan yang digerakkan oleh pengujian, Anda menginginkan dukungan untuk framework pengujian dan stubbing Anda. Jika grup Anda menggunakan sistem tiket dan CI / CD, sebaiknya IDE Anda dapat terhubung dengannya. Jika Anda perlu menerapkan dan men-debug pada container dan cloud, IDE Anda akan membantu Anda melakukannya.

Dengan dasar pemikiran itu, mari kita pertimbangkan para pesaing.

IDE IntelliJ

IntelliJ IDEA, Java IDE premier baik dari segi fitur maupun harga, hadir dalam dua edisi: edisi Komunitas gratis, dan edisi Ultimate berbayar, yang memiliki fitur tambahan.

Edisi Komunitas ditujukan untuk pengembangan JVM dan Android. Mendukung Java, Kotlin, Groovy, dan Scala; Android; Maven, Gradle, dan SBT; dan Git, SVN, Mercurial, CVS, dan TFS.

Edisi Ultimate, ditujukan untuk pengembangan web dan perusahaan, mendukung Perforce selain sistem kontrol versi lainnya; mendukung JavaScript dan TypeScript; mendukung Java EE, Spring, GWT, Vaadin, Play, Grails, dan kerangka kerja lainnya; dan termasuk alat database dan dukungan SQL.

Idenya adalah bahwa edisi komersial (Ultimate) akan mendapatkan tempatnya di desktop profesional, membenarkan langganan berbayar melalui peningkatan produktivitas programmer. Jika Anda menghasilkan $ 50K- $ 100K per tahun sebagai pengembang Java, tidak perlu banyak peningkatan produktivitas untuk memberi Anda ROI cepat pada langganan IDEA bisnis $ 500 / tahun. Harga turun di tahun-tahun berikutnya untuk bisnis, jauh lebih rendah untuk pemula dan individu, dan gratis untuk siswa, guru, "juara Java", dan pengembang open source.

IntelliJ memuji IDEA untuk wawasan mendalam tentang kode Anda, ergonomi pengembang, alat pengembang bawaan, dan pengalaman pemrograman poliglot. Mari kita teliti dan lihat apa arti fitur-fitur ini, dan bagaimana mereka dapat membantu Anda.

Martin Heller

Wawasan mendalam tentang kode Anda

Pewarnaan sintaks dan penyelesaian kode sederhana diberikan untuk editor Java. IDEA lebih dari itu untuk memberikan "penyelesaian pintar," yang berarti bahwa itu dapat memunculkan daftar simbol paling relevan yang berlaku dalam konteks saat ini. Ini diurutkan berdasarkan frekuensi penggunaan pribadi Anda. "Penyelesaian rantai" lebih dalam dan menampilkan daftar simbol yang berlaku yang  dapat diakses melalui metode atau pengambil  dalam konteks saat ini. IDEA juga melengkapi anggota statis atau konstanta, secara otomatis menambahkan pernyataan impor yang diperlukan. Dalam semua penyelesaian kode, IDEA mencoba menebak jenis simbol waktu proses, menyempurnakan pilihannya dari itu, dan menambahkan cast kelas sesuai kebutuhan.

Kode Java sering kali berisi bahasa lain sebagai string. IDEA dapat memasukkan fragmen kode SQL, XPath, HTML, CSS, dan / atau JavaScript ke dalam literal String Java. Dalam hal ini, ia dapat memfaktor ulang kode di berbagai bahasa; misalnya, jika Anda mengganti nama kelas dalam pernyataan JPA, IDEA akan memperbarui kelas entitas dan ekspresi JPA yang sesuai.

Saat Anda memfaktorkan ulang sebagian kode, salah satu hal yang biasanya ingin Anda lakukan adalah memfaktor ulang semua duplikat kode itu. IDEA Ultimate dapat mendeteksi duplikat dan fragmen serupa serta menerapkan pemfaktoran ulang padanya.

IntelliJ IDEA menganalisis kode Anda saat dimuat, dan saat Anda mengetik. Ini menawarkan inspeksi untuk menunjukkan kemungkinan masalah dan, jika Anda mau, daftar perbaikan cepat untuk masalah yang terdeteksi.

Pengembang ergonomis

IntelliJ mendesain IDEA dengan alur kreatif pengembang - alias  "berada di zona" - dalam pikiran. Jendela alat Proyek yang ditunjukkan di sebelah kiri pada Gambar 1 menghilang dari tampilan dengan klik mouse sederhana, sehingga Anda dapat berkonsentrasi pada editor kode. Semua yang ingin Anda lakukan saat mengedit memiliki pintasan keyboard, termasuk menampilkan definisi simbol di jendela pop-up. Meskipun mempelajari jalan pintas memang membutuhkan waktu dan latihan, pada akhirnya itu menjadi kebiasaan. Bahkan tanpa mengetahui pintasannya, pengembang dapat belajar menggunakan IDEA dengan mudah dan cepat.

Desain debugger IDEA sangat bagus. Nilai variabel muncul tepat di jendela editor, di sebelah kode sumber yang sesuai. Saat status variabel berubah, warna sorotannya juga berubah.

Alat pengembang bawaan

IntelliJ IDEA menyediakan antarmuka terpadu untuk sebagian besar sistem kontrol versi utama, termasuk Git, SVN, Mercurial, CVS, Perforce, dan TFS. Anda dapat melakukan semua manajemen perubahan Anda langsung di IDE. Saat saya menguji IDEA, saya berharap bahwa perubahan terakhir dalam blok kode sumber akan muncul di jendela editor sebagai anotasi (seperti yang terjadi di Visual Studio). Ternyata, ada plugin untuk itu.

IDEA juga mengintegrasikan alat build, runner pengujian, dan alat cakupan, serta jendela terminal bawaan. IntelliJ tidak memiliki profilernya sendiri, tetapi mendukung beberapa profiler pihak ketiga melalui plugin. Ini termasuk YourKit, yang dibuat oleh mantan pengembang utama IntelliJ, dan VisualVM, yang merupakan versi profiler NetBeans yang dikemas ulang.

Debugging Java bisa sangat merepotkan ketika hal-hal misterius terjadi di kelas-kelas yang kode sumbernya tidak Anda miliki. IDEA dilengkapi dengan decompiler untuk kasus tersebut.

Pemrograman server Java sering kali melibatkan kerja dengan database, jadi IDEA Ultimate menyertakan alat database SQL dan NoSQL. Jika Anda membutuhkan lebih banyak, SQL IDE (DataGrip) khusus tersedia sebagai bagian dari langganan semua produk yang hanya sedikit lebih mahal daripada langganan IDEA Ultimate.

IntelliJ IDEA mendukung semua server aplikasi JVM utama, dan dapat menerapkan dan men-debug di server, memperbaiki masalah utama bagi pengembang Enterprise Java. IDEA juga mendukung Docker melalui plugin yang menambahkan jendela alat Docker. (Berbicara tentang plugin, IntelliJ memiliki banyak plugin.)

Pemrograman Polyglot

IDEA telah memberikan bantuan pengkodean untuk Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS, dan framework lainnya. Tidak semuanya adalah framework Java. Selain Java, IDEA juga memahami banyak bahasa lain, termasuk Groovy, Kotlin, Scala, JavaScript, TypeScript, dan SQL. Jika Anda membutuhkan lebih banyak, saat ini ada ratusan plugin bahasa IntelliJ, termasuk plugin untuk R, Elm, Go, Rust, dan D.

Eclipse IDE

Eclipse, lama IDE Java paling populer, gratis dan open source dan sebagian besar ditulis di Java, meskipun arsitektur pluginnya memungkinkan Eclipse diperluas dalam bahasa lain. Eclipse berasal pada tahun 2001 sebagai proyek IBM untuk menggantikan keluarga IDE IBM Visual Age berbasis Smalltalk dengan IDE portabel berbasis Java. Tujuan dari proyek ini adalah untuk mengungguli Microsoft Visual Studio, karena itulah namanya.

Portabilitas Java membantu Eclipse menjadi lintas platform: Eclipse berjalan di Linux, Mac OS X, Solaris, dan Windows. Java Standard Widget Toolkit (SWT) setidaknya sebagian bertanggung jawab atas tampilan dan nuansa Eclipse, baik atau buruk. Demikian juga, Eclipse berutang kinerjanya (atau, beberapa orang mengatakan, kekurangannya) ke JVM. Eclipse memiliki reputasi untuk berjalan lambat, yang mengingatkan kembali pada perangkat keras lama dan JVM lama. Namun, bahkan hari ini bisa terasa lambat, terutama ketika memperbarui dirinya sendiri di latar belakang dengan banyak plugin yang terpasang.

Bagian dari overhead yang terjadi di Eclipse adalah compiler inkremental bawaannya, yang berjalan setiap kali memuat file dan setiap kali Anda memperbarui kode Anda. Ini adalah hal yang sangat baik, dan memberikan indikator kesalahan saat Anda mengetik.

Terlepas dari sistem build, project Eclipse Java juga mempertahankan model kontennya, yang mencakup informasi tentang hierarki tipe, referensi, dan deklarasi elemen Java. Ini juga merupakan hal yang baik, dan memungkinkan beberapa pengeditan dan asisten navigasi serta tampilan garis besar.

Versi Eclipse saat ini adalah 2018‑09. Saya telah menginstal Eclipse IDE untuk Java EE Developers, tetapi ada banyak paket instalasi lainnya, termasuk opsi untuk menginstal Eclipse SDK minimal dan menambahkan plugin hanya jika diperlukan. Namun, opsi terakhir bukan untuk menjadi lemah hati: tidak sulit untuk memperkenalkan konflik antara plugin yang sebenarnya tidak  mengatakan bahwa  mereka tidak kompatibel.

Martin Heller

Dukungan alat yang dapat diperluas

Ekosistem plugin adalah salah satu kekuatan Eclipse, serta sesekali menjadi sumber frustrasi. Pasar Eclipse berisi lebih dari 1.600 solusi saat ini, dan plugin kontribusi komunitas mungkin atau mungkin tidak berfungsi seperti yang diiklankan. Namun, plugin Eclipse menyertakan dukungan untuk lebih dari 100 bahasa pemrograman dan hampir 200 kerangka kerja pengembangan aplikasi.

Sebagian besar server Java juga didukung: jika Anda menentukan koneksi server baru dari Eclipse, Anda akan melihat daftar folder vendor, di bawahnya Anda akan menemukan sekitar 30 server aplikasi, termasuk sembilan versi Apache Tomcat. Vendor komersial cenderung menggabungkan penawaran mereka: misalnya, hanya ada satu item di bawah Red Hat JBoss Middleware, yang mencakup WildFly dan EAP Server Tools, serta JBoss AS.

Mengedit, menjelajahi, memfaktorkan ulang, dan melakukan debug

Pengalaman pertama seorang pengembang dengan Eclipse bisa membingungkan, bahkan membingungkan. Ini karena tugas pertama Anda adalah beradaptasi dengan arsitektur konseptual ruang kerja, perspektif, dan tampilan Eclipse, yang fungsinya ditentukan oleh plugin apa yang telah Anda instal. Untuk pengembangan server Java, misalnya, Anda cenderung menggunakan perspektif penelusuran Java, Java EE, dan Java; tampilan penjelajah paket; perspektif debugging; perspektif sinkronisasi tim; alat web; perspektif pengembangan database; dan perspektif debugging database. Dalam praktiknya, semua itu akan mulai masuk akal setelah Anda membuka tampilan yang Anda butuhkan.

Seringkali ada lebih dari satu cara untuk melakukan tugas tertentu di Eclipse. Misalnya, Anda dapat menelusuri kode dengan penjelajah proyek dan / atau perspektif penelusuran Java; yang Anda pilih adalah soal selera dan pengalaman.

Dukungan pencarian Java memungkinkan Anda menemukan deklarasi, referensi, dan kemunculan paket, jenis, metode, dan kolom Java. Anda juga dapat menggunakan Akses Cepat untuk mencari, dan menggunakan tampilan cepat untuk memunculkan hal-hal seperti garis besar kelas.