18 poin oleh roxie 2024-11-05 | 58 komentar | Bagikan ke WhatsApp
  • Bahasa favorit saya adalah Python. Meski begitu, saya memakai Java di mana-mana — bahkan untuk skrip sederhana.
  • Beberapa pengalaman:
    • Di perusahaan yang berbasis Java, saya pernah menulis skenario pengujian dengan JavaScript. Namun, sulit melacak stack trace, dan saya jadi repot menulis kode jembatan antara Java dan JavaScript.
    • Kami menyimpan log dalam format JSON, lalu seorang rekan membuat program bernama logcat untuk menangani log tersebut. Saya puas dengan program itu, tetapi ketika kemudian membuat program serupa dengan Java, performanya meningkat lebih dari 10 kali lipat.
    • Berkat pengalaman dan materi yang sangat banyak tentang Java, untuk membuat layanan web Java lebih cepat daripada Python. Tepatnya, ini adalah keuntungan karena memakai satu bahasa yang sama.
  • Perdebatan paling panas tentang Java adalah verbose (terlalu bertele-tele). Namun, ini sama sekali bukan kekurangan. Lihat dua kode berikut.
// java  
Map<String,User> userIdMap = new HashMap<String,User>();  
// python  
userIdMap = {}  
  • Namun, dalam praktiknya, kemungkinan besar kode Python akan ditulis seperti di bawah ini. (Kalau tidak, pasti akan sangat sulit dirawat)
# Map from user ID to User object.  
userIdMap = {}  
  • Artinya, memakai bahasa bertipe dinamis itu seperti mengorbankan produktivitas setelah 14 hari demi membuat sesuatu yang keren dalam 30 menit.
  • Stack Overflow bertahan menangani 60,000,000 pageview dengan 5 server menggunakan ASP.NET (pada 2010).
  • Mari lihat contoh unit test. Menulis dan memelihara unit test memakan waktu. Terutama, kasus-kasus pengecualian yang bisa diperiksa secara sederhana lewat tipe tidak terlalu tertangkap dengan baik oleh unit test di bahasa bertipe dinamis (misalnya: parser).
  • (Sebagai tambahan alasan mengapa saya tidak memakai Python) solusi cepat (quick hack) lama-lama membesar dan menjadi tool yang sangat penting, tetapi tidak ada waktu untuk menulis ulang, sehingga setiap kali dipakai akhirnya harus bergulat dengan performa dan maintainability.
  • Terakhir, alasan saya lebih memilih Java dibanding bahasa bertipe statis lain
    • C/C++ sulit diterapkan pada pekerjaan saya
    • C# kurang dukungan cross-platform
    • Scala terlalu kompleks
    • Bahasa lain seperti D dan Go masih terlalu baru untuk dipakai dalam pekerjaan saya

  • Ada beberapa alasan saya membawa tulisan ini ke GeekNews:
    • Ini pertama kalinya saya melihat tulisan yang benar-benar berkata, "Saya sangat suka Java!", jadi terasa menarik (saya kira hanya dari judulnya akan ada twist, ternyata tidak...)
    • Menarik bahwa penulis punya kotak perkakasnya sendiri (dibuat dengan Java). Saya jadi membayangkan sosok orang tua yang merogoh-rogoh saku dan mengeluarkan senjata kuno satu per satu.
    • Secara pribadi saya sangat menyukai JavaScript dan Python. Namun, sekilas terlihat bahwa tren pada bahasa-bahasa ini juga mengarah ke 'memperkenalkan tipe dengan satu cara atau lainnya' (TypeScript untuk JavaScript, typing/mypy untuk Python). Dalam situasi seperti ini, setelah membaca tulisan ini saya jadi merasa bahwa memakai bahasa bertipe statis dengan cara yang sama sekali tidak memaksa tipe mungkin sedikit mirip kepuasan diri saya sendiri.
  • Penulis memiliki pengalaman dengan Java dan Python sehingga membandingkan keduanya secara langsung, tetapi rasanya kita tidak perlu membatasi pemikiran hanya pada dua bahasa itu. Dari sudut pandang yang lebih luas, bagaimana pendapat kalian tentang bahasa bertipe statis dan bahasa bertipe dinamis?

PS. Jangan merendahkan bahasa tertentu secara tidak berarti ya :D

58 komentar

 
kimjj81 2024-11-11

Mungkin ini pengalaman yang terlalu pribadi, tapi menurut saya masalah terbesar Java bukan bahasanya, melainkan JVM.
Saya terlalu sering mengalami ketidakmampuan mengelola memori di berbagai versi JVM.

 
ahwjdekf 2024-11-09

Kalau begitu, buat dan pakailah juga pandas dan numpy dengan Java. Orang yang melontarkan klaim seperti itu sebaiknya jangan didekati.

 
koreaisbest 2024-11-08

Java dipakai untuk backend web, dan Python dipakai untuk AI. Kalau mau memperdebatkan performa, ya pakai Rust, bukannya itu hal yang sudah semua orang tahu? Tapi ke depannya porsi AI diperkirakan akan makin besar, jadi saya jadi berpikir apakah sudah waktunya juga meninggalkan Java. Soalnya di negara kita banyak yang punya pola pikir bahwa kita tidak boleh sampai tertinggal wkwk

 
savvykang 2024-11-08

Kalau AI makin banyak dibutuhkan dan REST API umum atau pekerjaan CRUD sederhana tergantikan sehingga sistem seperti itu tidak lagi dibuat, mungkin saja Java bisa ditinggalkan.
Selain itu, karena ada juga kasus ketika sebuah proyek tidak disusun dengan satu bahasa saja, saya rasa tujuan bahasa dan tujuan proyek juga tidak bisa dipetakan satu banding satu. Karena antarmuka pemrogramannya memakai Python dan bagian yang penting untuk performa biasanya menggunakan kode native. Meski di negara kita, kasus proyek yang disusun seperti itu memang tidak begitu umum.

 
carnoxen 2024-11-06

Pengantarnya agak disayangkan. Kalau Anda lebih dulu memberi tahu tanggal penulisan naskah aslinya, mungkin sekitar separuh orang di sini bisa cukup memahaminya...

 
roxie 2024-11-07

Saya juga baru sadar setelah melihat komentar orang lain.

Namun, saya keburu mengira ini ditulis baru-baru ini, dan saat membacanya saya sama sekali tidak merasa ada yang janggal. Setidaknya bagi saya, ini masih tulisan yang meyakinkan.

Terlepas dari itu, saya akan lebih memperhatikan tanggal sesekali wkwk

 
moderator 2024-11-06

Diskusi mulai memanas.
Jika ada sanggahan, mohon tuliskan hanya isinya saja.
Komentar yang melanggar aturan penggunaan situs telah kami hapus.
Selain itu, akun yang berulang kali melakukan aktivitas yang tidak sesuai dengan aturan penggunaan telah kami blokir, jadi harap diperhatikan.
Mohon lakukan diskusi yang sehat.

 
kandk 2024-11-06

Saya lebih percaya pada Google (v8) daripada Oracle (JVM).

 
ilotoki0804 2024-11-06

Saat pertama kali melihat Java setelah memakai Python, saya benar-benar merasa Java sangat bertele-tele. Namun belakangan ini, kalau melihat kode-kode yang diperlukan untuk menambahkan type hint yang lengkap di Python, rasanya juga tidak begitu berbeda, haha. Kekurangan Java justru sepertinya ada pada konvensi penamaannya yang cenderung membuat nama method jadi sangat panjang.

 
tested 2024-11-06

1 Juni 2014

 
cosine20 2024-11-06

Saya juga lebih menyukai bahasa dengan tipe statis.
Ada bagian-bagian di mana bahasa bertipe dinamis terasa nyaman, tetapi dalam lingkungan produksi, cukup sering pemeliharaannya menjadi lebih sulit.
Selain itu, bahasa bertipe dinamis biasanya memiliki filosofi desain yang bertujuan pada "menulis kode yang sederhana", sehingga ada banyak hal yang dikelola secara implisit di tingkat bahasa; karena itu, sering kali ruang untuk melakukan optimasi juga jadi lebih sedikit.

Pada akhirnya, sepertinya yang terbaik adalah mempertimbangkan dan memilih sesuai lingkungan pengembangan, di antara kemudahan implementasi vs banyaknya peluang optimasi.

 
kandk 2024-11-06

Tulisan dari 10 tahun lalu, wow

 
callman7 2024-11-06

Betul juga wkwk

 
idunno 2024-11-06

Tinggalkan saja Java

Sejak meninggalkan Java, hidup saya menjadi lebih tenang.

 
jjpark78 2024-11-06

Ada alasan jelas mengapa peringkat popularitas Java terus turun dalam survei Stack Overflow. Di Korea, bahasa ini masih lumayan berguna saat mencari kerja karena kerangka kerja pemerintah itu dipatok ke Spring, namun di dunia Barat, selain untuk sistem legacy, tampaknya memilih Java untuk memulai proyek baru sudah hampir menghilang.

 
rabbitcarrot 2024-11-07

Memang benar ada alasan yang cukup kuat, tetapi sepertinya Anda memaknai alasan itu dengan cara yang berbeda.

Bahkan di situs TIOBE juga disebutkan bahwa peringkat bahasa pemrograman sebaiknya hanya dilihat sebagai referensi, dan tidak berhubungan langsung dengan pangsa pasar atau popularitas.

Kesimpulannya, Python memang nomor 1 dengan pangsa yang sangat dominan, tetapi apakah ada tool di pasar yang benar-benar muncul karenanya?
Yang paling sering kita temui justru C/C++, .NET, lalu Java (Kotlin), serta Swift.

Banyaknya pertanyaan dan pencarian tidak berarti itu adalah bahasa yang paling banyak digunakan.
Python adalah bahasa yang bisa dipakai siapa saja bahkan tanpa latar belakang pendidikan formal di bidang ini.
Saya tidak menyangkal bahwa bahasa ini sangat populer, tetapi di pasar pengembangan ceritanya berbeda.

 
analogstar 2024-11-07

Instagram menggunakan Python untuk backend.

 
ilotoki0804 2024-11-07

Pakai saja Java.

Agak tidak jelas apa yang dimaksud dengan 'tool yang sudah ada di pasar'... bukankah tool seperti Django, FastAPI, PyTorch, NumPy, Pandas, dan sebagainya sudah lebih dari cukup...?

 
skrevolve 2024-11-06

Lihat judulnya, jadi langsung masuk sambil berharap duluan ke kolom komentar wkwkwk. Akhir-akhir ini memang makin besar ketergantungan kita pada bahasa, ya.

 
bungker 2024-11-06

Kalau dibatasi hanya pada masalah biaya, Java cenderung menimbulkan biaya cloud yang lebih besar karena penggunaan memorinya. Program dalam bahasa statis yang membutuhkan memori 100MB atau 200MB sering kali jika ditulis dengan Java justru membutuhkan 1GB atau 2GB, dan lightweight thread juga sering tidak bisa digunakan karena masalah kompatibilitas library.

 
cosine20 2024-11-06

Java juga bahasa statis, tetapi... masalah memori berkaitan dengan garbage collector atau JVM, dan yang Anda maksud dengan "program dalam bahasa statis yang membutuhkan memori 100MB, 200MB" tampaknya lebih mengacu pada bahasa native seperti C, C++.

 
bungker 2024-11-06

Maaf atas halusinasi saya. T_T Java juga termasuk bahasa statis. Jika berbagai biaya di cloud dijumlahkan, perlu menganggarkan sekitar 30.000 won per 1 GB memori, jadi layanan yang dikembangkan dengan Java ternyata mengeluarkan biaya yang sangat mahal.

 
constexprif 2024-11-06

Jika exception ada, itu adalah bahasa bertipe dinamis. Terlepas dari itu, saya setuju dengan poin bahwa sistem tipe dan penggunaan memori adalah hal yang terpisah.

 
cosine20 2024-11-06

Makna pengecualian yang Anda sebutkan terasa terlalu luas bagi saya; bisakah Anda menjelaskannya sedikit lebih rinci?
Definisi bahasa bertipe statis/dinamis yang saya ketahui adalah: jika tipe variabel ditentukan pada waktu kompilasi dan harus diubah secara eksplisit, maka itu adalah bahasa bertipe statis; sedangkan bahasa bertipe dinamis adalah bahasa yang pada waktu runtime dapat menentukan tipe variabel sesuka hati dan juga dapat mengubahnya secara implisit.

 
constexprif 2024-11-06

Saat menghadapi situasi seperti melakukan downcasting saat runtime, Java harus melakukan pemeriksaan tipe pada saat runtime. Karena alasan ini, Java bersifat dynamic type, dan yang muncul saat itu adalah exception.
Pada dasarnya, jika kesenjangan ini tidak ada, tidak perlu menyebut exception sebagai exception. throw hanya akan menjadi syntactic sugar untuk pola menyimpan objek yang akan dilempar ke variabel global lalu melakukan goto.

 
constexprif 2024-11-06

Mirip dengan yang Anda katakan, bahasa yang melakukan pemeriksaan tipe saat runtime disebut bertipe dinamis. Namun, ini berlaku untuk semua nilai yang ditangani dalam program. Karena ini artikel tentang Java, ambil Java sebagai contoh: kode Java diperiksa tipenya pada waktu kompilasi, tetapi ini juga menyiratkan hal penting bahwa nilai yang akan dipetakan ke variabel tersebut harus sesuai dengan tipe variabelnya.

 
rabbitcarrot 2024-11-06

Kalau pengecekan tipe dilakukan saat runtime lalu disebut dynamic typing, apakah C juga termasuk bahasa bertipe dinamis? Setahu saya ada konsep void pointer; apa perbedaan keduanya?

 
savvykang 2024-11-07

Kompiler C mana yang menyisipkan pemeriksaan tipe ke dalam kode dan memunculkan kesalahan eksplisit ketika tipenya salah? Jika ada implementasi seperti itu, tolong berikan satu contohnya saja.

 
constexprif 2024-11-07

Di C, tidak ada yang namanya pemeriksaan tipe dalam proses itu. Kalau data floating-point dibaca sebagai integer pun tidak ada masalah, kan? Itu bukan dynamic typing, melainkan memang berbahaya.

 
secret3056 2024-11-07

Jika pemeriksaan tipe dilakukan saat runtime lalu disebut dynamic typing, apakah berarti C juga bahasa bertipe dinamis?

Ya, jika C melakukan pemeriksaan tipe saat runtime, maka itu adalah bahasa bertipe dinamis.
Karena tidak demikian, C adalah bahasa bertipe statis.

void pointer pada dasarnya adalah raw pointer yang tidak diketahui tipe data aslinya. Kita tidak bisa mengetahui tipe apa yang ada pada alamat yang ditunjuk oleh pointer tersebut.

 
readiz 2024-11-06

Prinsip saya adalah bahasa yang sudah familier adalah yang terbaik.

 
yhju101 2024-11-06

Saya setuju. Sepertinya juga tidak mudah untuk keluar dari bahasa yang digunakan oleh tim atau organisasi.

 
savvykang 2024-11-06

Di antara berbagai alasan mengapa isi pekerjaan atau penugasan menjadi terpisah, ada kasus ketika bahasa pemrograman tambahan dimasukkan sehingga beban kerja berlebihan terjadi pada orang tertentu, dan saat ada perubahan personel pekerjaan jadi tidak bisa berjalan. Karena ini juga merupakan faktor yang memengaruhi perekrutan, menurut saya pemilihan tech stack harus dilakukan dengan hati-hati.

Namun sebaliknya, jika tetap bersikeras memakai bahasa hanya karena sudah terbiasa, padahal talent pool perekrutannya kecil atau setelah direkrut perlu pembelajaran tambahan, itu juga merupakan masalah.

 
chwj1212 2024-11-06

Mengapa C# kurang dalam hal lintas platform? Belakangan ini sebagian besar aplikasi server .NET memang dideploy ke server Linux.
Python sejak awal bukan pembanding yang sepadan, dan sepertinya benar bahwa dibandingkan Kotlin dan C#, ia lebih bertele-tele dan memang kekurangan banyak fitur yang dibutuhkan.

 
chwj1212 2024-11-06

Ah, ini artikel dari 10 tahun lalu ya. Sekarang situasinya sudah banyak berubah.

 
rabbitcarrot 2024-11-07

C# juga bahasa yang menggunakan virtual machine, jadi seharusnya dukungan lintas platform sudah muncul sejak lama, tetapi setahu saya itu baru benar-benar hadir belum lama ini, dan karena itu tampaknya untuk sementara persepsi bahwa ia sekadar bisa dijalankan di OS selain Windows akan tetap bertahan.
Selain itu, jika lingkungannya adalah Linux yang berfokus pada server dan berjalan 365 hari setahun, memang benar orang cenderung enggan memakai .NET yang belum cukup teruji dibanding bahasa lain yang kestabilannya sudah terbukti lebih dari 10 tahun pada sistem tersebut.
Dalam konteks itu, mungkin itulah maksudnya ketika dikatakan dukungan lintas platformnya masih kurang.

 
lazydonkey456 2024-11-07

Tapi, sebenarnya apa kriteria yang digunakan untuk menilai bahwa stabilitasnya sudah terbukti? Saya kurang paham apakah yang dimaksud hanya lamanya masa penggunaan.

 
lazydonkey456 2024-11-07

Karena ini tulisan 10 tahun lalu, artikel itu ditulis seperti itu saat .NET Core baru lahir belum lama. Aplikasi .NET saat ini sudah berjalan dengan stabil dan baik di Linux maupun Mac.

 
unsure4000 2024-11-06

Saya sempat mencari-cari apakah ada bahasa dengan sintaks ringkas ala Python tapi memakai tipe statis, lalu tanpa sengaja menemukan GDScript, tetapi kekurangan terbesarnya adalah bahasa ini terlalu sulit digunakan secara umum.
Kalau ada kesempatan, saya sarankan mencoba membuat proyek kecil lewat Godot dan merasakan sendiri seperti apa GDScript.

 
joyfui 2024-11-06

Saya kena semacam fobia terhadap Java setelah mengenal Kotlin...

 
nicewook 2024-11-06

Saya merasa Java selalu punya jawaban yang sudah teruji setiap kali ada fitur yang dibutuhkan.

 
[Komentar ini disembunyikan.]
 
mammal 2024-11-06

Gunakan saja Kotlin.

 
roxie 2024-11-07

Saya juga sempat menanyakan pendapat beliau tentang Kotlin lewat email (kebetulan saya juga pengguna Kotlin), tetapi beliau membalas bahwa karena belum pernah mencobanya, sulit untuk berbicara berdasarkan pengalaman.

 
regentag 2024-11-06

Saya menyukai bahasa dengan tipe statis. Karena itu mengurangi kebutuhan untuk terus berpikir soal tipe, sehingga waktu tersebut bisa dipakai untuk memikirkan hal lain.

Java benar-benar bahasa yang menempati posisi unik. Terakhir kali saya memakainya untuk pekerjaan mungkin sekitar 10 tahun lalu, tetapi bahkan sekarang pun jika saya harus mengembangkan suatu program untuk pekerjaan, bukan sekadar hobi, itu tetap masuk daftar bahasa yang pertama saya pertimbangkan.

Bahasa utama yang saya gunakan untuk pekerjaan saat ini adalah Ada dan C, tetapi alat-alat yang saya pakai secara pribadi atau di dalam tim kebanyakan saya buat dengan PowerShell. Namun saat menulisnya, begitu lewat sedikit waktu saja (bahkan cuma 5 menit...), saya mulai berpikir, "Tipe variabel ini tadi apa ya?" Karena itu belakangan ini saya selalu menuliskan tipenya secara eksplisit. (Di PowerShell, tipe bisa ditentukan saat mendefinisikan variabel, atau dihilangkan dan digunakan secara dinamis.)

Saya juga tidak terlalu suka C. Kesalahan terkait tipe yang akan ditangkap compiler di Ada sama sekali tidak bisa dideteksi oleh C. Saya cukup sering berpikir akan bagus kalau ada bahasa dengan sintaks mirip C tetapi mendukung sistem tipe seperti Ada.

Saya juga kurang cocok dengan Javascript dan Python. Kalau Perl atau Shell Script... saya bahkan tidak ingin memikirkannya.

 
fooandbar 2024-11-06

Sepertinya ini tidak bisa dihindari karena filosofi dasar bahasa C, yaitu "percayalah pada programmer"..

 
regentag 2024-11-06

Ah, dan saya suka Java, tapi saya tidak suka Maven.
Di masa-masa indah dulu, semuanya bisa dilakukan dengan Ant!

 
savvykang 2024-11-06

Menurut saya, setidaknya ini agak melegakan karena Java perlahan mulai mengejar bahasa-bahasa yang lebih modern, misalnya dengan penambahan record dan pattern matching.

 
aer0700 2024-11-05

Java memang bagus karena punya banyak referensi, tetapi kalau hanya itu alasannya, saya jadi bertanya-tanya kenapa tidak pakai C++ saja.
Saya berharap ada sedikit lebih banyak pembahasan tentang kelebihan Java.

 
aer0700 2024-11-07

Saya kebetulan lebih sering menggunakan C++, jadi saya hanya menjadikan C++ sebagai contoh. Saya juga menganggap Java sebagai bahasa yang bagus, tetapi yang ingin saya tunjukkan adalah bahwa postingan asli itu kurang membahas kelebihan Java.
Kalau menulis "Java itu sangat bagus", maka pembahasan utamanya seharusnya tentang kelebihan Java, tetapi menurut saya yang jadi fokus utama justru kritik terhadap bahasa lain.
Seperti yang Anda sampaikan, saya juga merasa JVM milik Java memang sangat bagus.

 
roxie 2024-11-07

Saya sepenuhnya setuju. Penafian untuk tidak membatasi pembahasan hanya pada Java memang dimaksudkan seperti itu. Namun tampaknya maksudnya tidak tersampaikan dengan baik..

 
anjwoc 2024-11-06

Karena pembandingnya Java dan C++, rasanya tingkat kepercayaannya langsung turun banget ya wkwk

 
geekhada 2024-11-06

Pakai saja Java.

Karena Java berjalan di atas JVM, kita bisa menyamakan setup lingkungan lokal dan mesin. Kalau ingin menyamakan lingkungan semua developer dan mesin dengan C++, kemungkinan akan memakan waktu cukup besar. Perawatannya juga sulit...

 
regentag 2024-11-06

Penulis aslinya tampaknya hanya menggunakan Java karena pekerjaannya memang sulit menerapkan C++. Mungkin kalau harus memilih antara Python dan C++, bukankah dia akan memilih C++?

 
roxie 2024-11-05

perbaikan: "Terakhir, alasan mengapa bukan bahasa bertipe statis lain" -> "Terakhir, alasan mengapa lebih memilih Java dibanding bahasa bertipe statis lain"

 
fau1ty 2024-11-07

Umpannya gampang banget nyulut api.. sangat direkomendasikan

 
roxie 2024-11-07

Ini bukan api yang saya inginkan T_T

 
plaaat0102 2024-11-08

Hangat.. ya..