Array ( [0] => 14918421 [id] => 14918421 [1] => cswiki [site] => cswiki [2] => Bajtkód [uri] => Bajtkód [3] => [img] => [4] => [day_avg] => [5] => [day_diff] => [6] => [day_last] => [7] => [day_prev_last] => [8] => Bajtkód je převážně označení pro kód, který pracuje na úrovni jednoho bajtu. Bajtkód bývá často používán jako jazyk meziproduktu při překladu vyšších programovacích jazyků překladači. Dále se bajtkód využívá v některých interpretech, které přímo provádějí vykonávání bajtkódu bez překladu na strojový kód. Používání bajtkódu přináší pro vývoj programů několik výhod. Jeho použití umožňuje, aby programy byly snadno přenositelné mezi různými operačními systémy a hardwarovými platformami. Kód v bajtkódu je často méně rozsáhlý než ekvivalentní kód v jiném formátu. Dále bajtkód umožňuje lepší optimalizaci kódu, která může zlepšit výkon programu. Příkladem jazyka s bajtkódem je Java, která kód kompiluje do bajtkódu a ten je následně interpretován nebo kompilován JIT technikou na strojový kód. Dalším příkladem je Python, který také používá bajtkód při vykonávání programů. Bajtkód se používá také v některých virtuálních strojích, které emulují určité hardwarové prostředí. Tyto virtuální stroje často používají bajtkód pro překlad programů do strojového kódu v reálném čase. Celkově lze tedy říci, že bajtkód je praktickým nástrojem při překladu a vykonávání programů. Díky svým výhodám je hojně využíván v moderním softwarovém vývoji a je nedílnou součástí mnoha programovacích jazyků a interpretrů. [oai] => Bajtkód je převážně označení pro kód, který pracuje na úrovni jednoho bajtu. Bajtkód bývá často používán jako jazyk meziproduktu při překladu vyšších programovacích jazyků překladači. Dále se bajtkód využívá v některých interpretech, které přímo provádějí vykonávání bajtkódu bez překladu na strojový kód. Používání bajtkódu přináší pro vývoj programů několik výhod. Jeho použití umožňuje, aby programy byly snadno přenositelné mezi různými operačními systémy a hardwarovými platformami. Kód v bajtkódu je často méně rozsáhlý než ekvivalentní kód v jiném formátu. Dále bajtkód umožňuje lepší optimalizaci kódu, která může zlepšit výkon programu. Příkladem jazyka s bajtkódem je Java, která kód kompiluje do bajtkódu a ten je následně interpretován nebo kompilován JIT technikou na strojový kód. Dalším příkladem je Python, který také používá bajtkód při vykonávání programů. Bajtkód se používá také v některých virtuálních strojích, které emulují určité hardwarové prostředí. Tyto virtuální stroje často používají bajtkód pro překlad programů do strojového kódu v reálném čase. Celkově lze tedy říci, že bajtkód je praktickým nástrojem při překladu a vykonávání programů. Díky svým výhodám je hojně využíván v moderním softwarovém vývoji a je nedílnou součástí mnoha programovacích jazyků a interpretrů. [9] => [is_good] => [10] => [object_type] => [11] => 0 [has_content] => 0 [12] => [oai_cs_optimisticky] => ) Array ( [0] => {{neověřeno}} [1] => '''Bajtkód''' neboli '''{{Cizojazyčně|en|byte code}}''' [bait kəud] ('''p-code''' [ˈpiː ˌkəud], {{Vjazyce2|en|'''portable code''' [ˈpoːtəbl kəud]}}, „přenositelný kód“) je v [[Informatika|informatice]] označení pro různé formy [[Instrukční sada|instrukčních sad]] navržených pro realizaci snadno [[Portace softwaru|přenositelných]] aplikací a jejich efektivní běh na libovolné [[Počítačová platforma|platformě]]. Zřejmě nejznámějším [[Programovací jazyk|programovacím jazykem]] využívajícím bajtkód je [[Java (programovací jazyk)|Java]]. Na cílovém počítači je nutné nainstalovat [[běhové prostředí]], které zajistí prostředí pro spuštění bajtkódu. [2] => [3] => == Charakteristika == [4] => Název bajtkód pochází z instrukčních sad, které mají vyhrazený jeden byte pro instrukci následovaný volitelnými parametry. Co se týče čitelnosti a úrovně abstrakce kódu, je bajtkód na hranici mezi kódem [[vyšší programovací jazyk|vyššího programovacího jazyka]] a strojovým kódem. Jeho cílem je usnadnit interpretaci kódu interpretem nebo snížit závislost na hardware a operačním systému. Díky tomu může stejný kód běžet na různých [[Počítačová platforma|platformách]] často pomocí [[Virtuální stroj|virtuálních strojů]], nebo může být před spuštěním zkompilován do strojového kódu cílové platformy, což umožní rychlejší běh kódu. [5] => [6] => Na rozdíl od čitelných{{Ujasnit}} kódů je bajtkód kompaktní číselný kód konstant, odkazů (číselné adresy) a [[Strojový kód#Operační kód|operačních kódů]] instrukcí a jako takový kóduje výsledek [[Syntaktická analýza|parsování]] a [[Sémantická analýza|sémantické analýzy]]. Díky tomu je jeho interpretace rychlejší než přímá interpretace původního [[Zdrojový kód|zdrojového kódu]]. Různé části kódu se mohou nacházet v různých souborech, které jsou dynamicky načítány za běhu. [7] => [8] => == Běh kódu == [9] => [[Interpret (software)|Interpret]] bajtkód nejprve parsuje, čímž získá instrukce, které následně sám jednu po druhé vykonává. Tento způsob zajišťuje přenositelnost interpretu. Další možností jsou dynamické překladače nebo [[Just-in-time kompilace|Just-in-time kompilátory]] ('''JIT'''), které přeloží bajtkód do strojového kódu, který je následně proveden přímo procesorem. Běh takové aplikace je pak velmi rychlý, ale ztrácí se přenositelnost virtuálního stroje (ne však bajtkódu). Příkladem je jazyk [[Java (programovací jazyk)|Java]], kde kód programu je typicky uložen v bajtkódu. Při spuštění programu na virtuálním stroji je bajtkód přeložen do strojového kódu a následně vykonán. Dojde sice k prodlevě při spouštění aplikace, ale zato zvýšení výkonu za běhu programu. [10] => [11] => Díky vyššímu výkonu tohoto přístupu je často i kód skriptovacích jazyků prováděn ve dvou krocích. V prvním kroku je kód programu přeložen do bajtkódu a předán virtuálnímu stroji. V druhém kroku virtuální stroj přeloží bajtkód do strojového kódu a spustí program. Tohoto přístupu využívají jazyky [[Java (programovací jazyk)|Java]], [[Python]], [[PHP]] a další. [12] => [13] => == Javovský bajtkód == [14] => Bajtkód jazyku Java vyžívá prefixové/suffixové konvence v názvu instrukcí pro označení datového typu parametrů (např. i: integer). Instrukce lze rozdělit do několika skupin podle využití: [15] => * Načtení a uložení (aload_0, istore, …) [16] => * Aritmetické a logické (ladd, fcmpl, …) [17] => * Konverze datových typů (i2b, d2i, …) [18] => * Vytváření objektů a manipulace (new, putfield, …) [19] => * Management zásobníku (swap, dup2, …) [20] => * Přesuny v kódu (ifeq, goto, …) [21] => * Volání metod a návraty (invokespecial, areturn, …) [22] => [23] => === Ukázka bajtkódu === [24] => [25] => outer: [26] => for (int i = 2; i < 1000; i++) { [27] => for (int j = 2; j < i; j++) { [28] => if (i % j == 0) continue outer; [29] => } [30] => System.out.println(i); [31] => } [32] => [33] => [34] => Kompilátor jazyku Java by mohl výše uvedený kód přeložit do bajtkódu následovně: [35] => [36] => 0: iconst_2 [37] => 1: istore_1 [38] => 2: iload_1 [39] => 3: sipush 1000 [40] => 6: if_icmpge 44 [41] => 9: iconst_2 [42] => 10: istore_2 [43] => 11: iload_2 [44] => 12: iload_1 [45] => 13: if_icmpge 31 [46] => 16: iload_1 [47] => 17: iload_2 [48] => 18: irem [49] => 19: ifne 25 [50] => 22: goto 38 [51] => 25: iinc 2, 1 [52] => 28: goto 11 [53] => 31: getstatic #84; //Pole java/lang/System.out:Ljava/io/PrintStream; [54] => 34: iload_1 [55] => 35: invokevirtual #85; //Metoda java/io/PrintStream.println:(I)V [56] => 38: iinc 1, 1 [57] => 41: goto 2 [58] => 44: return [59] => [60] => == Příklady == [61] => * [[ActionScript]] je vykonáván v ActionScript Virtual Machine (AVM), což je součást Flash Player a AIR. Kód ActionScript je typicky zkompilován do bajtkódu formátu pomocí kompilátoru. Adobe Flash Professional a Adobe Flash Builder obsahují takovéto kompilátory a jsou dostupné via Adobe Flex SDK. [62] => * [[Adobe Flash]] objekty. [63] => * [[BANCStar programming language|BANCStar]], původně bajtkód pro nástroj pro tvorbu interface používaný jako právoplatný jazyk. [64] => * [[Byte Code Engineering Library]] [65] => * [[Java Virtual Machine#C to bytecode compilers|C to Java Virtual Machine compilers]]. [66] => * [[CLISP]] implementace jazyku [[Common Lisp]] kompiluje pouze do bajtkódu [67] => * [[CMUCL]] a [[Scieneer Common Lisp]] implementace jazyku [[Common Lisp]] mohou kompilovat do bajtkódu nebo do nativního kódu (bajtkód je mnohem více kompaktnější). [68] => * Dalvik bytecode, navržený pro platformu [[Android (operační systém)|Android]], prováděný [[Dalvik virtual machine]]. [69] => * [[EiffelStudio]] pro programovací jazyk [[Eiffel (programovací jazyk)|Eiffel]]. [70] => * [[Emacs]] je textový editor jehož větší část funkcionality je implementována pomocí jazyku [[Lisp]]. Tyto prvky jsou kompilovány do bajtkódu. Tato architektura umožňuje uživatelům upravovat editor pomocí vyššího jazyka, který po kompilaci do bajtkódu je poměrně efektivní. [71] => * [[Embeddable Common Lisp]] implementace jazyka [[Common Lisp]] umožňuje kompilaci do bajtkódu nebo kódu jazyka C. [72] => * Ericsson implementace jazyka [[Erlang (programovací jazyk)|Erlang]] využívá [[Erlang BEAM bytecode|BEAM bytecode]]. [73] => * programovací jazyk [[Icon (programming language)|Icon]]. [74] => * [[Infocom]] používá [[Z-machine]] pro vyšší přenositelnost jeho aplikací. [75] => * [[Java bytecode]], který je prováděn na [[Java Virtual Machine]]. [76] => ** [[ObjectWeb ASM|ASM]] [77] => ** [[BCEL]] [78] => ** [[Javassist]] [79] => ** [[JMangler]] [80] => * [[LLVM]], modulární bajtkód kompilátor a virtuální stroj. [81] => * [[Lua]], využívající registrově založený virtuální stroj, rovněž kompiluje LUAC formy skriptů pro malé rychlé systémy, které nemusí obsahovat kompilátor. [82] => * m-code, kód jazyka [[MATLAB]]. [83] => * [[Managed code]] stejně tak [[.NET|Microsoft .NET]] [[Common Intermediate Language]], vykonávané .NET [[Common Language Runtime]] (CLR). [84] => * [[O-code machine|O-code]] programovacího jazyka [[BCPL]]. [85] => * Jazyk [[Objective Caml]] (Ocaml) volitelně kompiluje do kompaktní formy bajtkódu. [86] => * [[p-code machine|p-code]] of [[UCSD Pascal]] implementation of the [[Pascal (programovací jazyk)|Pascal]] programming language. [87] => * [[Parrot virtual machine]] [88] => * [[R (programovací jazyk)|R prostředí pro statistické výpočty]] nabízí kompilátor do bajtkódu díky balíčku, standardem od verze 2.13.0. [89] => * [[Scheme 48]] implementace jazyka [[Scheme]] využívající bajtkód interpreta. [90] => * Bytecode velkého množství implementací jazyka [[Smalltalk]]. [91] => * Interpret [[Spin (programovací jazyk)|SPIN]] vestavěný v [[Parallax, Inc. (company)|Parallax]] [[Parallax Propeller|Propeller]] [[Microcontroller]]. [92] => * [[SWEET16]] [93] => * [[Visual FoxPro]] kompiluje do bajtkódu. [94] => * [[YARV]] a [[Rubinius]] pro jazyk [[Ruby]]. [95] => [96] => {{Autoritní data}} [97] => [98] => [[Kategorie:Systémový software]] [99] => [[Kategorie:Programovací jazyky]] [] => )
good wiki

Bajtkód

More about us

About

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.

You might be interested in

,'Common Lisp','Java (programovací jazyk)','Počítačová platforma','vyšší programovací jazyk','Parallax, Inc. (company)','Microcontroller','Scheme 48','Smalltalk','UCSD Pascal','Parrot virtual machine','O-code machine','Rubinius'