The wiki page is under active construction, expect bugs.

This is an old revision of the document!


Programování v jazyce JAVA: vlastnosti a koncepce jazyka. Principy objektového programování.

B0B36PJV Webové stránky předmětu

  • Vývojové prostředí – JDK, JVM, kompilace a běh programu, správa paměti, GC, profilování a optimalizace.
  • Objekty, třídy a jejich vztahy – princip abstrakce a zapouzdření, modifikátory přístupu. Interface a abstraktní třída. Dědičnost a kompozice, polymorfismus, dynamická vazba.
  • Výčtové typy – práce s kolekcemi, vzor iterátor, generické typy.
  • Vnitřní a anonymní třídy – imutabilita, vzor singleton. Proměnné a metody třídy vs. instance.
  • Mechanismus výjimek – typy a jejich ošetření, vlastní výjimky. Práce se soubory – přístup k souboru, textové vs. binární, proudy, ukládání dat. Sokety – typy soketů, typy spojení, síťová komunikace.
  • Paralelismus – vícevláknové aplikace, problém souběhu a zastavení. Tvorba vláken a jejich ukončení, threadpool, synchronizace, volatilita.

Vývojové prostředí – JDK, JVM, kompilace a běh programu, správa paměti, GC, profilování a optimalizace

JDK, JRE, JVM

Většinu programovacích jazyků je možné rozdělit do dvou kategorií:

  • kompilované - program je zkompilovaný do spustitelného souboru, skládá se z nativních procesorových instrukcí, které přímo vykonává procesor a musí být tedy kompilován pro konkrétní architekturu a systém. Mezi tyto jazyky patří například C/C++.
  • interpretované - program není zkompilovaný, pro spuštění je nutný jiný program (interpreter), který program při spuštění převádí do nativních procesorových instrukcí, které může počítač vykonávat. Typický interpretovaný jazyk je třeba Python.

Javu je možné zařadit do obou kategorií - program se první zkompiluje do bytecode, který je obecný - není specifický pro danou platformu. Pro tento proces je potřeba JDK (java development kit).

Tento bytecode je možné následně pustit s JRE (java runtime enviroment - subset JDK), který bytecode při spuštění interpretuje.

Java tedy umožňuje program zkompilovat pouze jednou do bytecode a následně spustit na jekékoliv platformě s JRE (i když v praxi to obecně tak jednoduché není - compile once, debug everywhere). Tento přístup vede k rychlosti blížící se kompilovaným jazykům bez nutnosti kompilovat pro každou platformu zvlášť.

JVM (java virtual machine) je obsažen v JRE i JDK a je zodpovědný za překlad bytecode do nativních procesorových instrukcí.

Správá paměti

Stack

Malý paměťový prostor, ve kterém se typicky ukládají lokální promněné (což obsahuje i reference, atd). Funguje na principu last-in first-out. Při zavolání funkce se na stacku alokuje místo pro všechny lokální promněné dané funkce. Implementováno přes stack-pointer, který ukládá adresu konce stacku.

Navigation

Playground

QR Code
QR Code statnice:bakalar:b0b36pjv (generated for current page)