Platforma Java

Z Multimediaexpo.cz

(Rozdíly mezi verzemi)
m (1 revizi)
(+ Aktualizace)
 
Řádka 1: Řádka 1:
'''Platforma Java''' je [[počítačová platforma]] zastřešující různé varianty použití [[programovací jazyk|programovacího jazyka]] [[Java (programovací jazyk)|Java]] pro vývoj a provoz různých typů aplikací.
'''Platforma Java''' je [[počítačová platforma]] zastřešující různé varianty použití [[programovací jazyk|programovacího jazyka]] [[Java (programovací jazyk)|Java]] pro vývoj a provoz různých typů aplikací.
-
Platforma Java zastřešuje následující dílčí platformy:
+
Společně poskytují systém pro vývoj [[Aplikační software|aplikačního softwaru]] a vyvíjejí ji jako [[multiplatformní software]]. Java se používá v širokém spektru [[Počítačová platforma|počítačových platforem]] od [[Vestavěný systém|vestavěných systémů]] a [[Mobilní telefon|mobilních telefonů]], až po podnikové [[server]]y a [[superpočítač]]e na vysoké úrovni. I když je to méně časté, jsou [[Java applet]]y někdy používány k lepší a bezpečnější funkcí při prohlížení [[World Wide Web|Webu]] na [[Desktop|klasických počítačích]].
 +
 
 +
Psaní v [[Java (programovací jazyk)|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 (programovací jazyk)|Ada]], [[JavaScript]], [[Python]] nebo [[Ruby]]. Několik nových jazyků jako je [[Scala (programovací jazyk)|Scala]], [[Clojure]] a [[Groovy]], bylo navrženo i pro nativní provoz na [[Java Virtual Machine]] (dále JVM). Java [[syntax]]e je podobná jako u programovacího [[C (programovací jazyk)|jazyka C]] a [[C++]], ovšem objektově orientované rysy jsou odvozené podle objektově založených jazyků [[Smalltalk]] a [[Objective-C]].<ref>{{Citace elektronické monografie |url=http://virtualschool.edu/objectivec/influenceOnJava.html |titul=Virtual School |jméno=Patrick |příjmení=Naughton |datum přístupu=2013-05-30 |url archivu=https://www.webcitation.org/6APXEedqA?url=http://virtualschool.edu/objectivec/influenceOnJava.html |datum archivace=2012-09-03 |nedostupné=ano }}</ref> Java odstraňuje některé nízkoúrovňové konstrukce, jako jsou [[Ukazatel (programování)|ukazatele]] a má velmi jednoduchý model paměti, kde je každý objekt alokován v [[Dynamická alokace paměti|haldě]] (ta je součásti ve [[Správa paměti|správě paměti]]), a kde všechny proměnné objektových typů jsou vlastně [[Reference (programování)|reference]]. Správa paměti je řešena pomocí integrovaného automatického [[Garbage collector]]u 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).<ref>{{Citace elektronické monografie |url=http://www.sun.com/2006-1113/feature/story.jsp |url archivu=https://web.archive.org/web/20080513023707/http://www.sun.com/2006-1113/feature/story.jsp |datum archivace=2008-05-13 |titul=Sun Opens Java |datum vydání=13 November 2006 |vydavatel=Sun Microsystems |datum přístupu=2013-05-30 |nedostupné=ano }}</ref><ref>{{Citace elektronické monografie| url=http://mail.openjdk.java.net/pipermail/build-dev/2010-December/003881.html| titul=OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed
 +
| autor=Kelly O'Hair| vydavatel=Oracle Corporation| datum vydání=December 2010| datum přístupu=2011-11-25}}</ref>
 +
 
 +
== Historie ==
 +
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í jazyk|programovacím jazykům]] [[C++]]/[[C (programovací jazyk)|C]]. Patrick Naughton byl [[Frustrace|frustrován]] ze stavu [[API|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 [[James Gosling|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 [[James Gosling|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é [[Platforma|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 ==
 +
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 (programovací jazyk)|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]].
 +
 
* [[JavaCard]] – pro aplikace provozované v rámci tzv. „chytrých“ karet (např. platební a kreditní karty atp.),
* [[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í telefon]]y, [[Personal Digital Assistant|PDA]], atp.),
* [[Java ME]] – pro aplikace provozované na mobilních zařízeních ([[mobilní telefon]]y, [[Personal Digital Assistant|PDA]], atp.),
* [[Java SE]] – aplikace provozované na [[stolní počítač|stolních počítačích]],
* [[Java SE]] – aplikace provozované na [[stolní počítač|stolních počítačích]],
* [[Java EE]] – aplikace pro podnikové a rozsáhlé [[informační systém]]y.
* [[Java EE]] – aplikace pro podnikové a rozsáhlé [[informační systém]]y.
 +
 +
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 ([[JDK|Java Development Kitu]]), Java Runtime Environment (běhové prostředí Javy), doplňuje JVM o [[Just-in-time kompilace|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 [[Knihovna (programování)|knihoven]].
Jednotlivé dílčí platformy sdílejí společné koncepty, kterými jsou:
Jednotlivé dílčí platformy sdílejí společné koncepty, kterými jsou:
Řádka 12: Řádka 26:
* obdobné [[API]] standardních knihoven funkcí.
* obdobné [[API]] standardních knihoven funkcí.
 +
=== Java Virtual Machine ===
 +
{{Podrobně|Java Virtual Machine}}
 +
Java Virtual Machine, je hlavní součásti platformy Java a vykonává samotný Java bajt kód [[Aplikační software|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 kompilace|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 [[Strojový kód|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í stroj|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 [[Počítačová platforma|platformami]] (jsou [[Multiplatformní software|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 ===
 +
Ve většině moderních [[Operační systém|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 [[Knihovna (programování)|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 (Java)|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í ==
 +
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 [[software]]m. Tento [[sandbox]] je určen k ochraně uživatele tím, že omezí přístup k některým funkcím [[Platforma|platformy]] a rozhraním [[API]], které může být zneužito [[malware]]m, 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 Corporation|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 [[plugin]]y nebo [[webový prohlížeč]], který stahuje běžící applety [[Java (programovací jazyk)|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 [[Operační systém|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 ==
 +
V roce 2002 se objevil [[.NET|.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 [[J Sharp|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.
 +
 +
== Reference ==
 +
<references/>
 +
== Externí odkazy ==
{{Článek z Wikipedie}}
{{Článek z Wikipedie}}
[[Kategorie:Java]]
[[Kategorie:Java]]
[[Kategorie:Počítačové platformy|Java]]
[[Kategorie:Počítačové platformy|Java]]

Aktuální verze z 6. 1. 2022, 12:06

Platforma Java je počítačová platforma zastřešující různé varianty použití programovacího jazyka Java pro vývoj a provoz různých typů aplikací.

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 ukazatele 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]

Obsah

Historie

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

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

Podrobnější informace naleznete na stránce: 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 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 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

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í

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 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é 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

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é verze JDK 1.1.

Reference

  1. NAUGHTON, Patrick. Virtual School [online]. [cit. 2013-05-30]. Dostupné online.  
  2. Sun Opens Java [online]. Sun Microsystems, 13 November 2006, [cit. 2013-05-30]. Dostupné online.  
  3. Kelly O'Hair. OpenJDK7 and OpenJDK6 Binary Plugs Logic Removed [online]. Oracle Corporation, December 2010, [cit. 2011-11-25]. Dostupné online.  

Externí odkazy