28 puan yazan GN⁺ 2025-05-18 | 13 yorum | WhatsApp'ta paylaş
  • James Gosling, Java'nın yaratıcısı ve 30 yıldır modern bilişimi etkileyen pratik bir dahi olarak değerlendiriliyor
  • Yoksul koşullarda çöp yığınlarındaki parçalardan bilgisayar toplayarak programlamayı öğrendi ve bu öz yönelimli öğrenme yaklaşımı daha sonra dil tasarımı felsefesine de yansıdı
  • Sun Microsystems'ta şaka ile inovasyonun bir arada yaşadığı dönem, Gosling'e özgü yaratıcılığın ve teknik kültür inşasının temeli oldu
  • Son dönemde üretken yapay zeka araçları ve yapay zeka patlaması hakkında güçlü bir kuşkuculuk sergiledi; ayrıca programlama eğitiminin öneminin aksine daha da arttığını vurguladı
  • Java'nın ayakta kalma sırrı gösteriş değil; istikrar, geriye dönük uyumluluk ve geliştirici üretkenliğini tavizsiz biçimde önceleyen pragmatik tasarım felsefesi oldu

Java at 30: The Genius Behind the Code That Changed Tech

  • Java, 23 Mayıs itibarıyla 30. yılını kutlayan genel amaçlı, yüksek seviyeli, nesne yönelimli bir dil ve bugün de farklı ölçeklerdeki sistemleri çalıştıran temel teknolojilerden biri
  • Java'nın var olabilmesinin temelinde James Gosling'in pratik teknik sezgisi ve yaratıcı içgörüsü yatıyor
  • Gosling, çöp kutularından parça toplayıp bilgisayar kuran Kanadalı, kendi ayakları üzerinde duran bir gençten dünya çapında bir programcıya dönüştü
  • “Bir kez yaz, her yerde çalıştır” felsefesi Java'nın simgesi oldu ve bu da yazılım geliştirme biçiminde köklü bir dönüşüm yaratan bir dil felsefesine dönüştü
  • Gosling, kariyeri boyunca teknik mükemmeliyet, oyunculuk ruhu ve belirgin bir etik bilinci dengeleyerek modern bilişim kültürünün oluşumunu sürekli etkileyen bir geliştirici profili sergiledi

James Gosling: The Brilliant Mind Behind Java

  • James Gosling yalnızca “Java'nın babası” değil, karmaşık kavramları sezgisel biçimde açıklayabilen alçakgönüllü bir dahi
  • Java'yı yaratmasının üzerinden 30 yıl geçmişken, teknoloji yolculuğuna dönüp bakarak dilin ve geliştirme kültürünün evrimini yeniden değerlendiriyor

The Path To Programming: Resourceful Beginnings

  • Çocukluğunda son derece yoksul bir ortamda Gosling, çöpten televizyon toplayarak teknik yaratıcılığını geliştirdiği bir deneyim yaşadı
  • İlk bilgisayarını telefon şirketinin hurdaya çıkardığı röle raflarından kurdu; bu da erken yaşta ortaya çıkan mekanik sezgisini ve montaj becerisini simgeliyordu
  • Calgary Üniversitesi'nin bilgisayar merkezini ziyaret ederken ekranlar, yanıp sönen ışıklar ve teyp ünitelerinden etkilenmesiyle programlamaya yönelik ömür boyu sürecek merakı başladı
  • Delikli kartları karıştırarak parola bulma yöntemiyle kendi kendine öğrendi; lise yıllarında üniversitenin fizik bölümünde uydu veri analizi programı yazarak programlamadan para kazanırken keyif alma deneyimi edindi
  • İlk programlama deneyimleri IBM ana bilgisayarlarındaki PL/1, Fortran, PDP-8 assembly ve CDC 6400 kodlarına uzanıyor. Kendine özgü sade üslubuyla “yazın COBOL derleyicisi geliştiren bir işte çalıştım” diye hafifçe bahsetti; oysa bu, birçok deneyimli programcının bile üstlenmekte zorlanacağı bir işti

Academia to Industry: Finding His Way

  • Gosling akademiyi “lisansüstü öğrencilerini ucuz iş gücü olarak kullanan bir araştırma kurumu” diye tanımlayarak teoriden çok pratiği önemseyen doğrudan bakışını ortaya koydu
  • Carnegie Mellon'daki doktora sürecinde de startup'larda çalışarak gerçek dünya deneyimi kazandı ve ardından derecesini tamamlayarak sanayi ile akademiyi bir arada götüren esnek bir kariyer yolu izledi
  • İlk işi IBM Research'tü, ancak burayı “kendi ayağına sıkmaya adanmış bir şirket” diye değerlendirmesiyle şirket yönetimi ve teknoloji stratejisine dair soğukkanlı analiz tavrını korudu
  • Bu erken dönem deneyimler, daha sonra Sun Microsystems'taki çalışma biçimini etkileyen gerçeklik odaklı bir organizasyon kültürü anlayışının temeli oldu

The Sun Days: Innovation and Pranks

  • Gosling, Sun'daki en keyifli anıları arasında her yıl yapılan büyük 1 Nisan şakası projelerini sayıyor ve yaratıcılık ile neşenin bir arada olduğu kurum kültürünü hatırlıyor
  • En bilinen şakalardan biri, gölet üzerindeki bir platforma Ferrari yerleştirmekti; bu, mühendislik odaklı problem çözme ile ekip çalışmasını kullanan mizah anlayışını gösteriyordu
  • CEO ofisinde yapay çim, bunker ve su engeli bulunan tek delikli bir golf sahası kurma şakası da teknoloji ile oyunu birleştiren özgün bir girişim olarak anılıyor
  • Gosling, Sun'ı “teknik mükemmellik ile yaramaz yaratıcılığın aynı anda mümkün olduğu nadir bir ortam” olarak hatırlıyor; bunun, genel problem çözme yaklaşımını ve teknolojiye bakışının temelini oluşturduğunu söylüyor

Java: Creating a Legacy That Changed Everything

  • Java'nın 30 yıllık yolculuğu Gosling için en temsilî başarısı ve teknoloji yaşamındaki belirleyici dönüm noktası
  • Sokakta “Java sayesinde bir kariyer sahibi oldum” diyen insanlarla karşılaştığında duyduğu geliştirici ekosisteminde bıraktığı etkiye dair derin memnuniyet vurgulanıyor
  • Lambda ve generics gibi özellikleri baştan beri eklemek istemişti, ancak “yanlış şekilde eklemem” tasarım felsefesi nedeniyle doğru zamanı bekledi
  • Oracle'ın Java yönetimini “beklediğimden daha iyi” diye değerlendirirken, aslında topluluğun sürekli katılımı ve katkısının kilit rol oynadığını vurguladı
  • Java, bulut ortamlarına uygun şekilde evrimleşti; çok çekirdek desteği, bellek işleme ve GC iyileştirmelerinde “gerçekten olağanüstü bir seviye”ye ulaşan teknik olgunluk sergiledi

Beyond Java: Ventures After Sun

  • Sun'ın Oracle tarafından satın alınmasının ardından Gosling kısa bir ara verdi, sonra Google'a katıldı; ancak 6 ay içinde ayrılıp Liquid Robotics'e geçti
  • Burada otonom deniz robotları için kontrol sistemleri geliştirdi ve Hawaii'de şnorkel gerektiren çalışma ortamları gibi teknoloji ile doğayı birleştiren sıra dışı çalışma koşulları deneyimledi
  • Arktik ve Antarktika'daki deniz sıcaklıklarını izleyen projelere katıldı, ancak çevre araştırmalarındaki bütçe yetersizliği nedeniyle VC tabanlı startup yapısıyla çatışma yaşadı
  • Savunma alanına yönelme baskısı artınca etik nedenlerle ayrıldı; ardından AWS'de Greengrass projesi ve geliştirici araçları üzerinde çalışarak teknik ilgiyi ve etik ölçütleri birlikte gözeten bir kariyer çizgisi sürdürdü

On Open Source and Industry Trends: Cutting Through the Hype

  • Açık kaynak, yalnızca bir iş birliği aracı değil; geliştirici ilişkileri, pazarlama stratejisi ve bottom-up benimseme modeli olarak işleyen çok katmanlı bir ekosistem olarak tanımlanıyor
  • Low-code ve no-code trendleri konusunda, bunun COBOL döneminden beri tekrarlanan bir iddia olduğunu söyleyerek karmaşık alanlara uygulandığında sınırları olan, uzmanlaşmış bir yaklaşım şeklinde kuşkucu bir tavır aldı
  • AI ve machine learning'de sorunun teknolojiden çok adlandırma olduğunu; “ileri istatistik teknikleri” ifadesinin özü daha iyi anlattığını savundu
  • AI'ın yalnızca bir araç olduğunu, özerk bir varlık gibi görülmemesi gerektiğini ve insan emeğini tehdit etmekten çok onu destekleyen üst düzey bir araç olarak değerlendirilmesi gerektiğini belirtti

Developer Tools and Preferences: Embracing Progress

  • Gosling, ana geliştirme aracı olarak NetBeans IDE kullanıyor ve Apache lisanslı açık kaynak ile canlı topluluklara destek veren bir tutum sergiliyor
  • Hâlâ Vi veya 70'ler-80'ler araçlarına takılı kalan geliştiricilere karşı teknolojik ilerlemeyi reddeden bu tavra dair hayal kırıklığını dile getiriyor
  • Vi'ı her yerde çalıştığı için ara sıra kullansa da, ciddi geliştirme ortamlarında modern IDE'lerin kullanımını güçlü biçimde savunuyor

The JVM Vision: From Academic Concept to Global Standard

  • Java Virtual Machine (JVM) fikrinin ilk temeli, Gosling'in lisansüstü yıllarında düşündüğü mimariden bağımsız dağıtım formatı deneyleri ve komut çevirisi teknikleri araştırmasına dayanıyor
  • Bu fikir daha sonra yalnızca Java'nın değil, birçok dilin farklı donanımlarda çalışabildiği genel amaçlı bir yürütme platformu teknolojisine dönüştü
  • ‘Write once, run anywhere’ felsefesi başlangıçta doktora tezi için matematiksel temeli yetersiz bulunarak reddedilmişti; ancak sonrasında dünya yazılım geliştirme ortamını değiştiren pratik bir teknoloji haline geldi

More Recent Work: Bridging IoT Gaps at AWS

  • Gosling, AWS'de IoT uygulama çerçevesi Greengrass üzerinde çalışırken karmaşık sorunları zarif biçimde sadeleştiren bir teknik yaklaşım ortaya koydu
  • OTA güncellemeleri, uzaktan kontrol, telemetri, ağ güvenilirliği, güvenlik ve kimlik doğrulama yönetimi gibi alanlarda dağıtım ile operasyon arasındaki tekrarlayan boilerplate işleri soyutladı
  • Cihaz tarafı kodunun açık kaynak olarak yayımlanmasıyla, RISC-V gibi Amazon'un öncelikli görmediği platformlara yönelik topluluk tabanlı port katkılarının önü açıldı
  • Daha sonra katıldığı başka bir geliştirici araç projesi yapay zeka patlaması içinde iptal edildi ve bu durum teknik samimiyetten çok trend odaklı karmaşanın yarattığı sorunlara işaret etti

AI Skepticism

  • Gosling, yakın tarihli bir röportajında yapay zeka devrimi için “çoğu dolandırıcılık” ifadesini kullanarak, AI'ı zehirli bir pazarlama terimi olarak gören kuşkucu yaklaşımını açıkça ortaya koydu
  • Bunun matematiksel olarak etkileyici bir teknoloji olduğunu kabul etse de, AI adının aslında ileri istatistik teknikleri olan teknolojik özün üzerini örttüğünü söyledi
  • Girişim sermayesinin yön verdiği yapay zeka furyasını “dolandırıcılar ve abartı tüccarlarının buluşma noktası” diye niteleyerek, gerçekten faydalı teknolojilerden çok exit odaklı kısa vadeli kâr arayışını sert biçimde eleştirdi
  • Yapay zekaya akan yatırımın büyük kısmının sonunda “kara deliğe çekileceğini” söyleyerek, sürdürülebilir olmayan, moda odaklı sermaye akışına karşı uyarıda bulundu

Is It a Vibe? AI Coding Tools: Impressive Demos, Limited Utility

  • Üretken yapay zeka kod araçları ilk bakışta etkileyici olsa da, iş biraz karmaşıklaştığında başarısız olan sınırlı bir yapıya sahip
  • Bu araçlar yalnızca mevcut kod örneklerini kazıyıp tekrar üretebilir; gerçekten ilginç problemlerse her zaman yeni olduğu için kopyalamaya dayalı araçlarla uyuşmaz
  • Uzman geliştirici ortamlarında kalıplaşmış kod zaten kütüphanelere dönüşür; bu yüzden AI'ın kod üretimi gerçek geliştirme ihtiyaçlarıyla yapısal olarak çatışır
  • Gosling, AI'ın gerçek değerini “kimsenin yazmak istemediği dokümantasyonu sizin yerinize tarayan arama aracı” olarak tanımlıyor ve API kullanımını açıklayan yardımcı araç rolündeki faydasını öne çıkarıyor

Java’s Evolution: Language Features and Runtime Improvements

  • Son dönemde Java dilindeki type inference ve dizi bildirimi iyileştirmeleri gibi değişiklikler, geliştirme kolaylığını artıran yararlı genişlemeler olarak değerlendiriliyor
  • Ancak Gosling, Java'daki en etkileyici gelişmenin JVM çalışma ortamı ile standart kütüphanelerin kalitesindeki artış olduğunu özellikle vurguluyor
  • Modern JVM, kod kalitesi, thread performansı ve garbage collection açısından “şaşırtıcı düzeyde” çalışma performansı sunuyor
  • Bellek yönetimi ve performans öngörülebilirliği açısından malloc tabanlı C'den daha verimli olduğunu; ayrıca GC duraklama sürelerinin birkaç milisaniyeye kadar indirilebildiğini belirtiyor
  • Bugünün JVM'i, son derece büyük bellek alanlarını bile kararlı şekilde işleyebilen yüksek performanslı bir runtime ortamı olarak değerlendiriliyor

Programming Languages for Critical Infrastructure

  • FAA hava trafik kontrol sisteminin hangi dille yeniden yazılması gerektiği sorusuna Gosling, “ev yaparken hangi çekici seçeceğini sormaya benziyor” diyerek sorunun öncülünü reddediyor
  • Önce iletişim sistemleri, uluslararası düzenlemeler, uçuş rotaları ve çarpışma önleme gibi problem alanının özelliklerinin net anlaşılması, ardından teknolojinin seçilmesi gerektiğini vurguluyor
  • Yine de güvenilirliğin kritik olduğu büyük ölçekli sistemlerde Java'nın güçlü bir aday olabileceğini ekliyor

The Future of Programming in an AI World

  • AI gelişse bile programlamanın hâlâ temel bir beceri olacağını söyleyen Gosling, çocuğu olsaydı mutlaka kodlama öğretirdi
  • AI'ın insan geliştiricilerin yerini alacağı yönündeki büyük teknoloji şirketi yöneticilerinin iddialarını, emek yoğunluğunu artırmaya dönük savunmacı bir gözdağı olarak eleştiriyor
  • Sistemleri gerçekten anlayabilmek için programlama yetkinliğinin gerekli olduğunu ve makineler bazı işleri devralsa bile insanların teknik anlayış temelini koruması gerektiğini savunuyor

Java’s Longevity Secret

  • Gosling'e göre Java'nın 30 yılı aşkın süredir ayakta kalmasının nedeni gerçek problem çözme gücü, kullanıcıya saygı, geriye dönük uyumluluk, üretkenlik artışı ve güvenilirlik merkezli bir felsefe
  • Dil modalarını değil, tutarlı pragmatizmi öne çıkardı; bu stilden çok sonuca odaklanan gerçekçi tasarım anlayışı özellikle kurumsal dünyada etkili oldu
  • Yazılımın “her zaman doğru çalışması gerektiği” anlayışıyla Java, dürüst ve pratik bir mühendislik aracı olarak varlığını sürdürüyor

Oracle’s Stewardship: Better Than Expected

  • Gosling, Sun Microsystems satın alımından sonra Oracle'ın Java yönetimi için “beklediğimden çok daha iyi iş çıkardı” diyerek beklentileri aşan performans karşısında şaşkınlığını ifade etti
  • İlk başta geçmişteki yaklaşımı nedeniyle bir “yağma ve talan” beklediğini, ancak gerçekte Java ekibini engellemek yerine koruduklarını söyleyerek bağımsız ve teknoloji odaklı yönetime olumlu not verdi
  • Finansal desteğin yetersiz olduğunu eleştirse de, kurumsal müdahale olmadan teknik ekibin özerkliğinin korunduğu yapıya yüksek puan verdi

Crab Lovers Unite!

  • Gosling, birlikte yemek yemek isteyeceği insanlarla çalışmak istediğini söyleyerek insan odaklı bir iş birliği ölçütünü önemsediğini gösteriyor
  • Muhabir, San Francisco'daki yengeç restoranı Thanh Long'da tesadüfen Gosling'le karşılaştı ve teknoloji dünyasının önemli bir isminin gündelik hayatın içinde belirdiği anı kaydetti
  • Ardından ikili birlikte yengeç yiyip sohbet etti; bir sonraki buluşmayı da aynı yerde yapma sözü vererek teknolojinin ötesine geçen insani sıcaklığı aktardı

13 yorum

 
cosine20 2025-05-21

Ben de statik tipli diller arasında kullanımı en rahat olan dilin Java olduğunu düşünüyorum.

Ancak genel amaçlı, pratik geliştirme açısından GUI’si olan son kullanıcı odaklı uygulamaları Java ile yazmak pek iyi bir tercih değildi. (Bu açıdan bakınca C# + .NET kombinasyonu en iyisi.)
Java’nın avantajları düşünüldüğünde, backend ya da middleware tarafında kullanmanın pratik açıdan en iyi kullanım senaryosu olduğunu düşünüyorum.

Her neyse, ara sıra kullanmam gereken durumlar oluyor ve her kullandığımda zorlanmadan ele alabileceğim bir dil olduğu için bende daha çok iyi deneyim bırakmış gibi görünüyor.

 
mhj5730 2025-05-19

Hurdalıktan televizyon söküp programlama yaptığı hikâyesi, sanki bir efsanenin başlangıcı gibi duruyor.

 
ndrgrd 2025-05-18

Java'dan sonra dillerin üretkenliğe odaklanmaya başladığı doğru.

Ondan önce sıkça kullanılan C++ ise bugün bile sadece okuması bile korkunç. Özellikle de uzun süredir devam eden projelere dokunurken.

 
3ae3ae 2025-05-18

Java'nın geliştirici üretkenliğine önem verdiği sözüne katılmak zor. Java kadar IDE'ye derinden bağımlı hale gelecek şekilde gelişmiş başka bir dil var mı?

 
3ae3ae 2025-05-19

Sanırım düşünmeden bir yorum yazmışım.

 
sunrabbit 2025-05-19

IDE'ye derinden bağımlı olmak, alışılmadık biçimde gelişmiş Java ekosisteminin sorunudur.
Tasarım seviyesinde bir sorun değildir.

Açık konuşmak gerekirse, bugün Java geliştirirken ille de JetBrains ürünleri kullanmak zorunda değilsiniz
ama herkesin onları kullanması gibi.

Ayrıca Java'nın çıktığı dönemdeki programlama dili listesine bakarsanız, platforma bağımlı, yani OS'e bağımlı implementasyonları çok olan dillerdi.
Buna karşılık Java, Node, Python ve C# gibi aynı kodla farklı OS'lerde çalışabilen dillerin yöneldiği istikameti gösteren şeydi.

Günümüzde ise aynı kodun farklı OS'lerde çalışabilen uyumluluğu zaten doğal bir "sağduyu" haline geldi.

 
roxie 2025-05-26

> Kaba tabirle, bugün Java geliştirirken illa JetBrains ürünlerini kullanmak zorunda değilsiniz ama

Bu kısma... biraz katılmakta zorlanıyorum, hıçkırık...

 
kwj9211 2025-05-19

Artık biraz sıradanlaşıp kanıksanmış olsa da,
Java ortaya çıktığında çoklu platformu yeni bir build gerekmeden kararlı biçimde desteklemesi bile üretkenlik açısından epey büyük bir avantaj değil miydi?

 
angrycoder 2025-05-18

Java öncesindeki dillerle karşılaştırınca üretkenliğinin iyi olduğu söylenebilir.

 
ahwjdekf 2025-05-18

c++ > c# >= java

 
cosine20 2025-05-21

C# >= Java > C++

 
GN⁺ 2025-05-18
Hacker News görüşleri
  • Java performansının en üst seviye olmasa da C/C++'ın ardından 3. sırada sayılabilecek kadar iyi olduğu düşünülüyor; Go'dan da hızlı, Python ya da Ruby'den ise 10 kattan fazla önde olması memnuniyet verici. Java sözdizimi kusursuz değil ama tutarlı ve öngörülebilir olması avantaj. Idea ya da Eclipse gibi araçlar kullanıldığında üretkenlik konusunda endişe duyulmayan bir ortam sunuyor. Bellek yönetimi biçimi Unix felsefesinden farklı olsa da, anlaşılınca kabul edilebilir bir uzlaşma gibi geliyor. Bu tür trade-off'larla elde edilen hız ve bellek güvenliğine, aynı zamanda dinamik çağrı ve hotswap gibi faydaların da eklenmesi pratik açıdan tatmin edici.
    • IntelliJ for Java gibi araçların diğer dillere kıyasla açık ara üstün bir ortam sunduğu hissediliyor. Go topluluğunun eşzamanlılık veri yapısı container'ları geliştirme konusunda neden pek istekli olmadığı merak ediliyor. Java'da eşzamanlılık kodlamasının iyi container'ları teşvik eden kültürü kıskanılıyor; bazen java.util.concurrent ya da JCTools özleniyor.
    • Üniversiteden yeni mezun olunan ilk dönemde Java'nın her derde deva olduğu sanılmıştı, ama sonradan asıl çağının ötesinde olan unsurun JVM ve Java App Server tooling'i olduğu fark edildi. Dilin kendisi ise 2006~2007 civarında üretkenlik artmadan önce hayal kırıklığı yaratıyordu. Bugünlerde JVM üzerinde çalışan JRuby, Clojure, Scala, Groovy, Kotlin gibi diğer dillere ilgi var. Bunlar arasında JRuby, olgun iki ekosistemi birden kullanabilmesi nedeniyle ilginç bulunuyor. Project Loom sayesinde JVM'de Ruby'nin Fiber'larını kullanabilmek her iki taraf için de kazanç oldu. Charles Nutter'ın katkılarının yeterince takdir edilmediği düşünülüyor.
    • Java'nın Go'dan hızlı olduğu söylense de pratikte çoğu zaman Go'nun daha hızlı olduğu ya da 2~10 kat daha az bellek kullandığı durumlar var; bu yüzden benzer seviyedeler. Go'nun value type'ları optimizasyonu kolaylaştırıyor. Go'nun özellikle anılması dikkat çekici; ayrıca C#'ın Java'dan daha hızlı olduğu da düşünülerek Java'nın 3. değil 5. sırada olduğu yorumu yapılıyor.
    • Son dönemde Java'ya eklenen sealed class, switch expression, Project Loom ve records özelliklerinin mevcut sözdizimine doğal biçimde yedirilmesi takdir ediliyor. Heap dump analizörü ve GC analizörü gibi Java'nın teşhis araçlarının da en üst düzeyde olduğu hissediliyor.
    • Dil performans sıralamasının neyin dahil edilip nasıl karşılaştırıldığına göre değiştiği belirtiliyor; paylaşılan benchmark bağlantısına bakılması öneriliyor.
  • Java(JVM), bir süre övülen başka dil ve ekosistemleri denedikten sonra daha da yüksek değer verilen bir platform haline geliyor. Pratikte bunun sık sık “komşunun tavuğu komşuya kaz görünür” türü bir yanılsama olduğu hissediliyor. Yalnızca Rust'ın gerçekten çok ilerlemiş bir dil olduğu ve kullanmasının keyif verdiği düşünülmüş. Günümüzde Java'nın startup dünyasında “cool” bir dil sayılmaması üzücü bulunuyor ve üretkenlik farkının da neredeyse ortadan kalktığı düşünülüyor.
    • Rust iki ay boyunca tam zamanlı kullanıldı ama en azından sunucu geliştirme tarafında Java ile karşılaştırıldığında “neşe” verdiği ifadesi anlaşılmıyor. Rust'ta lifetime sorunları yüzünden üretkenliğin aniden düştüğü anların çok fazla olduğu, tip güvenliği hissinin güçlü olmasına rağmen genel deneyimin gerçekten eğlenceli sayılamayacağı söyleniyor.
    • C#'ın Java'nın çok önünde olduğu ve daha iyi uygulanmış generics, uzun süredir var olan value type'lar, kullanışlı FFI gibi anlamlı açılardan büyük fark yarattığı belirtiliyor. Unity dışında insanların buna pek dikkat etmediği ve Microsoft'un geçmişte kitlesel görünürlük elde etmeyi başaramadığı düşünülüyor.
    • Bunun proje ölçeği farkından kaynaklandığı düşünülüyor. Genelde 10 yıllık büyük bir Java legacy projesinden “yeni” bir hello-world düzeyi projeye geçince her şey doğal olarak daha iyi görünür. Büyük çaplı rewrite çalışmaları güvenlik incelemesi açısından iyi olabilir ama şirketlerin çoğunun buna ayıracak imkânı yoktur; Google gibi istisnalar dışında.
    • Aynı hissin paylaşıldığı, Go'nun hayal kırıklığı yarattığı söyleniyor. Her şeyi vaat edip sonuçta Java'ya benzer ya da hatta stack trace'siz hatalar gibi yönleriyle daha da geriye gitmiş gibi göründüğü ifade ediliyor.
    • Yaklaşık 30 yıllık kariyerin ortalarında JVM dışı bir dille proje denenen 2 yılın, kariyerin en kötü dönemi olduğu söyleniyor.
  • James Gosling'in katkıları için teşekkür ediliyor. Java World Tour sayesinde “Java consultant” aramasında ilk sırada çıkıp uzaktan çalışarak kırsalda istikrarlı bir geçim sağlama deneyimi anlatılıyor. Java sayesinde hayatı olumlu etkilenmiş çok sayıda insan olduğu, ayrıca Clojure ekibinin JVM tabanlı harika bir ekosistem geliştirme başarısına da hayranlık duyulduğu belirtiliyor.
    • Kendisinin de James Gosling'e minnettar olduğu, 1995'te Taligent'te C++ ile çalışırken Java'yı ilk kez kullanıp yeniliğine hayran kaldığı söyleniyor. Taligent dağıldıktan sonra da Java ve ilgili yazılımlar etrafında uzun süre çalışıldığı anlatılıyor.
    • James Gosling(Java) ve Rich Hickey(Clojure), kendi dönemlerinde programlama dünyasına taze bir soluk getiren yaratıcılar olarak değerlendiriliyor.
  • Son birkaç yıldır .NET/C# ile çalışılmış olsa da genel olarak JVM/Java'nın deneyimlenen ekosistemler arasında en iyisi olduğu düşünülüyor. Java'nın doğru çözdüğü alanların çok daha fazla olduğu hissediliyor. Örneğin Java, iş bölmeyi fork/join pool ile çözerken .NET'in yalnızca global thread pool'a work-stealing eklediği ve sync-over-async kodun kolayca sistem genelinde deadlock doğurabildiği söyleniyor. Büyük kod tabanlarında senkron kodu tamamen async'e çevirmek pratikte imkânsız. Java tarafında kütüphane/framework düzeyindeki hatalar daha hızlı aşılabilirken, .NET tarafında standart kütüphane, dil ya da runtime seviyesinde sorun çıkarsa düzeltmek çok daha zor. Java'nın bu konularda iyi çıta koyduğu düşünülüyor.
    • .NET'teki thread pool starvation çok sinir bozucu bulunuyor; gerçi son dönemde etkisinin azaldığı duyulmuş. Thread pool'un yanlış kullanımına tamamen bağışık bir uygulamanın imkânsız olduğu, yapılabileceklerin daha fazla thread eklemek ya da işleri daha akıllıca sıralamak olduğu söyleniyor. Bunu söyleyen kişi thread pool uzmanı olmadığını da ekliyor.
    • .NET'in Java ekosisteminin başarılı yaklaşımlarını kopyalayarak ilerlediği sanılırken, gerçekte oldukça farklı olduğuna dikkat çekiliyor.
    • Hiç .NET kodu yazmadan deadlock sorunlarından söz etmenin adil olmadığı ve 13 yıllık blog yazılarını dayanak göstermenin ikna edici bulunmadığı belirtiliyor.
  • Java'nın büyük bir başarı hikâyesi olduğu kabul ediliyor, ancak James Gosling'in başlangıç noktası olduğu, fiili liderin ise o olmadığı öne sürülüyor. Java 1.1~1.2 döneminden itibaren Mark Reinhold'un JIT entegrasyonu, HotSpot geliştirmesi, 1.2'de sınıf sayısındaki büyük artış, Oracle satın alımı sonrası dinamik dil desteği, açık kaynaklaştırma, hızlı sürüm döngüsü ve modern dil özelliklerinin temelleri gibi pek çok yeniliğe öncülük ettiği anlatılıyor. Java'nın güçlü yanlarının Mark Reinhold'un liderliği sayesinde oluştuğu değerlendirmesi yapılıyor.
    • Ana geliştirme ekibinin tamamı etkileyici bulunuyor. Gosling'in pratik bir dil istediği, sonrasında Mark Reinhold ve Brian Goetz gibi isimlerin dili geliştirici dostu biçimde ilerlettiği söyleniyor. Oracle sevilmese de böylesine güçlü bir grubu ileri taşımış olmasına teşekkür ediliyor.
    • Kotlin'in Java gibi statik tipli bir dil olduğu, dinamik bir dil olmadığı hatırlatılıyor.
    • Linus'un git'i sadece 2 haftalık bir hack çalışmasıyla ortaya çıkarıp yalnızca kıvılcımı vermiş olsa bile topluluğun onu büyüttüğü örneği verilerek, yalnız başlangıç noktasıyla değerlendirme yapmanın eksik olduğu savunuluyor.
  • 40 yaş üstü bir yazılım mühendisi olarak gerçekçi biçimde “işi gören araçları” seçmenin akıllıca olduğu düşünülüyor. Bugün bu rolü Java ya da C# başarılı biçimde yerine getiriyor. Kişisel olarak C# tarafının ekosistem açısından daha entegre olduğu hissediliyor. Hangi use case olursa olsun C# ile 1 dakikada uygulama çıkarılabildiği, dilin hızlı geliştiği ve insan kaynağının istikrarlı olduğu söyleniyor. .NET'in de cross-platform desteği olduğu, dilin zarafeti ve verimliliği sayesinde işlerin kolaylaştığı ifade ediliyor.
  • Üniversitede OS kodunun Java ile simüle edildiği bir deneyim anlatılıyor. Soyut algoritmaları öğrenmek için Java'nın karmaşıklığı azaltarak faydalı olabileceği kabul edilse de, kişisel olarak Python'ın daha uygun olacağı düşünülüyor. Sektör etkisiyle üniversitelerde başlangıç seviyesinde zorunlu olarak Java öğretilmesine katılmak zor bulunuyor. Lisede BASIC ve C görülmüş olduğu için, Java ile OS'nin düşük seviye kodlarını simüle etmek bir adım geri gibi hissettirmiş.
    • Üniversitede C ile mikrodenetleyici, Java ile veri yapıları/OOP, C ve MIPS assembly ile sistem/OS/eşzamanlılık kavramları öğrenildiği anlatılıyor. Veri yapıları ve algoritmalarda Python'a kıyasla Java'nın soyut tiplerle yapıları daha net ayırdığı ve bu yüzden daha doğru kavramsal temel sağlayabildiği düşünülüyor. Ancak OS kavramlarını Java ile öğretmek biraz fazla bulunuyor.
    • Joel'in sözünü ettiği Java eğitiminin dezavantajlarının Python gibi diğer yüksek seviyeli diller için de geçerli olduğu, ironik biçimde de MapReduce'un (Google tarafından Java ile yazıldı) bu konuda Microsoft'tan daha ileri bir örnek olduğu vurgulanıyor.
  • Java'nın başarısı kabul edilse de çeşitli nedenlerle güçlü bir iticilik hissi kaldığı söyleniyor. Bunun çoğunlukla büyük şirketlerin uzun ve hantal kodları, karmaşık framework'leri ve düşük kaliteli kod mirasıyla ilişkili olduğu belirtiliyor. Kodun “kömür gibi” üretildiği, tutkudan yoksun ve kimliksizleşmiş bir kültürden hoşlanılmadığı ifade ediliyor. JVM'in içi kara kutu gibi olduğundan strace, gdb gibi araçlarla debug etmenin zor olduğu, aşırı bellek tahsisi yüzünden kernel'in workload'u anlamakta zorlandığı söyleniyor. JVM kullanırken uzman desteği yoksa ciddi sorun yaşama riskinin yüksek hissedildiği; ayrıca Oracle, lisanslar, JDK sürüm yönetimi, 2025 itibarıyla “havalı” görünmemesi ve legacy kodun ayak bağı olması da olumsuz yanlar arasında sayılıyor. Kişisel olarak Java'dan mümkün olduğunca kaçınarak kariyer inşa edildiği, bugünlerde ise statik derlenen, küçük binary'ler üreten yüksek performanslı diller arttıkça JVM ya da Python VM gibi çözümlerin rolünün giderek azaldığı düşünülüyor.
    • JVM'in dünya çapında en iyi debugging özelliklerinden bazılarını sunduğu; reframing restart, değişken değiştirme, exception breakpoint'leri gibi çok güçlü dinamik debug imkânları verdiği belirtiliyor. Idea/Eclipse gibi IDE entegrasyonlarının da başka dillerle kıyaslanamayacak kadar iyi olduğu söyleniyor. JMX/JConsole, Java Flight Recorder, jstack, HPROF gibi çok sayıda teşhis aracına da dikkat çekiliyor. Lisanslama tarafında açık kaynak kullanımla ilgili kısıt olmadığı, Oracle JVM satın almanın tamamen isteğe bağlı olduğu belirtiliyor. Legacy kod sorunundan tam olarak ne kastedildiği de sorgulanıyor.
    • Java'nın “havalı” olmamasının ikna edici bir argüman olmadığı; strace/gdb yerine JDK araçları ve IDE'lerin ezici derecede daha güçlü olduğu savunuluyor.
    • Araçlar ilk başta göz korkutucu görünse de alışmanın kolay olduğu, JVM'in GC tuning'inde bir haftada uzmanlaşılabileceği söyleniyor. GC'nin uygulama bağlamını kernel'den daha iyi bildiği için pratikte önemli faydalar sağladığı, yine de belli ölçüde provisioning karmaşıklığı getirdiği kabul ediliyor.
    • 20 yıldan uzun süredir Java kullanıldığı halde hiç strace/gdb ihtiyacı duyulmadığı, debugging ve IDE desteğinin çok güçlü olduğu, performans açısından Python ile JVM'i aynı kefeye koymanın doğru olmadığı belirtiliyor.
    • Bu tür yargıların muhtemelen Java'yı gerçekten çok kullanmamış olmaktan kaynaklandığı, Java'nın debugging ve teşhis araçlarının gerçekten en üst düzey olduğu yeniden vurgulanıyor.
  • Gosling'in Sun'dayken NeWS pencere sisteminin ortak tasarımcılarından biri olduğu hatırlatılıyor. NeWS, PostScript tabanlıydı ve istemcilerin sunucuya program göndermesi esasına dayanıyordu. Gosling Java'yı tasarlarken, NeWS'in web sayfalarını programlanabilir varlıklar olarak görme fikrinin izlerinin hissedildiği söyleniyor. Yazar imzalı "The Java Programming Language" kitabında “Java, NeWS'in intikamı mı?” diye sorulduğunda Gosling'in gülümseyerek yanıt verdiği anı aktarılıyor.
    • X'in yerini Wayland'ın, NeWS'in yerini ise browser+JavaScript(PWA, Electron) yaklaşımının aldığı; sonuçta NeWS tarzının Microsoft ortamında bile kazanmış göründüğü söylenerek Gosling'in bu konuda ne düşündüğü merak ediliyor.
    • Benzer biçimde Display PostScript'in de var olduğu hatırlatılıyor. SPARCStation+SPARCprinter kombinasyonunda tüm baskı mantığının sunucuda işlendiği, sunucu ya da yazıcıdan biri arızalansa tüm sistemin durduğu anlatılıyor. Print server ile printer arasındaki entegrasyonun bir kâbusa dönüşmesi yüzünden yazıcılara güvenin iyice azaldığı söyleniyor. SunOS ve SPARC ekosistemi özlense de Display PostScript'in gitmesine sevinen bir ton var.
  • Kariyerin önemli bir kısmı JVM üzerinde kod yazarak geçmiş. Son dönemde Java yerine Scala, Clojure(tercih edilen), Kotlin gibi diller kullanılmış. Yakın zamanda işsiz kalındıktan sonra Python işi teklifi kabul edilmiş. JVM tecrübesine olan talebin azaldığı görülüyor. Yine de maaş geldiği sürece hangi dil olduğunun çok da fark etmediği söyleniyor. Şu anki kişisel proje ise Scala ile yürütülüyor.
 
roxie 2025-05-26

Arada bir yere C# tayfası da gizlenmiş.