Sing nembe kenal karo basa Jawa kerep bingung babagan konsep kode
mesin lan
kode byte . Apa iku? Apa bedane? Ing cathetan singkat, kita bakal nyoba kanggo njlèntrèhaké fitur-fitur kasebut kanthi gampang lan cetha supaya bisa nutup masalah iki sapisan lan kanggo kabeh.
Kode mesin
Prosesor , ing intine, kalkulator sing rumit lan canggih. Wis akeh lokasi memori (disebut ndhaftar) ing lan antarane kang macem-macem operasi matématika lan byte dileksanakake. Kode mesin persis minangka gambaran saka urutan operasi lan set data sing ana. Nyatane, iku mung basa sing dimangerteni prosesor komputer.
Incompatibility kongenital
Kajaba iku, ora kabeh prosesor "ngomong" basa sing padha. Ana bedane ora mung antarane arsitektur
CISC lan
RISC , nanging uga ing "kemah" kasebut.
CISC (Complex Instruction Set Computing) minangka konsep desain prosesor sing ditondoi dening set properti ing ngisor iki:
- akeh prentah, beda dawane;
- akeh mode alamat;
- coding instruksi kompleks.
RISC (Reduced Instruction Set Computing) - prosesor karo set instruksi suda. Prentah kasebut kanthi format sing padha, cendhak, kanthi kodhe prasaja. |
Prosesor generasi anyar ngenalake set instruksi tambahan sing ora dingerteni model generasi lawas. Amarga iki, program sing disusun kanggo siji arsitektur (utawa siji generasi pemroses) ora bisa mlaku ing piranti keras liyane. Kabeh iki meksa kita nyusun ulang program kanggo mesthekake yen bisa digunakake ing komputer liyane. Nanging, sampeyan kudu nyusun ulang ora mung amarga prosesor, nanging uga amarga beda interaksi program lan sistem operasi. Iku amarga saka wong-wong mau ora bisa mbukak program "Windows" ing Linux, lan program "Linux" ing Windows.
Bytecode
Bytecode ing akeh cara padha kode mesin, mung nggunakake pesawat saka instruksi ora saka prosesor nyata, nanging saka virtual. Kajaba iku, bisa uga kalebu bagean sing fokus ing panggunaan
JIT compiler , sing ngoptimalake eksekusi printah kanggo prosesor nyata ing ngendi program kasebut mlaku.
Kompilasi JIT (Kompilasi Just-in-time, kompilasi on-the-fly) utawa kompilasi dinamis (terjemahan dinamis) yaiku teknologi kanggo nambah kinerja sistem piranti lunak sing nggunakake bytecode kanthi cara nglumpukake bytecode menyang kode mesin utawa menyang format liyane langsung nalika program mlaku. "Resmi" ing Jawa nganti versi 9 mung ana kompiler JIT. Ing Jawa 9, kompiler liyane wis muncul, lan kompilasi luwih dhisik (AoT). Fitur iki ngidini kelas Java dikompilasi dadi kode asli sadurunge mlaku ing mesin virtual. Fitur iki dirancang kanggo nambah wektu wiwitan kanggo aplikasi cilik lan gedhe, kanthi pengaruh winates ing kinerja puncak. |
Kanggo pemroses
CISC , sawetara instruksi bisa digabung dadi struktur sing luwih kompleks sing didhukung prosesor, lan kanggo
RISC , sebaliknya, bisa dipérang dadi urutan instruksi sing luwih prasaja.
Uga OS virtual
Nanging, kode byte ngemot ora mung instruksi prosesor. Iku uga ngandhut logika kanggo sesambungan karo sistem operasi virtual, kang ndadekake prilaku aplikasi sawijining saka sistem operasi digunakake ing komputer. Iki katon kanthi jelas ing
JVM , ing ngendi bisa digunakake karo telpon sistem lan
GUI asring independen saka OS sing program kasebut mlaku. Umumé,
JVM niru peluncuran proses program, ora kaya solusi kaya
Virtual Box , sing mung nggawe sistem/perangkat keras virtual.
Apa JVM mung kaya iki?
Mesthi ora.
DotNet CLI sing padha uga mesin virtual, sing paling kerep digunakake ing komputer sing nganggo
Windows karo prosesor sing kompatibel karo x86. Nanging, ana implementasine kanggo sistem liyane: aplikasi kanggo iku kudu mbukak ing
Windows RT mlaku ing
ARM (RISC) prosesor kompatibel, utawa sampeyan bisa mbukak ing
Linux / OSX ing lingkungan
Mono , kang pihak katelu (lan mulane. ora kompatibel) implementasine
DotNet kanggo platform kasebut. Dadi platform iki, kaya
JVM , mlaku ing prosesor sing beda lan OS sing beda. Ana akeh solusi sing padha (loro lawas lan anyar):
LLVM ,
Flash SWF , lan liya-liyane. Sawetara basa pamrograman duwe mesin virtual dhewe. Contone,
CPython nglumpukake sumber
PY menyang file
PYC - kompilasi kode byte sing disiapake kanggo mbukak ing
PVM . Utawa ana conto sing luwih lawas -
Lisp bisa dikompilasi menyang file
FASL (Fast Load). Ing kasunyatan, padha ngemot
wit AST dibangun dening generator saka kode sumber. File kasebut bisa diwaca lan dieksekusi dening interpreter
Lisp ing macem-macem platform, utawa digunakake kanggo ngasilake kode mesin kanggo arsitektur hardware sing saiki digunakake.
GO TO FULL VERSION