Java classes reloading: HotSwap JRrebel Jersey

Transkript

Java classes reloading: HotSwap JRrebel Jersey
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ů

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...

Více

Nástroje pro vývoj aplikací v závislosti na platformě a jejich vazba na

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

Více

Pokročilé techniky automa- tického testování v

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,...

Více

AN-2 Předmluva O letadle Instalace do X

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...

Více

slidy z přednášky o Java a J2EE

slidy z přednášky o Java a J2EE scope="request" input="/logon.jsp" unknown="false" validate="true" />

Více

Zaměstnanci - Liberecký kraj

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...

Více

Historie textových editorů

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 ...

Více