jrebel for eclipse

27
JREBEL FOR ECLIPSE ECLIPSE DAY CHINA 2013

Upload: liana

Post on 22-Feb-2016

62 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

Page 1: JREBEL FOR ECLIPSE

JREBEL FOR ECLIPSEECLIPSE DAY CHINA 2013

Page 2: JREBEL FOR ECLIPSE

PRESENTER

ANTON ARHIPOV@antonarhipovPRODUCT MANAGER

Page 3: JREBEL FOR ECLIPSE

• BASED ON JAVAAGENT TECHNOLOGY• DISTRIBUTED AS IDE PLUGIN• Eclipse, incl. MyEclipse, RAD, etc• Also: IntelliJ IDEA, NetBeans, JDeveloper

A PRODUCTIVITY TOOL FOR JAVA DEVELOPERS

Page 4: JREBEL FOR ECLIPSE

THE TURNAROUND

MAKECHANGES

BUILD,DEPLOY,

WAIT

OBSERVERESULTS

AVERAGE: 2.5 min

Page 5: JREBEL FOR ECLIPSE

THE TURNAROUND

MAKECHANGES

BUILD,DEPLOY,

WAIT

OBSERVERESULTS

NO BUILD!NO REDEPLOY!NO WAITING!

Page 6: JREBEL FOR ECLIPSE

~1 min30 sec – 30 min1-60 sec

IN-APPLICATION NAVIGATION

APPLICATION STARTUP

SERVER STARTUP

WASTED TIME

Page 7: JREBEL FOR ECLIPSE

HOW TO RELOAD A CLASS?Old

Class Loader

MyClass

MyObject

NewClass Loader

MyClass’

MyObject

TRANSFER THE STATE

Page 8: JREBEL FOR ECLIPSE

Classes

Libraries

OldClassLoader NewClassLoader

Sevlet New ClassesNew

Libraries

Sevlet

Session Sessioninit()

App State

App State

serialize/deserialize

THIS IS WHAT EVERY APPLICATION SERVER DOES

Page 9: JREBEL FOR ECLIPSE

Classes

OldClassLoader NewClassLoader

Sevlet New ClassesNew

Libraries

Sevlet

Session Session

App State

App State

CLASS LOADERS ARE EASY TO LEAK!

Page 10: JREBEL FOR ECLIPSE

THE REALITY: CLASS LOADERS ARE NOT GOOD

FOR RELOADING CLASSES

Page 11: JREBEL FOR ECLIPSE
Page 12: JREBEL FOR ECLIPSE

MyObject

MyObject.class

OldClassLoader

Code101000101100010010

Debugger

HotSwap

New code111000100101010010

New code 111000100101010010

HotSwapMake changes

Page 13: JREBEL FOR ECLIPSE

JRebel vs HotSwapHotSwap JRebel

Changing method bodies + +Adding/removing methods - +Adding/removing constructors - +Adding/removing fields - +Adding/removing classes - +Adding/removing annotations - +Replacing superclass * - -Adding/removing implemented interfaces *

- -

Page 14: JREBEL FOR ECLIPSE

• Maybe one day Java gets a better HotSwap:–JEP 159: Enhanced Class Redefinition

• But class reloading is not enough for real applications!

Page 15: JREBEL FOR ECLIPSE

MyObject

MyObject.class

OldClassLoader

Code101000101100010010 New code

111000100101010010

JRebel

Fram

ewor

k

Configuration(XML, annotations,..)

JRebelMake changes

Page 16: JREBEL FOR ECLIPSE

JRebel does NOT create new class loaders to

update classes!

Page 17: JREBEL FOR ECLIPSE

DEMO TIME!

Page 18: JREBEL FOR ECLIPSE

GET AT ECLIPSE MARKETPLACE

Page 19: JREBEL FOR ECLIPSE

ADD JREBEL NATURE

Page 20: JREBEL FOR ECLIPSE

ENABLE JREBEL AGENT

Page 21: JREBEL FOR ECLIPSE

JREBEL CONFIG CENTER

Page 22: JREBEL FOR ECLIPSE

By starting the container you will see JRebel messages like below

Page 23: JREBEL FOR ECLIPSE

REBEL.XML

JRebel monitors directories specified in rebel.xml

Page 24: JREBEL FOR ECLIPSE

INSTANT CLASS RELOADING

JRebel reloads only what’s changed

Page 25: JREBEL FOR ECLIPSE

FRAMEWORK CONFIGURATIONS

JRebel understands framework configuration files

Page 27: JREBEL FOR ECLIPSE

Questions?• @antonarhipov• [email protected]• http://www.jrebel.com