Iklan
Apakah Anda saat ini sedang berdebat apakah akan menggunakan java untuk aplikasi Anda berikutnya, atau menggunakan toolkit dan kerangka kerja asli? Apakah Anda ingin tahu apa kelebihan yang disediakan java daripada pemrograman asli untuk suatu aplikasi? Baca terus untuk mengetahui!
Apa itu Aplikasi Asli?
Aplikasi asli adalah program yang ditulis khusus untuk sistem operasi (OS), dan mungkin untuk perangkat keras tertentu yang menjalankan OS tersebut. Sebagian besar ditulis dalam bahasa seperti C / C ++. Kode sumber C / C ++ dikompilasi ke bentuk objek menggunakan kompiler, yang kemudian dirakit menjadi executable dengan menghubungkan perpustakaan yang diperlukan. Suatu program yang dibangun dengan cara ini akan berjalan pada perangkat keras tertentu dan OS yang dibuatnya, tetapi mungkin tidak berfungsi dengan baik pada sistem lain.
Mengapa Tidak Asli Aplikasi Portable?
Kompiler untuk bahasa seperti C / C ++ menerjemahkan pernyataan kode sumber ke dalam bahasa mesin untuk CPU yang ditargetkan. Ketika Anda mencoba menjalankan kode ini pada CPU yang berbeda, program mungkin tidak bekerja dengan benar (atau bekerja sama sekali) karena instruksi bahasa mesin dalam kode yang dikompilasi mungkin tidak didukung oleh CPU ini.
Selain itu, sistem operasi yang baru mungkin berbeda dari yang asli dan bahkan mungkin tidak mengenali file program sebagai yang dapat dieksekusi. Ini karena berbagai format file yang digunakan untuk executable di berbagai sistem operasi (seperti Windows, Linux, MacOS, dll.).
Portabilitas adalah masalah besar dengan aplikasi asli yang hanya memutakhirkan kompiler ke versi berikutnya dapat menyebabkan perubahan yang melanggar. Kode Anda mungkin perlu diperbaiki untuk bekerja dengan kompiler yang lebih baru. Karena itu, percikkan kode sumber dengan apa yang dikenal sebagai ifdef pernyataan untuk mengisolasi hardware-, OS-, atau solusi khusus-kompiler adalah umum.
Berikut ini cuplikan kode kecil dari Pustaka kompresi BZLib yang menggambarkan penggunaan ifdefs untuk mengisolasi kekhasan platform:
#ifdef _WIN32. # termasuk # ifdef small / * windows.h mendefinisikan small to char * / # undef small. # berakhir jika. # ifdef BZ_EXPORT. # define BZ_API (func) func WINAPI. # tentukan BZ_EXTERN eksternal. # else / * impor windows dll secara dinamis * / # define BZ_API (func) (WINAPI * func) # define BZ_EXTERN. # berakhir jika. #lain. # define BZ_API (func) func. # tentukan BZ_EXTERN eksternal. #berakhir jika.
Kode Sumber Portabilitas Di Seluruh Sistem Operasi
Situasi ini dapat dikurangi sampai batas tertentu dengan mengkompilasi ulang kode sumber C / C ++ ke CPU baru. Namun, sistem operasi untuk CPU baru mungkin berbeda. Dan kode sumber tidak dapat dikompilasi tanpa perubahan, baik besar atau kecil. Bahkan perubahan kecil dalam versi sistem operasi mungkin memerlukan beberapa perubahan kode sumber.
Dan ketika Anda mempertimbangkan sistem operasi yang berbeda seperti Windows dan Linux / UNIX, portabilitas adalah permainan bola yang sepenuhnya baru. Kecuali Anda menggunakan toolkit atau kerangka kerja yang sepenuhnya mengisolasi Anda dari sistem operasi, portabilitas kode sumber tidak mungkin. Ini karena antarmuka sistem operasi benar-benar berbeda antara sistem ini. Jika Anda, di sudut paling jauh dari kode Anda, menggunakan primitif sistem operasi apa pun secara langsung, maka kode Anda tidak akan portabel di seluruh sistem operasi yang beragam ini.
Bagaimana Java Berbeda?
Dalam skenario inilah java memberikan paradigma baru, cara baru dalam membangun perangkat lunak. Saat pemrograman dalam java, Anda menargetkan a mesin virtual. Mesin seperti itu ada sebagai konsep, dan bahasa java menyediakan antarmuka untuk pemrograman melawan mesin ini. Misalnya, Anda dapat menanyakan jumlah memori yang tersedia, jumlah CPU, antarmuka jaringan, dll dari mesin virtual.
Bagaimana Aplikasi Java Dibangun?
Bahasa java menyediakan kompiler java yang menerjemahkan kode sumber menjadi kode objek. Kode objek kemudian dieksekusi oleh mesin virtual java, yang merupakan program terpisah dari kompiler. Sistem operasi, pada gilirannya, memandang mesin virtual java hanya sebagai program lain yang berjalan pada OS itu.
Beban portabilitas kini telah bergeser dari pemrogram aplikasi ke vendor mesin virtual java. Pemrogram aplikasi menulis perangkat lunak menggunakan primitif dari bahasa java, dan java mesin virtual bertanggung jawab untuk menerjemahkan primitif ini ke sistem operasi host fasilitas. Ketika versi baru OS keluar, vendor bertanggung jawab untuk memperbarui mesin virtual java sehingga berfungsi dengan benar pada OS baru.
Apa Keuntungan dari Mesin Virtual Java?
Seperti disebutkan sebelumnya, mesin virtual java menyediakan pandangan virtual dari sistem operasi dan perangkat keras kepada pemrogram aplikasi. Tampilan virtual ini dalam bentuk berbagai antarmuka dan metode, dan berfungsi untuk mengisolasi programmer aplikasi dari perbedaan dalam OS host dan perangkat keras yang mendasarinya. Dengan demikian, pemrogram aplikasi dapat mengakses fasilitas seperti Windowing Toolkit, Jaringan, grafik 3D, banyak CPU, dll. tanpa harus menggunakan panggilan tingkat rendah yang akhirnya membuat program ini tidak portabel.
Program java ditulis dan dikompilasi menggunakan kompiler java. Kode objek yang dihasilkan (disebut kode byte) dapat diangkut ke sistem operasi host yang berbeda yang berjalan pada perangkat keras yang berbeda dan harus berjalan tanpa masalah.
JIT Compiler
Mesin virtual java menggunakan a Kompiler JIT untuk mengoptimalkan kode byte khusus untuk CPU target. JIT adalah singkatan dari Tepat waktu dan mengacu pada optimasi runtime yang diterapkan JVM pada kode byte untuk membuatnya berjalan lebih baik pada CPU saat ini.
Keuntungan lain menggunakan Java Virtual Machine adalah bahwa ia dapat menerapkan optimasi yang berbeda untuk kasus penggunaan yang berbeda, semua dengan kode byte yang sama. Sebagai contoh, Oracle JVM menyediakan dua opsi untuk menjalankan kode byte: mode server dan mode klien. Mode server dioptimalkan untuk program server yang berjalan lama, sedangkan mode klien JVM dioptimalkan untuk waktu respons yang cepat karena kemungkinan sedang digunakan dalam mode interaktif.
Sebagai rangkuman, aplikasi asli dibuat untuk perangkat keras dan sistem operasi tertentu. Aplikasi java, di sisi lain, mengikuti a Bangun Sekali Jalankan Di Mana Saja filsafat, dengan memiliki JVM menjalankan instruksi kode byte yang dikompilasi. Walaupun aplikasi asli secara tradisional dipandang lebih berkinerja daripada aplikasi java, itu mungkin tidak selalu benar karena penggunaan kompiler JIT oleh JVM.
Sudahkah Anda mengembangkan aplikasi asli dan harus pindah ke java karena portabilitas? Atau sebaliknya karena masalah kinerja? Beri tahu kami di komentar di bawah.
Kredit Gambar: Profit_Image via Shutterstock.com