28 poin oleh GN⁺ 2025-05-18 | 13 komentar | Bagikan ke WhatsApp
  • James Gosling dinilai sebagai pencipta Java sekaligus jenius pragmatis yang telah memengaruhi komputasi modern selama 30 tahun
  • Berasal dari lingkungan yang miskin, ia belajar pemrograman dengan merakit komputer dari komponen yang dipungut dari tumpukan sampah, dan pembelajaran mandiri ini kemudian tercermin dalam filosofi desain bahasanya
  • Masa di Sun Microsystems, ketika keisengan dan inovasi hidup berdampingan, menjadi fondasi kreativitas khas Gosling dan pembentukan budaya teknologinya
  • Belakangan ini ia menunjukkan skeptisisme yang kuat terhadap alat AI generatif dan ledakan AI, serta menegaskan bahwa pentingnya pendidikan pemrograman justru semakin besar
  • Rahasia kelangsungan hidup Java bukanlah kemewahan, melainkan filosofi desain pragmatis yang secara konsisten mengutamakan stabilitas, kompatibilitas mundur, dan produktivitas pengembang

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

  • Java, yang genap berusia 30 tahun pada 23 Mei, adalah bahasa berorientasi objek tingkat tinggi serbaguna yang hingga kini tetap menjadi teknologi inti yang menjalankan sistem dalam berbagai skala
  • Di balik keberadaan Java terdapat kepekaan teknis yang pragmatis dan intuisi kreatif James Gosling
  • Gosling tumbuh dari remaja asal Kanada yang mandiri yang merakit komputer dari komponen yang dikumpulkan dari tempat sampah hingga menjadi programmer kelas dunia
  • Filosofi “write once, run anywhere” menjadi simbol Java, dan berkembang menjadi filosofi bahasa yang mendorong perubahan mendasar dalam cara perangkat lunak dikembangkan
  • Sepanjang kariernya, Gosling memadukan keunggulan teknis, sifat usil, dan kesadaran etis yang kuat, mewujudkan sosok pengembang yang terus memengaruhi pembentukan budaya komputasi modern

James Gosling: The Brilliant Mind Behind Java

  • James Gosling bukan sekadar ‘bapak Java’, tetapi juga jenius rendah hati yang mampu menjelaskan konsep rumit secara intuitif
  • Tiga puluh tahun setelah menciptakan Java, ia menengok kembali perjalanan teknologinya sambil menelusuri evolusi bahasa dan budaya pengembangan

The Path To Programming: Resourceful Beginnings

  • Saat kecil, di tengah kemiskinan yang ekstrem, Gosling memiliki pengalaman memungut televisi dari tempat sampah dan mengasah kreativitas teknisnya
  • Komputer pertamanya dirakit dari rak relay bekas milik perusahaan telepon, yang melambangkan naluri mekanis dan kemampuan merakit yang sudah terlihat sejak dini
  • Dengan mengunjungi pusat komputer University of Calgary dan terpikat oleh layar, lampu berkedip, serta perangkat pita, dimulailah rasa ingin tahu seumur hidupnya terhadap pemrograman
  • Ia belajar sendiri dengan membongkar kartu punch untuk mendapatkan kata sandi, dan saat masih SMA membuat program analisis data satelit untuk departemen fisika universitas, sehingga mengumpulkan pengalaman menikmati pemrograman sambil dibayar
  • Pengalaman awal pemrogramannya mencakup PL/1 di mainframe IBM, Fortran, assembly PDP-8, dan kode CDC 6400. Dengan nada khasnya yang tenang, ia menyebut bahwa “di musim panas saya bekerja paruh waktu membuat compiler COBOL,” padahal itu adalah pekerjaan yang sulit ditangani bahkan oleh banyak programmer berpengalaman

Academia to Industry: Finding His Way

  • Gosling menggambarkan dunia akademik sebagai “lembaga penelitian yang memanfaatkan mahasiswa pascasarjana sebagai tenaga kerja murah,” memperlihatkan pandangan lugas yang lebih menekankan praktik daripada teori
  • Bahkan saat menempuh program doktor di Carnegie Mellon, ia tetap bekerja di startup untuk menambah pengalaman nyata, lalu menyelesaikan gelarnya kemudian, mewujudkan pilihan karier yang luwes antara industri dan akademik
  • Pekerjaan pertamanya adalah di IBM Research, tetapi ia tetap menunjukkan sikap analitis yang dingin terhadap pengelolaan perusahaan dan strategi teknologi dengan menyebutnya sebagai “perusahaan yang berdedikasi menembak kakinya sendiri”
  • Pengalaman-pengalaman awal ini kemudian menjadi dasar pemahaman budaya organisasi yang berpusat pada realitas dan memengaruhi cara ia bekerja di Sun Microsystems

The Sun Days: Innovation and Pranks

  • Sebagai kenangan paling menyenangkan di Sun, Gosling menyebut proyek lelucon April Mop berskala besar yang diadakan setiap tahun, sambil mengenang budaya organisasi tempat kreativitas dan keceriaan hidup berdampingan
  • Salah satu lelucon yang paling terkenal adalah menaruh Ferrari di atas platform yang mengapung di kolam, sebuah contoh yang menunjukkan selera humor yang memanfaatkan kemampuan pemecahan masalah rekayasa dan kerja tim
  • Lelucon membuat lapangan golf 1 hole di kantor CEO, lengkap dengan rumput sintetis, bunker, dan water hazard, disebut sebagai upaya orisinal yang memadukan teknologi dan permainan
  • Gosling mengenang Sun sebagai “lingkungan langka yang sekaligus mengizinkan keunggulan teknis dan kreativitas yang usil,” dan ini menjadi fondasi cara pemecahan masalahnya secara umum serta pembentukan sikapnya terhadap teknologi

Java: Creating a Legacy That Changed Everything

  • Perjalanan 30 tahun Java bagi Gosling adalah pencapaian paling representatif sekaligus titik balik paling menentukan dalam hidup teknologinya
  • Ia menyebut kepuasan mendalam atas pengaruh yang ditinggalkannya pada ekosistem pengembang setiap kali mendengar orang di jalan berkata, “Saya mendapatkan karier berkat Java”
  • Fitur seperti lambda dan generics sebenarnya ingin ia masukkan sejak awal, tetapi waktu pengenalannya diatur sesuai filosofi desain “tidak akan memasukkannya dengan cara yang salah”
  • Soal pengelolaan Java oleh Oracle, ia menilai “lebih baik daripada yang diharapkan,” sambil menegaskan bahwa partisipasi dan kontribusi berkelanjutan dari komunitaslah yang sebenarnya memegang peran utama
  • Java terus berkembang dengan optimal untuk lingkungan cloud, dan dalam dukungan multicore, pengelolaan memori, serta peningkatan GC, ia telah mencapai tingkat kematangan teknis yang “sungguh luar biasa”

Beyond Java: Ventures After Sun

  • Setelah Sun diakuisisi Oracle, Gosling sempat beristirahat lalu bergabung dengan Google, namun keluar dalam 6 bulan dan pindah ke Liquid Robotics
  • Di sana ia mengembangkan sistem kendali robot laut otonom, serta mengalami kondisi kerja unik yang memadukan teknologi dan alam, seperti lingkungan kerja yang menuntut snorkeling di Hawaii
  • Ia ikut dalam proyek pemantauan suhu laut di Kutub Utara dan Kutub Selatan, tetapi karena riset lingkungan kekurangan dana, ia mengalami benturan dengan struktur startup berbasis modal ventura
  • Saat tekanan untuk beralih ke bidang pertahanan terus datang, ia keluar karena alasan etis, lalu melanjutkan pilihan karier yang mempertimbangkan sekaligus minat teknis dan standar etika dengan bekerja pada proyek Greengrass dan alat pengembang di AWS

On Open Source and Industry Trends: Cutting Through the Hype

  • Open source dijelaskan bukan sekadar alat kolaborasi, tetapi ekosistem kompleks yang juga berfungsi sebagai hubungan dengan pengembang, strategi pemasaran, dan model adopsi bottom-up
  • Tentang tren low-code dan no-code, ia menyatakan itu adalah klaim yang terus berulang sejak era COBOL, dan menunjukkan sikap skeptis sebagai pendekatan khusus yang memiliki keterbatasan saat diterapkan pada domain kompleks
  • Ia mengatakan masalah pada AI dan machine learning lebih terletak pada penamaannya daripada teknologinya, lalu mengkritik istilah tersebut dengan menyebut “teknik statistik tingkat lanjut” lebih sesuai dengan hakikatnya
  • AI hanyalah alat dan tidak boleh disalahpahami sebagai entitas otonom; menurutnya, AI harus dipandang sebagai alat tingkat tinggi yang membantu, bukan mengancam, tenaga kerja manusia

Developer Tools and Preferences: Embracing Progress

  • Gosling menggunakan NetBeans IDE sebagai alat pengembangan utama, dan menunjukkan dukungan terhadap open source berbasis lisensi Apache serta komunitas yang aktif
  • Kepada para pengembang yang masih terobsesi dengan Vi atau alat dari era 70-an dan 80-an, ia mengungkapkan kekecewaan terhadap sikap yang menolak kemajuan teknologi
  • Ia kadang masih memakai Vi karena bisa dijalankan di mana saja, tetapi sangat mendukung penggunaan IDE modern untuk lingkungan pengembangan yang sesungguhnya

The JVM Vision: From Academic Concept to Global Standard

  • Konsep awal Java Virtual Machine (JVM) bermula dari eksperimen format distribusi yang netral terhadap arsitektur dan riset teknik penerjemahan instruksi yang ia gagas saat kuliah pascasarjana
  • Hal itu kemudian berkembang menjadi teknologi platform eksekusi serbaguna yang memungkinkan bukan hanya Java, tetapi juga berbagai bahasa lain berjalan di beragam perangkat keras
  • Filosofi ‘Write once, run anywhere’ awalnya ditolak sebagai topik disertasi karena dianggap kurang memiliki landasan matematis, tetapi akhirnya menjadi teknologi praktis yang mengubah lingkungan pengembangan perangkat lunak dunia

More Recent Work: Bridging IoT Gaps at AWS

  • Di AWS, Gosling terlibat dalam pengembangan Greengrass, framework aplikasi IoT, dan menerapkan pendekatan teknis yang menyederhanakan masalah kompleks secara elegan
  • Ia mengabstraksikan pekerjaan boilerplate berulang antara deployment dan operasi, seperti update OTA, kendali jarak jauh, telemetri, keandalan jaringan, keamanan, dan manajemen autentikasi
  • Kode sisi perangkat dibuka sebagai open source untuk mendorong kontribusi porting berbasis komunitas ke platform yang bukan prioritas Amazon, seperti RISC-V
  • Proyek alat pengembang lain yang kemudian ia ikuti dihentikan karena terseret ledakan AI, yang mengisyaratkan masalah dalam kekacauan yang lebih berpusat pada tren daripada ketulusan teknologi

AI Skepticism

  • Dalam wawancara terbaru, Gosling menyebut revolusi AI sebagai “sebagian besar penipuan,” memperlihatkan sudut pandang skeptis yang memandang AI sebagai istilah pemasaran yang toksik
  • Walau mengakui bahwa secara matematis ini teknologi yang mengesankan, ia menyoroti masalah bahwa nama AI mengaburkan hakikat teknis sebenarnya sebagai teknik statistik tingkat lanjut
  • Ia mengkritik keras demam AI yang dipimpin modal ventura sebagai “tempat berkumpulnya penipu dan tukang hype,” yakni kecenderungan mengejar keuntungan jangka pendek yang berpusat pada exit ketimbang teknologi yang benar-benar berguna
  • Ia memperingatkan bahwa sebagian besar dana investasi AI pada akhirnya akan “terhisap ke dalam lubang hitam,” sebagai peringatan terhadap arus pendanaan yang digerakkan tren tanpa keberlanjutan

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

  • Alat pemrograman berbasis AI generatif memberi kesan awal yang kuat, tetapi memiliki struktur yang terbatas dan gagal begitu sedikit saja menjadi kompleks
  • Alat-alat ini hanya mampu mengais dan mengulang contoh kode yang ada, sementara masalah yang benar-benar menarik selalu baru sehingga tidak cocok dengan alat berbasis replikasi
  • Dalam lingkungan pengembangan profesional, kode yang berpola cenderung terkonsolidasi menjadi library, sehingga pembuatan kode oleh AI secara struktural berbenturan dengan kebutuhan pengembangan nyata
  • Gosling mendefinisikan kegunaan nyata AI sebagai “alat pencarian yang mengambil alih pekerjaan dokumentasi yang tidak ingin dilakukan siapa pun,” dan menekankan nilainya sebagai alat bantu yang unggul dalam menjelaskan cara memakai API

Java’s Evolution: Language Features and Runtime Improvements

  • Di antara perubahan terbaru pada bahasa Java, type inference dan perbaikan cara deklarasi array dinilai sebagai ekspansi fitur yang berguna untuk meningkatkan kenyamanan pengembangan
  • Namun, Gosling menekankan bahwa perkembangan Java yang paling mengesankan terletak pada peningkatan kualitas lingkungan runtime JVM dan library standar
  • JVM modern menunjukkan kinerja eksekusi yang telah mencapai “tingkat menakjubkan” dalam kualitas kode, performa thread, dan garbage collection
  • Dalam hal manajemen memori dan prediktabilitas performa, Java lebih efisien daripada bahasa C berbasis malloc, dan ia juga menyebut kemampuan tuning untuk menurunkan waktu jeda GC hingga beberapa milidetik
  • JVM saat ini dinilai sebagai lingkungan runtime berkinerja tinggi yang mampu menangani ruang memori yang sangat besar dengan stabil

Programming Languages for Critical Infrastructure

  • Saat ditanya bahasa apa yang cocok untuk menulis ulang sistem kontrol lalu lintas udara FAA, Gosling menolak premis pertanyaan itu dengan mengatakan “itu seperti memilih palu saat sedang membangun rumah”
  • Ia menekankan bahwa teknologi harus dipilih setelah lebih dulu memahami dengan jelas sifat domain masalah, seperti sistem komunikasi, regulasi internasional, jalur penerbangan, dan penghindaran tabrakan
  • Meski begitu, ia menambahkan bahwa untuk sistem berskala besar yang menuntut keandalan, Java bisa menjadi kandidat yang kuat

The Future of Programming in an AI World

  • Meski AI terus berkembang, pemrograman tetap merupakan keterampilan esensial, dan Gosling menyatakan bahwa jika punya anak, ia pasti akan mengajarkan coding
  • Ia mengkritik klaim para eksekutif big tech bahwa AI akan menggantikan pengembang manusia sebagai sekadar ancaman defensif untuk menaikkan intensitas kerja
  • Untuk benar-benar memahami sistem, kemampuan pemrograman tetap dibutuhkan, dan ia berargumen bahwa bahkan jika mesin mengambil alih sebagian pekerjaan, dasar pemahaman teknis manusia harus tetap dipertahankan

Java’s Longevity Secret

  • Sebagai alasan Java bisa bertahan lebih dari 30 tahun, Gosling menyebut kemampuan menyelesaikan masalah nyata, penghormatan pada pengguna, kompatibilitas mundur, peningkatan produktivitas, dan filosofi yang berpusat pada keandalan
  • Java selalu menekankan kepraktisan yang konsisten di atas tren bahasa, dan filosofi desain yang berpusat pada realitas, dengan fokus pada hasil alih-alih gaya, terbukti sangat efektif terutama di lingkungan enterprise
  • Dari sudut pandang bahwa perangkat lunak “harus selalu bekerja dengan benar,” Java tetap menjadi alat rekayasa yang jujur dan praktis

Oracle’s Stewardship: Better Than Expected

  • Tentang pengelolaan Java oleh Oracle setelah akuisisi Sun Microsystems, Gosling berkata “mereka melakukannya jauh lebih baik dari yang saya kira,” dan menyatakan keterkejutannya atas hasil yang melampaui ekspektasi
  • Awalnya ia khawatir akan “perampasan dan penjarahan” karena rekam jejak masa lalu, tetapi pada kenyataannya ia memberi penilaian positif atas independensi dan pengelolaan yang berpusat pada teknologi, karena tim Java tidak diganggu dan justru dilindungi
  • Meski ia mengkritik dukungan finansial yang kurang, ia tetap memberi nilai tinggi pada struktur yang menjamin otonomi tim teknis tanpa campur tangan perusahaan

Crab Lovers Unite!

  • Gosling mengatakan bahwa ia ingin bekerja dengan orang yang ingin diajak makan bersama, menunjukkan sikap yang menghargai standar kolaborasi yang berpusat pada manusia
  • Sang jurnalis kebetulan bertemu Gosling di Thanh Long, restoran kepiting terkenal di San Francisco, dan mencatat momen ketika tokoh besar dunia teknologi ditemukan di tengah keseharian biasa
  • Setelah itu mereka makan kepiting bersama dan berbincang, lalu berjanji untuk bertemu lagi di tempat yang sama, menyampaikan kehangatan pertukaran antarmanusia yang melampaui teknologi

13 komentar

 
cosine20 2025-05-21

Saya juga berpikir bahwa, di antara bahasa bertipe statis, bahasa yang paling nyaman digunakan adalah Java.

Namun, dari sisi pengembangan yang serbaguna dan praktis, menulis aplikasi berorientasi end-user dengan GUI dalam Java bukanlah pilihan yang terlalu baik. (Dalam sudut pandang itu, kombinasi C# + .NET adalah yang terbaik)
Jika mempertimbangkan keunggulan Java, menurut saya kasus penggunaan yang paling baik dari sisi kepraktisan adalah memakainya di backend atau middleware.

Bagaimanapun, karena sesekali ada kebutuhan untuk memakainya, setiap kali menggunakannya saya bisa menanganinya tanpa beban, jadi sepertinya lebih banyak pengalaman baik yang tersisa.

 
mhj5730 2025-05-19

Cerita bahwa dia membongkar TV dari tempat rongsokan lalu belajar pemrograman dari situ rasanya seperti awal mula seorang legenda.

 
ndrgrd 2025-05-18

Memang benar, sejak Java muncul, bahasa-bahasa pemrograman mulai lebih memperhatikan produktivitas.

Sebelumnya, C++ yang sering digunakan itu bahkan sampai sekarang terasa mengerikan hanya untuk dibaca. Terutama saat harus menyentuh proyek yang sudah berjalan lama.

 
3ae3ae 2025-05-18

Sulit untuk setuju dengan anggapan bahwa Java menitikberatkan pada produktivitas developer
Adakah bahasa lain yang berkembang sampai sedalam itu bergantung pada IDE seperti Java?

 
3ae3ae 2025-05-19

Saya meninggalkan komentar yang gegabah.

 
sunrabbit 2025-05-19

Ketergantungan yang terlalu dalam pada IDE adalah masalah ekosistem Java yang berkembang secara tidak ideal,
bukan masalah pada level desain.

Terus terang, untuk mengembangkan dengan Java sekarang sebenarnya tidak wajib menggunakan produk JetBrains,
namun semua orang menggunakannya.

Dan jika melihat daftar bahasa pemrograman pada masa Java muncul, banyak di antaranya yang implementasinya bergantung pada platform, yaitu pada OS.
Java-lah yang menunjukkan arah yang kemudian dituju bahasa seperti Node, Python, dan C#, yakni dapat berjalan di berbagai OS dengan kode yang sama.

Di era modern, kompatibilitas untuk menjalankan kode yang sama di berbagai OS memang sudah menjadi "hal yang wajar".

 
roxie 2025-05-26

> Terus terang, saat ini mengembangkan Java pun sebenarnya tidak harus memakai produk JetBrains

Bagian ini... agak sulit buat saya setujui, hiks...

 
kwj9211 2025-05-19

Sekarang ini mungkin terasa cukup wajar,
tetapi pada saat Java muncul, hanya dengan mampu mendukung multiplatform secara stabil tanpa build baru saja bukankah itu sudah sangat membantu produktivitas?

 
angrycoder 2025-05-18

Dibandingkan dengan bahasa sebelum Java, produktivitasnya tampak lebih baik.

 
ahwjdekf 2025-05-18

c++ > c# >= java

 
cosine20 2025-05-21

C# >= Java > C++

 
GN⁺ 2025-05-18
Komentar Hacker News
  • Java mungkin bukan yang terbaik dalam performa, tetapi dianggap cukup bagus di peringkat ketiga setelah C/C++, bahkan lebih cepat dari Go dan lebih dari 10 kali lebih unggul dibanding Python atau Ruby; sintaks Java memang tidak sempurna, tetapi konsisten dan mudah diprediksi, yang menjadi kelebihannya; dengan alat seperti Idea atau Eclipse, lingkungannya terasa tidak mengkhawatirkan dari sisi produktivitas; cara pengelolaan memorinya memang berbeda dari filosofi Unix, tetapi setelah dipahami terasa sebagai kompromi yang masuk akal; melalui trade-off seperti ini, mereka puas dengan kepraktisan yang didapat: kecepatan dan keamanan memori, sekaligus keuntungan seperti dynamic call dan hotswap
    • Sangat terasa bahwa alat seperti IntelliJ untuk Java punya lingkungan yang jauh lebih unggul dibanding bahasa lain; penasaran kenapa komunitas Go tampaknya tidak terlalu bersemangat mengembangkan container struktur data konkuren; budaya coding konkuren di Java yang mendorong penggunaan container hebat terasa patut dicemburui, dan kadang merindukan java.util.concurrent atau JCTools
    • Saat baru lulus kuliah dulu, sempat menganggap Java serba bisa, tetapi belakangan sadar bahwa yang benar-benar mendahului zamannya adalah tooling JVM dan Java App Server; bahasa itu sendiri terasa mengecewakan sebelum produktivitasnya membaik pada 2006~2007; sekarang tertarik pada bahasa lain yang berjalan di JVM seperti JRuby, Clojure, Scala, Groovy, Kotlin, dan di antaranya JRuby menarik karena bisa memanfaatkan dua ekosistem matang sekaligus; Project Loom yang memungkinkan penggunaan Fiber ala Ruby di JVM menguntungkan kedua sisi, dan kontribusi Charles Nutter terasa kurang dihargai
    • Memang sering dikatakan Java lebih cepat dari Go, tetapi dalam praktiknya banyak kasus Go justru lebih cepat atau memakai memori 2~10 kali lebih sedikit, jadi levelnya mirip; value type di Go membuat optimisasi lebih mudah; menarik bahwa Go disebut secara khusus, dan karena C# juga lebih cepat dari Java, dinilai Java lebih cocok di peringkat lima daripada tiga
    • Sangat menghargai bahwa sealed class, switch expression, Project Loom, dan records yang baru-baru ini diperkenalkan di Java menyatu secara alami ke dalam sintaks yang ada; alat diagnostik Java seperti penganalisis heap dump dan penganalisis GC juga terasa berada di level terbaik
    • Menunjukkan bahwa peringkat performa bahasa berubah tergantung apa yang dimasukkan dan bagaimana perbandingannya dilakukan, lalu merujuk ke tautan benchmark yang dibagikan
  • Ada pengalaman bahwa Java (JVM) justru dinilai lebih tinggi setelah sempat mencoba bahasa/ekosistem lain yang sempat populer; berulang kali muncul kesan bahwa sebenarnya ini cuma “rumput tetangga terlihat lebih hijau”; hanya Rust yang terasa benar-benar maju dan menyenangkan untuk dipakai; sayang Java belakangan tidak dianggap sebagai bahasa yang ‘keren’ di startup, padahal kesenjangan produktivitasnya juga dianggap nyaris hilang
    • Sudah mencoba Rust full-time selama dua bulan, tetapi setidaknya untuk pengembangan server, sulit memahami ungkapan bahwa Rust memberi ‘kegembiraan’ dibanding Java; terlalu sering ada momen produktivitas turun karena terkejut oleh masalah lifetime, dan meski rasa type safety-nya memang kuat, secara keseluruhan sulit disebut pengalaman yang benar-benar menyenangkan
    • C# dinilai jauh lebih maju daripada Java, dengan perbedaan nyata seperti generics yang jauh lebih baik implementasinya, value type yang sudah ada sejak lama, dan FFI yang nyaman; selain Unity, orang-orang tampaknya tidak terlalu peduli, dan dinilai Microsoft dulu gagal membangun pengenalan publik yang cukup
    • Perasaan ini mungkin muncul karena skala proyeknya berbeda; ketika pindah dari proyek Java legacy besar berumur 10 tahun ke proyek “baru” setingkat hello-world, tentu semuanya terlihat lebih baik; rewrite skala besar memang bagus juga untuk tinjauan keamanan, tetapi perusahaan biasanya tidak punya kelonggaran untuk itu, kecuali pengecualian seperti Google
    • Merasakan hal yang sama; Go terasa mengecewakan, menjanjikan segalanya tetapi hasil akhirnya mirip Java atau bahkan lebih mundur karena hal-hal seperti error tanpa stack trace
    • Di tengah hampir 30 tahun karier, dua tahun mencoba proyek dengan bahasa non-JVM menjadi periode terburuk dalam karier
  • Mengucapkan terima kasih atas kontribusi James Gosling; ada pengalaman bahwa berkat Java World Tour, pencarian ‘Java consultant’ muncul di urutan teratas sehingga bisa bekerja jarak jauh dan hidup stabil di desa; ada begitu banyak orang yang hidupnya terdampak positif oleh Java; juga mengagumi pencapaian tim Clojure yang membangun ekosistem hebat di atas JVM
    • Juga berterima kasih kepada James Gosling; pada 1995 bekerja dengan C++ di Taligent, lalu pertama kali mencoba Java dan terkagum dengan kebaruannya; setelah Taligent bubar, lama berkarier di perangkat lunak terkait Java
    • James Gosling (Java) dan Rich Hickey (Clojure) dinilai sebagai pencipta yang pada masanya masing-masing membawa kesegaran ke dunia pemrograman
  • Beberapa tahun terakhir bekerja dengan .NET/C#, tetapi secara keseluruhan JVM/Java tetap terasa sebagai ekosistem terbaik yang pernah dicoba; ada jauh lebih banyak hal yang berhasil diselesaikan Java dengan baik; misalnya Java menyelesaikan pembagian kerja dengan fork/join pool, sedangkan .NET hanya menaruh work-stealing di global thread pool sehingga kode sync-over-async mudah memicu deadlock menyeluruh; meminta seluruh kode sinkron di codebase besar diubah total menjadi async pada praktiknya nyaris mustahil; di sisi Java, bahkan jika ada kesalahan di level library/framework biasanya bisa cepat diatasi, sedangkan di .NET kalau masalah muncul di standard library, bahasa, atau runtime, jauh lebih sulit diperbaiki; banyak contoh Java menetapkan baseline dengan baik
    • Thread pool starvation di .NET sangat menjengkelkan, meski kabarnya dampaknya belakangan berkurang; rasanya mustahil membuat implementasi yang kebal terhadap penyalahgunaan thread pool; yang bisa dilakukan hanya menambah thread atau mengatur urutan kerja dengan lebih cerdas; penulis sendiri bukan ahli thread pool jadi tidak sepenuhnya yakin
    • Menarik bahwa .NET selama ini dikira meniru pendekatan sukses ekosistem Java, padahal kenyataannya banyak perbedaan
    • Menyebut masalah deadlock sambil sama sekali tidak menulis kode .NET dinilai tidak adil, dan menjadikan blog 13 tahun lalu sebagai dasar argumen juga dianggap tidak meyakinkan
  • Java dipandang sebagai kisah sukses besar, tetapi James Gosling hanyalah titik awal, bukan pemimpin substantif sesungguhnya; sejak era Java 1.1~1.2, Mark Reinhold memimpin integrasi JIT, pengembangan HotSpot, lonjakan besar jumlah class di 1.2, dukungan bahasa dinamis setelah akuisisi Oracle, open-source, rilis cepat, hingga fondasi fitur bahasa modern; kekuatan Java dinilai berasal dari kepemimpinan Mark Reinhold
    • Seluruh tim pengembangan intinya sangat mengesankan; Gosling menginginkan bahasa yang pragmatis, lalu setelah itu tokoh seperti Mark Reinhold dan Brian Goetz mengembangkan bahasa ini dengan ramah bagi developer; tidak suka Oracle, tetapi tetap bersyukur mereka mendorong grup yang hebat ini maju
    • Menunjukkan bahwa Kotlin, seperti Java, adalah bahasa bertipe statis, bukan bahasa dinamis
    • Dengan contoh bahwa Linus hanya meretas git selama dua minggu dan sekadar memberi spark awal, tetapi komunitaslah yang memperluasnya, menilai sesuatu hanya dari titik awal dianggap tidak lengkap
  • Sebagai software engineer berusia 40-an ke atas, ada pandangan realistis bahwa memilih “alat yang benar-benar bekerja” adalah keputusan bijak; saat ini Java atau C# menjalankan peran itu dengan baik; secara pribadi C# terasa memiliki ekosistem yang lebih terintegrasi; untuk use case apa pun, aplikasi bisa dibuat dengan C# dalam 1 menit, perkembangan bahasanya juga cepat, pasokan tenaga kerjanya stabil, .NET juga mendukung lintas platform, dan pekerjaan terasa lebih mudah berkat keanggunan serta efisiensi bahasanya sendiri
  • Ada pengalaman mensimulasikan kode OS dengan Java di universitas; bisa dipahami bahwa untuk mempelajari algoritma abstrak Java membantu mengurangi kompleksitas, tetapi secara pribadi Python rasanya akan lebih cocok; sulit setuju dengan pendidikan pemula di kampus yang bersikeras memakai Java untuk segalanya karena pengaruh industri; karena di sekolah menengah sudah pernah menyentuh BASIC dan C, mensimulasikan kode OS level rendah dengan Java terasa seperti langkah mundur
    • Di kampus, pernah belajar mikrokontroler dengan C, struktur data/OOP dengan Java, dan konsep sistem/OS/konkurensi dengan C serta assembly MIPS; untuk struktur data/algoritma, Java justru lebih baik daripada Python dalam memberi pemahaman konsep yang tepat karena abstract type dan strukturnya dibedakan jelas; tetapi mengajarkan konsep OS dengan Java tetap terasa agak berlebihan
    • Berpendapat bahwa kekurangan pendidikan Java yang disebut Joel juga berlaku pada bahasa tingkat tinggi lain seperti Python, dan secara ironis menekankan bahwa MapReduce (yang dibuat Google dengan Java) adalah contoh yang melampaui Microsoft
  • Mengakui keberhasilan Java, tetapi masih menyimpan penolakan mendalam karena berbagai alasan; kebanyakan berasal dari warisan kode panjang bertele-tele perusahaan besar, framework rumit, dan kode berkualitas rendah; tidak menyukai budaya di mana kode diproduksi “seperti batu bara” dan kehilangan gairah serta identitas; JVM terasa seperti black box secara internal, sehingga sulit di-debug dengan alat seperti strace atau gdb, dan over-allocation memori membuat kernel sulit memahami workload; terasa juga bahwa tanpa bantuan ahli, penggunaan JVM berisiko menimbulkan masalah serius; lalu ada pula Oracle, lisensi, pengelolaan versi JDK, citra yang tidak keren di 2025, serta beban kode legacy; secara pribadi berhasil membangun karier sambil sebisa mungkin menghindari Java; belakangan juga makin banyak bahasa berperforma tinggi berbasis static compile dan executable kecil dengan kompleksitas operasional lebih rendah, sehingga peran solusi seperti JVM atau Python VM perlahan menyusut
    • JVM menyediakan kemampuan debugging dinamis kelas dunia seperti restart frame, mengubah variabel, exception breakpoint, dan lain-lain; integrasi dengan IDE seperti Idea/Eclipse juga tak tertandingi dibanding bahasa lain; alat diagnostik seperti JMX/JConsole, Java Flight Recorder, jstack, HPROF dan lainnya juga sangat beragam; lisensinya open source tanpa batasan penggunaan, dan membeli Oracle JVM hanyalah pilihan sukarela; lalu mempertanyakan apa sebenarnya masalah dengan kode legacy
    • Klaim bahwa JAVA tidak punya unsur “keren” dianggap tidak meyakinkan; bukan strace/gdb, melainkan alat JDK dan IDE yang performanya jauh lebih unggul
    • Alat-alat itu mungkin tampak sulit di awal, tetapi mudah dikuasai; tuning GC di JVM pun dalam seminggu bisa membuat orang jadi ahli; GC dikelola dengan konteks yang lebih baik daripada kernel pada lingkup aplikasi, sehingga nyata memberi banyak keuntungan, meski kompleksitas provisioning yang agak lebih tinggi tetap diakui
    • Sudah memakai Java lebih dari 20 tahun tetapi tidak pernah membutuhkan strace/gdb; dukungan debugging/IDE sangat kuat, dan tidak tepat menempatkan Python dan JVM di level performa yang sama
    • Kemungkinan penilaian itu muncul karena sebenarnya jarang benar-benar memakai Java, dan kembali menegaskan bahwa alat debugging/diagnostik Java adalah yang terbaik
  • Disebutkan bahwa ketika Gosling masih di Sun, ia ikut merancang sistem jendela NeWS; NeWS berbasis Postscript dan memiliki struktur di mana klien mengirim program ke server; saat Gosling merancang Java, terlihat jejak keinginan agar halaman web dipandang sebagai sesuatu yang bisa diprogram seperti NeWS; bahkan ketika ditanya di buku bertanda tangan penulis "The Java Programming Language" apakah “Java adalah balas dendam NeWS?”, Gosling menjawab sambil tersenyum
    • Seperti X yang punya penerus Wayland, NeWS pun seakan punya penerus berupa browser+JavaScript (PWA, Electron); pada akhirnya pendekatan NeWS tampaknya menang bahkan di lingkungan Microsoft, sehingga orang penasaran apa pendapat Gosling
    • Ada juga hal serupa seperti Display PostScript; pada kombinasi SPARCStation+SPARCprinter, seluruh logika pencetakan diproses di server; jika server atau printer rusak, seluruh sistem lumpuh; integrasi print server-printer menjadi mimpi buruk dan akhirnya hanya menambah ketidakpercayaan pada printer; meski merindukan SunOS dan ekosistem SPARC, Display PostScript benar-benar tidak dirindukan
  • Sudah menghabiskan banyak masa karier menulis kode di JVM; belakangan lebih sering memakai Scala, Clojure (favorit), Kotlin ketimbang Java; baru-baru ini setelah menganggur menerima tawaran kerja Python; terlihat bahwa permintaan atas pengalaman JVM sedang menurun; bagaimanapun, selama gaji tetap dibayar, bahasa apa pun tidak masalah; proyek pribadi saat ini dikerjakan dengan Scala
 
roxie 2025-05-26

Di tengah-tengah ada kubu C# yang bersembunyi.