15

LatJUG-0311.JRebel-dev2dev

Embed Size (px)

DESCRIPTION

Java Bytecode Fundamentals Anton Arhipov [Estonia] http://goo.gl/GO6Mm Java User Group Latvia March 2011 http://goo.gl/77MhT

Citation preview

Page 1: LatJUG-0311.JRebel-dev2dev
Page 2: LatJUG-0311.JRebel-dev2dev

Part I

http://xkcd.com/303/

Seen this before?

Also: “My app is…”* Building* Redeploying* Restarting…

How much of your coding time is spent coding?

Page 3: LatJUG-0311.JRebel-dev2dev

JBoss AS startup time

Page 4: LatJUG-0311.JRebel-dev2dev

Redeploying sucks, so JRebel eliminates it. How?

JRebel maps your project workspace directly to the application under development. When you

change any class or resource in your IDE, the change is immediately reflected in the

application, skipping the build and redeploy phases.

Umm… What?

Page 5: LatJUG-0311.JRebel-dev2dev

JRebel picks up changes to: A) Class structure

…and reflects those changes

in your application,

instantly

…monitors the timestamp of classfiles..

Page 6: LatJUG-0311.JRebel-dev2dev

JRebel picks up changes to:B) Framework configurations

and others...

Frameworks

…and reflects those changes

in your application,

instantly

Page 7: LatJUG-0311.JRebel-dev2dev

…and reflects those changes

in… well, you get the point…

.. .. ..but HOW??

JRebel picks up changes to:C) Java EE technologies

Page 8: LatJUG-0311.JRebel-dev2dev

Part 2

http://xkcd.com

Tech and Science stuff

Page 9: LatJUG-0311.JRebel-dev2dev

How JRebel works: 1) Classes

• JRebel integrates with JVM and rewrites each class to be updateable

• JRebel versions each class individually, instead of an application or module at a time

• It does not use classloaders!

• Changes to classes are always visible in the Reflection API

Page 10: LatJUG-0311.JRebel-dev2dev

• JRebel integrates directly with application servers and frameworks to propagate configuration changes from the changed classes and resources

• Annotation changes are always visible in Reflection API

• JRebel provides an extensible SDK to allow contributions from third parties. Stripes, Struts 2, Wicket and several other integrations have already been contributed

How JRebel works: 2) Framework configuration changes / details

Containers / Application Servers

Page 11: LatJUG-0311.JRebel-dev2dev

How JRebel works: 3) Workspace mapping

• JRebel integrates with application servers, frameworks and your IDE

• When a class or resource is being looked up, JRebel redirects straight to the workspace

• When an HTTP resource needs to be served, JRebel serves it from the workspace

petclinic.war

IDEs

Page 12: LatJUG-0311.JRebel-dev2dev

IDEs Containers Frameworks

Build Tools

How JRebel works: Integration, Integration, Integration

Page 13: LatJUG-0311.JRebel-dev2dev

Specially for JUG Latvia!

 Free JRebel license for 60

days

with Enterprise Add-on

http://www.zeroturnaround.com/jrebel/giveaways/?campaign=juglatvia032011

Page 14: LatJUG-0311.JRebel-dev2dev

DEMO

Page 15: LatJUG-0311.JRebel-dev2dev