Java (programovací jazyk)
Duke, maskot Javy | |
| Paradigma | objektově orientovaný, multiparadigmatický, strukturovaný, imperativní, reflexivní |
|---|---|
| Vznik | 1995 |
| Autor | James Gosling, Sun Microsystems, Oracle Corporation |
| Vývojář | Oracle Corporation |
| Poslední verze | 24 (18. března 2025[1]) |
| Typová kontrola | silná, statická, bezpečná |
| Hlavní implementace | OpenJDK |
| Ovlivněn jazyky | C, C++, C#, Smalltalk |
| Ovlivnil jazyky | JavaScript, Groovy, Clojure, C#, Scala |
| OS | multiplatformní |
| Licence | GNU General Public License, Java Community Process |
| Web | oracle.com/technetwork/java/ |
(výslovnost [ˈdʒaːvə]IPA) je objektově orientovný progrmovcí jzyk, který vyvinul firm Sun Microsystems předstvil 23. květn 1995.
Jde o jeden z nejpoužívnějších progrmovcích jzyků n světě. Podle TIOBE indexu byl Jv nejpopulárnější progrmovcí jzyk.[2] V roce 2020 jzyk Jv v žebříčku TIOBE index předběhly jzyky C Python.[3] Díky své přenositelnosti je používán pro progrmy, které mjí prcovt n různých systémech počínje čipovými krtmi (pltform JvCrd), přes mobilní telefony různá zbudovná zřízení (pltform Jv ME), plikce pro desktopové počítče (pltform Jv SE) ž po rozsáhlé distribuovné systémy prcující n řdě spoluprcujících počítčů rozprostřené po celém světě (pltform Jv EE). Tyto technologie se jko celek nzývjí pltform Jv. Dne 8. květn 2007 Sun uvolnil zdrojové kódy Jvy (cc 2,5 miliónů řádků kódu) Jv bude dále vyvíjen jko open source.
Zásdy
Při vývoji jzyk Jv se vývojáři drželi pěti hlvních principů:[4]
- Mělo by to být „jednoduché, objektově orientovné povědomé“
- Mělo by to být „robustní bezpečné“
- Mělo by to být „nezávislé n rchitektuře přenositelné“
- Mělo by to být „výkonné“
- Mělo by to být „interpretovné, vícevláknové dynmické“
Zákldní vlstnosti
- jednoduchý – jeho syntxe je zjednodušenou ( drobně uprvenou) verzí syntxe jzyk C C++. Odpdl většin nízkoúrovňových konstrukcí. Součástí jzyk nejsou npříkld ukztele, bezznménkové číselné dtové typy, příkz
gotonebo preprocesor. - objektově orientovný – s výjimkou osmi primitivních dtových typů jsou všechny osttní dtové typy objektové.
- distribuovný – je nvržen pro podporu plikcí v síti (podporuje různé úrovně síťového spojení, práce se vzdálenými soubory, umožňuje vytvářet distribuovné klientské plikce servery.
- interpretovný – místo skutečného strojového kódu se vytváří pouze tzv. bjtkód. Tento formát je nezávislý n rchitektuře počítče nebo zřízení. Progrm pk může prcovt n libovolném počítči nebo zřízení, který má k dispozici interpret Jvy, tzv. virtuální stroj Jvy – Jv Virtul Mchine (JVM).
- V pozdějších verzích Jvy nebyl mezikód přímo interpretován, le před prvním svým provedením dynmicky zkompilován do strojového kódu dného počítče (tzv. just in time compiltion – JIT). Tto vlstnost zásdním způsobem zrychlil provádění progrmů v Jvě, le výrzně zpomlil strt progrmů.
- V součsnosti se převážně používjí technologie zvné HotSpot compiler, které mezikód zpočátku interpretují n zákldě sttistik získných z této interpretce později provedou překld čsto používných částí do strojového kódu včetně dlších dynmických optimlizcí (jko je npř. inlining krátkých metod tp.).
- Některé pltformy nbízejí přímou hrdwrovou podporu pro Jvu. Existují též mikroprocesory, které dokáží spustit Jvu hrdwrově nmísto softwrové emulce Jv Virtul Mchine. RM procesory mohou mít přímou hrdwrovou podporu pro spuštění binárního kódu Jvy.
- robustní – je určen pro psní vysoce spolehlivého softwru – z tohoto důvodu neumožňuje některé progrmátorské konstrukce, které bývjí čstou příčinou chyb (npř. správ pměti, příkz
goto, používání ukztelů). Používá tzv. silnou typovou kontrolu – veškeré používné proměnné musí mít definovný svůj dtový typ. - generční správ pměti – správ pměti je relizován pomocí utomtického grbge collectoru, který utomticky vyhledává již nepoužívné části pměti uvolňuje je pro dlší použití. To bylo v prvních verzích opět příčinou pomlejšího běhu progrmů. V posledních verzích běhových prostředí je díky novým lgoritmům pro grbge collection tzv. generční správě pměti (pměť je rozdělen n více částí, v kždé se používá jiný lgoritmus pro grbge collection objekty jsou mezi těmito částmi přesunovány podle délky svého život) tento problém ze znčné části eliminován.
- bezpečný – má vlstnosti, které chrání počítč v síťovém prostředí, n kterém je progrm zprcováván, před nebezpečnými opercemi nebo npdením vlstního operčního systému nepřátelským kódem.
- nezávislý n rchitektuře – vytvořená plikce běží n libovolném operčním systému nebo libovolné rchitektuře. Ke spuštění progrmu je potřeb pouze to, by byl n dné pltformě instlován správný virtuální stroj. Podle konkrétní pltformy se může přizpůsobit vzhled chování plikce.
- přenositelný – vedle zmíněné nezávislosti n rchitektuře je jzyk nezávislý i co se týká vlstností zákldních dtových typů (je npříkld explicitně určen vlstnost velikost kždého z primitivních dtových typů). Přenositelností se všk myslí pouze přenášení v rámci jedné pltformy Jvy (npř. J2SE). Při přenášení mezi pltformmi Jvy je třeb dát pozor n to, že pltform určená pro jednodušší zřízení nemusí podporovt všechny funkce dostupné n pltformě pro složitější zřízení kromě toho může definovt některé vlstní třídy doplňující nějkou speciální funkčnost nebo nhrzující třídy vyšší pltformy, které jsou pro nižší pltformu příliš komplikovné.
- výkonný – přestože se jedná o jzyk interpretovný, není ztrát výkonu význmná, neboť překldče mohou prcovt v režimu „just-in-time“ do strojového kódu se překládá jen ten kód, který je oprvdu zpotřebí.
- víceúlohový – podporuje zprcování vícevláknových plikcí
- dynmický – Jv byl nvržen pro nszení ve vyvíjejícím se prostředí. Knihovn může být dynmicky z chodu rozšiřován o nové třídy funkce, to jk z externích zdrojů, tk vlstním progrmem.
- elegntní – velice pěkně se v něm prcuje, je sndno čitelný (npř. i pro publikci lgoritmů), přímo vyžduje ošetření výjimek typovou kontrolu.
Historie

- 1991 – Jmes Gosling, Bill Joy, Mike Sheridn Ptrick Nughton zpočli Stelth Project (Tjný projekt), který měl z cíl vytvořit systém pro domácí spotřebiče. Projekt se později přejmenovl n Green Project (Zelený projekt), tým vývojářů dostl název Green Tem (Zelený tým). Vedoucím projektu se stl Jmes Gosling.
- Green Tem zpočátku používl progrmovcí jzyk C++, který ovšem pro jejich cíl nebyl vhodný. Nkonec Jmes Gosling zčl prcovt n novém jzyku, který pojmenovl Ok (dub) podle stromu, jež rostl před okny jeho knceláře.[5][6]
- 1995 – Přejmenování jzyk z Ok n Jv. Jzyk s názvem Ok totiž již existovl. Jv je merické slngové oznčení pro kávu.[6]
- 1996 – Jv Development Kit (JDK) 1.0
- První oficiální verze vyšl 26. srpn 1996.
- V prvních verzích Jvy JDK bylo možné použít klíčová slov
privteprotectedk vytvoření dlšího modifikátoru přístupu, sice k omezení přístupu k metodám proměnným výhrdně n podtřídy dné třídy. Tto funkčnost byl z jzyk odebrán ve verzi 1.0.2.
- 1997 – JDK 1.1
- Dlší význmná verze JDK vyšl 19. únor 1997. Do jzyk byl přidán podpor vnořených tříd, reflexe (bez podpory modifikce z běhu) Unicode verze 2.0. JDK obshovlo následující novinky: JvBens, JDBC, Jv RMI, rozšíření WT JIT kompilátor pro MS Windows.[7]
- 1998 – J2SE 1.2
- Verze s kódovým oznčením Plyground ([ˈpleiˌgrund]; nglicky dětské hřiště) byl vydán 8. prosince 1998. Pojmenování se změnilo n Jv 2 název verze J2SE. Část SE z názvu J2SE (Jv 2 Pltform, Stndrd Edition) slouží k rozlišení zákldní pltformy od J2EE (Jv 2 Pltform, Enterprise Edition) J2ME (Jv 2 Pltform, Micro Edition).
- Do jzyk přibylo klíčové slovo
strictfp. Velikost pltformy Jv se v této verzi ztrojnásobil n 1 520 tříd v 59 blíčcích. Nejvýznmnější změny: knihovn Swing pro sestvení grfického rozhrní, Jv 2D PI, Jv collections frmework (JSR 166), ccessibility PI, JDBC 2.0, Jv Plug-in, Jv IDL – pro podporu technologie CORB, bsolutní podpor Unicode včetně psní v jponštině, čínštině korejském jzyce, lepší výkon JIT-kompilátoru.[8]
- 2000 – J2SE 1.3
- Verze s kódovým oznčením Kestrel ([ˈkestrəl]; nglicky poštolk obecná) byl vydán 8. květn 2000. Do jzyk byly přidány syntetické proxy třídy. Dlší změny: přidání JvSound, Jv Nming nd Directory Interfce (JNDI) – dříve dostupné jko rozšíření, Jv Pltform Debugger rchitecture (JPD), modifikce Jv RMI pro podporu technologie CORB přidání HotSpot JVM.[9]
- 2002 – J2SE 1.4
- 2004 – J2SE 5.0
- Specifikovná verze Jv 5.0 vyšl v září roku 2004. Od té doby byl změněn oficiální indexce Jvy. Jv 1.5 se správně jmenuje Jv 5.0. Vnitřní indexce přesto zůstl stejná, tj. 1.x. Dná verze obshuje celou řdu změn: přidné výčtové typy, notce, generics, utoboxing/unboxing, cyklus forech (iterátor), Jvdoc komentáře, povolen import sttických polí metod, přidné metody s neurčitým počtem prmetrů dlší.
- Výčtové typy (ngl. enum) jsou plnohodnotnou třídou, což znmená, že mohou mít pole metody, to dokonce skryté i bstrktní.
- notce umožňují přidávt do kódu neovlivňující progrmová dt, která npříkld popisují nějkou část kódu jeho účel.
- 2006 – Jv SE 6
- Jv 6 byl zveřejněn 11. prosince 2006. Oficiální indexce se změnil, místo očekávné verze 6.0 byl Jv 6 předstven pod tímto názvem. Menší změny (stejně jko v Jv 5.0) se přidly pomocí ktulizcí.
- 2011 – Jv SE 7
- Jv 7 byl zveřejněn 28. července roku 2011. Finální verze Jv Stndrd Edition 7 neobshuje všechny nplánovné změny, ty se objeví v Jv Stndrd Edition 8.
- 2014 – Jv SE 8
- Jv 8 byl zveřejněn 18. březn roku 2014. Přinesl mimo jiné vybrné prvky z funkcionálního progrmování jko jsou lmbd funkce či proudové zprcování dt. Toto rozšíření Jvy sestává z nových syntktických prvků i z nových instrukcí bjtkódu.
- 2017, 21. září – Jv SE 9
- ktuální plán pro Jvu 9 zhrnuje npříkld projekt Jigsw (systém modulů) či podporu pro rektivní progrmování.
- 2018, 20. březen – Jv SE 10
- Novinky zhrnují typovou inferenci lokálních proměnných, konsolidci repozitářů, nové rozhrní pro grbge collector dlší.[10]
- 2018, 25. září - Jv SE 11
- 2019, Jv SE 12, 13
- 2020, Jv SE 14, 15
- 2021, Jv SE 16, 17, 18
- 2022, Jv SE 19
Implementce
Společnost Orcle je součsným vlstníkem oficiální implementce Jv SE pltformy, po její kvizici firmy Sun Microsystems 27. ledn 2010. Tto implementce je zložen n původní od Sunu. Je dostupná pro mcOS, Windows Solris. Vzhledem k tomu, že Jv postrádá jkékoliv formální stndrdizce uznné Ecm Interntionl, ISO/IEC, NSI, nebo jinými stndrdizčními orgnizcemi třetích strn, implementce Orclu je de fcto stndrd.
Implementce Orclu je rozdělen do dvou různých distribucí: Jv Runtime Environment (JRE), která obshuje části Jv SE pltformy potřebné pro běh progrmů v jzyce Jv je určen pro koncové uživtele. Druhým blíkem je Jv Development Kit (JDK), který je určen pro softwrové vývojáře obshuje vývojové nástroje jko je Jv kompilátor, Jvdoc, Jr debugger.
OpenJDK je dlší význmnou implementcí Jvy SE pod licencí GPL. T zčl, když Sun zčl vydávt zdrojový kód Jvy pod licencí GPL. Od Jvy verze SE 7 je tedy OpenJDK oficiální referenční implementcí Jvy.
Cílem Jvy je, by byly všechny její implementce komptibilní. To vyústilo v právní spor se společností Microsoft poté, co Sun prohlásil, že implementce Microsoftu (Microsoft Jv Virtul Mchine) nepodporují RMI nebo JNI, že si Microsoft přidl funkce specifické pro jejich vlstní pltformu. Sun podl žlobu v roce 1997 v roce 2001 získl vyrovnání v hodnotě 20 miliónů dolrů, stejně jko nřízení soudu přikzující Microsoftu dodržování licenčních podmínek Sunu.[11] V důsledku toho Microsoft ndále neprodává žádné svoje Windows s Jvou (Windows XP SP2, Windows Server 2003 novější).[12]
utomtická správ pměti
Jv používá utomtickou správu pměti pro řízení pměti v object lifecycle. Progrmátor určuje kdy bude objekt vytvořen Jv runtime zodpovídá z obnovu pměti jkmile se objekty přestnou používt. Když nezůstnou žádné odkzy n objekt, nepřístupná pměť se stává přístupnou pro grbge collector, který ji utomticky uvolní. Něco podobného úniku pměti přesto může vzniknout, jestliže progrmátorův kód obshuje referenci n objekt, který již není potřeb.
Jedním z účelů pro utomtickou správu pměti Jv bylo zbvit progrmátor nutnosti lámt si hlvu nd mnuální správou pměti. V některých progrmovcích jzycích je pměť nutná pro vytvoření objektů implicitně přidělen do zásobníku, nebo explicitně přidělen uvolněn. V tkovém přípdě odpovědnost z správu pměti pdá n progrmátor. Pokud progrm objekt neuvolní, může dojít k úniku pměti. Pokud se progrm pokusí uvolnit pměť, která jíž byl uvolněn, výsledek není definován je obtížné ho odhdnout, tkže progrm se prvděpodobně stne nestbilní /nebo spdne. To může být částečně odstrněno použitím chytrých ukztelů, le to tké zvětšuje náročnost složitost.
Syntxe
Syntxe Jvy je do znčné míry odvozen z C++. N rozdíl od C++, které kombinuje syntxi pro strukturovné, generické, objektově-orientovné progrmování, Jv byl postven téměř výhrdně jko objektově orientovný jzyk. Veškerý kód je npsán uvnitř třídy všechno je objekt, s výjimkou primitivních dtových typů (tj. celá čísl, desetinná čísl, logické hodnoty znky), které nejsou třídy z výkonnostních důvodů.
N rozdíl od C++ Jv nepodporuje přetěžování operátorů nebo vícenásobnou dědičnost pro třídy. To zjednodušuje jzyk pomáhá při prevenci potenciálních chyb.
Jv používá podobné komentovcí metody jko C++. Existují tři různé styly komentářů: jednořádkový uvozený dvěm lomítky (//), víceřádkový uvozený /* uzvřený s */ Jvdoc dokumentční styl komentování uvozený /** uzvřený */. Komentář typu Jvdoc umožňuje uživteli sestvit dokumentci k progrmu.
Ukázk použití komentářů
// Toto je příklad jednořádkového komentáře pomocí dvou lomítek
/* Toto je příklad víceřádkového komentáře pomocí lomítka a hvězdičky. Tento
typ komentáře může obsahovat velké množství informací nebo může deaktivovat
část kódu, ale je velice důležité komentář uzavřít. */
/**
* Toto je komentář Javadoc; Javadoc slouží pro generování
* dokumentace k programu.
*/
Ukázk kódu
Trdiční progrm „Hello world“ vypdá tkto:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Výpočet mediánu:
public class SortLinefOfTextFile {
void sortAtextFile(String fileName, String toFileame){
}
public static void main(String[] args){
File file = new File("C:\\"); //načtení souboru
Scanner sc = null; //scanner =třída, která umí načítat vstupy, sc = null definice vstupu, která nemá žádnou hodnotu null= rovná se ničemu nulová
try {
sc = new Scanner(file); //načte soubor "file" který má v sobě data(čísla)
}
catch (FileNotFoundException e) //osetreni načteni souboru
{
System.out.println("Soubor nebyl nalezen.");
return; //když vyskočí chyba "soubor nebyl nalezen tak se znovu program opakuje
}
ArrayList<Float> list = new ArrayList<Float>(); //float = desetinné číslo(může být i double liší se velikostí),vytvoreni seznamu
while (sc.hasNextFloat()) //zapsani čisel do seznamu
list.add(sc.nextFloat()); //přidá další hodnotu (číslo)
int size = list.size(); //načtení velikosti pole
if (size == 0) { //osetreni prazdneho souboru
System.out.println("Prázdný soubor"); //vypíše
return; //program se opakuje
}
Collections.sort(list); //seřazeni seznamu
for (int i = 0; i < size; i++) { //vypsání čísel
System.out.print(list.get(i) + " ");
}
System.out.println(); //prázdný řádek
//median
float median; //typ proměnné
if (size % 2 == 0) {
float x1 = list.get(size / 2 - 1);
float x2 = list.get(size / 2);
median = (x1 + x2) / 2;
} else {
median = list.get(size / 2);
}
System.out.println("Median=" + median);
}
}
Řzení slov menších jk 5 ze souboru
public class Priklad_1 { //třída
public static void main(String[] args) { //deklarace typu proměnné string = deklarace slov
File soubor = splitFiles("C:\\", "C:\\"); //načteni vstupniho a vystupniho souboru
}
public static File splitFiles(String input, String output) { //metody, sting = typ promenné, split = rozdělení souborů
try (BufferedReader br = new BufferedReader(new FileReader(input))) { //načteni souboru
String line; // definice proměnné line
ArrayList<String> results = new ArrayList<>(); //vytvoření seznamu
while ((line = br.readLine()) != null) { //čteni radku
String[] parts = line.split(" "); //rozděleni slov po "mezeře"
for (String part : parts) { //nahrazeni znaků
part = part.replace("*", ""); //nahrazení hvězdičky mezerou atd...
if (part.length() > 5) { //vybrani slov větších jak 5 znaků
results.add(part); //tak se to vypíše do toho dalšího souboru
}
}
}
Collections.sort(results); //serazeni vysledku podle abecedy může se to použít i pro čísla
try (BufferedWriter bwr = new BufferedWriter(new FileWriter(output))) { //zapsani vysledku do souboru
for (String result : results) {
bwr.write(result);//zapsání nového slova
bwr.newLine(); //vytvoření nové řádky
}
}
} catch (Exception e) { //pro zachycení chyby aby program nespadl.
System.err.println("Chyba při četení ze souboru."); //osetreni vstupu souboru
}
return new File(output); //musí být je to návrácení do metody main
}
Pohyb ut po stisknuti klávesy
public class Car2 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//vytvoreni obrázku
Pane pane = new Pane(); //kontejner, ve kterém se vytváří obrázek
Image carImage = new Image(new FileInputStream("E:\\auto.jpg"));
//načteni obrazku z disku
ImageView cImage = new ImageView(carImage); //zobrazení obrázku
cImage.setFitWidth(120); //nastaveni velikosti obrázku, šířka obrázku
cImage.setFitHeight(80); //výška obrázku
pane.getChildren().addAll(cImage); //
Scene scene = new Scene(pane, 800, 500); //nastaveni velikost okna
scene.setOnKeyPressed(new EventHandler<KeyEvent>() { //příkaz pro stlačení tlačítka
@Override
public void handle(KeyEvent e) { //nadefinované
//Automaticke posouvani s přerušenim po stlačení mezerniku
/*if (e.getCode() == KeyCode.RIGHT) {
int times = 1;
while (times < 10) {
cImage.setLayoutX(cImage.getLayoutX() + 10);
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
if (e.getCode() == KeyCode.SPACE) {
break; //po stihnutí mezerníku se obrázek zastaví
}
times++;
}
}*/
if (e.getCode() == KeyCode.RIGHT) { //posunuti doprava
cImage.setLayoutX(cImage.getLayoutX() + 10); //x= souřadnice posunutí o 10px
}
if (e.getCode() == KeyCode.LEFT) { //posunuti doleva
cImage.setLayoutX(cImage.getLayoutX() - 10);
}
if (e.getCode() == KeyCode.UP) { //posunuti nahoru
cImage.setLayoutY(cImage.getLayoutY() - 10);
}
if (e.getCode() == KeyCode.DOWN) { //posunuti dolu
cImage.setLayoutY(cImage.getLayoutY() + 10);
}
}
});
//zobrazeni
primaryStage.setTitle("Car");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Netrdiční verze „Hello world“ s mlou ukázkou objektového přístupu:
public class HelloWorld {
public static void main(String[] args) {
Pozdrav pozdrav = new Pozdrav("Ahoj světe!");
pozdrav.print();
}
}
class Pozdrav {
private String text;
public Pozdrav(String pozdrav) {
text = pozdrav;
}
private String getText() {
return text;
}
public void print() {
System.out.println(getText());
}
}
Použití jinými společnostmi

Společnosti Google ndroid si zvolily použití Jvy jko klíčový pilíř při tvorbě stejnojmenného open source mobilního operčního systému určeného pro chytré telefony tblety. I přesto, že je ndroid postven n Linuxovém jádře byl npsán převážně v progrmovcím jzyce C, tk SDK ndroidu používá jzyk Jv jko zákld pro svoje plikce. Jv je všk používán pouze pro syntxi, nikoliv pro svoji knihovnu tříd. Nmísto vytváření instnce třídy ze stndrdní Jv Clss Librry ndroid poskytuje svoji vlstní knihovní třídu. plikce pro ndroid jsou kompilovány přes bjtkód Jvy jko mezistupeň do formátu Dlvik Executbles (přípon .dex) spustitelného ve vlstní Dlvik Virtul Mchine ndroidu. Některé třídy v Dlvikově knihovně se podobjí jejím protějškům v jzyce Jv. Rozdíly se stly hlvním bodem sporu mezi Sun/Orcle Google/ndroid.
Dne 7. květn 2012 soud v Sn Frncisku shledl, že pokud by PI bylo chráněno copyrightem, pk by společnost Google porušil utorská práv společnosti Orcle použitím Jvy v zřízeních s ndroidem.[13] Orcle vznesl ve svém postoji otázky týkjící se legálnosti používání Jvy v ndroidu. Nicméně merický okresní soudce Willim Hskell lsup rozhodl dne 31. květn 2012, že PI nemůže být chráněno utorskými právy.[14]
Spor dále pokrčuje.
Vývojová prostředí
Seznm vybrných IDE pro vývoj v jzyce Jv (řzeno becedně):
- BlueJ – multipltformní vývojové prostředí (volně šiřitelné)
- Eclipse – multipltformní vývojové prostředí pro progrmování v jzycích Jv, C++ dlších (volně šiřitelné)
- IntelliJ IDE – multipltformní vývojové prostředí pro progrmování v jzycích Jv, Groovy dlších (Community verze zdrm, Ultimte plcená verze)
- JDeveloper – vývojové prostředí firmy Orcle (volně šiřitelné)
- NetBens – vývojové prostředí pro Jvu, C/C++, Groovy PHP (volně šiřitelné)
Odkzy
Reference
- ↑ JDK Project [online]. OpenJDK, 2025-03-18 [cit. 2025-03-19]. Dostupné online. (anglicky)
- ↑ TIOBE - The Software Quality Company. TIOBE Index [online]. TIOBE software BV, březen 2013 [cit. 2018-03-21]. Dostupné online. (anglicky)
- ↑ Python přeskočil v TIOBE Javu a je druhým nejoblíbenějším programovacím jazykem [online]. internet info. Dostupné online.
- ↑ 1.2 Design Goals of the Java™ Programming Language [online]. Oracle, 1999-01-01 [cit. 2018-03-21]. Kapitola The Java Language Environment. Dostupné online. (anglicky)
- ↑ NOVOTNÝ, Luděk. Historie a vývoj jazyka Java [online]. 2003 [cit. 2018-03-21]. Dostupné v archivu pořízeném dne 2020-08-14.
- ↑ a b FALTÝNEK, Lukáš. Java – dnes při šálku dobré kávy. linuxexpres.cz [online]. CCB, spol. s r. o., 2007-04-26 [cit. 2018-03-21]. Dostupné online. ISSN 1801-3996.
- ↑ SUN SHIPS JDK 1.1 [online]. Sun Microsystems, Inc, 1997-02-19 [cit. 2018-03-21]. Archivovaná verze. Dostupné v archivu pořízeném z originálu. (anglicky)
- ↑ SUN DELIVERS NEXT VERSION OF THE JAVA PLATFORM [online]. New York: Sun Microsystems, Inc, 1998-12-08 [cit. 2018-03-22]. Archivovaná verze. Dostupné v archivu pořízeném z originálu. (anglicky)
- ↑ SUN MICROSYSTEMS RELEASES FASTEST CLIENT-SIDE JAVA PLATFORM TO DATE [online]. Palo Alto: Sun Microsystems, Inc, 2000-05-08 [cit. 2018-03-22]. Archivovaná verze. Dostupné v archivu pořízeném z originálu. (anglicky)
- ↑ BODNÁR, Ján. Novinky Javy 10: typová inferencia lokálnych premenných [online]. Internet Info, s.r.o., 2018-03-22 [cit. 2018-03-22]. Dostupné online. (slovensky)
- ↑ NICCOLAI, James. Sun, Microsoft settle Java lawsuit [online]. IDG Communications, Inc, 2001-01-23 [cit. 2018-03-21]. Dostupné v archivu pořízeném dne 2018-03-30. (anglicky)
- ↑ Microsoft Java Virtual MachineTransition Guide for IT Professionals [online]. Scribd Inc, 2004-04-07 [cit. 2018-03-22]. Verze 2.2. Dostupné online. (anglicky)
- ↑ MULLIN, Joe. Google guilty of infringement in Oracle trial; future legal headaches loom [online]. Condé Nast [cit. 2018-03-08]. Dostupné online. (anglicky)
- ↑ Joe Mullin. Google wins crucial API ruling, Oracle’s case decimated [online]. Condé Nast, 2012-05-31 [cit. 2018-03-21]. Dostupné online.
Litertur
- DARWIN, F. Ian. Java. Praha: Computer Press, 2006. ISBN 80-251-0944-5.
- KEOGH, J. Java bez předchozích znalostí. Praha: Computer Press, 2005. ISBN 80-251-0839-2.
- HEROUT, Pavel. Java: grafické uživatelské prostředí a čeština. 2. vyd. České Budějovice: Kopp, 2007. 316 s. ISBN 978-80-7232-328-9.
- HEROUT, Pavel. Učebnice jazyka Java. České Budějovice: Kopp, 2000. 349 s. ISBN 80-7232-115-3.
- TRONÍČEK, Zdeněk: Učebnice jzyk Jv Archivováno 2. 10. 2011 na Wayback Machine., 2011
- ECKEL, Bruce. Thinking in Java. 4. vyd. [s.l.]: Prentice Hall, leden 2006. 1079 s. Dostupné v archivu pořízeném dne 2018-03-24. ISBN 0-13-187248-6. (anglicky) Jedna z nejznámějších učebnic, zdarma ke stažení. Archivováno 24. 3. 2018 na Wayback Machine.
Související články
- Pltform Jv
- Jv Ntive Interfce – rozhrní pro přístup k ntivnímu kódu
- JvScript – progrmovcí jzyk, který se podobně jmenuje, le se smotnou Jvou nemá nic společného
Externí odkzy
Obrázky, zvuky či videa k tématu Java na Wikimedia Commons
Téma Java (programming language) ve Wikicitátech (anglicky)
(anglicky)
(česky)