Java (platforma)
Vývojář | Sun Microsystems a Oracle Corporation |
---|---|
První vydání | 23. ledna 1996 |
Aktuální verze | 19 (20. září 2022) |
Operační systém | Microsoft Windows |
Vyvíjeno v | Java |
Typ softwaru | framework a počítačová platforma |
Web | www |
Některá data mohou pocházet z datové položky. |
Platforma Java je sada několika produktů počítačového softwaru a specifikací společnosti Sun Microsystems (později sloučena s Oracle Corporation), umožňující vývoj a spouštění programů napsaných v programovacím jazyce Java. Prostředí Javy je využíváno v širokém spektru počítačových platforem od vestavěných systémů a mobilních telefonů po podnikové servery a superpočítače. Méně často jsou Java applety také používány k lepšímu a bezpečnějšímu prohlížení Webu na klasických počítačích.
Jazyk Java je většinou překládán do mezikódu (konkrétně jde o tzv. bytecode), který je následně za běhu programu interpretován. Přestože bytecode využívá primárně jazyk Java, tak existují bytekódové překladače i pro jiné jazyky, jako jsou např. 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á programovacím jazykům C a C++, ovšem objektově orientované rysy jsou odvozené z objektově založených jazyků Smalltalk a Objective-C.[1] Java odstraňuje některé nízkoúrovňové konstrukce, jako jsou ukazatele. Má velmi jednoduchý model paměti, kde je každý objekt alokován na haldě (ta je součástí správy paměti) a proměnné objektových typů jsou 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 pod copyleftovou licencí 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 Goslingovi 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 realizovaný pro různý hardware a operační systémy tak, aby programy v jazyce Java mohly běžet nezávisle na platformě. Tohoto výsledku dosahuje pomocí virtualizace.
- JavaCard – pro aplikace provozované v rámci tzv. „chytrých“ karet (např. platební a kreditní karty atp.),
- Java ME – pro aplikace provozované na mobilních zařízeních (mobilní telefony, PDA, atp.),
- Java SE – aplikace provozované na stolních počítačích,
- Java EE – aplikace pro podnikové a rozsáhlé informační systémy.
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) převádí zdrojový kód Javy do jejího bajtového kódu (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:
- syntaxe jazyka Java,
- virtuální stroj Javy – Java Virtual Machine (JVM),
- obdobné API standardních knihoven funkcí.
Java Virtual Machine
[editovat | editovat zdroj]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ího 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 nazýváno 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 platformně 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živatele š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 v 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é[kdo?] 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 byl založen na podporu více programovacích jazyků, zatímco platforma Java byla původně postavena pouze na podporu jazyka 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é verze JDK 1.1.
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]- ↑ NAUGHTON, Patrick. Virtual School [online]. [cit. 2013-05-30]. Dostupné v archivu pořízeném dne 2012-09-03.
- ↑ Sun Opens Java [online]. Sun Microsystems, 13 November 2006 [cit. 2013-05-30]. Dostupné v archivu pořízeném dne 2008-05-13.
- ↑ Kelly O'Hair. OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed [online]. Oracle Corporation, December 2010 [cit. 2011-11-25]. Dostupné online.
Externí odkazy
[editovat | editovat zdroj]Obrázky, zvuky či videa k tématu Platforma Java na Wikimedia Commons
Oficiální Java rozcestník (anglicky)