2024'te de JAVA'nın Hâlâ Popüler Olmasının 25 Nedeni
(medium.com)“Programlama dillerinin iki türü vardır. İnsanların şikâyet ettiği diller ve kimsenin kullanmadığı diller.” — Bjarne Stroustrup.
“Java'yı eleştiren ve ondan şikâyet eden kişiler genelde daha genç oluyor ve JavaScript'e diğer her şeyden daha fazla maruz kalmış görünüyorlar. JS ile kıyaslandığında Java biraz ağır ve kısıtlayıcı gelebilir. Her yerde boilerplate vardır, derleyicinin sıkı biçimde uyguladığı bir tip sistemi vardır vb. Ama bana seçim hakkı verilse, JS yerine optimum olmayan bir Java kod tabanını seçerdim. Hiç tereddütsüz.”
“Ancak onlarca ya da yüzlerce dosyaya dağılmış kodla ilgili gerçek deneyim kazandıktan sonra, Java'nın sözde 'kısıtlarının' aslında ayağına kurşun sıkmanı engelleyen koruyucu önlemler olduğunu fark etmeye başlarsın.”
“Java'yı keşfedip geri dönmek adeta bir aydınlanma gibiydi. Java'yı ve ekosistemini sevdiğimi fark ettim. Bu yüzden Java ekosisteminde en sevdiğim birkaç şeyi not etmeye karar verdim. Yani biri Java'yı kötülerse, neden haksız olduklarını anlatacak 25 neden burada.”
- Olgun ekosistem
- WRITE ONCE, RUN EVERYWHERE
- Geriye dönük uyumluluk (Backward compatibility)
- Güçlü tipli (Strongly Typed) dil
- Hızlı sürüm döngüsü, sürekli iyileştirme
- İyi IDE'ler
- GraalVM Native Image desteği
- Açık kaynak kütüphaneler ve framework'ler
- Çoklu iş parçacığı
- Olgun nesne yönelimliliği
- Bellek yönetimi ve çöp toplayıcı
- Gözlemlenebilirlik (Observability) ve izleme
- Fonksiyonel programlama desteği
- Zengin dokümantasyon
- Build araçları ve bağımlılık yönetimi
- Güçlü test yetenekleri
- Devasa topluluk
- Anotasyonlar
- Güvenlik özellikleri
- Zengin API seti
- Performans
- Yapılandırılmış eşzamanlılık
- Sanal iş parçacıkları
switchifadeleri için örüntü eşleme- String template'leri
62 yorum
Java’nın avantajı diye yazılan her şey aslında Java dışındaki dillerin çok daha iyi olduğu yönler gibi görünüyor.
Kimse Spring'den bahsetmiyor.
Java dilinin kendisine dair bir şikayetim yok,
ama Türkiye'deki gerçeklikte Spring öğrenmek zorunda olmak biraz bunaltıcı geldiği için bana cazip gelmedi.
Java iyi ama Spring... berbat :(
25’inin de ayırt edici bir yanı yok. Saygı ayrı; ama bunlar legacy şenliğinin sırtlanları.
2024'te de hâlâ popüler olduğuna dair tam 25 neden sıralanıyor,
ama açıkçası illa Java olmak zorunda değil; onun yerini alabilecek yeterince dil var gibi görünüyor...
Aslında popüler olan JVM.
Çoğu gerekçe, diğer modern dillerin ekosistemleriyle karşılaştırıldığında
pek de güçlü bir yan sayılmaz; ayrıca yazarın Spring ile Java’yı ayırmadan yazmış gibi göründüğünü düşünüyorum.
Java gibi bir dilin, geliştirme ekosistemi iyi oturduğu için tercih edilmesi gayet doğal.
Aynı şekilde, o ekosistemin içinde çalıştığında ancak performans gösterebildiğin için sadece o ortamda çalışmak istiyorsun; başka bir ortam talep edildiğinde de bir miktar ters tepki oluşuyor.
Ancak bundan sonra bu tür dillerde yapay zeka kodlamayı çok daha iyi yapacak gibi görünüyor ve kişinin kendi rahat ettiği ortamın ötesinde, farklı ortamlarda da hayatta kalabilecek uyum yeteneğine her zamankinden daha fazla ihtiyaç olacak.
Bu açıdan bakınca, farklı dillere uyum sağlama becerisi artık bir tercih değil, zorunluluk gibi duruyor.
Entries web app yapmak gerekirse kesinlikle Java kullanırdım. Zaten sadece 1. madde bile yeter... Basit geliştirme, hızlı geliştirme gerekiyorsa Python daha iyi gibi. Js ise... bana fazla karmaşık geliyor, sinir bozucu.
Java yapacaksam Kotlin yaparım; ayrıca Java adlı dil yerine, Kotlin’in gelişimini daha iyi takip eden dilin .NET ekosistemindeki diller olduğunu düşünüyorum.
Java’nın eskiden Java ile kurulmuş kamu kurumu sunucularının bakım dili olarak kalması daha iyi olur; Kore’deki CEO’lar reklamlarda gördükleri Java kelimesine aşina oldukları için Java’da ısrar etme eğiliminde oluyor. Kotlin ve .NET’i deneyimledikten sonra Java’yı değerlendirin.
Java konusu açılmışken ben de bir şey söyleyeyim... Go hakkında ne düşünüyorsunuz? Ben aslında Java'dan çok Kotlin'i daha çok seviyorum ama Gradle yüzünden yaşadığım hayal kırıklığı o kadar fazlaydı ki sonunda Go'ya yerleştim. Kısa da olsa kullanmış biri olarak, Java'nın gerektiği her yerde Go'nun da işi görebileceğini düşündüm.
JS/TS tarafını ben de seviyorum ama ne olursa olsun bunu Java ile aynı düzlemde karşılaştırmak biraz zor değil mi diye düşünüyorum. Sonuçta tek iş parçacığı kısıtı var; pm2 gibi araçlarla çoklu süreç kullandıklarını söylüyorlar ama Java'da da virtual thread oldukça iyi durumda ve bence bu aslında daha iyi. Tabii düşünce akışı bu şekilde giderken goroutine'leri görüp ben Go'ya yerleştim... hahaha;;
İhtiyaca göre dili doğru yerde kullanmanın en iyisi olduğunu düşünüyorum. Ben 2024 yılında bile hâlâ PHP dilini seviyorum; JS, Java(Kotlin) ve Go kadar olmasa da onlara da ilgim var. Sonuçta dil bir araç; aracı amacına uygun kullandıktan sonra sorun yok diye düşünüyorum, o yüzden bu yorumu bırakıyorum.
Bence artık gerçekten kullanılabilir bir seviyeye geldi. Ben de şirkette işimi yalnızca go ile yapıyorum.
Eskiden godep, glide kullandığımız zamanlarda dependency bir kez bile şaşsa yerine oturtmak bütün gün sürerdi; bunun bir dil mi yoksa dilimsi bir şey mi olduğunu düşünürdüm.. 😂
Tek iş parçacığı kısıtı olsa bile, container içine sarıp pod başına CPU’yu çok tüketmeyecek şekilde ayarlayarak orkestrasyon yapılan bir çağda, bu kısıt gerçekten o kadar büyük mü diye düşünüyorum.
Eskisi gibi tek bir sunucuda birden fazla container çalıştırmak yerine, ancak o container CPU’yu çok fazla tüketiyorsa belki sorun olurdu.
Çoğu web sunucusu açısından bakıldığında, CPU tüketimi yüksek değil ve I/O throughput’u yüksek olduğu için Node’un da bir seçenek olarak değerlendirilebileceğini düşünüyorum.
Elbette CPU yoğun bir domain ise, o zaman başka diller düşünülebilir ya da
napiüzerinden native kod çağrılabilir.Goroutine'lerle asenkron işlerin iyi soyutlanmış olması gibi bir özelliği olduğu için, bunun asenkron işler için kullanışlı bir dil olduğunu düşünüyorum. Rust ya da Python'ın asenkron kodları bana fazla düşünülmüş gibi geliyor. Hem yazarken hem okurken bilişsel yükün oldukça yüksek olduğunu düşünüyorum.
Ben sadece generics eklenmeden önceki Go'yu kullandım, ama bunun harika bir dil olduğunu düşünüyorum. Başlarda araçlar gerçekten pek iyi değildi, ama epey gelişmişler.
Sözdizimi kaba, ama bu yüzden öğrenmesi de kolay.
Kavga etmeyin....
Tartışma hararetleniyor.
İtirazınız varsa lütfen yalnızca içeriğini yazın.
Site kullanım kurallarına aykırı yorumlar silinmiştir.
Ayrıca, kullanım kurallarına uymayan faaliyetleri tekrarlayan hesaplar engellenmiştir; bilginize.
Lütfen yapıcı bir tartışma yürütün.
Java 1.8 gerçekten harika bir sürüm!
Bence
write once run everywhereartık biraz bırakmanın zamanı gelmiş gibi hissettiren bir slogan.. hahaAma işte, bu Java! hahaha
IDEA'da Java ile kod yazmak keyifli ama IDEA olmasaydı mutsuz olurdum. (Zaten mutsuzdum da)
Yurt içinde işe alım avantajı da var, e-Government Framework de var; hatta "Java Cumhuriyeti" denecek kadar çok Java geliştiricisi bulunuyor.
Şirketlerde başka dillerden Java'ya geçiş yapan durumlar da çok oluyor ama deneyimime göre bazı Java geliştiricileri sadece Java yapmak istiyor.
Mevcut kurulu başka dillerdeki sistemlerin sorunlu olduğunu, Java'ya geçilmesi gerektiğini söylüyorlar. Ama bir yandan Kotlin de yapmak istemiyorlar.
Yeni bir şey öğrenmeye karşı bir tür isteksizlik varmış gibi görünüyordu. Sonuçta her şeyi Java ile yapabiliyorken neden? gibi bir his.
SI işi yapanlar generics kullanmıyor, değil mi?
Sanırım asıl meselenin bu olduğunu söylüyorsunuz .. hahaha
Bu noktada Java sanki bir din gibi görünüyor.
Java'yı eleştiren ve ondan şikayet eden insanlar genelde genç ve her şeyden çok JavaScript'e daha fazla maruz kalmış gibi görünüyor.Bu sözü tersinden açarsak, JS kullanmış insanların deneyimleyip Java'nın pek iyi olmadığını düşündüğü anlamına da geliyor.
Neden her birinin kendine göre artıları ve eksileri olduğu gerçeğini kabul etmeyip sadece Java'nın daha iyi olduğu söyleniyor...
Document DB kullanmadan, özellikleri falan hiç umursamadan sadece SQL'in daha iyi olduğunu söyleyen insanlara benziyor.
Zaten Java'nın çok kullanıldığı bir durum vardı ve birçok kıdemli geliştirici yalnızca Java biliyor; o insanlar değiştirmek istemediği için değiştirilemiyor gerçeği sanki göz ardı ediliyor. Bugün baktığımda Java'nın kendine özgü güçlü yanları neredeyse kalmamış seviyede diye düşünüyorum.
Uzun yıllara dayanan deneyimime göre, Python ve JS'nin fanatiklerinin oranı daha yüksek.
Muhtemelen Java dili yerine JS/Python’ı öne çıkarmak zorunda oldukları için, size biraz daha iddialı konuşuyorlarmış gibi gelebilir.
Kişisel olarak, Java dışında başka bir dili düşünemeyen bazı insanlar da gördüm. Onun dışındaki dilleri kullananların çoğu ise duruma göre başka dilleri kullanma niyetine sahipti.
İlk dili Java ise bunun mümkün olabileceğini düşünüyorum ama çevremde böyle birini hiç görmediğim için gözümde pek canlandıramıyorum.
Ben de üniversiteye girdikten sonra derste ilk öğrendiğim dil C++ idi ve sınıf ilerledikçe diğer dillerle doğal olarak tanıştığım için yeni bir dil öğrenmeyi o kadar da yük olarak görmüyorum... Sonuçta temel sözdizimi (değişken tanımı, kontrol yapıları, fonksiyonlar vb.) aşağı yukarı hepsinde benzer.
Böyle durumlarda muhtemelen dili ilk öğrenirken fazla dar bir çerçevede öğrenildiği için bakış açısı da daralmış oluyor diye düşünüyorum. Ayrıca bunu daha çok, derin öğrenme ya da matematiksel istatistik amacıyla Python'ı ilk dil olarak öğrenen kişilerde gördüm. Benimki de öyle, ikisi de kişisel deneyim olduğuna göre her iki görüş de doğru sayılabilir.
Ben de benzer bir deneyim yaşadım, bu yüzden aynı fikirdeyim.
Python sevenler, Python'ın iyi bir dil olduğunu iddia etmiyor. JS için de dilin iyi olduğunu diretmek gibi bir durum yok. Python da JS de sadece belirli alanlarda geliştirme yapmak için ekosistemi güçlü olduğu için tercih ediliyor. Nedense sadece Java tarafındakilerde, ne olursa olsun iyi olduğunu dayatma gibi bir hava var..
JS, JS geliştiricilerinin kendilerinin bile dalga geçtiği bir şey. Buna dil mi denir...
tsolmasaydı hıçkırık hıçkırıkİlle de Java'yı savunacak olursak, tersine yalnızca Java'nın özellikle şu ya da bu sebeple sık sık alay konusu olduğunu da düşünüyorum. Herkesin aşina olduğu mahalle amcası pozisyonu...?
Bugünlerde Google'da Java ile ilgili içerik aratınca
kurslarda öğrenilen aynı şeyleri anlatan Türkçe blog yazıları ortalığı kaplıyor ve
düzgün bir referans bulmak zor olduğu için sinir bozucu oluyor.
Google araması epey kötüleşti değil mi...
18, 25, 20, 10, 8, 6, 5, 3, 2, 1 vb. yalnızca Java'ya özgü değil. Hatalı karşılaştırma
Şimdi bakınca, Java'nın da böyle özellikleri olduğu ve eleştirilmesini gerektirecek bir neden olmadığı görülüyor; mesele sadece Java'da olduğu için Java kullanın demek değil gibi.
Aksine, okurken aklıma sadece "hmm... .NET daha iyi değil mi?" düşüncesi geliyor.
Ben de C#'ı seviyorum ama Windows dışındaki ortamlarda özellikle kullanmak gerekir mi emin değilim.
Yukarıdaki yorumla aynı içerik. O dönem gerçekten çok uzun zaman önce sona erdi.
MS’in gecikmiş tercihi insanların algısını böyle mahvetti.
Yalnızca Windows uygulamaları geliştiriyorsanız MS ekosisteminin birçok avantajı olduğu için iyi, ama Linux ya da macOS'ta Java'dan daha iyi bir seçenek olmadığını düşünüyorum. MS sonradan destek verse de özellikle kullanmak için bir neden yok. Zamanlama kötü.
Artık .NET Framework dönemindeki .NET değil; neden onu Windows uygulamalarıyla sınırlıyorsunuz?
Zaten hepinizin elinde tuttuğu cep telefonlarında .NET tabanlı bir oyun motoru çalışıyor;
222
333
Java’yı eleştirdiğimden değil; Java’nın sinir bozucu olmasının nedeni, özellikle Java geliştiricilerinin diğer dillerin geliştiricilerini küçümsemesi, karşılaştırması ve tuhaf bir Java kibri sergilemesi. Java’yı seviyorum ama neden böyle davrandıklarını anlamıyorum. Her dilin kendi felsefesi, artıları ve eksileri, farklı bir ekosistemi var; ama o garip Java kibri aniden ortaya çıkınca itici görünüyor.
Java geliştiricilerinin Java gururunu destekleyecek kanıt olarak sunulabilecek kaynaklara ihtiyaç var gibi görünüyor. Bunu ortaya koymak zorsa, bunun kabul edilmesi güç bir iddia olduğunu düşünüyorum.
Sanırım her dilin ya da aracın etrafında böyle insanlar mutlaka oluyor. Java, çıktığı dönemde C/C++'a kıyasla daha havalı bir dil olmasının yanı sıra kurumsal tarafta da yaygın biçimde kullanıldığı için geliştirici havuzu büyüdü ve bu yüzden daha çok göze batıyor olabilir.
Ayrıca bugünlerde bu rolü Rust geliştiricilerinin üstlendiği de görülüyor.
Şaşırtıcı ama Java'nın ana akım haline gelmesinin nedeni pazarlamaya inanılmaz para harcamış olmalarıymış hahaha
https://www.youtube.com/watch?v=NVuTBL09Dn4
Bir dilin nasıl ana akım hâline geldiğine dair bir YouTube videosu var; sizler de izlerseniz ilginç gelebilir!
https://www.youtube.com/watch?v=QyJZzq0v7Z4
Java geliştiricisine sinirlenmeniz gerekirken Java'nın kendisine yöneltiyorsunuz...
Bu, sizin okuduğunu anlama becerinizle ilgili…
Ben yanıtlamasam da başka biri yazmış zaten.
Öyle değil?
Galiba okuryazarlığın ne olduğunu bile bilmiyor?
Birden, Java ile yapılmış Eclipse ile JavaScript(TypeScript) ile yapılmış VSCode akla geldiyse... bu yanlış bir karşılaştırma mı olur? Elbette özellik açısından Eclipse daha fazla şeye sahip.
Bu yanlış bir karşılaştırma..
Çıkış dönemine bakmak lazım.
Eclipse çıktıktan sonra bir süre boyunca, Eclipse bugünün VSCode'u ile benzer bir konuma sahipti.
Ben de Eclipse'i kullanmayı gerçekten çok rahatsız bulduğum için kullanmıyorum ama
o dönemde işe yarar tek seçenek Eclipse'ti.
JavaScript'in gücü, V8 motorunun Google tarafından yönetiliyor olmasıdır.
Terk edilmiş Java..
Electron uygulamasının backend’i de JavaScript değil mi.. Ana süreç ve renderer süreci ayrı çalışsa da ikisi de JavaScript koduyla çalışıyor sonuçta.
Aynı şekilde JVM de nihayetinde native olarak uygulanmış bir runtime değil mi?