Java (platforma)

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Platforma Java je sada několika produktů počítačového softwaru a specifikací společnosti Sun Microsystems (která se později sloučila s Oracle Corporation). Společně poskytují systém pro vývoj aplikačního softwaru a vyvíjejí ji jako multiplatformní software. Java se používá v širokém spektru počítačových platforem od vestavěných systémů a mobilních telefonů, až po podnikové servery a superpočítače na vysoké úrovni. I když je to méně časté, jsou Java applety někdy používány k lepší a bezpečnější funkcí při prohlížení Webu na klasických počítačích.

Psaní v programovacím jazyce Java je hlavní cesta, jak získat Java bytecode. Existují však, bytekódové překladače, které jsou k dispozici i pro jiné jazyky jako jsou Ada, JavaScript, Python nebo Ruby. Několik nových jazyků jako je Scala, Clojure a Groovy, bylo navrženo i pro nativní provoz na Java Virtual Machine (dále JVM). Java syntaxe je podobná jako u programovacího jazyka C a C++, ovšem objektově orientované rysy jsou odvozené podle objektově založených jazyků Smalltalk a Objective-C.[1] Java odstraňuje některé nízkoúrovňové konstrukce, jako jsou ukazatelé a má velmi jednoduchý model paměti, kde je každý objekt alokován v haldě (ta je součásti ve správě paměti), a kde všechny proměnné objektových typů jsou vlastně reference. Správa paměti je řešena pomocí integrovaného automatického Garbage collectoru prováděného JVM.

Dne 13. listopadu 2006, firma Sun Microsystems zveřejnila většinu své implementace Javy, která je dostupná pod GNU General Public License (GPL).[2][3]

Historie[editovat | editovat zdroj]

Java platforma a programovací jazyk Java začaly v roce 1990 jako interní projekt firmy Sun Microsystems, se záměrem vývoje alternativy k programovacím jazykům C++/C. Patrick Naughton byl frustrován ze stavu rozhraní pro jazyk Sun C++ a jazyk C. Naughtonovi byla nabídnuta možnost začít pracovat na nové technologii a tímto odstartoval projekt Stealth. Stealth projekt byl brzy přejmenován a připojil se k Jamesovi Gosligovi a Mikovi Sheridanovi. Spolu s dalšími inženýry začali svou práci v malé kanceláři ve městě Menlo Park v Kalifornii. Snažili se společně vyvinout novou technologii pro programování nové generace inteligentních spotřebičů, kterými si chtěl Sun zajistit majoritu na trhu. Tým původně pracoval za pomocí C++, ale to bylo odmítnuto z několika důvodů. Vzhledem k tomu, že vyvíjeli integrovaný systém s omezenými zdroji, rozhodli se, že C++ potřebuje až příliš paměti a jeho složitost vedla k chybám vývojáře. Tým byl znepokojen s nedostatky jazyků u přenosových zařízení, a proto chtěli konečně zařízení, které by se dalo portovat na všechny typy zařízení. Bill Joy představil nový jazyk, který kombinoval Mesu a C a uměl vytvářet objektově orientované prostředí založené na C++. Ze začátku se Gosling pokusil změnit a rozšířit C++, ale brzy ho opustil ve prospěch tvorby nového jazyka. V létě 1992 byli schopni představit část nové platformy, která obsahovala knihovny a hardware. Jejich první pokus byl zaměřen na budovaní osobního digitálního asistenta (PDA), který měl grafické rozhraní a inteligentní prostředek s názvem „Duke“, který měl pomoci uživateli. Ještě ten rok v listopadu byl projekt Green ukončen, aby se jeho tým mohl připojit k projektu Firstperson, který se měl zabývat o vysoce interaktivní zařízení. Time Warner podal žádost o návrh (RFP) pro set-top box, a proto tým Firstperson změnil své cíle a začal pracovat s návrhem na set-top box platformě. Firma 3DO company byla další společností, která pracovala s návrhem pro set-top box, ale neuspěli stejně jako Firstperson.

Platforma[editovat | editovat zdroj]

Platforma Java je název pro soubor programů od Sun Microsystems, které umožňují vývoj a spouštění programů napsaných v programovacím jazyce Java. Tato platforma není specifická jen pro jeden procesor nebo operační systém, ale kompilátor se sadou knihoven je realizovány pro různý hardware a různé operační systémy tak, aby programy v jazyce Java mohly běžet nezávisle na platformě. Tohoto výsledku dosahuje pomocí virtualizace.

Java se skládá z několika dílčích programů a každý z nich má pak zásadní vliv na celkové vlastnosti. Například: Java kompilátor (compiler), který převádí zdrojový kód Javy do bajtového kódu Javy (přechodový kód pro JVM) a je k dispozici jako součást JDK (Java Development Kitu), Java Runtime Environment (běhové prostředí Javy), doplňuje JVM o just-in-time kompilátor, který převádí přechodný byte code Javy do nativního kódu a to přímo za běhu programu, součástí platformy Java je také rozsáhlá sada knihoven.

Jednotlivé dílčí platformy sdílejí společné koncepty, kterými jsou:

Java Virtual Machine[editovat | editovat zdroj]

Podrobnější informace naleznete v článku Java Virtual Machine.

Java Virtual Machine, je hlavní součásti platformy Java a vykonává samotný Java bajt kód aplikace. Tento bytový kód je stejný bez ohledu na to, na jakém hardwaru nebo operačním systému je samotný program spuštěn. Součástí JVM, je i kompilátor Just-In-Time (JIT) „právě v čas“, který ukládá nativní kód v paměti při spuštění a hlavně za běhu programu překládá Java bytový kód do nativních procesorových instrukcí.

Použití bajtového kódu jako zprostředkující jazyka umožňuje Java programu spustit se na libovolné platformě, která má pomocí funkce virtualizace podporu virtuálního stroje. Použití kompilátoru Just-In-Time způsobí většinou programu krátkou prodlevu při načítání, ale poté programy v Javě běží téměř rychle jako nativní programy. Toto opoždění je někdy nazváno jako startup delay a obecně platí, že čím více optimalizace JIT provádí, tím lepší kód vygeneruje, ale tím se úměrně zvětší počáteční zpoždění. Proto JIT kompilátor musí dělat kompromis mezi dobou potřebnou pro optimalizaci překladu a kvalitou kódu, který má vygenerovat. Ačkoli Java programy fungují napříč různými platformami (jsou platformě nezávislé), kód Java Virtual Machines (JVM), který tyto programy provádí, tuto vlastnost postrádá, každý podporovaný operační platforma tedy musí mýt svůj vlastní JVM.

Knihovny[editovat | editovat zdroj]

Ve většině moderních operačních systémů, je velká skupina opakovaně se používaného kódu v jednotlivých programech soustředěna do dynamických knihoven, ve snaze zjednodušit práci programátora je tento kód pak zpravidla poskytován jako služba, kterou aplikace může volat. Vzhledem k tomu, že platforma Java není závislá na konkrétním operačním systému, se aplikace nemůže spoléhat na žádnou z již existujících knihoven OS. Místo toho, platforma Java poskytuje sadu vlastních komplexní standardních tříd knihoven, které obsahují mnoho stejných funkcí jako běžně se vyskytující dynamické knihovny v moderních OS. Většina systémových knihoven je také napsána v Javě. Například, knihovna Swing sama vykresluje uživatelské rozhraní a zpracovává události, což eliminuje mnoho jemných rozdílů mezi různými platformami.

Zabezpečení[editovat | editovat zdroj]

Platforma Java poskytuje bezpečnostní architektury, které jsou navrženy tak, aby se uživateli nedůvěryhodný spustitelný kód spouštěl v izolovaném prostředí (tzv. sandbox), které má uživatelé chránit před škodlivým nebo špatně napsaným softwarem. Tento sandbox je určen k ochraně uživatele tím, že omezí přístup k některým funkcím platformy a rozhraním API, které může být zneužito malwarem, jako je například přístup na místní souborový systém. V posledních letech výzkumníci zjistili četné bezpečnostní nedostatky v některých široce využívaných implementací Javy včetně původní implementace od firmy Oracle, které umožňují nedůvěryhodnému kódu obejít mechanismus sandboxu a tím vystavuje uživatelé škodlivým útokům. Tyto chyby ovlivňují pouze aplikace Java, které spouštějí libovolný nedůvěryhodný bytecode, jako jsou pluginy nebo webový prohlížeč, který stahuje běžící applety Javy z veřejných internetových stránek. Dne 31.srpna 2012 byla zjištěna vážná bezpečnostní chyba u programu Java 6 a 7 na systémech Windows, Mac OS X a Linux, která umožnila vzdálené napadení pouhým načtením škodlivé webové stránky. U Javy 5 byla později zjištěna stejná závada. Dne 10. ledna 2013 tři počítačový specialisté mluvili negativně o Javě, že není bezpečná a že by se měla zakázat. Na to Společnost Oracle oznámila plány opravy kritických míst spojených s bezpečností Javy. Dne 14. ledna 2013 bezpečnostní experti řekli, že aktualizace stále nedokáže ochránit počítače před napadením. Tato výzva přiměla ministerstvo vnitřní bezpečnosti vydat doporučení uživatelům, aby zakázali nebo odinstalovali Javu.

Podobná platforma[editovat | editovat zdroj]

V roce 2002 se objevil NET Framework, který zahrnuje mnoho úspěšných aspektů Javy. NET Framework by založen na podporu více programovacích jazyků, zatímco platforma Java byla původně postavena pouze na podporu jazyku Java. NET Framework zahrnuje Javu jako jazyk s názvem Visual J# (dříve s názvem J++), který je v rozporu se specifikací Javy a souvisejícími třídními knihovnami většinou sahá až do starého verze JDK 1.1.

Reference[editovat | editovat zdroj]

  1. NAUGHTON, Patrick. Java Was Strongly Influenced by Objective-C [online]. . Dostupné online. (anglicky) 
  2. Sun Opens Java [online]. Sun Microsystems, 13 November 2006. Dostupné online. (anglicky) 
  3. Kelly O'Hair. OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed [online]. Oracle Corporation, December 2010, [cit. 2011-11-25]. Dostupné online. (anglicky)