Part I How much of your coding time is spent coding?Seen thisbefore? Also: “My app is…” * Building * Redeploying * Restarting… http://xkcd.com/303/
Redeploying sucks, so JRebeleliminates 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?
JRebel picks up changes to:A) Class structure …monitors the timestamp of classfiles.. …and reflects those changes in your application, instantly
JRebel picks up changes to:B) Framework configurations Frameworks and 25+ others... …and reflects those changes in your application, instantly
JRebel picks up changes to:C) Java EE technologies …and reflects those changes in… well, you get the point… .. .. ..but HOW??
How JRebel works:1) Classes• JRebel integrates with the 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 MyObject.clas MyObject.clas ss MyClass MyClass’ MyClass_3
How JRebel works:2) Framework configuration changes / details• 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 Containers / Application Servers
How JRebel works:3) Workspace mapping petclinic.war • 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 IDEs
How does JRebel work?Integration, Integration, Integration IDEs Containers Frameworks Build Tools
Part 3Getting JRebel for yourself and your team• Eclipse fans can get JRebel for Eclipse directly from the For Eclipse IDE users Eclipse Marketplace (search “jrebel”) or here: • http://www.zeroturnaround.com/jrebel/eclipse-eval/• MyEclipse users can get JRebel for MyEclipse free for 30 days: For • http://www.zeroturnaround.com/jrebel/myeclipse/ MyEclipse IDE users• Everyone can get the same free 30-day evaluation from: • http://www.zeroturnaround.com/jrebel/current/ For everyone!• NEW! Use it for free at home for non-commercial development: • http://social.jrebel.com - for students, open source committers
Part 4Getting the P.H.B. (Pointy Haired Boss) on board How do I talk about JRebel with my boss?
Talking about JRebel with your boss(es)• This depends on their level of technical understanding• Non-technical people understand the “Email Example” - • Try telling them that redeploying a container to see changes that you make to code is like restarting their computer every time they want to send/receive email. It can take a similar amount of time, and is similarly disruptive. • Or show them this presentation: www.zeroturnaround.com/jrebel/documentation (JRebel for Bosses)• More technical people like to know more about what’s going on – send them this presentation here: • www.zeroturnaround.com/jrebel/documentation (JRebel for Developers) Nice. But my boss likes stats and charts - got any of those?
Resources• Java EE Productivity Report 2011 • Includes lots of stats & charts on the popularity of Java development tools & technologies – plus a section on Turnaround Time (builds, redeploys, restarts). • http://www.zeroturnaround.com/java-ee-productivity-report-2011/• Want to see how fast JRebel will pay for itself? (for finance guys) • http://www.zeroturnaround.com/jrebel • ROI calculator is on the right side of the page I don’t have much time to read reports. Have you got some quick stats I can reference?
Quick Stats• Here are some cool stats taken from the Java EE Productivity Report: • 17.5% - the average percentage of coding time spent redeploying (this varies by app size and container used - check out the report for details on yours) • 10.5 - the # of minutes wasted per hour of coding • 4.38 - the # of hours wasted per week • 5.25 - number of full work weeks wasted per year (40-hour weeks). • ...and over 18 hours per month…. Interesting…anything else cool?
(also cool) Over 39 Million builds, redeploys & restarts prevented for 11,000+ Java developers