Běhové prostředí

Z Wikipedie, otevřené encyklopedie

Běhové prostředí (anglicky run-time system) je v informatice skupina software, určená na podporu realizace počítačových programů napsaných v některém z programovacích jazyků. Toto běhové prostředí poskytuje softwarové služby jako podprogramy a knihovny pro společné operace, provádění příkazů programovacího jazyka, typové kontroly, ladění a dokonce i generování a optimalizace kódu.

Některé služby běhového prostředí jsou často přístupná programátorovi skrz API (Aplication programming interface), ale některé služby (jako například plánování procesů a řízení zdrojů) mohou být nepřístupné.

Běhové prostředí zbavuje programátory břemene psaní kódu pro světské úkoly, jako je kreslení textu na obrazovku nebo připojení k internetu. Poskytuje taky abstraktní vrstvu, která skrývá složitost nabízených služeb operačního systému.

Běhový systém může v některých případech sloužit jako P-code prostředí nebo virtuální prostředí, které skrývá instrukční sadu procesoru. To je přístup, kterého využívá mnoho interpretovaných jazyků, jako je Awk a některé další jako Java, která je kompilována do některého strojově nezávislého pseudo-kódu („byte kódu“). Toto metoda výrazně zjednodušuje adaptaci programovacího jazyka na různé platformy a a navíc umožňuje další vlastnosti jazyka jako je reflexe. To dovoluje vykonávání programu na každém počítači bez nutnosti rekompilace. To je velmi důležité pro rozšíření webových aplikací.

.NET Framework a řízené běhové prostředí

Většina aplikací, které jsou vytvořeny například v jazyce C++ jsou kompilovány přímo pro danou platformu (nejčastěji Win32 u operačních systémů Windows, ale mohou to samozřejmě být i jiné). Zdrojový kód je kompilací převeden do strojového kódu počítače. To ve výsledku přináší velmi dobrou rychlost běhu výsledné aplikace. Tento způsob ovšem nese i určité nevýhody jako nepřenositelnost mezi jednotlivými platformami, popřípadě verzemi operačních systémů a nezřídka jsou k vidění chyby v přístupech do operační paměti.

.NET Framework obsahuje řízené běhové prostředí (podobně jako známá platforma Java firmy Sun Microsystems). Princip spočívá v tom, že řízené běhové prostředí přidává k převodu zdrojového kódu do strojového kódu ještě jednu vrstvu. Tuto vrstvu představuje mezikód, do kterého jsou kompilovány zdrojové kódy z vývojového prostředí jako například Microsoft Visual Studio. Programovacím jazykem je nejčastěji C# nebo Visual Basic .NET, ale může jím být kterýkoliv pro který existuje kompilátor do byte kódu. Kód je závislý na běhovém prostředí a je nazýván mezilehlý (intermediate), protože výsledkem kompilace nejsou instrukce procesoru, ale instrukce, které běhové prostředí může později do těchto instrukcí přeložit.

Tento převod je realizován na cílové platformě vždy při spuštění konkrétní aplikace. Překlad s sebou nese nevýhodu vyšší náročnosti na výkon uživatelského počítače, a proto se tento způsob nepoužívá pro výpočetně náročné aplikace (jako například počítačové hry). Častější použití je u obchodních aplikací. Tento nedostatek ovšem řeší JIT kompilace, což znamená že při spuštění aplikace nedochází ke kompletnímu překladu celé aplikace najednou, ale je převedena pouze potřebná část mezikódu. Navíc při opětovném použití této přeložené části se spustí již zkompilovaná podoba bez potřeby nové kompilace.

Běhové prostředí zde vystupuje jako služba, poskytující framework pro přístup do mezilehlého kódu. Tato služba interpretuje mezilehlý kód a poté poskytuje strukturu pro provoz na operačním systému. Rovněž stanovuje správu paměti, řízení procesů a obsluhu vstupně/výstupních zařízení. V mnoha případech běhový systém jednoduše poskytuje abstraktní vrstvu pro programátora, aby měl přístup ke všem možnostem Windows API.

Historie

V programovacím jazyce vFortran byl běhový systém v podstatě složen ze standardních knihoven podprogramů, jako například Sqrt() (druhá odmocnina).

Rané příklady běhových systémů jsou ve formě interpretů pro BASIC a Lisp. Ty rovněž obsahovaly garbage collector. Forth je příklad jazyka, který byl navržen pro kompilaci do pseudokódu; v tomto případě byl běhový systém v podobě virtuálního stroje, který interpretoval tento pseudokód.

V jazyce C a pozdějších, které podporovaly dynamickou alokaci paměti, běhové prostředí obsahovalo knihovny, které obsluhovaly paměť programu.

V objektově orientovaných programovacích jazycích bylo běhové prostředí často odpovědné za dynamickou kontrolu datových typů a řešení referencí.