Di masa lalu saya telah menggunakan C ++ sebagai bahasa pemrograman. Saya tahu bahwa kode yang ditulis dalam C ++ melewati proses kompilasi sampai menjadi kode objek "kode mesin".
Saya ingin tahu bagaimana Java bekerja dalam hal itu. Bagaimana pengguna menulis kode Java yang dijalankan oleh komputer?
java
compilation
interpretation
nama tampilan
sumber
sumber
Jawaban:
Implementasi Java biasanya menggunakan proses kompilasi dua langkah. Kode sumber Java dikompilasi ke bytecode oleh kompiler Java. Bytecode dijalankan oleh Java Virtual Machine (JVM). JVM modern menggunakan teknik yang disebut kompilasi Just-in-Time (JIT) untuk mengkompilasi bytecode ke instruksi asli yang dipahami oleh CPU perangkat keras dengan cepat saat runtime.
Beberapa implementasi JVM dapat memilih untuk menginterpretasikan bytecode alih-alih JIT mengkompilasinya ke kode mesin, dan menjalankannya secara langsung. Meskipun ini masih dianggap sebagai "interpreter," Ini sangat berbeda dari penerjemah yang membaca dan mengeksekusi kode sumber tingkat tinggi (yaitu dalam hal ini, kode sumber Java tidak ditafsirkan secara langsung, bytecode, output dari kompiler Java, adalah.)
Secara teknis dimungkinkan untuk mengkompilasi Java ke kode asli sebelumnya dan menjalankan biner yang dihasilkan. Dimungkinkan juga untuk menafsirkan kode Java secara langsung.
Untuk meringkas, tergantung pada lingkungan eksekusi, bytecode dapat berupa:
sumber
Kode yang ditulis dalam Java adalah:
Kapan java menginterpretasikan bytecode dan kapan kompilasi? Kode aplikasi awalnya ditafsirkan, tetapi monitor JVM yang urutan bytecode sering dieksekusi dan menerjemahkannya ke kode mesin untuk eksekusi langsung pada perangkat keras. Untuk bytecode yang dijalankan hanya beberapa kali, ini menghemat waktu kompilasi dan mengurangi latensi awal; untuk bytecode yang sering dieksekusi, kompilasi JIT digunakan untuk berjalan dengan kecepatan tinggi, setelah fase awal interpretasi lambat. Selain itu, karena suatu program menghabiskan sebagian besar waktu mengeksekusi sebagian kecil kodenya, pengurangan waktu kompilasi menjadi signifikan. Akhirnya, selama interpretasi kode awal, statistik eksekusi dapat dikumpulkan sebelum kompilasi, yang membantu untuk melakukan optimasi yang lebih baik.
sumber
Istilah "bahasa yang ditafsirkan" atau "bahasa yang dikompilasi" tidak masuk akal, karena bahasa pemrograman apa pun dapat ditafsirkan dan / atau dikompilasi.
Adapun implementasi Java yang ada, sebagian besar melibatkan langkah kompilasi untuk bytecode , sehingga mereka melibatkan kompilasi. Runtime juga dapat memuat bytecode secara dinamis, sehingga beberapa bentuk interteter bytecode selalu diperlukan. Juru bahasa itu mungkin atau mungkin tidak menggunakan kompilasi untuk kode asli secara internal.
Kompilasi just-in-time parsial beberapa hari ini digunakan untuk banyak bahasa yang pernah dianggap "ditafsirkan", misalnya JavaScript.
sumber
Java dikompilasi ke bytecode, yang kemudian masuk ke Java VM, yang menerjemahkannya.
sumber
Java adalah bahasa pemrograman yang dikompilasi, tetapi alih-alih mengkompilasi langsung ke kode mesin yang dapat dieksekusi, Java mengkompilasi ke bentuk biner menengah yang disebut kode byte JVM. Kode byte kemudian dikompilasi dan / atau ditafsirkan untuk menjalankan program.
sumber
Jenis keduanya. Pertama java dikompilasi (beberapa lebih suka mengatakan "diterjemahkan") untuk bytecode, yang kemudian dikompilasi, atau ditafsirkan tergantung pada mood JIT.
sumber
Java melakukan kompilasi dan interpretasi,
Di Jawa, program tidak dikompilasi menjadi file yang dapat dieksekusi ; mereka dikompilasi menjadi bytecode (seperti yang dibahas sebelumnya), yang kemudian ditafsirkan oleh JVM (Java Virtual Machine) / dijalankan pada saat runtime. Kode sumber Java dikompilasi menjadi bytecode ketika kita menggunakan kompiler javac. Bytecode akan disimpan di disk dengan ekstensi file .class .
Ketika program dijalankan,
bytecode dikonversi, bytecode dapat dikonversi, menggunakan kompilator just-in-time (JIT). Hasilnya adalah kode mesin yang kemudian diumpankan ke memori dan dieksekusi.Javac adalah Java Compiler yang mengkompilasi kode Java ke Bytecode. JVM adalah Java Virtual Machine yang Menjalankan / Menafsirkan / menerjemahkan Bytecode ke Kode Mesin Asli. Di Jawa meskipun dianggap sebagai bahasa yang ditafsirkan, itu dapat menggunakan kompilasi JIT (Just-in-Time) ketika bytecode berada di JVM. Kompiler JIT membaca bytecode di banyak bagian (atau secara penuh, jarang) dan mengkompilasinya secara dinamis ke dalam kode mesin sehingga program dapat berjalan lebih cepat, dan kemudian di-cache dan digunakan kembali nanti tanpa perlu dikompilasi ulang. Jadi kompilasi JIT menggabungkan kecepatan kode yang dikompilasi dengan fleksibilitas interpretasi.
Sebuah bahasa ditafsirkan adalah jenis bahasa pemrograman yang sebagian besar implementasi yang mengeksekusi instruksi langsung dan bebas, tanpa sebelumnya kompilasi program ke instruksi mesin-bahasa. Penerjemah mengeksekusi program secara langsung, menerjemahkan setiap pernyataan ke dalam urutan satu atau lebih subrutin yang telah dikompilasi ke dalam kode mesin.
Sebuah bahasa yang dikompilasi adalah bahasa pemrograman yang implementasi biasanya compiler (penerjemah yang menghasilkan kode mesin dari kode sumber), dan tidak juru (langkah-demi-langkah pelaksana kode sumber, di mana tidak ada terjemahan pra-runtime terjadi)
Dalam implementasi bahasa pemrograman modern seperti di Jawa, platform semakin populer untuk menyediakan kedua opsi.
sumber
Java adalah bahasa yang dikompilasi byte yang menargetkan platform yang disebut Java Virtual Machine yang berbasis tumpukan dan memiliki beberapa implementasi yang sangat cepat pada banyak platform.
sumber
Kutipan dari: https://blogs.oracle.com/ask-arun/entry/run_your_java_applications_faster
Jadi saya akan mengatakan Java jelas merupakan bahasa yang dikompilasi.
sumber