Hlavní navigace

Odpověď na názor

Odpovídáte na názor ke článku Sedíte v zlom vlaku (Linux & MS).

  • 10. 10. 2008 15:06

    Lael Ohpir (neregistrovaný)

    [225] .NET není interpretovaný, stejně tak (už pěkných pár let) ani Java. Zdroják se kompiluje do CIL (nebo bytecode v případě Javy), a tak se dodává. Při instalaci se přeloží z byte code do strojáku pro cílovou platformu (u Javy asi ještě pořád až při spuštění). Na základě vyhodnocení běhu aplikace se potom může provést další překlad s optimalizací, viz Java hotspots a obdoba v .NETu.

    Managed code ale hlavně umožňuje se v CIL (bytecode) ujistit, že aplikace dodržuje nějaká pravidla. Například zjistíte, jestli používá to či ono API, nebo jestli nemění svůj kód za běhu zápisem do kódového segmentu (což managed jazyk ani neumožňuje). V případě programu ve strojáku nezjistíte vůbec nic, resp. ne spolehlivě (programu sečíst registr AX a BX, provést skok na výslednou adresu, a veškerá analýza končí; prosté trasování nelze, protože vede na obdobu halting problemu).

    No a Singularity tyhle vlastnosti maaged code využívá k tomu, že z CIL (bytecode) pozná, jestli program například nehrabe mimo vlastní adresní prostor, která API volá, atd. Pokud je program v pořádku, tak ho přeloží do strojáku, u kterého je zaručeno, že určitě nehrabe mimo vlasní adresní prostor, nehrabe mimo hranice polí, nepoužívá API které nemá používat atd. Takový kód je o trochu pomalejí, než klasický stroják. Ale pointa je v tom, že díky jeho zaručeným vlastnostem nepotřebuje oddělení pomocí modelu procesů. Singularity běží komplet v kernel mode, a to, že programy nehrabou kam nemají, je zajištěno kontrolou při překladu (plus samozřejmě konstrukcemi jazyka). A to velmi snižuje režii context switche, a tedy zrychluje kód. Proto je nakonec výsledek srovnatelný s klasickým kódem.

    V důsledku máte systém, který je bezpečný, stabilní, a rychlý srovnatelně s "divokým" strojákem. Jde o změnu principů, které se používají od doby MULTICSu. A za pár let takový systém zřejmě budete mít na stole.

    Corel zkoušel portovat Corel Office na Javu. Resp. ho přepisoval do Javy. Problém byl v tom, že Java v té době byla velmi chudá na funkčnost. Neuměla tisknout (pánové zapisovali generovaný postscript do portu lpt1: či unixových ekvivalentů), neuměla zacházet s fonty (Corel Office proto uměl jen tři fonty), byla neskutečně pomalá, a protože ještě neexistovaly JAR archivy, tak se po disku válely tisíce malých .class souborů, které díky blokové alokaci na FS zabíraly skoro tolik, co tehdejší MS Office. Corel pak zcela správně Office for Java zastavil.