Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on

Java Bytecode Fundamentals
Anton Arhipov [Estonia]

Java User Group Latvia
March 2011

Published in: Technology
  • Be the first to comment

  • Be the first to like this


  1. 1.
  2. 2. Part I<br />How much of your coding time is spent coding?<br />Seen this before?<br />Also: <br />“My app is…”<br />* Building<br />* Redeploying<br />* Restarting…<br /><br />
  3. 3. JBoss AS startup time<br />
  4. 4. Redeploying sucks, so JRebeleliminates it. How?<br />“<br />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.<br />”<br />Umm… What?<br />
  5. 5. JRebel picks up changes to:A) Class structure <br />…monitors the timestamp of classfiles..<br />…and reflects those changes in your application, instantly<br />
  6. 6. JRebel picks up changes to:B) Framework configurations<br />Frameworks<br />and others...<br />…and reflects those changes in your application, instantly<br />
  7. 7. JRebel picks up changes to:C) Java EE technologies<br />…and reflects those changes in… well, you get the point…<br />.. .. ..but HOW??<br />
  8. 8. Part 2<br />Tech and Science stuff<br /><br />
  9. 9. How JRebel works:1) Classes<br /><ul><li>JRebel integrates with JVM and rewrites each class to be updateable
  10. 10. JRebel versions each class individually, instead of an application or module at a time
  11. 11. It does not use classloaders!
  12. 12. Changes to classes are always visible in the Reflection API</li></li></ul><li>How JRebel works:2) Framework configuration changes / details<br />JRebel integrates directly with application servers and frameworks to propagate configuration changes from the changed classes and resources<br />Annotation changes are always visible in Reflection API<br />JRebel provides an extensible SDK to allow contributions from third parties. Stripes, Struts 2, Wicket and several other integrations have already been contributed<br />Containers / Application Servers<br />
  13. 13. How JRebel works:3) Workspace mapping<br />petclinic.war<br /><ul><li>JRebel integrates with application servers, frameworks and your IDE
  14. 14. When a class or resource is being looked up, JRebel redirects straight to the workspace
  15. 15. When an HTTP resource needs to be served, JRebel serves it from the workspace</li></ul>IDEs<br />
  16. 16. How JRebel works: Integration, Integration, Integration<br />IDEs<br />Containers<br />Frameworks<br />Build Tools<br />
  17. 17. Specially for JUG Latvia!<br /> Free JRebel license for 60days<br />with Enterprise Add-on <br /><br />
  18. 18. DEMO<br />