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.
články 1 – 30 / 30
Pohled pod kapotu JVM - vliv změn v syntaxi a sémantice Javy na strukturu bajtkódu
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).
Pohled pod kapotu JVM (11.část - instrukce pro tvorbu polí a přístup k prvkům polí)
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ů.
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.
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í.
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ů.
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.
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.
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.
Pohled pod kapotu JVM (3.část - pokračování popisu struktury souborů .class)
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.
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.
JamVM aneb alternativa k HotSpotu (nejenom) pro embedded zařízení, tablety a chytré telefony
V sedmnácté části poněkud nepravidelně vycházejícího seriálu o programovacím jazyce Java a o vlastnostech JVM si řekneme základní informace o projektu JamVM. Pod tímto názvem se skrývá virtuální stroj Javy představující alternativu ke známému HotSpotu pocházejícímu z dílny firmy Sun a později Oracle.
Podpora skriptovacích jazyků v JDK6 a OpenJDK6 (3.část)
Dnes se již potřetí vrátíme k aplikačnímu programovému rozhraní (API) navrženého v rámci JSR 223, které slouží k podpoře skriptovacích jazyků běžících nad virtuálním strojem Javy. Zaměříme se na předávání hodnot (obecně objektů) mezi aplikací v Javě a skriptem s využitím sdílených pojmenovaných objektů.
Podpora skriptovacích jazyků v JDK6 a OpenJDK6 (2.část)
V našem seriálu budeme pokračovat v popisu aplikačního programového rozhraní (API) navrženého v rámci JSR 223, které slouží k podpoře skriptovacích jazyků běžících nad virtuálním strojem Javy (JVM). Dnes se zaměříme především na podrobnější popis kooperace mezi aplikacemi v Javě a skripty v JavaScriptu.
Podpora skriptovacích jazyků v JDK6 a OpenJDK6
Ve čtrnáctém článku o jazyce Java se seznámíme s API určeným pro práci se skripty napsanými v různých skriptovacích programovacích jazycích. Toto API bylo navrženo tak, aby byl způsob volání skriptů, předávání parametrů skriptům, získávání návratových hodnot i další činnosti prováděny jednotným způsobem.
Využití skrytých vlastností JDK (1)
V dnešním článku o vlastnostech JDK 6 a JDK 7 si řekneme základní informace o jedné skryté (přesněji řečeno velmi málo zdokumentované a známé) vlastnosti nových verzí JDK. Jedná se o alternativní varianty tříd HashMap, LinkedHashMap a TreeMap uložené v archivu alt-rt.jar. Tyto třídy nabízí pro některé aplikace větší výkonnost.
Monitorování procesů a správa paměti v JDK 6 a JDK 7 - využití large pages
Ve dvanácté části seriálu o vlastnostech JDK 6 a JDK 7 (samozřejmě včetně OpenJDK) si řekneme, z jakého důvodu může být v některých případech vhodné používat takzvané large pages, známé též pod názvem huge pages. Jedná se o technologii nabízenou některými novějšími procesory, která je podporována i Linuxem (konkrétně jádry 2.6.x) a samozřejmě i běhovým prostředím Javy.
Monitorování procesů a správa paměti v JDK 6 a JDK 7 (5)
V jedenácté části seriálu o JDK 6 a JDK 7 (samozřejmě včetně OpenJDK) se opět budeme zabývat principem činnosti správců paměti a způsobům, jakými lze ovlivnit výkonnost virtuálního stroje Javy. Popíšeme si především rozdíl mezi různými správci paměti a zaměříme se na běh JVM na víceprocesorových počítačích.
Monitorování procesů a správa paměti v JDK 6 a JDK 7 (4)
V desáté části seriálu o vlastnostech JDK 6 a JDK 7 si ukážeme způsob ovlivnění chování správců paměti pomocí parametrů, které je možné specifikovat při spouštění běhového prostředí Javy (JRE). Zaměříme se především na způsob nastavování velikostí paměťových oblastí, ze kterých se skládá halda (heap).
Monitorování procesů a správa paměti v JDK 6 a JDK 7 (2)
V deváté části seriálu o vlastnostech JDK 6 a 7 se budeme zabývat především principem práce správců paměti. Řekneme si, jaké veličiny se při sledování chování aplikace v reálném provozu mohou měřit a jak jsou tyto veličiny ovlivněny nastavením parametrů správců paměti při spuštění prostředí Javy (JRE).
Monitorování procesů a správa paměti v JDK6 a JDK7 (2)
V osmé části seriálu o vlastnostech JDK si ukážeme použití profileru, jenž je přímo součástí standardní instalace JRE. Také si řekneme, proč není vhodné, aby se v často volaném kódu spojovaly řetězce pomocí operátorů + a +=. V závěru se navíc seznámíme se základními způsoby implementace správců paměti.
Monitorování procesů a správa paměti v JDK6 a JDK7 (1)
V sedmé části seriálu o vlastnostech JDK (samozřejmě včetně OpenJDK) si řekneme základní informace o správě paměti ve virtuálním stroji jazyka Java. Taktéž se seznámíme se základními způsoby monitorování procesů běžících v JVM – zaměříme se přitom (alespoň prozatím) pouze na nástroje, které jsou dostupné přímo v JDK6 a JDK7.
Využití komprimovaných ukazatelů na objekty v JVM
V dnešní části seriálu o novinkách, které můžeme najít v syntaxi a sémantice programovacího jazyka Java i v jeho virtuálním stroji, si popíšeme vlastnost, která sice byla původně plánována až pro oficiální verzi JDK 7, ale nakonec ji mohou využít i programátoři a uživatelé používající JDK 1.6.0 14 a samozřejmě také OpenJDK 6. Jedná se o zavedení takzvaných komprimovaných ukazatelů na objekty, které lze používat na 64bitových platformách, včetně x86_64.
Novinky v JDK 7 (5) – projekt Lambda a anonymní funkce v příkladech
Novinky v JDK 7 aneb mírný pokrok v mezích zákona – projekt Lambda
Novinky v JDK 7 (3) + co v JDK 7 naopak nenajdeme
Ve třetí části seriálu o nových vlastnostech programovacího jazyka Java i jeho virtuálního stroje dokončíme popis syntaktických a sémantických změn, které lze najít v JDK 7. Ve druhé části článku si navíc řekneme, na které změny budeme naopak muset počkat až do vydání JDK 8 (v ideálním případě bude tato verze k dispozici v polovině roku 2012) – kromě usnadnění práce s kolekcemi se například jedná o projekt Lambda, který poměrně zásadním způsobem rozšiřuje sémantiku Javy o anonymní funkce a uzávěry.
Novinky v JDK 7 aneb mírný pokrok v mezích zákona (2)
Novinky v JDK 7 aneb mírný pokrok v mezích zákona (1)
V tomto článku si popíšeme některé z nových vlastností programovacího jazyka Java i jeho virtuálního stroje, které jsou zařazeny do chystané verze JDK 7. Nebude se jednat pouze o stručný popis vlastností, protože se kromě zmínky o nových knihovnách, třídách a rozhraních budeme věnovat i rozšíření syntaxe a sémantiky Javy, a to s ohledem na to, jak se nová syntaxe/sémantika projevuje v generovaném bajtkódu.
články 1 – 30 / 30

