Java - programovací jazyk: Porovnání verzí

 
(Není zobrazeno 7 mezilehlých verzí od stejného uživatele.)
Řádek 2: Řádek 2:
  
 
== Vývoj ==
 
== Vývoj ==
* '''1991 -''' vývoj započal již v roce 1991. Na projektu zvaném ''Stealth Project'' (Tajný projekt) pracovali James Gosling, Bill Jay a Mike Sheridan. Cílem projektu bylo vytvoření systému pro domácí spotřebiče. Během projektu se stal vedoucím týmu '''James Gosling''' a projekt byl přejmenován na '''Green Project''' a tým vývojářů na '''Green Team'''. Zprvu byl pro vývoj používán programovací jazyk C++, ale ukázal se jako nevhodný a proto James Gosling začal vytvářet vlastní programovací jazyk pro své potřeby. Pojmenoval ho ''Oak'' (dub - podle stromu, který rostl pod oknem jeho kanceláře).  
+
* '''1991 -''' vývoj započal již v roce 1991. Na projektu zvaném ''Stealth Project'' (Tajný projekt) pracovali James Gosling, Bill Jay a Mike Sheridan. Cílem projektu bylo vytvoření systému pro domácí spotřebiče. Během projektu se stal vedoucím týmu '''James Gosling''' a projekt byl přejmenován na '''Green Project''' a tým vývojářů na '''Green Team'''. Zprvu byl pro vývoj používán programovací jazyk C++, ale ukázal se jako nevhodný, a proto James Gosling začal vytvářet vlastní programovací jazyk pro své potřeby. Pojmenoval ho ''Oak'' (dub - podle stromu, který rostl pod oknem jeho kanceláře).  
 
* '''1995 -''' V tomto roce byl jazyk přejmenován na '''Java''' (slangový výraz pro kávu).  
 
* '''1995 -''' V tomto roce byl jazyk přejmenován na '''Java''' (slangový výraz pro kávu).  
 
* '''1996 -''' Vyšla první oficiální verze '''JDK 1.0''' (Java Development Kit).
 
* '''1996 -''' Vyšla první oficiální verze '''JDK 1.0''' (Java Development Kit).
 
* '''1997 -''' Verze '''JDK 1.1''', nově byla přidána podpora vnořených tříd, reflexe a Unicode verze 2.0 (technická norma definující jednotnou znakovou sadu). Přidané nové Java Beans (třídy v programovacím jazyku Java), JDBC (Java Database Connectivity - API pro programátory v programovacím jazyku Java, které definuje jednotné rozhraní pro přístup k [[Relační databáze|relačním databázím]]), Java RMI (Java remote method invocation - technologie programovacího jazyka Java umožňující z jednoho virtuálního stroje volat metody objektů na jiném virtuálním stroji, který obvykle běží na jiném [[Osobní počítač|počítači]]), rozšíření AWT (The Abstract Window Toolkit - grafika a [[uživatelské rozhraní]]), JIT (Just-in-time kompilace - metoda překladu využívající různé techniky pro urychlení běhu programů přeložených do mezikódu) a kompilátor pro MS Windows.  
 
* '''1997 -''' Verze '''JDK 1.1''', nově byla přidána podpora vnořených tříd, reflexe a Unicode verze 2.0 (technická norma definující jednotnou znakovou sadu). Přidané nové Java Beans (třídy v programovacím jazyku Java), JDBC (Java Database Connectivity - API pro programátory v programovacím jazyku Java, které definuje jednotné rozhraní pro přístup k [[Relační databáze|relačním databázím]]), Java RMI (Java remote method invocation - technologie programovacího jazyka Java umožňující z jednoho virtuálního stroje volat metody objektů na jiném virtuálním stroji, který obvykle běží na jiném [[Osobní počítač|počítači]]), rozšíření AWT (The Abstract Window Toolkit - grafika a [[uživatelské rozhraní]]), JIT (Just-in-time kompilace - metoda překladu využívající různé techniky pro urychlení běhu programů přeložených do mezikódu) a kompilátor pro MS Windows.  
* '''1998 -''' '''J2SE 1.2''' (Java 2 Platform, Standard Edition) s kódovým označením ''Playground''. Složí k odlišení základní platformy od '''J2EE''' (Java 2 Platform, Enterprise Edition) a '''J2ME''' (Java 2 Platform, Micro Edition). Nově přidána podpora Unicode pro japonštinu, čínštinu a korejský jazyk.
 
* '''2000 -''' '''J2SE 1.3''' s kódovým označením ''Kestrel'' (poštolka).
 
* '''2002 -''' '''J2SE 1.4'''
 
 
* '''2004 -''' '''J2SE 5.0'''. Java 1.5 se správně jmenuje 5.0, obsahuje mnoho změn včetně anotace umožňující vkládat do kódu neovlivňující data popisující nějakou část kódu (poznámky).
 
* '''2004 -''' '''J2SE 5.0'''. Java 1.5 se správně jmenuje 5.0, obsahuje mnoho změn včetně anotace umožňující vkládat do kódu neovlivňující data popisující nějakou část kódu (poznámky).
 
* '''2006 -''' '''Java SE 6''', změna indexace, místo 6.0 je pouze 6. Další změny byly provedeny pomocí aktualizací.  
 
* '''2006 -''' '''Java SE 6''', změna indexace, místo 6.0 je pouze 6. Další změny byly provedeny pomocí aktualizací.  
* '''2011 -''' '''Java SE 7'''
+
* '''2007 -'''od tohoto roku, je Java vyvíjena jako '''[[open source]]'''.
 
* '''2014 -''' '''Java SE 8''', přidány prvky funkcionálního programování (proudové zpracování dat atd.)
 
* '''2014 -''' '''Java SE 8''', přidány prvky funkcionálního programování (proudové zpracování dat atd.)
 
* '''2017 -''' '''Java SE 9''', nově projekt [https://www.baeldung.com/project-jigsaw-java-modularity Jigsaw]  a podpora pro reaktivní programování.  
 
* '''2017 -''' '''Java SE 9''', nově projekt [https://www.baeldung.com/project-jigsaw-java-modularity Jigsaw]  a podpora pro reaktivní programování.  
 
* '''březen 2018 -''' '''Java SE 10''', typová inferace lokálních proměnných, nové rozhraní pro garbage collector.
 
* '''březen 2018 -''' '''Java SE 10''', typová inferace lokálních proměnných, nové rozhraní pro garbage collector.
* '''září 2018 -''' '''Java SE 11'''
 
 
* '''2019 -''' '''Java SE 12'''
 
* '''2019 -''' '''Java SE 12'''
  
 
Během vývoje bylo dodržováno '''5 zásadních pravidel:'''
 
Během vývoje bylo dodržováno '''5 zásadních pravidel:'''
* 1. jednoduchost, objektově orientované, povědomé.
+
* 1. jednoduchost, objektově orientované, povědomé
 
* 2. robustní a bezpečné
 
* 2. robustní a bezpečné
 
* 3. nezávislé na architektuře a přenositelné
 
* 3. nezávislé na architektuře a přenositelné
Řádek 31: Řádek 27:
 
* '''Distribuovaný jazyk'''
 
* '''Distribuovaný jazyk'''
 
* '''Interpretovaný jazyk''' - místo strojového [[Kódování|kódu]] se vytváří pouze tzv. '''bajtkód''' (byte code), což je snadno přenositelný kód. Znamená to, že je možné ho přenést na jakoukoliv platformu, je nutné ve vybraném prostředí, kde chceme aplikaci spustit pouze nainstalovat '''běhové prostředí''' (run-time - skupina [[software]] pro podporu realizace počítačových programů napsaných v některých z programovacích jazyků), pro spuštění bajtkódu. V tomto případě myslíme běhovým prostředím '''Java Virtual Machine''', které je třeba na zařízení instalovat. Java je tedy '''nezávislá na architektuře [[Osobní počítač|pc]] a nebo zařízení'''.  
 
* '''Interpretovaný jazyk''' - místo strojového [[Kódování|kódu]] se vytváří pouze tzv. '''bajtkód''' (byte code), což je snadno přenositelný kód. Znamená to, že je možné ho přenést na jakoukoliv platformu, je nutné ve vybraném prostředí, kde chceme aplikaci spustit pouze nainstalovat '''běhové prostředí''' (run-time - skupina [[software]] pro podporu realizace počítačových programů napsaných v některých z programovacích jazyků), pro spuštění bajtkódu. V tomto případě myslíme běhovým prostředím '''Java Virtual Machine''', které je třeba na zařízení instalovat. Java je tedy '''nezávislá na architektuře [[Osobní počítač|pc]] a nebo zařízení'''.  
* '''Robustní''' - jazyk je určen pro psaní velice spolehlivého software, neumožňuje vytvořit konstrukce, které by mohly být, a často jsou v jiných jazycích, příčinou chyb ve výsledném programu.  
+
* '''Robustní''' - jazyk je určen pro psaní velice spolehlivého softwaru, neumožňuje vytvořit konstrukce, které by mohly být, a často jsou v jiných jazycích, příčinou chyb ve výsledném programu.  
 
* '''Generační správa paměti''' - automaticky vyhledává části paměti, které se nevyužívají a uvolňuje ji pro další použití.  
 
* '''Generační správa paměti''' - automaticky vyhledává části paměti, které se nevyužívají a uvolňuje ji pro další použití.  
 
* '''Bezpečný''' - automaticky chrání pc v síťovém prostředí před nebezpečnými operacemi nebo napadením OS nepřátelským kódem.  
 
* '''Bezpečný''' - automaticky chrání pc v síťovém prostředí před nebezpečnými operacemi nebo napadením OS nepřátelským kódem.  
Řádek 39: Řádek 35:
 
* '''Dynamický''' - knihovna může být za chodu stále vyvíjena a obohacována o další třídy a funkce.  
 
* '''Dynamický''' - knihovna může být za chodu stále vyvíjena a obohacována o další třídy a funkce.  
 
* '''Elegantní''' - dobře se v něm pracuje a je hezky čitelný.
 
* '''Elegantní''' - dobře se v něm pracuje a je hezky čitelný.
 +
 +
== Využití Javy v praxi ==
 +
Java je určena především pro vývoj webových aplikací. Je vhodná pro všechny druhy klientských aplikací (serverové aplikace včetně webových aplikací), naopak se nehodí pro systémové programování. Různé varianty použití programovacího jazyka Java jsou zastřešeny pod platformu Java.<ref>[https://managementmania.com/cs/java Managementmania, ''Java'']</ref>
  
 
== Objektově orientované programování (OOP) ==
 
== Objektově orientované programování (OOP) ==
Řádek 60: Řádek 59:
 
objekt - string (řetězec, typ pro text)
 
objekt - string (řetězec, typ pro text)
 
<br />
 
<br />
pole - array (vektor například)  
+
pole - array (např.: vektor)  
  
 
Java je přísně typový jazyk - tzn. je nutné před každou nově vytvořenou proměnnou jasně definovat o jaký datový typ se jedná.
 
Java je přísně typový jazyk - tzn. je nutné před každou nově vytvořenou proměnnou jasně definovat o jaký datový typ se jedná.
Řádek 86: Řádek 85:
 
* [[Booleovské operátory|Logické operátory]]: '''&&''' (AND); '''||''' (OR); '''!''' (NOT)
 
* [[Booleovské operátory|Logické operátory]]: '''&&''' (AND); '''||''' (OR); '''!''' (NOT)
  
=== Inkerementace a dekrementace ===
+
=== Inkrementace a dekrementace ===
 
Unární operátor '''inkrementace''' zvyšuje hodnotu uloženou v proměnné o 1. Jde o operátor '''++'''.
 
Unární operátor '''inkrementace''' zvyšuje hodnotu uloženou v proměnné o 1. Jde o operátor '''++'''.
 
Unární operátor '''dekrementace''' snižuje hodnotu uloženou v proměnné o 1. Jde o operátor '''-'''.
 
Unární operátor '''dekrementace''' snižuje hodnotu uloženou v proměnné o 1. Jde o operátor '''-'''.
Řádek 96: Řádek 95:
 
=== Prvky ===
 
=== Prvky ===
 
Základním prvkem v Javě jsou '''výrazy''', které vznikají spojením proměnných (př.: x) a operátorů. Spojením těchto výrazů vzniká celý příkaz, který je nutné oddělovat středníkem (;).  
 
Základním prvkem v Javě jsou '''výrazy''', které vznikají spojením proměnných (př.: x) a operátorů. Spojením těchto výrazů vzniká celý příkaz, který je nutné oddělovat středníkem (;).  
 +
 +
== Java vs. JavaScript ==
 +
I přes podobnost v názvech jsou tyto jazyky '''rozdílné, a právě kvůli názvu často mylně zaměňované'''. JavaSkript je '''skriptovací jazyk''', používá se na webových stránkách a v aplikacích. Zatímco Java pracuje s instancemi tříd, JavaScript pracuje pouze s objektovým modelem dokumentu '''DOM''' (Document Object Model - objektově orientovaná reprezentace XML nebo HTML dokumentu), jazyk je díky němu závislý na jednom určitém prohlížeči.
  
 
== Zdroje ==
 
== Zdroje ==
Řádek 101: Řádek 103:
 
* Java (programovací jazyk). ''Wikipedia'' [online], 2020 [cit 2020-01-05]. Dostupné z: https://cs.wikipedia.org/wiki/Java_(programovac%C3%AD_jazyk)
 
* Java (programovací jazyk). ''Wikipedia'' [online], 2020 [cit 2020-01-05]. Dostupné z: https://cs.wikipedia.org/wiki/Java_(programovac%C3%AD_jazyk)
 
* Kubů, Petr. ''Úvod do programovacího jazyka Java'' [online], 2021 [cit 2020-01-05]. Dostupné z: http://kubu.wz.cz/help/java/java.html
 
* Kubů, Petr. ''Úvod do programovacího jazyka Java'' [online], 2021 [cit 2020-01-05]. Dostupné z: http://kubu.wz.cz/help/java/java.html
 +
* Novotný, Luděk. ''Historie a vývoj jazyka Java'' [online], 2003 [cit. 2020-01-05]. Dostupné z: https://www.fi.muni.cz/usr/jkucera/pv109/2003p/xnovotn8.htm
  
 
=== Reference ===
 
=== Reference ===
 
<references />
 
<references />
  
=== odkazy ===
+
=== Související články ===
 
* [[Programovací jazyk]]
 
* [[Programovací jazyk]]
 
* [[Objektově orientované systémy databází]]
 
* [[Objektově orientované systémy databází]]

Aktuální verze z 5. 1. 2021, 22:27

Java je objektově orientovaný programovací jazyk vyvinutý 23.5. 1995 firmou Sun Microsystems. Jazyk se stal jedním z nejpoužívanějších na světě. Oficiálním vlastníkem implementace platformy jazyka je Oracle. Java je dostupná pro operační systémy mac OS, Windows, Solaris.

Vývoj

  • 1991 - vývoj započal již v roce 1991. Na projektu zvaném Stealth Project (Tajný projekt) pracovali James Gosling, Bill Jay a Mike Sheridan. Cílem projektu bylo vytvoření systému pro domácí spotřebiče. Během projektu se stal vedoucím týmu James Gosling a projekt byl přejmenován na Green Project a tým vývojářů na Green Team. Zprvu byl pro vývoj používán programovací jazyk C++, ale ukázal se jako nevhodný, a proto James Gosling začal vytvářet vlastní programovací jazyk pro své potřeby. Pojmenoval ho Oak (dub - podle stromu, který rostl pod oknem jeho kanceláře).
  • 1995 - V tomto roce byl jazyk přejmenován na Java (slangový výraz pro kávu).
  • 1996 - Vyšla první oficiální verze JDK 1.0 (Java Development Kit).
  • 1997 - Verze JDK 1.1, nově byla přidána podpora vnořených tříd, reflexe a Unicode verze 2.0 (technická norma definující jednotnou znakovou sadu). Přidané nové Java Beans (třídy v programovacím jazyku Java), JDBC (Java Database Connectivity - API pro programátory v programovacím jazyku Java, které definuje jednotné rozhraní pro přístup k relačním databázím), Java RMI (Java remote method invocation - technologie programovacího jazyka Java umožňující z jednoho virtuálního stroje volat metody objektů na jiném virtuálním stroji, který obvykle běží na jiném počítači), rozšíření AWT (The Abstract Window Toolkit - grafika a uživatelské rozhraní), JIT (Just-in-time kompilace - metoda překladu využívající různé techniky pro urychlení běhu programů přeložených do mezikódu) a kompilátor pro MS Windows.
  • 2004 - J2SE 5.0. Java 1.5 se správně jmenuje 5.0, obsahuje mnoho změn včetně anotace umožňující vkládat do kódu neovlivňující data popisující nějakou část kódu (poznámky).
  • 2006 - Java SE 6, změna indexace, místo 6.0 je pouze 6. Další změny byly provedeny pomocí aktualizací.
  • 2007 -od tohoto roku, je Java vyvíjena jako open source.
  • 2014 - Java SE 8, přidány prvky funkcionálního programování (proudové zpracování dat atd.)
  • 2017 - Java SE 9, nově projekt Jigsaw a podpora pro reaktivní programování.
  • březen 2018 - Java SE 10, typová inferace lokálních proměnných, nové rozhraní pro garbage collector.
  • 2019 - Java SE 12

Během vývoje bylo dodržováno 5 zásadních pravidel:

  • 1. jednoduchost, objektově orientované, povědomé
  • 2. robustní a bezpečné
  • 3. nezávislé na architektuře a přenositelné
  • 4. výkonné
  • 5. interpretované, vícevláknové a dynamické

Vlastnosti

  • Jednoduchá syntaxe - syntaxe je přejatou a zjednodušenou verzí syntaxe jazyků C a C++.
  • OO - Objektově orientovaný jazyk
  • Distribuovaný jazyk
  • Interpretovaný jazyk - místo strojového kódu se vytváří pouze tzv. bajtkód (byte code), což je snadno přenositelný kód. Znamená to, že je možné ho přenést na jakoukoliv platformu, je nutné ve vybraném prostředí, kde chceme aplikaci spustit pouze nainstalovat běhové prostředí (run-time - skupina software pro podporu realizace počítačových programů napsaných v některých z programovacích jazyků), pro spuštění bajtkódu. V tomto případě myslíme běhovým prostředím Java Virtual Machine, které je třeba na zařízení instalovat. Java je tedy nezávislá na architektuře pc a nebo zařízení.
  • Robustní - jazyk je určen pro psaní velice spolehlivého softwaru, neumožňuje vytvořit konstrukce, které by mohly být, a často jsou v jiných jazycích, příčinou chyb ve výsledném programu.
  • Generační správa paměti - automaticky vyhledává části paměti, které se nevyužívají a uvolňuje ji pro další použití.
  • Bezpečný - automaticky chrání pc v síťovém prostředí před nebezpečnými operacemi nebo napadením OS nepřátelským kódem.
  • Přenositelný - jazyk je nezávislý i na datových typech.
  • Výkonný - je rychlý i přesto, že je interpretovatelný, jelikož neztrácí výkon. To vše díky tomu, že překladače kódu mohou pracovat v režimu just in time a do strojového kódu se zrovna překládá jen ten kód, který je v tu chvíli opravdu zapotřebí.
  • Víceúlohový - podporuje zpracování víceúčelových aplikací
  • Dynamický - knihovna může být za chodu stále vyvíjena a obohacována o další třídy a funkce.
  • Elegantní - dobře se v něm pracuje a je hezky čitelný.

Využití Javy v praxi

Java je určena především pro vývoj webových aplikací. Je vhodná pro všechny druhy klientských aplikací (serverové aplikace včetně webových aplikací), naopak se nehodí pro systémové programování. Různé varianty použití programovacího jazyka Java jsou zastřešeny pod platformu Java.[1]

Objektově orientované programování (OOP)

Základním prvkem OOP v Javě je Objekt, přitom každý objekt má vlastnosti (proměnné) a možnost poslat zprávy (metody). Každá proměnná a metoda má definovaná přístupová práva (v Javě 4 úrovňová).

OOP elementy v Javě

  • Třída - definuje metody a proměnné s danými přístupovými právy.
  • Objekt - instance třídy.
  • Interface - stejně jako třída definuje metody, ale nemají implementaci.

Každá třída může mít rodičovskou třídu a implementovat 0 až n interfaců.

Objekt

Každý objekt se skládá z kombinace dat (vlastností) a chování (metody). Vlastnosti jsou proměnnými, které určují základní charakteristiky objektu. Metody pak popisují, jak se objekt chová a jak může být modifikován. Objekt je tedy prvek softwaru, který se skládá z proměnných a s nimi spojených metod.[2]

Datové typy

  • Primitivní: Boolean (TRUE, FALSE), char (jeden znak z řady znaků)
  • Numerické: byte, short, int (inetger = celé číslo), long, float (reálné číslo), double (reálné číslo zdvojené)
  • Referenční: referenční, jelikož se s nimi pracuje za pomoci referencí (odkazů). Jde o neprimitivní datové typy - objekty a pole.

př.:
objekt - string (řetězec, typ pro text)
pole - array (např.: vektor)

Java je přísně typový jazyk - tzn. je nutné před každou nově vytvořenou proměnnou jasně definovat o jaký datový typ se jedná.

příklad: převod int na boolean a obráceně

Java.png

Syntaxe

Syntaxe je do určité míry odvozena z jazyka C++. Na rozdíl od jazyka C++ je Java objektově orientovaný programovací jazyk, což znamená že je kód psán uvnitř třídy a vše je definováno jako objekt. Výjimkou jsou primitivní datové typy.

Tvorba komentářů

Jelikož jazyk vychází z jazyka C++, má také obdobný styl tvoření komentářů.

  • Jednořádkový: // komentář
  • Víceřádkový:

/* první řádek komentáře
druhý řádek komentáře */

  • Java doc.: umožňuje napsat dokumentaci k programu. /** dokumentace */

Operátory

  • Základní operátory: + ; - ; * ; / ; %
  • Relační operátory: > ; < ; >= ; <=
  • Operátory rovnosti: == (ekvivalence); != (nerovná se); = (přiřazení)
  • Logické operátory: && (AND); || (OR); ! (NOT)

Inkrementace a dekrementace

Unární operátor inkrementace zvyšuje hodnotu uloženou v proměnné o 1. Jde o operátor ++. Unární operátor dekrementace snižuje hodnotu uloženou v proměnné o 1. Jde o operátor -.

Java inkrementace.png





Prvky

Základním prvkem v Javě jsou výrazy, které vznikají spojením proměnných (př.: x) a operátorů. Spojením těchto výrazů vzniká celý příkaz, který je nutné oddělovat středníkem (;).

Java vs. JavaScript

I přes podobnost v názvech jsou tyto jazyky rozdílné, a právě kvůli názvu často mylně zaměňované. JavaSkript je skriptovací jazyk, používá se na webových stránkách a v aplikacích. Zatímco Java pracuje s instancemi tříd, JavaScript pracuje pouze s objektovým modelem dokumentu DOM (Document Object Model - objektově orientovaná reprezentace XML nebo HTML dokumentu), jazyk je díky němu závislý na jednom určitém prohlížeči.

Zdroje

Použitá literatura

Reference

Související články

Klíčová slova

Java, objektově orientované programování, objekt, OOP, programování, programovací jazyk, element, třídy, datové typy,