Eclipse — znáte hot code replace?
Je to již nějaký pátek, co vývojové prostředí Eclipse integruje podporu HotSwap.
Java Platform Debugger Architecture (JPDA) definuje rozhraní, které musí poskytovat
VM (Virtual Machine). Toto rozhraní slouží pro komunikaci debuggeru a VM, pro
zajímavost, debugger a VM spolu komunikuji přes Java Debug Wire Protocol. Java 1.4
představila rozšíření v podobě funkce HotSwap. HotSwap umožňuje debuggeru runtime
aktualizaci bytecode. Eclipse resp. debugger v Eclipse tuto funkci využívá.
Co to znamená pro normálního smrtelníka a jaké výhody mu to může přinést? Možná
jste si položili jednu z těchto otázek. HotSwap totiž umožňuje realizovat jeden z
následujících scénářů. Spustíte aplikaci v debug módu a zjistíte, že jste opomněli
opravit část kódu. V normálním případě by bylo potřeba, aplikaci vypnout, kód
opravit a znovu nastartovat aplikaci.
Restartování aplikace je činnost nejen nudná, ale někdy i zdlouhavá, viz start
aplikačního serveru. Diky HotSwapu restartovat nemusíte, prostě jenom inkriminovaný
kousek kódu opravíte, uložíte a Eclipse se postará o zbývající práci. Práce s
HotSwap se v Eclipse ukrývá za vlastností Hot code Replace. Samozřejmě Hot Code
Replace má své limity, takže půlku aplikační logiky na jeden zátah VM nezměníte.
Druhý scénář opět vychází z úpravy kódu za běhu a jeho pronesení do runtime.
Představte si, že krokujete metodu a odhalíte chybu, co uděláte? Chybu opravíte,
restartujete aplikaci a počkáte až bude program na daném breakpointu. Jenže to
nemusíte, Hot Code Replace při opravě chyby nejen pronese vaše změny, ale i znovu
provolá danou metodu, ve které jste změnili kód. Hot Code Replace se tak dá využít,
např. při ladění, k opakovanému volání metody.
Pokud se vám Hot Code Replace zalíbil a chcete jej vyzkoušet, tak mějte na paměti,
že musíte aplikaci spouštět v debug modu.
Možná by stálo za to osvětlit, proč jsem se o HotSwap rozepsal. Filemon mi dnes básnil o možnostech AOP
frameworku AspectWerkz (AW) a mimo
jiné argumentoval změnou bytecode v runtime. Samozřejmě, že má první reakce byla,
To Eclipse zvládá levou zadní hafo jarů. Nejsem si ovšem jist, jestli
AW (online mód) využívá HotSwap. Spíše si myslím, že nikoliv, neboť mu jde o trochu
něco jiného, ale to bychom se dostali k point cuts a to je opravdu na jiný šálek
kávy.
Související články
Související epizody CZ Podcastu
- #3 · Java 6 SE, Vývoj webových aplikací
Dagi a Filemon o novinkách v Javě 6 a webových frameworcích.
- #1 · Vývojová prostředí v Javě
První díl CZ Podcastu se věnuje vývojovým prostředím pro Javu.