Java IDE'nizi seçme

Güncelleme: Aralık 2018 .

Her Java geliştiricisinin, Java yazmanın ve sınıf kitaplıklarını ve çerçevelerini kullanmanın daha eski kısımlarına yardımcı olabilecek bir programlama düzenleyicisine veya IDE'ye ihtiyacı vardır. Hangi düzenleyicinin veya IDE'nin size en uygun olacağına karar vermek, geliştirilmekte olan projelerin doğası, organizasyondaki rolünüz, geliştirme ekibi tarafından kullanılan süreç ve bir programcı olarak seviyeniz ve becerileriniz dahil olmak üzere birkaç şeye bağlıdır. Göz önünde bulundurulması gereken diğer hususlar, ekibin araçlar konusunda standardize olup olmadığı ve kişisel tercihlerinizdir.

Sunucu tarafı Java geliştirme için en sık seçilen üç IDE, IntelliJ IDEA, Eclipse ve NetBeans'tir. Ancak bunlar tek seçenek değildir ve bu inceleme bazı hafif IDE'leri de içerecektir.

Bu toparlama için, Mac'te IntelliJ IDEA Ultimate 2018.3, Java EE Geliştiricileri için Eclipse IDE 2018‑09 ve Apache NetBeans (kuluçka) IDE 9'un yeni kurulumlarını yaptım. Aynı projelerde tüm IDE'leri test edebilmek için birkaç açık kaynak Java projesini de kontrol ettim.

Bu güncelleme hakkında

Bu IDE incelemesi ilk olarak Eylül 2016'da yayınlandı ve Aralık 2018'de güncellendi. Aradan geçen yıllarda Java dili, API'ler, JVM ekosistemi ve bazı çerçeveler önemli ölçüde gelişti. Java EE 8, sunucu tarafı kullanıcı arabirimleri oluşturmak için JSON-B (JavaScript Object Notation Binding), Java EE Security, Servlet 4.0 ve JSF (JavaServer Faces) 2.3 dahil olmak üzere birçok Java teknolojisi özelliğini tanıttı veya güncelledi. Java EE 8 aynı zamanda Oracle'ın son Java kurumsal sürümüdür: Eclipse Foundation, Jakarta EE olarak yeniden markalandırdığı teknolojinin idaresini üstlenmiştir. Bu arada JUnit, entegrasyonları bozarak sürüm 5'e geçti; IDEA ve Eclipse'in her ikisi de JUnit 5 için yerel desteğe sahiptir, ancak bu yazı itibariyle NetBeans yoktur.

Tüm bu değişiklikler, ister genel kullanım için isterse belirli bir proje için olsun, bir IDE değerlendirmenizin bir parçası olmalıdır.

NetBeans 10, JUnit 5 ve JDK 11 için destek ekler

Ocak 2019'da piyasaya sürülen NetBeans 10, JDK 11 ve JUnit 5 için destek ekler.

Temel bilgiler: Java IDE'den ihtiyacınız olan şeyler

En azından, IDE'nizin Java 8 ve / veya 11 (LTS sürümleri), Scala, Groovy, Kotlin ve düzenli olarak kullandığınız diğer JVM dillerini desteklediğini umarsınız. Ayrıca, Spring MVC, JSF, Struts, GWT, Play, Grails ve Vaadin dahil olmak üzere başlıca uygulama sunucularını ve en popüler web çerçevelerini desteklemesini istersiniz. IDE'niz, geliştirme ekibinizin kullandığı yapı ve sürüm kontrol sistemleriyle uyumlu olmalıdır; Örnekler arasında Apache Ant with Ivy, Maven ve Gradle ile Git, SVN, CVS, Mercurial ve Bazaar bulunur. Ekstra kredi için, IDE'niz yığınınızın istemci ve veritabanı katmanlarını işleyebilmeli, gömülü JavaScript, TypeScript, HTML, SQL, JavaServer Pages, Hibernate ve Java Persistence API'sini desteklemelidir.

Son olarak, Java IDE'nizin sistemlerinizi kolaylıkla ve zarafetle düzenlemenize, oluşturmanıza, hata ayıklamanıza ve test etmenize izin vermesini umarsınız. İdeal olarak, yalnızca akıllı kod tamamlama değil, aynı zamanda yeniden düzenleme ve kod ölçümlerine de sahip olursunuz. Test odaklı geliştirme yapan bir mağazadaysanız, test çerçeveleriniz ve saplamalarınız için destek istersiniz. Grubunuz bir bilet sistemi ve CI / CD kullanıyorsa, IDE'nizin bunlara bağlanabilmesi en iyisidir. Kapsayıcılara ve bulutlara dağıtmanız ve bunlarda hata ayıklamanız gerekiyorsa, IDE'niz bunu yapmanıza yardımcı olmalıdır.

Bu temeli göz önünde bulundurarak, rakipleri ele alalım.

IntelliJ FİKİR

Hem özellikler hem de fiyat açısından önde gelen Java IDE'si IntelliJ IDEA, iki sürüm halinde gelir: ücretsiz Community sürümü ve ek özelliklere sahip ücretli Ultimate sürümü.

Topluluk sürümü, JVM ve Android geliştirme için tasarlanmıştır. Java, Kotlin, Groovy ve Scala'yı destekler; Android; Maven, Gradle ve SBT; ve Git, SVN, Mercurial, CVS ve TFS.

Web ve kurumsal geliştirmeye yönelik Ultimate sürümü, diğer sürüm kontrol sistemlerine ek olarak Perforce'u destekler; JavaScript ve TypeScript'i destekler; Java EE, Spring, GWT, Vaadin, Play, Grails ve diğer çerçeveleri destekler; ve veritabanı araçları ve SQL desteği içerir.

Buradaki fikir, ticari (Ultimate) sürümün, bir profesyonelin masaüstünde yerini alacak ve programcı verimliliğini artırarak ücretli bir aboneliği haklı çıkaracak olmasıdır. Bir Java geliştiricisi olarak yılda 50.000-100.000 $ kazanıyorsanız, size 500 $ / yıllık bir iş IDEA aboneliğinde hızlı bir yatırım getirisi sağlamak çok fazla bir verimlilik artışı gerektirmez. Sonraki yıllarda işletmeler için fiyat düşer, yeni başlayanlar ve bireyler için çok daha düşüktür ve öğrenciler, öğretmenler, "Java şampiyonları" ve açık kaynak geliştiriciler için ücretsizdir.

IntelliJ, kodunuz, geliştirici ergonomisi, yerleşik geliştirici araçları ve çok dilli programlama deneyimi hakkında derinlemesine bilgi için IDEA'yı sunar. Bu özelliklerin ne anlama geldiğini ve size nasıl yardımcı olabileceklerini inceleyelim.

Martin Heller

Kodunuzla ilgili derin bilgiler

Sözdizimi renklendirme ve basit kod tamamlama, Java editörleri için verilmiştir. IDEA, "akıllı tamamlama" sağlamak için bunun ötesine geçer, yani mevcut bağlamda geçerli olan en alakalı sembollerin bir listesini açabilir. Bunlar kişisel kullanım sıklığınıza göre sıralanır. "Zincir tamamlama" daha derine iner ve  mevcut bağlamda yöntemler veya alıcılar aracılığıyla erişilebilen uygulanabilir sembollerin bir listesini görüntüler  . IDEA ayrıca statik üyeleri veya sabitleri tamamlar, gerekli tüm içe aktarma ifadelerini otomatik olarak ekler. Tüm kod tamamlamalarda IDEA, çalışma zamanı sembol türünü tahmin etmeye, seçimlerini bundan iyileştirmeye ve gerektiğinde sınıf atamaları eklemeye çalışır.

Java kodu genellikle dizeler olarak diğer dilleri içerir. IDEA, Java String değişmez değerlerine SQL, XPath, HTML, CSS ve / veya JavaScript kodu parçalarını enjekte edebilir. Bu nedenle, kodu birden çok dilde yeniden düzenleyebilir; örneğin, bir JPA ifadesindeki bir sınıfı yeniden adlandırırsanız, IDEA ilgili varlık sınıfını ve JPA ifadelerini güncelleyecektir.

Bir kod parçasını yeniden düzenlerken, genellikle yapmak istediğiniz şeylerden biri de o kodun tüm kopyalarını yeniden düzenlemektir. IDEA Ultimate, kopyaları ve benzer parçaları algılayabilir ve yeniden düzenleme işlemini bunlara da uygulayabilir.

IntelliJ IDEA, kodunuzu yüklendiğinde ve yazdığınızda analiz eder. Olası sorunları belirtmek için incelemeler ve dilerseniz tespit edilen soruna yönelik hızlı düzeltmelerin bir listesini sunar.

Geliştirici ergonomisi

IntelliJ, IDEA'yı geliştiricinin yaratıcı akışı, diğer adıyla  "bölgede olmak" düşünülerek tasarladı . Şekil 1'de solda gösterilen Proje aracı penceresi, basit bir fare tıklamasıyla gözden kaybolur, böylece kod düzenleyiciye konsantre olabilirsiniz. Düzenleme sırasında yapmak istediğiniz her şeyin bir klavye kısayolu vardır, bir açılır pencerede sembol tanımlarının açılması da dahildir. Kısayolları öğrenmek zaman ve pratik gerektirirken, sonunda ikinci doğa haline gelirler. Kısayolları bilmeden bile, bir geliştirici IDEA'yı kolay ve hızlı bir şekilde kullanmayı öğrenebilir.

IDEA hata ayıklayıcısının tasarımı özellikle güzel. Değişken değerleri, ilgili kaynak kodunun yanında, düzenleyici penceresinde gösterilir. Bir değişkenin durumu değiştiğinde, vurgu rengi de değişir.

Yerleşik geliştirici araçları

IntelliJ IDEA, Git, SVN, Mercurial, CVS, Perforce ve TFS dahil olmak üzere çoğu ana sürüm kontrol sistemi için birleşik bir arayüz sağlar. Tüm değişiklik yönetiminizi doğrudan IDE'de yapabilirsiniz. IDEA'yı test ederken , bir kaynak kod bloğundaki son değişikliğin düzenleyici penceresinde ek açıklama olarak görünmesini diledim (Visual Studio'da olduğu gibi). Görünüşe göre bunun için bir eklenti var.

IDEA ayrıca yerleşik bir terminal penceresinin yanı sıra derleme araçları, test çalıştırıcıları ve kapsama araçlarını da entegre eder. IntelliJ'in kendi profil oluşturucusu yoktur, ancak eklentiler aracılığıyla birkaç üçüncü taraf profil oluşturucuyu destekler. Bunlar, eski bir IntelliJ lider geliştiricisi tarafından oluşturulan YourKit ve NetBeans profil oluşturucusunun yeniden paketlenmiş bir sürümü olan VisualVM'yi içerir.

Kaynak kodunuzun olmadığı sınıflarda gizemli şeyler olduğunda Java'da hata ayıklama bir acı olabilir. IDEA, bu durumlar için bir derleyici ile birlikte gelir.

Java sunucu programlaması genellikle veritabanlarıyla çalışmayı içerir, bu nedenle IDEA Ultimate, SQL ve NoSQL veritabanı araçlarını içerir. Daha fazlasına ihtiyacınız varsa, bir IDEA Ultimate aboneliğinden yalnızca biraz daha pahalı olan tüm ürün aboneliğinin bir parçası olarak özel bir SQL IDE (DataGrip) mevcuttur.

IntelliJ IDEA, tüm büyük JVM uygulama sunucularını destekler ve Kurumsal Java geliştiricileri için önemli bir sıkıntı noktasını düzelterek sunuculara dağıtım ve hata ayıklama yapabilir. IDEA ayrıca Docker aracı penceresi ekleyen bir eklenti aracılığıyla Docker'ı destekler. (Eklentilerden bahsetmişken, IntelliJ'de pek çok eklenti var.)

Polyglot programlama

IDEA, Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS ve diğer çerçeveler için genişletilmiş kodlama yardımına sahiptir. Bunların hepsi Java çerçeveleri değildir. Java'ya ek olarak IDEA, Groovy, Kotlin, Scala, JavaScript, TypeScript ve SQL dahil olmak üzere birçok dili kutudan çıkarır. Daha fazlasına ihtiyacınız varsa, şu anda R, Elm, Go, Rust ve D için eklentiler dahil yüzlerce IntelliJ dil eklentisi var.

Eclipse IDE

Uzun süredir en popüler Java IDE'si olan Eclipse, ücretsiz ve açık kaynaklıdır ve eklenti mimarisi Eclipse'in diğer dillerde genişletilmesine izin vermesine rağmen çoğunlukla Java ile yazılmıştır. Eclipse, 2001 yılında Smalltalk tabanlı IBM Visual Age IDE ailesini taşınabilir Java tabanlı bir IDE ile değiştirmek için bir IBM projesi olarak ortaya çıktı. Projenin amacı, Microsoft Visual Studio'yu, dolayısıyla adı da gölgede bırakmaktı.

Java'nın taşınabilirliği, Eclipse'in çapraz platform olmasına yardımcı olur: Eclipse, Linux, Mac OS X, Solaris ve Windows üzerinde çalışır. Java Standard Widget Toolkit (SWT), Eclipse'in iyi ya da kötü görünüşünden ve hissinden en azından kısmen sorumludur. Aynı şekilde, Eclipse performansını (veya bazıları bunun eksikliğini) JVM'ye borçludur. Eclipse, daha eski donanımlara ve eski JVM'lere geri dönen yavaş çalışma konusunda bir üne sahiptir. Ancak bugün bile, özellikle yüklü birçok eklenti ile arka planda kendini güncellerken yavaş hissedebilir.

Eclipse'de devam eden ek yükün bir kısmı, bir dosya yüklediğinde ve kodunuzu her güncellediğinizde çalışan yerleşik artımlı derleyicidir. Bu dengede çok iyi bir şeydir ve siz yazarken hata göstergeleri sağlar.

Derleme sisteminden bağımsız olarak, bir Eclipse Java projesi, Java öğelerinin tür hiyerarşisi, referansları ve bildirimleri hakkında bilgi içeren içeriklerinin bir modelini de korur. Bu aynı zamanda iyi bir şeyi dengeler ve birkaç düzenleme ve gezinme asistanının yanı sıra anahat görünümüne de olanak tanır.

Eclipse'in güncel sürümü 2018‑09'dur. Java EE Geliştiricileri için Eclipse IDE'yi yükledim, ancak minimum Eclipse SDK'sını yükleme ve yalnızca gerektiğinde eklenti ekleme seçeneği de dahil olmak üzere birçok başka yükleme paketi var. Ancak son seçenek gönülsüz olanlar için değil: aslında  uyumsuz olduklarını söylemeyen eklentiler arasında çatışmalar ortaya çıkarmak zor değil  .

Martin Heller

Genişletilebilir araçlar desteği

Eklenti ekosistemi, Eclipse'in güçlü yönlerinden biri olmasının yanı sıra ara sıra bir hayal kırıklığı kaynağıdır. Eclipse pazarı şu anda 1.600'den fazla çözüm içermektedir ve topluluğun katkıda bulunduğu eklentiler reklamı yapıldığı gibi çalışabilir veya çalışmayabilir. Yine de Eclipse eklentileri, 100'den fazla programlama dili ve yaklaşık 200 uygulama geliştirme çerçevesi için destek içerir.

Çoğu Java sunucusu da desteklenir: Eclipse'den yeni bir sunucu bağlantısı tanımlarsanız, altında Apache Tomcat'in dokuz sürümü de dahil olmak üzere yaklaşık 30 uygulama sunucusu bulacağınız bir satıcı klasörleri listesine gelirsiniz. Ticari satıcılar, tekliflerini bir araya getirme eğilimindedir: örneğin, WildFly ve EAP Sunucu Araçlarının yanı sıra JBoss AS'yi içeren Red Hat JBoss Ara Yazılımı altında yalnızca bir öğe vardır.

Düzenleme, göz atma, yeniden düzenleme ve hata ayıklama

Bir geliştiricinin Eclipse ile ilk deneyimi endişe verici, hatta kafa karıştırıcı olabilir. Bunun nedeni, ilk görevinizin, işlevleri yüklediğiniz eklentiler tarafından belirlenen Eclipse'in kavramsal çalışma alanlarına, perspektiflerine ve görünümlerine uyum sağlamak olmasıdır. Örneğin Java sunucusu geliştirme için Java, Java EE ve Java tarama perspektiflerini kullanmanız olasıdır; paket gezgini görünümü; hata ayıklama perspektifi; takım senkronizasyonu perspektifi; web araçları; bir veritabanı geliştirme perspektifi; ve bir veritabanı hata ayıklama perspektifi. Uygulamada, ihtiyacınız olan görüşleri açtığınızda bunların hepsi bir anlam ifade etmeye başlayacaktır.

Eclipse'de belirli bir görevi yapmanın genellikle birden fazla yolu vardır. Örneğin, proje gezgini ve / veya Java tarama perspektifiyle koda göz atabilirsiniz; seçtiğiniz bir zevk ve deneyim meselesidir.

Java arama desteği, Java paketlerinin, türlerinin, yöntemlerinin ve alanlarının bildirimlerini, referanslarını ve oluşumlarını bulmanızı sağlar. Ayrıca arama yapmak için Hızlı Erişim'i kullanabilir ve sınıf ana hatları gibi şeyleri açmak için hızlı görünümleri kullanabilirsiniz.