12. října 2007

Vývoj aplikace za běhu

Dostala se mi pod nos opravdu zajímavá věcička, která si říká JavaRebel. O co se jedná? Jedná se o udělátko, které za běhu aplikace dokáže reloadovat třídy. A pozor, nepoužívá k tomu class loader (tak problém řeší Howard Lewis Ship pro Tapestry 5) ani hot swap (jenž je v javě od verze 1.4).

Ale jak to tedy dělají? Jak sami říkají, pomocí změny bytecodu a trochu kouzel. Každopádně JavaRebel podporuje všechny změny tříd až na změnu v dědičnosti (tj. extends a implements). Dá se použít jak při vývoji webových tak klientských aplikací.

Po Terracotte je to další technologie, která používá manipulace s bytecodem k docílení až zázračných věcí.

Jediné mínus je, že se jedná o komerční produkt, a stojí 100$ na vývojáře. Ovšem to je investice, která se vrátí snad už za týden.

Odkazy


5 komentářů:

Honza Novotný řekl(a)...

Zkoušel jsi to udělátko na vlastní kůži? Poměrně dost komentářů pod článkem na ServerSide si stěžuje, že jim to nefachčí, tak jako ne demíčku.

jira řekl(a)...

Zkoušel jsem to s Tomcatem a jednoduchou aplikací a fungovalo to. Ještě to chci po neděli zkusit v "reálném provozu", tj. při běžném vývoji.
Je jasné, že to bude mít jistá omezení, typu konfiguráky, ale pokud to zamezí polovině restartů tomcatu, pak to beru.

Honza Novotný řekl(a)...

Tak to je skvělé. Taky se to chystám vyzkoušet. 100$ za tuhle fíčuru se mi ale zdá dost ... pochybuju ale, že se to kdy dostane od OpenJDK. Jelikož většinu aplikace odladím přes automatické testy v IDE, nejsou pro mě restarty Tomcatu taková potíž, obvykle tímto způsobem už ladím jen web vrstvu ... typicky JSPčka, a tam restartovat Tomcat nepotřebuju. Zkrátka ty prachy bych za to asi nedal. Spíš je to ale doklad toho, že když se chce, všechno jde.

jira řekl(a)...

No jsem zvědav, jako moc to ulehčí. Až budu vědět, napíšu ...

Petr Jůza řekl(a)...

Já osobně si vystačím se standardními možnostmi Javy. Je pravda, že přidání metody nebo přidání proměnné neprojde a musím server restartovat, ale kolikrát se toto děje?
A já osobně preferuji light-weight řešení, takže restart projektu na Tomcatu mi zabere maximálně desítky sekund.
Kdyby to ale bylo zadarmo a chodilo by to bez problémů, tak bych to také rád používal. Dej vědět až to vyzkoušíš.