jrebel for eclipse

Download JREBEL FOR ECLIPSE

If you can't read please download the document

Upload: thanos

Post on 26-Feb-2016

52 views

Category:

Documents


0 download

DESCRIPTION

JREBEL FOR ECLIPSE. ECLIPSE DAY CHINA 2013. PRESENTER. ANTON ARHIPOV @ antonarhipov PRODUCT MANAGER. BASED ON JAVAAGENT TECHNOLOGY DISTRIBUTED AS IDE PLUGIN Eclipse , incl. MyEclipse , RAD, etc Also: IntelliJ IDEA, NetBeans , JDeveloper. A PRODUCTIVITY TOOL FOR JAVA DEVELOPERS. - PowerPoint PPT Presentation

TRANSCRIPT

PowerPoint Presentation

JREBEL FOR ECLIPSEECLIPSE DAY CHINA 2013PRESENTERANTON ARHIPOV@antonarhipovPRODUCT MANAGER

BASED ON JAVAAGENT TECHNOLOGYDISTRIBUTED AS IDE PLUGINEclipse, incl. MyEclipse, RAD, etcAlso: IntelliJ IDEA, NetBeans, JDeveloper

A PRODUCTIVITY TOOL FOR JAVA DEVELOPERSTHE TURNAROUNDMAKECHANGESBUILD,DEPLOY,WAITOBSERVERESULTSAVERAGE: 2.5 minTHE TURNAROUNDMAKECHANGESBUILD,DEPLOY,WAITOBSERVERESULTS

NO BUILD!NO REDEPLOY!NO WAITING!~1 min30 sec 30 min1-60 secIN-APPLICATION NAVIGATIONAPPLICATION STARTUPSERVER STARTUPWASTED TIMEHOW TO RELOAD A CLASS?Old Class LoaderMyClassMyObjectNewClass LoaderMyClassMyObjectTRANSFER THE STATEClassesLibrariesOldClassLoaderNewClassLoaderSevletNew ClassesNew LibrariesSevletSessionSessioninit()App StateApp Stateserialize/deserializeTHIS IS WHAT EVERY APPLICATION SERVER DOESClass loader scope Every deployed application gets a dedicated class loaderState recreationApplication state is recovered by reinitializationSession state is (optionally) serialized and deserialized in the new class loaderReloading timeApplication reinitialization time, typically around one minuteProblemsLeaks memoryLazy caches need to be warmed up every time

8ClassesOldClassLoaderNewClassLoaderSevletNew ClassesNew LibrariesSevletSessionSessionApp StateApp State

CLASS LOADERS ARE EASY TO LEAK!Class loader scope Every deployed application gets a dedicated class loaderState recreationApplication state is recovered by reinitializationSession state is (optionally) serialized and deserialized in the new class loaderReloading timeApplication reinitialization time, typically around one minuteProblemsLeaks memoryLazy caches need to be warmed up every time

9THE REALITY: CLASS LOADERS ARE NOT GOOD FOR RELOADING CLASSES

MyObjectMyObject.classOldClassLoaderCode101000101100010010DebuggerHotSwapNew code111000100101010010New code 111000100101010010HotSwapMake changesJRebel vs HotSwapHotSwapJRebelChanging method bodies++Adding/removing methods-+Adding/removing constructors-+Adding/removing fields-+Adding/removing classes-+Adding/removing annotations-+Replacing superclass *--Adding/removing implemented interfaces *--Maybe one day Java gets a better HotSwap:JEP 159: Enhanced Class Redefinition

But class reloading is not enough for real applications!MyObjectMyObject.classOldClassLoaderCode101000101100010010New code111000100101010010JRebelFrameworkConfiguration(XML, annotations,..)JRebelMake changesJRebel does NOT create new class loaders to update classes!

DEMO TIME!GET AT ECLIPSE MARKETPLACE

ADD JREBEL NATURE

ENABLE JREBEL AGENT

JREBEL CONFIG CENTER

By starting the container you will see JRebel messages like belowREBEL.XML

JRebel monitors directories specified in rebel.xmlINSTANT CLASS RELOADING

JRebel reloads only whats changedFRAMEWORK CONFIGURATIONS

JRebel understands framework configuration files

http://zeroturnaround.com/software/jrebel/features/frameworks/ Questions?@[email protected]://www.jrebel.com