Di dunia Java, kita sering berbicara tentang JVM, dan ketika Java baru, ia memiliki fitur pembunuh yang seharusnya menjadi "Write Once, Run Anywhere."
Dari cara orang berbicara dan menulis, ini tampak berbeda dari cara Python, misalnya, bekerja. Namun saya belum mengetahui bahwa kode Python yang saya tulis akan bekerja secara berbeda pada komputer lain. (Meskipun aku belum menulis Python sebanyak itu.)
Jadi apa yang saya lewatkan? Bagaimana JVM berbeda dari juru bahasa Python? Apakah ada cara yang Python tidak memiliki independensi platform Java? Atau ini hanya perbedaan budaya?
java
python
cross-platform
jvm
Eric Wilson
sumber
sumber
Jawaban:
Java melakukan pekerjaan yang sangat baik untuk mengisolasi Anda dari OS yang mendasarinya dan memberi Anda alat yang persis sama pada sebagian besar platform yang berfungsi untuk berbicara tentang hal-hal di OS yang mendasarinya.
Python di sisi lain tidak melakukan pekerjaan yang baik dalam mengisolasi Anda dari OS yang mendasarinya, Python tidak memiliki cara standar untuk menangani antara proses komunikasi (lihat perbedaan dalam modul sys dan modul os antara jendela dan * nix implementasi Python misalnya.)
Saya telah menulis kode dalam python yang hanya akan bekerja pada kotak * NIX atau kotak Windows hanya menggunakan panggilan API Python yang tersedia, di mana di Jawa akan sangat sulit untuk menulis kode yang hanya Java API yang tidak akan bekerja sama pada kedua Kotak Windows atau kotak * NIX
sumber
Secara topikal dan hanya dari runtime bahasa, ada sedikit perbedaan. JVM secara khusus dirancang tidak hanya sebagai juru bahasa tetapi juga kompiler runtime, inferensi kode, lapisan virtualisasi instrumental yang dapat diterapkan kait dinamis, berbagai semantik GC dan kemampuan untuk menggambarkan ergonomi virtualisasi, untuk beberapa nama. Python dapat berjalan di JVM? Bisakah Java dijalankan dalam interpreter Python?
Kebanyakan interpreter adalah runtime language / token interpreter, JVMs (dan lainnya) seperti yang Anda ketahui interpretasikan / kompilasi / jalankan kode perantara. IBM misalnya telah melakukan ini selama beberapa dekade di luar Jawa, itu bukan hal yang baru. Bahkan VB berjalan dalam kode menengah selama beberapa waktu saya percaya?
WORA sebagian besar sudah ketinggalan jaman sekarang karena banyak bahasa yang ditafsirkan berjalan hampir di mana saja tidak berubah.
sumber
Ketika Java masih baru, WORA adalah sesuatu yang bisa dibanggakan - khususnya, bahwa Anda dapat mengkompilasi pada satu platform dan menjalankannya (dikompilasi dengan kode kode) pada platform lain.
Tentu saja, bahasa yang diinterpretasikan berjalan hampir mirip tanpa memandang platform apa yang dijalankan oleh penerjemah (selama penerjemah tersedia untuk platform itu). Namun, sistem file, masalah izin, penyandian, akhir baris dan banyak masalah kecil tapi menjengkelkan lainnya dapat menyebabkan sakit kepala. Beberapa hal yang bergantung pada platform tidak mudah untuk disingkirkan.
sumber
Apakah Python memiliki platform independen GUI?
Lagi pula, fitur WORA - sekali lagi - untuk memikat programmer C, karena C cenderung memodelkan platform yang mendasarinya secara dekat, dan karena platform berbeda (ukuran kata? Endianess?) Membuat program C yang sepenuhnya portabel membutuhkan perhatian dan perhatian yang besar.
Janji Java adalah bahwa semua kebosanan ini tidak harus dilakukan, karena platform didefinisikan dengan sangat baik dan Anda TAHU bahwa char adalah 16 bit dll. Juga GUI ditulis dalam Java dan juga 100% portabel, yang berarti bahwa Anda Program dapat berjalan di komputer yang belum pernah Anda dengar dan bahkan berjalan dengan benar.
sumber
Kecuali bahwa Jawa secara tegas bukan WORA. Saya telah melihat perangkat lunak Java yang rusak setelah Java telah ditingkatkan ke versi yang lebih tinggi pada nomor versi minor . IMHO, WORA hanyalah tipuan pemasaran.
sumber