Hlavní navigace

Seriál Programovaci jazyk Java a JVM

Seriál se věnuje popisu nových či zajímavých vlastností programovacího jazyka Java i popisu interní funkce JVM.

Programovací jazyk Clojure 16: složitější uživatelská makra

Dnes budeme společně pokračovat v popisu makrosystému, který tvoří nedílnou součást jazyka Clojure. Nejprve vylepšíme trasovací makro navržené minule a posléze si ukážeme tvorbu složitějšího makra, díky němuž do jazyka Clojure přidáme nový typ řídicí struktury – programové smyčky.

Doba čtení: 23 minut

Programovací jazyk Clojure 15: tvorba uživatelských maker

Dnes budeme společně pokračovat v popisu makrosystému, který tvoří nedílnou součást jazyka Clojure. Minule jsme si popsali makra objektu Reader, především makra nazvaná quote, syntax-quote, unquote a unquote-splicing, která využijeme dnes při tvorbě skutečných uživatelských maker.

Doba čtení: 21 minut

Programovací jazyk Clojure 14: základy práce se systémem maker

V dnešní části seriálu o Javě, JVM i navazujících technologiích si popíšeme další důležitou vlastnost programovacího jazyka Clojure. Tento jazyk je totiž, podobně jako další jazyky inspirované LISPem, vybaven mocným systémem maker. V samotném Clojure jsou již některá makra pevně zabudována a další lze relativně jednoduše doplnit.

Doba čtení: 22 minut

Programovací jazyk Clojure 13: překlad programů z Clojure do bajtkódu JVM (pokračování)

Dnes se budeme společně zabývat stejným tématem jako v části předchozí – řekneme si další informace o tom, jakým způsobem se překládají aplikace naprogramované v Clojure do bajtkódu JVM. Jeden z problémů, které je nutné řešit, spočívá v tom, jak do Clojure vnést informaci o datových typech.

Doba čtení: 37 minut

Programovací jazyk Clojure 12: překlad programů z Clojure do bajtkódu JVM

Dnes se společně seznámíme se způsobem překladu aplikací napsaných v jazyku Clojure do bajtkódu JVM. V průběhu vývoje programů je sice většinou vhodné používat interaktivní interpret Clojure, ovšem výsledná aplikace se lépe dodává a nasazuje do produkce například ve formě Java archivu (JAR).

Doba čtení: 23 minut

Programovací jazyk Clojure 11: generátorová notace seznamu (list comprehension)

Dnes si popíšeme makro nazvané „for“, které v jazyce Clojure představuje generátorovou notaci seznamu, což je poněkud nepřesně přeložený termín „list comprehension“. Díky existenci tohoto makra je možné mnohdy i velmi výrazným způsobem zkrátit a zjednodušit zápis některých algoritmů.

Doba čtení: 17 minut

Programovací jazyk Clojure 10: kooperace mezi Clojure a Javou (pokračování)

V dnešní části seriálu o jazyce Java i o virtuálním stroji Javy budeme pokračovat v popisu komunikace mezi objekty a třídami napsanými v Javě a skripty, které jsou napsány v programovacím jazyce Clojure. Taktéž se budeme zabývat makrem import a vztahem mezi vestavěnými datovými typy Clojure a příslušnými typy v Javě.

14. 8. 2012 0:00
Doba čtení: 23 minut

Programovací jazyk Clojure 9: validátory, pozorovatelé a kooperace mezi Clojure a Javou

V dnešní části seriálu o programovacím jazyce Java i o virtuálním stroji Javy se již podeváté budeme zabývat popisem jazyka Clojure postaveného nad JVM. Dnes se seznámíme s takzvanými validátory (validators), hlídači/pozorovateli (watchers) a taktéž způsobem kooperace mezi jazykem Clojure a jazykem Java.

Doba čtení: 20 minut

Programovací jazyk Clojure 8: identity, stavy, neměnné hodnoty a referenční typy

Dnes se budeme zabývat způsobem reprezentace stavu aplikace v programovacím jazyce Clojure i technikami, které se mohou použít pro změnu tohoto stavu. V Clojure se totiž pro uložení stavu aplikace nepoužívají běžné proměnné ani atributy objektů, ale takzvané referenční typy (zkráceně reference).

Doba čtení: 20 minut

Programovací jazyk Clojure 7: další podpůrné prostředky pro paralelní programování

V dnešní části seriálu o programovacím jazyce Java dokončíme popis objektů typu „futures“ nabízených programovacím jazykem Clojure. Kromě toho si řekneme, jak lze využít objekty typu „promise“, a navíc se budeme zabývat velmi zajímavou technologií – STM neboli Software Transactional Memory.

Doba čtení: 20 minut

Programovací jazyk Clojure 6: futures nejsou jen finanční deriváty

V dnešní části seriálu o programovacím jazyce Java i o virtuálním stroji Javy se již pošesté budeme zabývat popisem vlastností programovacího jazyka Clojure. Již minule jsme se stručně zmínili o jedné variantě „paralelizace“ programů a dnes budeme v tomto dosti důležitém tématu pokračovat.

Doba čtení: 19 minut

Clojure a bezpečné aplikace pro JVM: sekvence, lazy sekvence a paralelní programy

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM se již popáté budeme zabývat jazykem Clojure postaveným nad virtuálním strojem Javy. Řekneme si další informace o sekvencích i lazy sekvencích, včetně způsobu jejich základního využití při paralelních výpočtech.

Doba čtení: 19 minut

Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (4.část - kolekce, sekvence a lazy sekvence)

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM budeme, stejně jako v předchozích třech částech, pokračovat v popisu programovacího jazyka Clojure. Dnešním ústředním tématem bude práce s kolekcemi a se sekvencemi, protože především sekvence tvoří velmi elegantní a důležitou součást Clojure.

Doba čtení: 20 minut

Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (3.část - funkcionální programování)

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM se již potřetí vrátíme k popisu programovacího jazyka Clojure. Zatímco v předchozích dvou částech jsme se zabývali především popisem způsobu zápisu různých forem, dnes se již konečně začneme zabývat tvorbou programů.

Doba čtení: 22 minut

Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM (2.část)

V dnešní části seriálu o programovacím jazyku Java i o virtuálním stroji Javy budeme pokračovat v popisu programovacího jazyka Clojure. Seznámíme se především s tím, jakým způsobem se v Clojure pracuje se složenými formami a taktéž s formami speciálními, protože právě to představuje ústřední součást tohoto programovacího jazyka.

Doba čtení: 22 minut

Clojure aneb jazyk umožňující tvorbu bezpečných vícevláknových aplikací pro JVM

V dnešní části seriálu o programovacím jazyku Java i o virtuálním stroji tohoto jazyka se seznámíme s jazykem Clojure běžícím nad JVM. Jedním z nejzajímavějších rysů Clojure je jeho zaměření na tvorbu vícevláknových aplikací bez nutnosti použití explicitně zapisovaných zámků či použití jiných synchronizačních mechanismů. Na příkladu Clojure lze ukázat, že JVM je použitelný i pro provozování vysoce paralelních aplikací.

Doba čtení: 20 minut

Pohled pod kapotu JVM - instrukce invokedynamic

V dnešní části seriálu o programovacím jazyku Java i o vlastnostech virtuálního stroje tohoto jazyka se zaměříme na popis nové instrukce nazvané příhodně invokedynamic, která byla do JVM přidána v rámci JDK 7 především z důvodu lepší podpory překladačů dynamicky typovaných programovacích jazyků.

Doba čtení: 20 minut

Pohled pod kapotu JVM - vliv změn v syntaxi a sémantice Javy na strukturu bajtkódu

Ve dalším článku o jazyku Java a JVM navážeme na části předchozí, v nichž jsme si popsali instrukční soubor virtuálního stroje Javy. Řekneme si, jak se měnila struktura bajtkódu společně s rozšiřováním syntaxe a sémantiky Javy. Asi největší změnou je však přidání instrukce invokedynamic do JDK 7.

Doba čtení: 28 minut

Pohled pod kapotu JVM (12.část - volání metod rozhraní, synchronizované bloky a kontrola typů za běhu)

Dnes dokončíme popis instrukčního souboru virtuálního stroje Javy. Nejprve budou uvedeny informace o dnes již nepoužívaných instrukcích jsr a ret. Následně se budeme zabývat poměrně vysokoúrovňovými instrukcemi určenými pro volání metod rozhraní, vyhození výjimky, synchronizaci a kontrolu typů za běhu (runtime check).

28. 2. 2012 0:00
Doba čtení: 20 minut

Pohled pod kapotu JVM (11.část - instrukce pro tvorbu polí a přístup k prvkům polí)

Počet již popsaných instrukcí virtuálního stroje Javy se nám utěšeně zvětšuje. V dnešní části seriálu o programovacím jazyce Java i o JVM se zaměříme na popis dalších dvaceti instrukcí. Bude se jednat o instrukce používané pro vytváření polí různých typů a pro přístup k prvkům těchto polí.

Doba čtení: 18 minut

Pohled pod kapotu JVM (10.část - instrukce pro práci s třídami a objekty)

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM se již popáté budeme zabývat popisem instrukčního souboru virtuálního stroje Javy. Zaměříme se na popis instrukcí, které jsou určené pro práci s třídami a objekty, zejména na instrukce pro přístup k atributům a metodám tříd i objektů.

Doba čtení: 20 minut

Pohled pod kapotu JVM (9.část - tajemství instrukcí lookupswitch a tableswitch)

V dnešní části seriálu o jazyce Java a JVM se již počtvrté budeme zabývat popisem instrukčního souboru virtuálního stroje Javy. Zaměříme se především na dvojici poměrně komplikovaných instrukcí nazvaných tableswitch a lookupswitch, pomocí nichž se implementují větvení programů realizované příkazy switch.

Doba čtení: 16 minut

Pohled pod kapotu JVM (8.část - instrukce určené pro řízení běhu programu)

V dnešním článku o jazyce Java i JVM se již potřetí vrátíme k instrukčnímu souboru zpracovávanému virtuálním strojem Javy. Popíšeme si instrukce sloužící k řízení běhu programu. Jedná se o instrukce pro ukončení metody s předáním návratové hodnoty, nepodmíněné a podmíněné skoky a taktéž o instrukce pro rozvětvení.

Doba čtení: 23 minut

Pohled pod kapotu JVM (7.část - další instrukce zpracovávané virtuálním strojem Javy)

V dnešním článku o jazyce Java budeme pokračovat v popisu instrukčního souboru zpracovávaného virtuálním strojem. Popíšeme si instrukce používané pro provádění aritmetických a bitových operací a také instrukce sloužící pro porovnání dvou hodnot. Na těchto instrukcích je mj. založeno i řízení běhu programů.

Doba čtení: 24 minut

Pohled pod kapotu JVM (6.část - instrukční soubor virtuálního stroje Javy)

V dnešní části seriálu o programovacím jazyce Java si popíšeme první část instrukcí tvořících instrukční soubor virtuálního stroje Javy. Jedná se o instrukce sloužící pro uložení konstant na zásobník operandů, instrukce pro přesuny dat mezi proměnnými a zásobníkem operandů a taktéž o konverzní instrukce.

Doba čtení: 26 minut

Pohled pod kapotu JVM (5.část - popis virtuálního stroje Javy)

V dnešní části seriálu o programovacím jazyce Java se budeme zabývat popisem vlastního virtuálního stroje Javy, v němž jsou zpracovávány instrukce bajtkódu tvořící těla jednotlivých metod. Popíšeme si strukturu virtuálního stroje v době běhu aplikace a nezapomeneme ani na základní informace o instrukčním souboru.

Doba čtení: 18 minut

Pohled pod kapotu JVM (4.část - dokončení popisu struktury souborů .class)

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM dokončíme popis struktury bajtkódu, tj. souborů s koncovkou .class generovaných (většinou) překladačem Javy. Řekneme si, jakým způsobem jsou uloženy informace o datových položkách tříd, rozhraní či výčtových typů, jak jsou uloženy jednotlivé metody a zmíníme se taktéž o atributech přiřazených k vlastním třídám.

Doba čtení: 22 minut

Pohled pod kapotu JVM (3.část - pokračování popisu struktury souborů .class)

Dnes se společně již potřetí vrátíme ke struktuře bajtkódu, tj. k souborům s koncovkou .class. Řekneme si, jakým způsobem jsou v bajtkódu uloženy další důležité informace: příznaky třídy či rozhraní, jméno implementované třídy, jméno nadtřídy a konečně i seznam všech implementovaných rozhraní.

Doba čtení: 15 minut

Pohled pod kapotu JVM (2.část - podrobnější analýza obsahu constant poolu)

V devatenácté části seriálu o programovacím jazyce Java i o vlastnostech JVM budeme pokračovat v popisu bajtkódu, tj. interní struktury souborů s koncovkou .class. Dnes se zaměříme na strukturu položek umístěných v constant poolu. Taktéž bude ukázán poměrně jednoduchý nástroj, který dokáže obsah constant poolu vypsat.

20. 12. 2011 0:00
Doba čtení: 23 minut

Pohled pod kapotu JVM (1.část - prohlížení a modifikace bajtkódu)

V osmnácté části poněkud nepravidelně vycházejícího seriálu o programovacím jazyce Java i o vlastnostech JVM se budeme zabývat prohlížením a modifikací bajtkódu, do něhož jsou překládány zdrojové texty psané (nejenom) v Javě. Modifikace bajtkódu je často používána nástroji typu Cobertura, EMMA či AspectJ.

Doba čtení: 17 minut