Java bilen ýaňy tanşyp başlaýanlarda köplenç
maşyn kody we
baýt kody düşünjeleri bar . Olar näme? Tapawutlar näme? Gysga bellikde, bu meseläni bir gezek ýapmak üçin olaryň aýratynlyklaryny mümkin boldugyça ýönekeý we düşnükli suratlandyrmaga synanyşarys.
Maşyn kody
Prosessor , aslynda gaty çylşyrymly we ösen kalkulýator. Onda dürli matematiki we baýt amallary ýerine ýetirilýän köp sanly ýat ýeri (registr diýilýär) bar. Maşyn kody, amallaryň yzygiderliliginiň we degişli maglumatlar toplumynyň takyk beýanydyr. Aslynda, kompýuteriňiziň prosessorynyň düşünýän ýeke-täk dili.
Dogabitdi gabat gelmezlik
Mundan başga-da, prosessorlaryň hemmesi bir dilde “gürlänok”.
Diňe GDA we
RISC arhitekturasynyň arasynda däl , eýsem bu “lagerleriň” arasynda hem tapawutlar bar .
CISC (Çylşyrymly görkezme toplumy hasaplaýyş), aşakdaky häsiýetler toplumy bilen häsiýetlendirilýän prosessor dizaýn düşünjesidir:
- uzynlygy boýunça köp buýruk;
- köp sanly reesim;
- çylşyrymly görkezme kodlamagy.
RISC (Azaldylan görkezme toplumy hasaplaýyş) - peseldilen görkezme toplumy bolan prosessor. Buýruklar ýönekeý kodlamak bilen birmeňzeş formatda, gysga. |
Prosessorlaryň täze nesilleri köne nesil modellerine ýönekeý bolmadyk goşmaça görkezmeler toplumyny hödürleýärler. Şol sebäpli bir arhitektura (ýa-da bir nesil prosessor) üçin düzülen programmalar beýleki enjamlarda işläp bilmeýär. Bularyň hemmesi, beýleki kompýuterlerde işlemegini üpjün etmek üçin programmalary täzeden düzmäge mejbur edýär. Şeýle-de bolsa, diňe prosessorlar sebäpli däl, eýsem programmalaryň we operasiýa ulgamynyň özara täsirindäki tapawutlar sebäpli hem täzeden düzmeli. Şol sebäpli Linux-da “Windows”, Windows-da bolsa “Linux” programmasyny işletmek mümkin däl.
Bytekod
Bytecode köp tarapdan maşyn koduna meňzeýär, diňe hakyky prosessordan däl-de, wirtualdan görkezmeler toplumyny ulanýar. Mundan başga-da, programmanyň işleýän hakyky prosessory üçin buýruklaryň ýerine ýetirilişini optimallaşdyrýan
JIT düzüjisini ulanmaga gönükdirilen bölümleri öz içine alyp biler .
JIT düzülişi (Diňe wagtynda düzmek, uçuşda düzmek) ýa-da dinamiki düzmek (dinamiki terjime), kod koduny maşyn koduna ýa-da başga bir formata gönüden-göni ulanyp, baýt koduny ulanýan programma üpjünçiliginiň işleýşini ýokarlandyrmak üçin tehnologiýa. programma işleýär. Java-da “resmi” 9-njy wersiýa çenli diňe JIT düzüjisi bardy. Java 9-da başga bir düzüji peýda boldy we öňünden düzülýär (AoT). Bu aýratynlyk, Java synplaryny wirtual maşynda işlemezden ozal ýerli koda jemlemäge mümkinçilik berýär. Bu aýratynlyk, iň ýokary öndürijilige çäkli täsir edip, kiçi we uly programmalar üçin başlangyç wagtyny gowulandyrmaga niýetlenendir. |
CISC prosessorlary üçin käbir görkezmeler prosessor tarapyndan goldanýan has çylşyrymly gurluşlara birleşdirilip bilner we
RISC üçin tersine, has ýönekeý görkezmelere bölünip bilner.
Şeýle hem wirtual OS
Şeýle-de bolsa, baýt kody diňe prosessor görkezmelerini öz içine almaýar. Şeýle hem, programmanyň özüni alyp barşyny kompýuterde ulanylýan operasiýa ulgamyndan garaşsyz edýän wirtual operasiýa ulgamy bilen täsirleşmek üçin logika bar. Bu ulgam jaňlary we
GUI köplenç programmanyň işleýän OS-dan garaşsyz bolan
JVM -de aýdyň görünýär . Umuman aýdanyňda,
JVM diňe wirtual ulgam / apparat döredýän
Wirtual Box ýaly çözgütlerden tapawutlylykda programma prosesiniň başlamagyny öýkünýär .
JVM şuňa meňzeşmi?
Elbetde ýok. Şol bir
DotNet CLI wirtual maşyn bolup, köplenç x86 gabat gelýän prosessorlary bolan Windows işleýän kompýuterlerde ulanylýar . Şeýle-de bolsa, beýleki ulgamlar üçin ýerine ýetiriş bar: munuň üçin amaly programmalar
ARM (RISC) gabat gelýän prosessorlarda işleýän
Windows RT- de işlemeli ýa-da üçünji tarap bolan
Mono gurşawynda
Linux / OSX- da işledip bilersiňiz (we şonuň üçin) doly gabat gelmeýär) bu platformalar üçin
DotNet- iň durmuşa geçirilmegi . Şonuň üçin bu platforma,
JVM ýaly dürli prosessorlarda we dürli OS-lerde işleýär. Has meňzeş çözgütler bar (köne we täze):
LLVM ,
Flash SWF we başgalar. Käbir programmirleme dilleriniň öz wirtual maşynlary bar. Mysal üçin,
CPython PY çeşmelerini
PYC faýllaryna jemleýär -
PVM -de işlemäge taýyn baýt kody . Ora-da has köne mysal bar -
Lisp FASL (Fast Load) faýllaryna jemlenip bilner . Aslynda, deslapky koddan generator tarapyndan gurlan
AST agajy bar. Bu faýllary Lisp terjimeçisi tarapyndan dürli platformalarda okap we ýerine ýetirip bolýar ýa-da häzirki ulanylýan enjam arhitekturasy üçin maşyn kody döretmek üçin ulanyp bolýar.
GO TO FULL VERSION