Memilih IDE Java anda

Dikemas kini: Disember 2018 .

Setiap pembangun Java memerlukan editor pengaturcaraan atau IDE yang dapat membantu bahagian-bahagian grogier menulis Java dan menggunakan perpustakaan kelas dan kerangka kerja. Memutuskan editor atau IDE mana yang paling sesuai untuk anda bergantung pada beberapa perkara, termasuk sifat projek yang sedang dibangunkan, peranan anda dalam organisasi, proses yang digunakan oleh pasukan pembangunan, dan tahap dan kemahiran anda sebagai pengaturcara. Pertimbangan tambahan adalah sama ada pasukan telah menyeragamkan alat, dan pilihan peribadi anda.

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

Untuk rundingan ini, saya melakukan pemasangan baru IntelliJ IDEA Ultimate 2018.3, Eclipse IDE 2018‑09 untuk Java EE Developers, dan Apache NetBeans (inkubasi) IDE 9 pada Mac. Saya juga memeriksa beberapa projek Java sumber terbuka sehingga saya dapat menguji semua IDE pada projek yang sama.

Mengenai kemas kini ini

Ulasan IDE ini pertama kali diterbitkan pada bulan September 2016, dan telah diperbaharui pada bulan Disember 2018. Pada tahun-tahun tersebut bahasa Java, API, ekosistem JVM, dan beberapa kerangka kerja telah berkembang dengan ketara. Java EE 8 memperkenalkan atau mengemas kini banyak spesifikasi teknologi Java, termasuk JSON-B (JavaScript Objek Notation Binding), Java EE Security, Servlet 4.0, dan JSF (JavaServer Faces) 2.3 untuk membangun antara muka pengguna sisi pelayan. Java EE 8 juga merupakan rilis terakhir perusahaan Java dari Oracle: Yayasan Eclipse telah bertugas menjaga teknologi, yang telah dijenamakan semula ke Jakarta EE. Sementara itu, JUnit telah maju ke versi 5, melanggar integrasi; IDEA dan Eclipse kedua-duanya mempunyai sokongan asli untuk JUnit 5, tetapi sebagai penulisan ini NetBeans tidak.

Semua perubahan ini harus menjadi sebahagian daripada penilaian IDE anda, sama ada untuk kegunaan umum atau untuk projek tertentu.

NetBeans 10 menambah sokongan untuk JUnit 5 dan JDK 11

Dilancarkan pada Januari 2019, NetBeans 10 menambah sokongan untuk JDK 11 dan JUnit 5.

Asas: Apa yang anda perlukan dari IDE Java

Sekurang-kurangnya, anda berharap IDE anda menyokong Java 8 dan / atau 11 (versi LTS), Scala, Groovy, Kotlin, dan bahasa JVM lain yang selalu anda gunakan. Anda juga mahu ia menyokong pelayan aplikasi utama dan kerangka web paling popular, termasuk Spring MVC, JSF, Struts, GWT, Play, Grails, dan Vaadin. IDE anda harus serasi dengan sistem kawalan versi dan versi apa pun yang digunakan oleh pasukan pembangunan anda; contohnya merangkumi Apache Ant dengan Ivy, Maven, dan Gradle, bersama dengan Git, SVN, CVS, Mercurial, dan Bazaar. Untuk kredit tambahan, IDE anda seharusnya dapat menangani lapisan klien dan pangkalan data tumpukan anda, menyokong JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate, dan Java Persistence API tertanam.

Akhirnya, anda berharap Java IDE anda membolehkan anda mengedit, membina, men-debug, dan menguji sistem anda dengan mudah dan rahmat. Sebaik-baiknya, anda bukan sahaja mempunyai penyelesaian kod yang cerdas, tetapi juga penukaran semula dan metrik kod. Sekiranya anda berada di kedai yang melakukan pengembangan berdasarkan ujian, anda memerlukan sokongan untuk kerangka kerja ujian dan rintangan anda. Sekiranya kumpulan anda menggunakan sistem tiket dan CI / CD, lebih baik jika IDE anda dapat berhubung dengan mereka. Sekiranya anda perlu menggunakan dan men-debug pada bekas dan awan, IDE anda akan membantu anda melakukannya.

Dengan pertimbangan asas itu, marilah kita mempertimbangkan pesaingnya.

IntelliJ IDEA

IntelliJ IDEA, Java IDE utama dari segi ciri dan harga, terdapat dalam dua edisi: edisi Komuniti percuma, dan edisi Ultimate berbayar, yang mempunyai ciri tambahan.

Edisi Komuniti bertujuan untuk pembangunan JVM dan Android. Ia menyokong Java, Kotlin, Groovy, dan Scala; Android; Maven, Gradle, dan SBT; dan Git, SVN, Mercurial, CVS, dan TFS.

Edisi Ultimate, yang ditujukan untuk pengembangan web dan perusahaan, menyokong Perforce selain sistem kawalan versi lain; menyokong JavaScript dan TypeScript; menyokong Java EE, Spring, GWT, Vaadin, Play, Grails, dan kerangka lain; dan merangkumi alat pangkalan data dan sokongan SQL.

Ideanya adalah bahawa edisi komersial (Ultimate) akan mendapat tempat di desktop profesional, membenarkan langganan berbayar melalui peningkatan produktiviti pengaturcara. Sekiranya anda memperoleh $ 50K- $ 100K per tahun sebagai pemaju Java, ini tidak memerlukan banyak peningkatan produktiviti untuk memberi anda ROI cepat dengan langganan IDEA perniagaan $ 500 / tahun. Harga turun pada tahun-tahun berikutnya untuk perniagaan, jauh lebih rendah untuk pemula dan individu, dan percuma untuk pelajar, guru, "juara Java", dan pembangun sumber terbuka.

IntelliJ memberi tahu IDEA untuk mengetahui mendalam tentang kod anda, ergonomi pembangun, alat pembangun terbina dalam, dan pengalaman pengaturcaraan polyglot. Mari teliti dan lihat apa maksud ciri-ciri ini, dan bagaimana ciri-ciri itu dapat membantu anda.

Martin Heller

Pandangan mendalam mengenai kod anda

Pewarnaan sintaks dan penyelesaian kod sederhana diberikan untuk editor Java. IDEA melampaui itu untuk memberikan "penyelesaian pintar", yang bermaksud bahawa ia dapat memaparkan senarai simbol paling relevan yang berlaku dalam konteks semasa. Ini dinilai berdasarkan kekerapan penggunaan peribadi anda. "Penyelesaian rantai" semakin mendalam dan memaparkan senarai simbol yang berlaku yang dapat  diakses melalui kaedah atau pemenang  dalam konteks semasa. IDEA juga melengkapkan anggota statik atau pemalar, secara automatik menambahkan penyataan import yang diperlukan. Dalam semua pelengkap kod, IDEA cuba meneka jenis simbol runtime, menyempurnakan pilihannya dari itu, dan menambahkan pelakon kelas mengikut keperluan.

Kod Java sering mengandungi bahasa lain sebagai rentetan. IDEA dapat menyuntikkan fragmen kod SQL, XPath, HTML, CSS, dan / atau JavaScript ke literal Java String. Untuk itu, ia boleh merefaktorkan kod dalam pelbagai bahasa; sebagai contoh, jika anda menamakan semula kelas dalam pernyataan JPA, IDEA akan mengemas kini kelas entiti dan ungkapan JPA yang sesuai.

Semasa anda memfaktur semula sekeping kod, salah satu perkara yang biasanya anda ingin lakukan adalah juga merefleksikan semua pendua kod tersebut. IDEA Ultimate dapat mengesan pendua dan serpihan yang serupa dan menerapkan pemfaktoran semula kepada mereka juga.

IntelliJ IDEA menganalisis kod anda ketika dimuat, dan ketika anda menaip. Ia menawarkan pemeriksaan untuk menunjukkan kemungkinan masalah dan, jika anda mahu, senarai perbaikan cepat untuk masalah yang dikesan.

Ergonomi pemaju

IntelliJ merancang IDEA dengan aliran kreatif pemaju - aka  "berada di zon" - dalam fikiran. Tetingkap alat Projek yang ditunjukkan di sebelah kiri pada Gambar 1 hilang dari pandangan dengan klik tetikus yang sederhana, sehingga anda dapat menumpukan perhatian pada penyunting kod. Semua yang anda mahu lakukan semasa mengedit mempunyai jalan pintas papan kekunci, termasuk memunculkan definisi simbol di tetingkap pop timbul. Walaupun mempelajari jalan pintas memerlukan masa dan latihan, akhirnya mereka menjadi sifat kedua. Walaupun tanpa mengetahui jalan pintas, pembangun dapat belajar menggunakan IDEA dengan mudah dan cepat.

Reka bentuk debugger IDEA sangat bagus. Nilai pemboleh ubah muncul tepat di tetingkap editor, di sebelah kod sumber yang sesuai. Apabila keadaan pemboleh ubah berubah, warna sorotannya juga berubah.

Alat pembangun terbina dalam

IntelliJ IDEA menyediakan antara muka terpadu untuk kebanyakan sistem kawalan versi utama, termasuk Git, SVN, Mercurial, CVS, Perforce, dan TFS. Anda boleh melakukan semua pengurusan perubahan anda tepat di IDE. Semasa saya menguji IDEA, saya berharap perubahan terakhir dalam blok kod sumber akan muncul di tetingkap editor sebagai anotasi (seperti yang berlaku di Visual Studio). Ternyata, ada pemalam untuk itu.

IDEA juga mengintegrasikan alat binaan, pelari ujian, dan alat liputan, serta tetingkap terminal terbina dalam. IntelliJ tidak mempunyai profiler sendiri, tetapi menyokong beberapa profiler pihak ketiga melalui pemalam. Ini termasuk YourKit, yang dibuat oleh bekas pemaju utama IntelliJ, dan VisualVM, yang merupakan versi semula dari profiler NetBeans.

Menyahpepijat Java boleh menjadi sakit apabila perkara misteri berlaku di kelas yang anda tidak mempunyai kod sumber. IDEA dilengkapi penyahkomputer untuk kes-kes tersebut.

Pengaturcaraan pelayan Java sering melibatkan kerja dengan pangkalan data, jadi IDEA Ultimate menyertakan alat pangkalan data SQL dan NoSQL. Sekiranya anda memerlukan lebih banyak, SQL IDE (DataGrip) khusus tersedia sebagai sebahagian daripada langganan semua produk yang hanya sedikit lebih mahal daripada langganan IDEA Ultimate.

IntelliJ IDEA menyokong semua pelayan aplikasi JVM utama, dan dapat menggunakan dan menyahpepijat di pelayan, memperbaiki titik utama bagi pembangun Enterprise Java. IDEA juga menyokong Docker melalui plugin yang menambah tetingkap alat Docker. (Bercakap mengenai pemalam, IntelliJ mempunyai banyak daripadanya.)

Pengaturcaraan Polyglot

IDEA telah memberikan bantuan pengekodan untuk Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS, dan kerangka lain. Tidak semua ini adalah kerangka kerja Java. Selain Java, IDEA memahami banyak bahasa lain di luar kotak, termasuk Groovy, Kotlin, Scala, JavaScript, TypeScript, dan SQL. Sekiranya anda memerlukan lebih banyak lagi, terdapat ratusan plugin bahasa IntelliJ, termasuk plugin untuk R, Elm, Go, Rust, dan D.

Gerhana IDE

Eclipse, lama IDE Java yang paling popular, bebas dan sumber terbuka dan ditulis kebanyakannya di Java, walaupun seni bina pluginnya membolehkan Eclipse diperluas dalam bahasa lain. Eclipse berasal pada tahun 2001 sebagai projek IBM untuk menggantikan keluarga IDE Visual Age berbasis Smalltalk dengan IDE berasaskan Java yang mudah alih. Matlamat projek ini adalah untuk melepaskan Microsoft Visual Studio, dengan demikian namanya.

Kemudahalihan Java membantu Eclipse menjadi cross-platform: Eclipse berjalan di Linux, Mac OS X, Solaris, dan Windows. Kit Standard Widget Java (SWT) sekurang-kurangnya bertanggung jawab sebahagian untuk penampilan dan nuansa Eclipse, baik atau buruk. Begitu juga, Eclipse berprestasi (atau, ada yang mengatakan, kekurangannya) kepada JVM. Eclipse mempunyai reputasi untuk berjalan dengan perlahan, yang merujuk kepada perkakasan yang lebih tua dan JVM yang lebih lama. Walaupun hari ini terasa lambat, terutamanya ketika ia mengemas kini di latar belakang dengan banyak plugin dipasang.

Sebahagian dari overhead yang berlaku di Eclipse adalah penyusun tambahan terbina dalamnya, yang berjalan setiap kali memuatkan fail dan setiap kali anda mengemas kini kod anda. Ini adalah keseimbangan yang sangat baik, dan memberikan petunjuk ralat semasa anda menaip.

Tidak bergantung pada sistem binaan, proyek Eclipse Java juga mempertahankan model isinya, yang meliputi informasi tentang hierarki jenis, rujukan, dan pernyataan elemen Java. Ini juga seimbang, dan membolehkan beberapa pembantu penyuntingan dan navigasi serta pandangan garis besar.

Versi Eclipse terkini ialah 2018-09. Saya memasang Eclipse IDE untuk Java EE Developers, tetapi terdapat banyak pakej pemasangan lain, termasuk pilihan untuk memasang Eclipse SDK minimum dan menambahkan pemalam hanya jika diperlukan. Pilihan terakhir bukan untuk lemah hati, bagaimanapun: tidak sukar untuk memperkenalkan konflik antara pemalam yang sebenarnya tidak  mengatakan bahawa  mereka tidak sesuai.

Martin Heller

Sokongan alat yang boleh diperluas

Ekosistem pemalam adalah salah satu kekuatan Eclipse, serta menjadi sumber kekecewaan sekali-sekala. Pasar Eclipse mengandungi lebih dari 1.600 penyelesaian pada masa ini, dan plugin yang disumbangkan oleh masyarakat mungkin atau mungkin tidak berfungsi seperti yang diiklankan. Namun, plugin Eclipse merangkumi sokongan untuk lebih dari 100 bahasa pengaturcaraan dan hampir 200 kerangka pembangunan aplikasi.

Sebilangan besar pelayan Java juga disokong: jika anda menentukan sambungan pelayan baru dari Eclipse, anda akan melihat senarai folder vendor, di bawahnya anda akan menjumpai sekitar 30 pelayan aplikasi, termasuk sembilan versi Apache Tomcat. Penjual komersil cenderung memberikan tawaran bersama-sama: sebagai contoh, hanya ada satu item di bawah Red Hat JBoss Middleware, yang merangkumi WildFly dan EAP Server Tools, serta JBoss AS.

Mengedit, menyemak imbas, memfaktur semula, dan menyahpepijat

Pengalaman pertama pemaju dengan Eclipse boleh membimbangkan, malah membingungkan. Ini kerana tugas pertama anda adalah menyesuaikan diri dengan seni bina konsep, ruang kerja, perspektif dan pandangan Eclipse, yang fungsinya ditentukan oleh plugin apa yang telah anda pasang. Untuk pengembangan pelayan Java, misalnya, Anda cenderung menggunakan perspektif penjelajahan Java, Java EE, dan Java; paparan penjelajah pakej; perspektif penyahpepijatan; perspektif penyegerakan pasukan; alat web; perspektif pembangunan pangkalan data; dan perspektif penyahpepijatan pangkalan data. Dalam praktiknya, semua itu akan masuk akal setelah anda membuka pandangan yang anda perlukan.

Selalunya terdapat lebih daripada satu cara untuk melakukan tugas tertentu di Eclipse. Sebagai contoh, anda boleh melihat kod dengan penjelajah projek dan / atau perspektif penyemakan imbas Java; yang anda pilih adalah masalah rasa dan pengalaman.

Sokongan pencarian Java membolehkan anda mencari pernyataan, rujukan, dan kejadian paket, jenis, kaedah, dan bidang Java. Anda juga dapat menggunakan Akses Pantas untuk mencari, dan menggunakan pandangan cepat untuk memunculkan perkara seperti garis besar kelas.