Java classes reloading: HotSwap JRrebel Jersey
Transkript
Java classes reloading: HotSwap JRrebel Jersey Pavel Bucek, [email protected] 1 Přehled • Motivace • HotSwap • JRebel • Jersey (JAX-RS RI) + JRebel • Reference • Q&A 2 Motivace – proč “reloadovat” třídy? • Rychlejší vývoj a ladění programu ($) • Redeploy bez nutnosti restartu aplikace • Speciální usecase v aplikaci (sebemodifikující se kód) 3 HotSwap • Java HotSpot 1.4.1 (2002) > JDK 1.4+ • Debug mód • Pracuje přímo s bytecode, nahrazuje starý kód • Omezení pouze na změnu těla metody > Nelze přidat metodu / atribut > Nelze přidat třídu • Příčina omezení 4 HotSwap 5 JRebel • Zeroturnaround, 2007 • JDK 1.4+ • Pracuje s instrumentovanými třídami a JIT • Modifikuje výsledky z Java Reflection API • Sleduje .class soubory na disku > Při změně souboru nahradí celou třídu (její reprezentaci v paměti) a aktualizuje reference na ní > Možné problémy (volání konstruktoru, ...) > Vliv na performance, nepoužívat na ostrý provoz (LiveRebel) 6 JRebel 7 JRebel - použití • -javaagent:/JRebel/jrebel.jar • Maven plugin • rebel.xml • Start aplikace • Editace kódu, uložení, rekompilace • JRebel sám aktualizuje aplikaci/třídu 8 JRebel - použití • Integrace populárními IDE (Netbeans, IntelliJ IDEA, Eclipse, JDeveloper, …) • Podporuje war/ear deployment (rebel.xml) • Free open source developer license • Personal license 59 USD • Standard license 149 USD 9 JRebel – použití II • Problém při přidávání tříd > Nutnost reinicializace aplikace/frameworku • org.zeroturnaround.javarebel.ClassEventListener public interface ClassEventListener { void onClassEvent(int i, java.lang.Class aClass); int priority(); } 10 Jersey – Crash course • JAX-RS (JSR 311) • RESTful Web services • Zdroje identifikované URI • Přístup bezstavovým protokolem (HTTP) • http://jersey.dev.java.net • Jersey 1.2 11 Jersey – Crash course II • @Path • @GET, @PUT, @DELETE, … • @Produces, @Consumes @Path(“/hello”) public class HelloWorldResource { @GET @Produces(“text/plain”) public String get() { return “hello”; } } 12 Otázky • Jakým parametrem se JVM předá jrebel.jar? 13 Otázky • Co komplikuje funkci technologii HotSwap? 14 Otázky • Co reprezentuje parametr “i” v metodě onClassEvent? public interface ClassEventListener { void onClassEvent(int i, java.lang.Class aClass); int priority(); } 15 Reference, kontakt • http://java.sun.com/j2se/1.4.2/docs/guide/jpda/enhancements. html#hotswap • http://www.zeroturnaround.com/blog/reloading_java_classes_4 01_hotswap_jrebel/ • http://jersey.dev.java.net • [email protected] 16
Podobné dokumenty
Medailony umělců
tradičně dvojrozměrné médium a vytváří erotický závoj, avšak tím dílo nepřestává být
pornografické. Soukromé se stává veřejným a vrací se do soukromí pouze prostřednictvím
osobní interpretace.
Kdyb...
Nástroje pro vývoj aplikací v závislosti na platformě a jejich vazba na
není možné vytvořit komplexní seznam CASE nástrojů. Valná většina z nich je běžnou součástí
každého vývojového prostředí – každá možnost určité akce je do jisté míry zautomatizovaná a
Pokročilé techniky automa- tického testování v
• Podpora pro testování ve Spring Frameworku 2.5
• Techniky a patterny testování různých vrstev aplikace
- Data layer: database sandbox, automatic database model setup / update, database interface,...
AN-2 Předmluva O letadle Instalace do X
Znovu opakuji – musel jsem vypínat všechny pluginy kromě AN2 a reloadovat letadlo.
[] Nastavit otáčky 700 až 800 kg/cm2 (?), kontrolovat tlak oleje, do 10s musí stoupnout nad 3
kg/cm2. Pokud tomu t...
slidy z přednášky o Java a J2EE
scope="request"
input="/logon.jsp"
unknown="false"
validate="true" />
Zaměstnanci - Liberecký kraj
celého kraje. Holandští návštěvníci se již tradičně zajímali nejvíce o kempování, o tipy na letní turistické výlety, hrady a zámky. Z
turistických oblastí byl zájem zejména o hory – Krkonoše a Jize...
Historie textových editorů
I Klony: nvi, elvis, vile, busybox,
vim, e3, . . .
I Emulace: MS Word, MS
Outlook, Firefox, Eclipse, Visual
Studio, IntelliJ IDEA, JBuilder,
Netbeans, TextMate, Emacs
(viper-mode)
I bash, ksh - vi ...