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.

Pohled pod kapotu JVM – získání informací o třídách ve sledované JVM s využitím rozhraní JDI

V dnešní části seriálu o jazyku Java si ukážeme způsob využití rozhraní JDI (Java Debugger Interface) pro získání všech informací o třídách načtených do sledovaného (monitorovaného) virtuálního stroje Javy. Přes JDI lze získat například všechny metody i atributy vybrané třídy, informace o parametrech metod atd.

7. 5. 2013 0:00
Doba čtení: 29 minut

Pohled pod kapotu JVM – čtení informací o parametrech i o lokálních proměnných metod s využitím rozhraní JDI

V dnešní části seriálu o programovacím jazyku Java i o virtuálním stroji Javy si popíšeme způsob přečtení informací o parametrech i o lokálních proměnných metod s využitím rozhraní JDI (Java Debugger Interface). Využijeme přitom velkou část funkcionality demonstračního příkladu popsaného minule.

30. 4. 2013 0:00
Doba čtení: 24 minut

Pohled pod kapotu JVM – přístup k zásobníkovým rámcům vláken sledované JVM přes rozhraní JDI

V dnešní části seriálu o programovacím jazyku Java i o virtuálním stroji Javy si ukážeme, jakým způsobem je možné s využitím rozhraní JDI (Java Debugger Interface) získat a následně i vypsat obsah zásobníkových rámců všech vláken aplikace běžící v cílové (sledované) JVM.

23. 4. 2013 0:00
Doba čtení: 18 minut

Pohled pod kapotu JVM – připojení debuggeru k běžícímu virtuálnímu stroji přes rozhraní JDI (2)

V dnešní části seriálu o programovacím jazyku Java i o virtuálním stroji Javy si řekneme, jakým způsobem lze využít metody nabízené rozhraním com.sun.jdi.VirtualMachine pro získání základních informací o cílovém virtuálním stroji Javy, zejména o vláknech a třídách spravovaných tímto JVM.

16. 4. 2013 0:00
Doba čtení: 19 minut

Pohled pod kapotu JVM – připojení debuggeru k běžícímu virtuálnímu stroji přes rozhraní JDI

V dnešní části seriálu o programovacím jazyku Java i o virtuálním stroji Javy se již potřetí budeme zabývat rozhraním JDI (Java Debugger Interface). Řekneme si, jakým způsobem je možné toto rozhraní využít pro připojení debuggeru či jiného podobného nástroje k již běžícímu javovskému virtuálnímu stroji.

9. 4. 2013 0:00
Doba čtení: 19 minut

Pohled pod kapotu JVM – spuštění a monitorování virtuálního stroje Javy s využitím rozhraní JDI

V dnešní části seriálu o programovacím jazyku Java i o virtuálním stroji Javy se již podruhé budeme zabývat rozhraním JDI (Java Debugger Interface). Ukážeme si, jak lze přes JDI spustit a následně i sledovat JVM a především aplikace spuštěné v tomto virtuálním stroji – stejným způsobem pracují i debuggery.

2. 4. 2013 0:00
Doba čtení: 15 minut

Pohled pod kapotu JVM - architektura JPDA a rozhraní JDI

V dnešní části seriálu o jazyku Java i o virtuálním stroji Javy si řekneme základní informace o architektuře JPDA (Java Platform Debugger Architecture). Ukážeme si, jaký je vztah již popsaného rozhraní JVM TI k JPDA a taktéž si popíšeme základní vlastnosti javovského rozhraní JDI (Java Debugger Interface).

26. 3. 2013 0:00
Doba čtení: 12 minut

Pohled pod kapotu JVM - využití rozhraní JNI společně s rozhraním JVM TI

Dnes si společně ukážeme způsob využití rozhraní JNI (Java Native Interface) z JVM TI agentů. JVM TI agenti, což jsou programy napsané většinou v C či C++, totiž v některých případech potřebují s využitím JNI vytvářet javovské objekty, popř. volat metody již vytvořených javovských objektů.

19. 3. 2013 0:00
Doba čtení: 21 minut

Pohled pod kapotu JVM - práce s parametry a lokálními proměnnými metod přes rozhraní JVM TI

Dnes si společně řekneme, jakým způsobem lze přes rozhraní JVM TI získat informace o parametrech a lokálních proměnných statických i nestatických metod. Tyto informace je možné využít například ve chvíli, kdy je v nějaké metodě vstoupeno na breakpoint a je nutné prozkoumat aktuální stav procesu.

12. 3. 2013 0:00
Doba čtení: 33 minut

Pohled pod kapotu JVM - předčasný výskok z metody s využitím rozhraní JVM TI

V šedesáté osmé části seriálu o jazyce Java i o vlastnostech JVM si řekneme, jakým způsobem je možné přes rozhraní JVM TI vynutit předčasné ukončení libovolné metody. Většinou se jedná o metody, na kterých je nastavený breakpoint, ovšem ve skutečnosti je možné si vynutit ukončení zcela libovolné metody.

Doba čtení: 18 minut

Pohled pod kapotu JVM - nastavení breakpointů s využitím rozhraní JVM TI (dokončení)

V dnešní části seriálu o programovacím jazyce Java i o vlastnostech JVM dokončíme popis způsobu nastavení breakpointů přes rozhraní JVM TI. Ukážeme si kompletní demonstrační program, na němž bude shrnuta většina postupů, s nimiž jsme se seznámili v předchozích čtrnácti částech tohoto seriálu.

26. 2. 2013 0:00
Doba čtení: 18 minut

Pohled pod kapotu JVM - nastavení breakpointů s využitím rozhraní JVM TI (pokračování)

Dnes budeme společnými silami pokračovat v popisu způsobu nastavování breakpointů s využitím rozhraní JVM TI. Na příkladu demonstračního JVM TI agenta si ukážeme, jak lze zaregistrovat breakpoint pro zvolenou metodu a číslo řádku i to, jakým způsobem je agent informován a vstupu na breakpoint.

19. 2. 2013 0:00
Doba čtení: 15 minut

Pohled pod kapotu JVM - nastavení breakpointů s využitím rozhraní JVM TI

Dnes se začneme zabývat další velmi důležitou funkcí nabízenou rozhraním JVM TI. Jedná se o funkci určenou pro nastavení breakpointů (bodů přerušení). Breakpoint je možné nastavit v libovolné metodě na zvolenou instrukci, takže v JVM TI je práce s breakpointy přesnější než ve většině debuggerů či IDE.

12. 2. 2013 0:00
Doba čtení: 14 minut

Pohled pod kapotu JVM - sledování čtení i zápisu do vybraného atributu třídy či atributu objektu (dokončení)

V dnešní části seriálu o jazyce Java a JVM dokončíme téma, jemuž jsme se začali věnovat minule. Na příkladu demonstračního JVM TI agenta si ukážeme, jakým způsobem lze zjistit všechny důležité informace o místech, v nichž dochází ke čtení či naopak k zápisu do vybraného atributu třídy či atributu objektu.

5. 2. 2013 0:00
Doba čtení: 18 minut

Pohled pod kapotu JVM - sledování čtení i zápisu do vybraného atributu třídy či atributu objektu

V dnešním článku o jazyce Java a vlastnostech JVM si ukážeme, jak může být použit JVM TI agent pro sledování čtení či zápisu do atributu třídy či objektu. Rozhraní JVM TI nám totiž dává k dispozici callback funkce zavolané ve chvíli, kdy libovolné vlákno k označeným (vybraným) atributům přistupuje.

29. 1. 2013 0:00
Doba čtení: 20 minut

Pohled pod kapotu JVM - řetězce na haldě (dokončení) a využití JVM TI pro ladění

V dnešním článku o jazyce Java i o vlastnostech JVM nejprve dokončíme téma, kterým jsme se začali zabývat v předchozím díle – ukážeme si, jak jsou využívány (krátké) řetězce ve vybrané reálné javovské aplikaci. Ve druhé polovině článku si řekneme, jak lze využít rozhraní JVM TI pro ladění (debugging).

Doba čtení: 24 minut

Pohled pod kapotu JVM - jak efektivně jsou uložena pole a řetězce na haldě?

Dnes si řekneme, jak získat informace o polích (primitivních typů) uložených na haldě a následně se budeme zabývat uložením řetězců. Jedná se o poměrně důležité téma, jelikož způsob práce JVM s řetězci může mnohdy významným způsobem ovlivnit jak výkonnost javovských aplikací, tak i jejich paměťovou náročnost.

Doba čtení: 22 minut

Pohled pod kapotu JVM - průchod hodnotami atributů objektů uložených na haldě (heapu)

Dnes si společně řekneme, jak je možné s využitím JVM TI agenta vypsat hodnoty všech statických a nestatických atributů uložených na haldě. Zaměříme se zejména na průchod atributy základních (primitivních) datových typů, protože ty se zpracovávají odlišně od objektových (referenčních) typů.

Doba čtení: 22 minut

Pohled pod kapotu JVM - průchod objekty uloženými na haldě (heapu)

V dnešní části seriálu o jazyce Java i o vlastnostech JVM se seznámíme se způsobem práce s objekty uloženými na haldě s využitím rozhraní JVM TI. Agenti připojení k virtuálnímu stroji Javy přes JVM TI totiž poměrně často potřebují nějaké údaje (instance určitých tříd) z haldy přečíst a následně zpracovat.

Doba čtení: 24 minut

Pohled pod kapotu JVM - práce se zásobníkem a haldou přes rozhraní JVM TI

V dnešní části seriálu o programovacím jazyce Java i o virtuálním stroji Javy si řekneme, jak je možné přes rozhraní JVM TI získávat informace ze zásobníkových rámců (stack frames) i z haldy (heap). Jedná se o informace, které jsou mnohdy velmi důležité zejména při ladění či při profilování javovských aplikací.

Doba čtení: 46 minut

Pohled pod kapotu JVM - sledování činnosti virtuálního stroje Javy přes rozhraní JVM TI (5.část: detekce vzniku všech výjimek)

Dnes navážeme na část předchozí, v níž jsme si popsali, jak lze v JVM TI agentovi detekovat okamžik zachycení výjimky. Dnes si (naopak) ukážeme způsob zjištění okamžiku vzniku výjimek, a to jak výjimek zachycovaných (i prázdným blokem catch), tak i výjimek, které nejsou zachyceny a povedou k ukončení aplikace.

Doba čtení: 42 minut

Pohled pod kapotu JVM - sledování činnosti virtuálního stroje Javy přes rozhraní JVM TI (4.část: práce s výjimkami)

Dnes si řekneme, jak je možné přes rozhraní JVM TI detekovat vznik libovolné výjimky a současně i zjistit další podrobnější informace o tom, na jakém místě programu bude výjimka zachycena a o jakou výjimku se vlastně jedná. Při tvorbě nových demonstračních příkladů si popíšeme i mnohé další možnosti JVM TI.

27. 11. 2012 0:00
Doba čtení: 42 minut

Pohled pod kapotu JVM - sledování činnosti virtuálního stroje Javy přes rozhraní JVM TI (3.část)

Dnes se již potřetí budeme zabývat popisem rozhraní JVM TI, které je možné využít pro tvorbu takzvaných agentů monitorujících, popř. ovlivňujících chování aplikace v JVM. Příklady uvedené v dnešní části budou velmi jednoduché, protože si ukážeme použití funkcí pro čtení a změnu obsahu systémových proměnných.

20. 11. 2012 0:00
Doba čtení: 38 minut

Pohled pod kapotu JVM - sledování činnosti virtuálního stroje Javy přes rozhraní JVM TI (2.část)

Dnes budeme pokračovat v popisu rozhraní JVM TI, které je možné využít pro tvorbu agentů monitorujících popř. ovlivňujících chování aplikace v JVM. Dnes se budeme zabývat převážně zjišťováním jmen i signatur volaných metod a sledováním správce paměti. Přitom se dozvíme další podrobnosti o rozhraní JVM TI.

Doba čtení: 35 minut

Pohled pod kapotu JVM - sledování činnosti virtuálního stroje Javy přes rozhraní JVM TI

V dnešní části seriálu o programovacím jazyce Java si popíšeme základní vlastnosti rozhraní JVM TI, pomocí něhož je možné sledovat a taktéž řídit činnost tohoto virtuálního stroje. S využitím JVM TI je například možné přečíst obsah celého heapu, detekovat volání metod, detekovat vzniklé výjimky atd.

Doba čtení: 25 minut

Programovací jazyk Clojure 21: ClojureScript aneb překlad Clojure do JavaScriptu

Dnes se zmíníme o projektu ClojureScript. Zatímco původní implementace jazyka Clojure interně používá překlad funkcí do bajtkódu JVM, používá ClojureScript překlad do jazyka JavaScript. Je tedy jasné, kde může ClojureScript nalézt své oblasti použití: především na webu, popř. v oblasti mobilních aplikací.

30. 10. 2012 0:00
Doba čtení: 20 minut

Programovací jazyk Clojure 20: vývojová prostředí pro Clojure (integrace Vimu s REPL)

V dnešní části seriálu o vlastnostech programovacího jazyka Java i JVM budeme pokračovat v popisu vývojových prostředí použitelných při práci s programovacím jazykem Clojure. Minule jsme si popsali způsob integrace Clojure s vývojovým prostředím Eclipse, dnes se budeme zabývat „odlehčeným“ IDE založeným na textovém editoru Vim.

23. 10. 2012 0:00
Doba čtení: 23 minut

Programovací jazyk Clojure 19: vývojová prostředí pro Clojure

Dnes se v seriálu zmíníme o (integrovaných) vývojových prostředích, které je možné využít pro tvorbu rozsáhlejších aplikací s využitím programovacího jazyka Clojure. Nejprve si popíšeme projekt Counterclockwise, který umožňuje propojit jazyk Clojure s integrovaným vývojovým prostředím Eclipse.

16. 10. 2012 0:00
Doba čtení: 19 minut

Programovací jazyk Clojure 18: základní techniky optimalizace aplikací

V dnešní části seriálu o vlastnostech programovacího jazyka Java i JVM se opět budeme zabývat popisem jazyka Clojure postaveného nad JVM. Dnes si ukážeme některé základní techniky používané při optimalizaci aplikací psaných v Clojure na rychlost a/nebo spotřebu operační paměti.

Doba čtení: 24 minut

Programovací jazyk Clojure 17: využití standardních maker v praxi

V dnešní části seriálu o vlastnostech programovacího jazyka Java i JVM se již naposledy budeme zabývat popisem makrosystému programovacího jazyka Clojure. Popíšeme si některá makra, která vývojáři tvořící aplikace v jazyce Clojure využívají v podstatě každý den, i když si někdy neuvědomují, že volají makra a nikoli běžné funkce či speciální formy.

Doba čtení: 20 minut