Ketika saya mulai menggunakan Java pada tahun sembilan puluhan, itu semua " Tulis sekali, jalankan di mana saja! " Sejak hari pertama. Itu mungkin semua benar saat itu dan saya juga merupakan bagian dari paduan suara.
Saya tidak yakin apa yang harus dipikirkan lagi, mengingat semua bahasa lain menggunakan runtime multi platform (python, flash, perl, html, php ...). Tapi saya masih melihat banyak argumen yang mengatakan Anda harus menggunakan Java karena itu seharusnya lebih baik untuk pengembangan lintas platform.
Jadi, apakah itu masih benar hari ini? Apakah Java masih menjadi bahasa pilihan untuk pengembangan multi platform?
- Harap spesifik dengan fokus pada aspek lintas platform.
- Saya tidak meminta perbandingan fitur bahasa secara umum.
Pembaruan: Sejauh ini respons hebat! Sebagian besar jawaban tampaknya lebih menyukai Java atau web. Adakah masukan dari kerumunan skrip?
sumber
Jawaban:
bahasa gaya scripting seperti python juga membuat pengembangan lintas platform lebih mudah. Sekarang, apakah Anda suka Python (atau bahasa lain seperti itu) tergantung pada Anda, dan kami mungkin tidak perlu memulai perdebatan itu di sini.
Java mencoba memaksa Anda untuk menulis kode yang akan berjalan dengan mudah, sementara python memungkinkan Anda untuk menulis kode portabel. Bahasa python yang sebenarnya itu sendiri akan berjalan dengan mudah, tetapi perpustakaan eksternal mungkin atau mungkin tidak. Selain itu, python akan secara bebas memberikan akses ke layanan spesifik platform.
Apakah Java menguntungkan di sana? Saya pikir dalam kedua kasus Anda dapat menulis kode portabel dengan kemudahan yang sama. Artinya, Anda dapat menulis kode dan biasanya akan bekerja pada platform yang berbeda. Tetapi Anda tidak dapat pergi hanya dengan menulis kode dan menganggapnya akan berhasil di mana-mana. Saya telah bekerja pada proyek python yang menghasilkan versi untuk Windows, Linux, dan Mac dan kami mengalami sedikit masalah lintas platform. (Satu-satunya yang saya ingat adalah karena bug di perpustakaan kami menggunakan pygame, yang menyebabkan masalah menggambar di Linux. Ini diperbaiki dengan memutakhirkan versi pygame yang kami gunakan)
Masalah lainnya adalah penyebaran. Jika Anda ingin mendistribusikan program mandiri yang menjalankan kode Anda, Anda harus membuat versi yang berbeda untuk platform yang berbeda. Untuk Java, Anda dapat mendistribusikan satu versi dan menganggap bahwa pengguna telah menginstal Java atau dapat menginstalnya. Dalam hal ini Java mungkin menang dalam kesederhanaan departemen penempatan.
Pada akhirnya, saya pikir itu tergantung pada bahasa apa yang Anda sukai dan dengan penyebaran apa yang perlu Anda lakukan.
sumber
Meskipun Java mungkin bukan satu -satunya atau alat lintas-platform yang layak , ia memiliki beberapa kekuatan:
dan beberapa kelemahan:
Ketika berbicara secara khusus tentang platform Java , ada satu hal lagi:
sumber
Itu sama benarnya hari ini seperti dulu - artinya tidak sepenuhnya. Java ditulis sekali, tes dan debug di mana-mana. Tentu itu jauh lebih sedikit pekerjaan daripada port yang benar-benar segar tetapi umumnya lebih banyak pekerjaan daripada sensasi awal yang kita yakini.
Produk kami memiliki server Java yang akan berjalan pada Windows atau Linux tetapi kami telah melihat masalah spesifik OS dengannya dan memastikan kami memiliki server Linux dan Windows yang tersedia untuk dukungan / pengujian jika diperlukan. Java UI cenderung memiliki lebih banyak masalah daripada server (meskipun banyak yang kosmetik dan karena itu berpotensi dapat diabaikan tergantung pada aplikasi).
Meskipun bukan sepenuhnya bahasa bagi saya web adalah platform lintas platform pilihan. Ujung depan HTML / JavaScript berarti bahwa aplikasi Anda akan berjalan pada hampir semua platform klien dan dalam banyak kasus itu adalah tujuan sebenarnya - tidak perlu khawatir apakah itu Mac atau PC, versi OS dan sebagainya.
Tentu saja Anda secara umum masih akan mendikte platform server tetapi ketika orang-orang menjadi jauh lebih fleksibel, terutama hari-hari ini ketika sebagian besar perusahaan sudah mendukung campuran server Windows dan Linux.
sumber
Secara pribadi, saya akan mengatakan bahwa Java masih merupakan bahasa pilihan lintas platform, dan kemungkinan akan tetap ada untuk beberapa waktu (bersama aplikasi web). Saya menulis lebih banyak tentang topik dalam posting ini di Jawa sebagai platform pilihan , tetapi pada bagian depan platform silang khususnya:
Selama Anda berhati-hati dengan dependensi Anda (mis. Menghindari perpustakaan yang menggunakan JNI untuk berinteraksi dengan kode asli) maka Java dapat ditulis dijalankan tanpa dimodifikasi pada semua platform JVM utama
Beacuse Java biasanya didistribusikan sebagai bytecode bebas mesin, Anda dapat menjalankan tanpa kompilasi ulang pada JVM apa pun (karena JVM lokal itu sendiri menangani kompilasi JIT ke kode asli). Sebagai contoh, saya telah berhasil mendapatkan aplikasi GUI kompleks yang masuk akal untuk dijalankan pertama kali pada Mac setelah berkembang di Windows - dengan file jar yang sama . Bandingkan dengan sebagian besar bahasa lintas platform lainnya, yang biasanya memerlukan pustaka yang berbeda atau kompilasi ulang untuk platform yang berbeda.
Banyak pustaka inti yang Anda butuhkan (GUI, jaringan, IO, dll.) Adalah bagian dari runtime standar dan ditulis dengan cara lintas platform. Jadi Anda tidak perlu berburu dan menguji pustaka lintas-platform, Anda dijamin bahwa semua yang Anda butuhkan sudah ada di lingkungan runtime.
sumber
Saya pikir Anda punya pilihan itu:
1) gunakan salah satu a
2) Bagaimana Anda akan mengemas dan mengirimkan kode Anda?
Pilihan-pilihan itu memengaruhi kinerja, visibilitas dan distribusi kode sumber.
Apakah Anda keberatan memberikan kode sumber Anda? Bahasa yang dikompilasi mungkin cocok untuk Anda. Bahasa yang dikompilasi tampaknya berkinerja lebih baik dalam tolok ukur mikro daripada bahasa yang ditafsirkan (bahkan JIT). Juga jika Anda bergantung pada lingkungan runtime seperti Java, Python, Ruby dll kode Anda mungkin lebih sulit untuk didistribusikan.
Saya menemukan bahwa aplikasi desktop lintas platform paling populer digunakan untuk "Satu front-end, banyak biner" menggunakan C / C ++ dan perpustakaan widget lintas platform, mis. Kapasitas, Blender, Firefox, Google Earth, OpenOffice, Skype, Songbird, Stellarium, VLC.
sumber
Saya akan bilang tidak. python dan ruby banyak digunakan dan begitu juga javascript untuk sisi klien dan server. Saya pribadi menggunakan .NET dan tidak punya masalah menjalankannya di mac dan linux (sambil mengembangkan di windows)
-edit- Saya mendengar LLVM menjadi populer tetapi masih sangat kecil. Itu akan memungkinkan Anda untuk menggunakan lintas platform C ++ dalam satu biner. Tampaknya itu akan dieksekusi pada browser tetapi saya belum melihat contoh di mana itu memungkinkan Anda untuk mengubah dom atau memanggil javascript.
sumber
Jika Anda membawa platform seluler ke dalam campuran, maka setidaknya Anda juga harus memasukkan kompilasi ulang. Misalnya android, j2me.
sumber