Java Berbattır

1 Ağustos 2010

Arama motorlarında “XXX Sucks” diye arattığınızda bir sürü şey bulursunuz. C# Sucks, PHP Sucks, Java Sucks, Windows Sucks, Linux Sucks, Obama Sucks şeklinde bu liste uzayıp gider… Her dille ilgili bu kalıpta yazılar bulabilirsiniz. Aslında bu yazı benim neden Web üzerinde Java’yı tercih ettiğimin hikayesi ve çevremde birçok insanın söylediği “Java Berbattır” ifadesinin bir cevap niteliğindedir. Java ile ilgili şehir efsanalerine bir tarafsız bir bakış olmasını hedeflemekteyim.

Çevremdeki insanlardan duyduğum şehir efsaneleri;

  1. Java yavaştır.
  2. Java karmaşıktır.
  3. Java ticaridir.
  4. Uygulama geliştirmek zordur.
  5. Java çevik değildir.
  6. Java web için uygun değildir.
  7. Java platformunda proje geliştirmek uzun sürer.

Avantajları;

  1. Açık kaynaktır.
  2. Kurumsal destek.
  3. Yazılım mimarisi çözümleri
  4. Geniş ekosistem
  5. Güçlü araç ve teknolojiler
  6. Her platformda sorunsuz çalışma.
  7. Saygınlık
  8. Dolgun maaş.
  9. Performans ve Güvenlik
  10. Dökümantasyon ve Standartlar
  11. Ekonomik kaynak tüketimi
  12. Nesne yönelimli bir dildir.
  13. Sanal makine mimarisi

Dezavantajları;

  1. Terminoloji karmaşası.
  2. Çok tanrılı dinler gibi her kafadan ses çıktığı için gelişimi yavaştır!
  3. Öğrenmesi zordur!

Java Yavaştır Efsanesi: Java yavaştır algısı çıktığı yıllarda C++ ile kıyaslanmasından ve Swing GUI çatısından kaynaklanmaktadır. Web dünyası için en performanslı dillerden biridir. Şuradan Java’nın PHP ve diğer dillerle olan benchmark testlerini inceleyebilirsiniz.

Java Karmaşıktır Efsanesi: Java aslında karmaşık değil esnek bir mimarisi bulunmaktadır. Bu PHP gibi bir alana yönelik bir dil değilde birçok alanda kullanılmasından kaynaklanmaktadır. Doğru bir web çatısına sahip değilseniz Ruby’de karmaşık bir Web dili olabilmektedir. Fakat Rails ile bu sorun aşıldığı gözlenmiş ve Ruby son yılların popüler dillerinden biri haline gelmiştir. Böyle bir algı oluşmasının diğer bir sebebide Java üzerinden çok fazla terminoloji ve alternatif teknoloji olmasından kaynaklanmaktadır. Her bir alternatifin kendine has config tanımlarının olması yeni öğrenenleri zorlamaktadır. İşin sırası doğru yapıldığında Java’nın çalışma mantığı kolaylıkla yerli yerine oturacaktır.

Java Ticaridir Efsanesi: Açık kaynak camiadan birçok arkadaşım Java’yı kapalı kaynak olduğu için sevmiyordu. Sun firması Java’nın kaynak kodlarını açmadan önce bile Java diliyle birçok açık kaynak proje yazılmış ve bu araçların bir çoğu diğer dillere örnek oluşturmuştur. Sun Java’nın kaynak kodlarını açtıktan sonra ise JVM üzerinde çalışan bir sürü dil ortaya çıkmıştır. (Scala, Groovy, Clojure, vb..)

Java Web için uygun değildir Efsanesi: Bu algının sebebi de sanırım betik diller gibi yaz çalıştır şeklinde ilerlenememesidir. Java’da kaynak kod ara koda çevrilmeden web sunucusu üzerinde bir betik dili gibi çalışmaz. Bunun production sunucu üzerinde geliştirme yapılabilme durumunu göz önünde bulundurursak iyi birşeydir ama geliştirme süresini uzatır. Bunun için Java üzerinde çeşitli araçlar bulunmaktadır. Bunlardan en çok bilineni ise JRebel‘dir.

Java üzerinde uygulama geliştirmek uzun sürer Efsanesi: Java üzerinde proje başlatmak bazı konfigürasyonları en başında sağlamak gerektiği için uzun sürdüğü doğrudur. Bu sorun dille değil, doğru bir web çatısı ve IDE seçmekle çözüme kavuşabilir. Java platformunda koşan ve Scala diliyle yazılan Lift web çatısı ile Groovy diliyle yazılan Grails web çatısı güzel örnek teşkil eder. (Not: Maalesef Java IDE’leri halen istenilen şartlarda değildir.)

Avantajları;

  1. Açık Kaynaktır: Java’nın kaynak kodları açıktır. Apache, Jboss gibi kar amacı yazılım toplulukları pahalı olan yazılım geliştirme araçlarını ücretsiz sunmaktadır.
  2. Kurumsal Destek: Java’nın arkasında dünyanın en büyük şirketlerinin olduğu bir konsorsiyum bulunmaktadır. IBM, Oracle, SAP ilk aklıma gelen şirketlerden.
  3. Yazılım Mimarisi Çözümleri: Java mimarların aracıdır. Yazılım mimarisi kitaplarında genelde örnek kodlar javadır. Birçok yazılım mimarisi tasarımları Java mimarlarına aittir. Diğer hiçbir dilde bu konular bu derece dikkate alınmaz.
  4. Geniş Ekosistem: Java’da Apache, Jboss, Eclipse, SpringSource, CodeHaus gibi çok büyük topluluklar bulunmaktadır. Ve bu topluluklar her gün yeni java projelerini bünyelerine katmaktadır.
  5. Güçlü Araç ve Teknolojiler: Java üzerinde her türlü ihtiyaç için uygulama geliştirilmiştir. Aynı ihtiyaç ile ilgili olarak birden fazla alternatif olması, rekabeti beraberinde getirir. Rekabette kaliteyi doğurur. Java ile ilgili uygulamaları Java-Source sitesinden inceleyebilirsiniz.
  6. Her Platformda Sorunsuz Çalışma: Java’nın en güzel yanlarından biride istediğim işletim sistemi üzerinde sorunsuz çalışabilmesidir. Windows yada MacOS üzerinde yazdığınız uygulamanız, düşük maliyetli yüksek performanslı ve güvenlikli Linux sunucularında barındırmanız mümkündür. Aynı zamanda geniş bir kullanım alanı olduğu için ERP veya Web uygulaması geliştirmekten tutunda Robotik konusunda bile etkilidir.
  7. Saygınlık: Java ile uygulama geliştirmek biraz daha zahmetli göründüğünden diğer developerlar tarafından saygı görür. Java teknolojilerini kullanan şirketler genelde büyük kuruluşlardır.
  8. Dolgun Maaş: Java developerları diğer developerlardan daha fazla ücret alırlar.

  9. Performans ve Güvenlik: Java web üzerinde bir çok dilden daha performanslı çalışır. Bu sebeple birçok betik dilin Java sanal makinesinde çalışan sürümleri yazılmıştır. (jRuby, JPython gibi)
  10. Dökümantasyon ve Standartlar: Java diğer dillere nazaran en iyi standartları oluşturulmıuş ve dökümante edilmiş dilidir. Çok sayıda kaynak kitap bulabilirsiniz.
  11. Ekonomik Kaynak Tüketimi: Java ile sunucu maliyetleriniz ve lisans giderleriniz minimuma düşer. Çünkü pahalı ticari çözümleri kadar iyi sonuçları alabileceğiniz, açık kaynak çözümler kullanabilirsiniz.
  12. Nesne yönelimli bir dildir: Her ne kadar “Pure OOPL” yani herşeyiyle nesne yönelimli bir dil olmasada, java nesne yönelimli bir dildir. Ve özellikle JDK5′ten sonra çok güçlü bir hale gelmiştir.
  13. Sanal makine mimarisi: Kodun taşınabilirliğini düşünmeden yani platform bağımsız kod yazmanızı sağladığı gibi, performans sorunu yaşayanan ama çevik uygulama geliştiren diller içinde bir çözüm oluşturmaktadır. Bu dillerin derleyicileri JVM üzerinden çalışacak şekilde yeniden yazılmıştır.

Dezavantajları;

  1. Terminoloji karmaşası: Java’nın alana özel değilde genel ve kurumsal bir dil olması nedeniyle birçok probleme çözümler geliştirmiş ve bunları Java EE çatısı altında toplamıştır. Bunların öğrenilme süreci yeni başlayanlar için sorun olabilmektedir.
  2. Çok tanrılı dinler gibi her kafadan ses çıktığı için gelişimi yavaştır! Java’nın arkasında Oracle, IBM gibi devlerden oluşan bir topluluk olduğunu söylemiştik. Çok fazla sahibi olduğu için hızlı bir şekilde dile yeni özellikler dahil edilememektedir.
  3. Öğrenmesi zordur! Maalesef diğer dillere kıyasla Java’nın öğrenme süreci biraz daha uzun sürer. Bana sorarsanız bunun sebebi dilin kendisinden ziyade alternatif  IDE ve araçların fazla olması ve hepsine uyumlu çalışması için bu araçların esnek olması ve yeni başlayan geliştiricinin bu araçlar için konfigürasyon ayarlarını kendi yapmak zorunda olması.
Kategori



Eğer yazıyı beğendiyseniz ya da ekleyecekleriniz varsa, lütfen yorumunuz yazın veya RSS aboneliği ile yeni yazılardan anında haberdar olun.

'Java Berbattır' için 6 Yorum

Ramazan AYILIZ
Ağustos 3, 2010

Güzel bir yazı olmuş, eline sağlık. Özellikle çoktanrılı ve IDE konusunda görüşlerine katılıyorum. Açık kaynak olması ve oldukça popüler olması java yı otomatikman çok tanrılı yapıyor. Bu javaya bir çok güzel özellik eklenmesine neden olduğu gibi öğrenme sürecinde dezavantaj oluyor. Nereden başlayacağım, bunu da öğrenmeliyim, şu konuyu da bakmalıyım yaklaşımı bir yazılımcının java hakkında olumsuz düşünmesine neden olabiliyor. Bu yüzden de java biraz enterprise dil gibi görünuyor. Çok kolay öğrenilebilecek şeyleri bu kadar karmaşık yapmak yerine bir konu üzerinde yoğunlaşıp çalışmak iyi bir sonuc oluşturacaktır. Zaten belirli bir seviyeden sonra platformlar arasında dans eder konuma gelir. Önemli olan ilk adımı atabilmek.

Özellikle Oracle Sun’ı satın almasından sonra bu durum biraz daha netlik kazanacaktır. Java çok eğlenceli bir dil. Java is the future!

Mesut Erdemir
Ağustos 20, 2010

Merhaba hocam,

Ramazan hocamın da son paragrafta belirttiği üzere sizin görüşlerinizi merak ediyorum. Yani bildiğiniz üzere, Google, Oracle tarafından Java’yı düzgün kullanmadığı gerekçesiyle mahkemelik oldular. Bu olay, bu dile gölge düşürmez mi? Madem bu bir özgür yazılım, kimin ne hak istemeye hakkı olabilir.

Yoksa Scala devri mi başlayacak?

Hasan Ozgan
Ağustos 20, 2010

Selam Mesut,

Aslında bu konuda çok fazla şey konuşuluyor. Bence bu olay Java’nın özgürleşmesi için önemli bir hareket olacağını düşünüyor ve açık kaynak topluluklardan Oracle üzerinde bir baskı kurup kurmayacaklarını merakla bekliyorum. Bu durum bir zamanlar UNIX’in ticari isim haklarının Novell’e satılmasına ve bu isim haklarından dolayı Minix, Linux’un gibi kernellerin doğmasına benzetiyorum. Google bu günleri düşünerek Dalvik isimli kendi Virtual Machine’ni hazırda bekletiyordu. Daha çok VM örneğini göreceğimize eminim. Yani Google, davayı kaybetse bile kendi açısından pek bir sorun yok gibi görünüyor. Ayrıca uzmanları Oracle’ın açtığı davanın sonucunda pek birşey olmayacağı konusunda hem fikir. Bu konuda detaylı bir yazıya şuradan erişebilirsiniz.

Scala devrim yapmayacak bir anda tabii ama benimde o şekilde bir beklentim var. Scala daha çok yeni bir dil. Özellikle distributed computing, real-time internet konularında sıkça göreceğimizi düşünüyorum. Ramazan’ın dediği gibi Java is the future ;)

Mesut Erdemir
Ağustos 20, 2010

Cevap için teşekkürler hocam,

Java’nın popüler olmasından önceki duruma tekrar düşmesini istemem. Umarım dediğiniz gibi olur;)

gerek yok
Eylül 29, 2010

java berbat işte kardeşim iki saate açılmıyor kapanmıyor uraştıryor beni saatlerce limevireede özelilikle ram cosup gidiyor işlemci alıop başını gidio konuşsun durun java böle java şöle sorunu çzün icrat görelim

Miraç
Mayıs 8, 2011

Yazınız gayet başarılı olmuş, teşvik edici.

Hep aklıma takılmıştır, Java kurumsal anlamda birinciyken, endüstriyel sistemlerde durum nasıl ?

Yorum yapın