Java Virtual Machine (JVM) dan prinsip-prinsip lintas platform <BR /> Saya percaya semua orang telah belajar bahwa Java memiliki fitur lintas-platform, dapat "dikompilasi sekaligus dan dijalankan di mana-mana". Modifikasi.
Jadi, bagaimana cross-platform diimplementasikan? Ini melibatkan pembicaraan tentang Java Virtual Machine (JVM).
JVM juga merupakan perangkat lunak, dan platform yang berbeda memiliki versi yang berbeda. Kode sumber Java yang kami tulis akan menghasilkan file .class yang disebut file bytecode setelah kompilasi. Mesin virtual Java bertanggung jawab untuk menerjemahkan file bytecode ke dalam kode mesin di bawah platform tertentu dan kemudian menjalankannya. Dengan kata lain, selama JVM yang sesuai diinstal pada platform yang berbeda, Anda dapat menjalankan file bytecode dan menjalankan program Java yang kami tulis.
Selama proses ini, program Java yang kami tulis tidak membuat perubahan apa pun.
JVM adalah "jembatan" dan "middleware" yang merupakan kunci untuk implementasi lintas platform. tujuan.
Catatan: Hasil kompilasi bukan untuk menghasilkan kode mesin, tetapi untuk menghasilkan bytecode. Bytecode yang dihasilkan oleh kompilasi dan pembuatan di bawah platform yang berbeda adalah sama, tetapi kode mesin yang diterjemahkan oleh JVM berbeda.
Oleh karena itu, menjalankan program Java harus memiliki dukungan JVM, karena hasil kompilasi bukan kode mesin, dan harus diterjemahkan lagi oleh JVM sebelum dieksekusi. Bahkan jika Anda mengemas program Java ke dalam executable (seperti .exe), Anda masih memerlukan dukungan JVM.
Catatan: Program Java lintas platform, bukan JVM. JVM dikembangkan dalam C/C ++, dan dikompilasi kode mesin.
Tentang efisiensi eksekusi JVM
Dalam beberapa tahun terakhir peluncuran Java, orang-orang memiliki pendapat yang berbeda.
Namun, JVM memiliki opsi untuk menerjemahkan dan menyimpan bytecode yang paling sering digunakan ke dalam kode mesin, suatu proses yang dikenal sebagai kompilasi instan. Metode ini memang sangat efektif, yang telah menyebabkan penggunaan mesin virtual pada platform .NET Microsoft.
Kompiler tepat waktu sekarang cukup luar biasa, dan bahkan telah menjadi pesaing kompiler tradisional, dan dalam beberapa kasus bahkan melampaui kompiler tradisional karena JVM dapat memantau informasi runtime. Misalnya, kompiler instan dapat memantau dan mengoptimalkan kode yang sering digunakan, menghilangkan panggilan fungsi (mis. "Tertanam").
Namun, Java memiliki beberapa overhead tambahan yang tidak dimiliki C/C ++, dan aplikasi utama lebih lambat. Misalnya, Java mengadopsi metode menggambar platform-independen, dan pelaksanaan program GUI (program klien) lambat;
Kegagalan pasar klien
Perpustakaan GUI Java tidak bagus, antarmuka ini tidak ramah, dan sebagian besar pengguna tidak terbiasa;
Yang lebih tidak dapat diterima adalah bahwa setelah Microsoft membagi minat dan matahari sendiri, Windows tidak lagi memiliki JVM yang telah dipasang sebelumnya. Tetapi dapatkah Anda berharap dia tahu tentang JVM dan menginstal pengaturan dengan benar?
Meskipun Anda dapat mengintegrasikan JVM ke dalam program Anda, secara otomatis menginstal dan mengaturnya, dan tidak mengizinkan intervensi pengguna, apakah Anda ingin datang dengan JVM yang jauh lebih besar dari program Anda? Mungkin dapat diterima untuk melakukan ini. Berapa ruang disk yang terbuang sia -sia?
Oleh karena itu, beberapa program klien untuk pengguna biasa yang secara langsung diluncurkan di pasar dikembangkan di Java. Jika Anda ingin terlibat dalam pengembangan klien, disarankan untuk mempelajari C/C ++ dan .NET, yang memiliki keunggulan besar dalam pengembangan klien jendela.
Berbagai alasan ditakdirkan agar tidak menguntungkan untuk diperkenalkan ke pasar dan diterima oleh pengguna biasa. Tapi sekali lagi, pengembangan klien bukanlah niat asli Java.
Konsep Kelas dan Objek Java
Java adalah bahasa pemrograman yang berorientasi objek.
Kelas di Java dapat dianggap sebagai versi yang ditingkatkan dari struktur dalam bahasa C. Struktur adalah tipe data yang dibangun yang dapat berisi anggota (variabel) yang berbeda, dan tipe data masing -masing anggota dapat berbeda; Misalnya:
#include <stdio.h> int main () {// Tentukan siswa STRUCT STRUCT {// Variabel char *nama; / Anggota Struktur Operasi Stu1.name = "Xiao Ming"; Nama, Stu1.age, Stu1.score); Hasil Menjalankan:
Usia Xiao Ming adalah 15, dan nilai 92.500000
Kelas -kelas di Java juga merupakan jenis pembangunan tipe data, tetapi telah diperpanjang. Misalnya:
Demo Public {public static void Main (String [] args) {// Tentukan kelas siswa kelas {// Tentukan kelas melalui kelas kunci kelas // variabel yang terkandung dalam nama string kelas; Fungsi yang disertakan mengatakan () {System.out.println (nama + "Usia adalah" + usia + ", skornya adalah" + skor); Siswa = Siswa Baru (); );}} Hasil Menjalankan:
Usia Xiao Ming berusia 15 dan nilai 92.5
Dalam bahasa C, definisi variabel struktur dapat diselesaikan dengan nama struktur dan ruang memori dapat dialokasikan; Ruang.
Analogi dapat dibandingkan dengan gambar, objek dapat dibandingkan dengan bagian -bagiannya, dan gambar menjelaskan parameter bagian dan tugas yang mereka lakukan;
Di Java, menggunakan kata kunci baru, Anda dapat membuat objek melalui kelas, yaitu, menghasilkan gambar menjadi bagian -bagian.
Catatan: Kelas hanyalah gambar yang memainkan penjelasan dan tidak menempati ruang memori;
Variabel dan fungsi yang terkandung dalam kelas memiliki nama spesifik.
Pemrograman Berorientasi Objek (OOP)
Kelas adalah konsep umum. Kelas dapat dianggap sebagai versi struktur yang ditingkatkan. -Lisan proyek.
Karena Java, C ++ dan bahasa-bahasa lain mendukung kelas dan objek, program penulisan dalam bahasa-bahasa ini juga disebut pemrograman yang berorientasi objek, dan bahasa-bahasa ini juga disebut bahasa pemrograman yang berorientasi objek. Karena bahasa C tidak mendukung konsep kelas dan objek, itu disebut bahasa pemrograman yang berorientasi pada proses.
Bahkan, berorientasi objek hanyalah peningkatan yang berorientasi pada proses.
Dalam bahasa C, blok kode yang digunakan kembali yang menyelesaikan fungsi tertentu dapat didefinisikan sebagai fungsi, dan fungsi dengan kelas fungsi dinyatakan dalam file header, dan fungsi dari berbagai jenis dinyatakan dalam file header yang berbeda untuk melakukan fungsi , mudah ditulis dan dihubungi.
Di Java, blok kode yang menyelesaikan fungsi tertentu dapat didefinisikan sebagai metode, dan metode dengan fungsi yang sama dapat didefinisikan dalam kelas, yaitu, dalam file sumber (karena file sumber hanya dapat berisi satu kelas publik), Beberapa file sumber dapat ditempatkan di folder, yang memiliki nama spesifik yang disebut paket.
Di atas adalah C ++, sedangkan Java adalah:
Pemrograman yang berorientasi objek sama sekali tidak memiliki keuntungan dalam efisiensi eksekusi perangkat lunak.