SlideShare a Scribd company logo
1 of 33
Download to read offline
Why Doesn’t Java
  Have Instant
 Turnaround?

        Anton Arhipov
         @antonarhipov

  Product Lead at ZeroTurnaround
twitter.com/ekabanov
Turnaround cycle

                   Check
      Make a
                     the
      change
                   change


              Build,
             deploy,
               wait
                            twitter.com/ekabanov
What about others?




                     twitter.com/ekabanov
Why Java is heavier than others?


                            Vendors
           Standards




                       Operations




            Dev <<       Prod
                                      twitter.com/ekabanov
A typical web application build

             Resolve dependencies


              Copy static resources


                Compile classes


           Package modules in JARs


        Package everything in a WAR/EAR

                                          twitter.com/ekabanov
Exploded layout




                  twitter.com/ekabanov
Automatic building




                     twitter.com/ekabanov
Deployment by linking

  Linux symbolic links

  • ln -s
  • Symlinks can point to any file

  Windows symbolic links

  • Sysinternals junction utility on NTFS
    partitions, included in Windows 7
  • Can only link to local directories and must
    be careful when deleting

                                           twitter.com/ekabanov
2008 => 2011


Help!


is downloading the internets!


                       twitter.com/ekabanov
2008 => 2011




           this works:
          mvn jetty:run
             others?




                          twitter.com/ekabanov
App Server
                                       Workspace

getResource(“hello.html”)   read(“src/main/.../hello.html”)




                                                twitter.com/ekabanov
A typical web application build

             Resolve dependencies


              Copy static resources


             Compile classes

           Package modules in JARs


        Package everything in a WAR/EAR

                                          twitter.com/ekabanov
Why code reloading is so hard?


 Externalized      Temporary

              State

 Serializable       Derivative

                             twitter.com/ekabanov
Reloading an Object

             OldClassLoader             NewClassLoader




        MyObject.class                         MyObject.class




                         Recreate the object
      MyObject                                          MyObject




                                                                   twitter.com/ekabanov
Web Deployment
                 Serialize/deserialize




                                               init()


       Session                           Session

             Sevlet               New          Sevlet
 Classes
                                 Classes
             App                               App
                                  New          State
 Libraries   State
                                Libraries

    OldClassLoader                  NewClassLoader


                                                   twitter.com/ekabanov
Twin ClassLoader Issues

  Classes               Classes
              Objects               Objects
             and Code              and Code
 Libraries              Libraries
               OutOfMemoryError
              ClassCastException
    OldClassLoader    …    NewClassLoader



                    JVM


                                      twitter.com/ekabanov
2008 => 2011




               twitter.com/ekabanov
Frameworks




             twitter.com/ekabanov
2008 => 2011




               twitter.com/ekabanov
Component State


                   New      New
Class     Object
                   Class   Object


 Old Component     New Component
  ClassLoader       ClassLoader



                             twitter.com/ekabanov
JVM Languages
 Class-based
 languages have same
 limitations as Java
   Groovy
   Jython
 Non-class based
 languages can have
 better support
   JRuby
   Clojure


                       twitter.com/ekabanov
HotSwap
                                           User saves class
                                           from IDE
         OldClassLoader




    MyObject.class
    New Code
    Code
                          HotSwap
    111000100
    101000101                                  Debugger
    101010010
    100010010                  New Code
                               111000100
                               101010010




  MyObject




                                                   twitter.com/ekabanov
JRebel Class Reloading
                               HotSwap   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

                                         twitter.com/ekabanov
JRebel
                                       MyObject.class file
          OldClassLoader
                                       changed




     MyObject.class
     New Code
     Code                                   JRebel
     111000100
     101000101                              agent
     101010010
     100010010             New Code
                           111000100
                           101010010




   MyObject




                                                     twitter.com/ekabanov
JRebel
                                               MyObject.class file
                                             Configuration changed
                   OldClassLoader              changed
Framework




              MyObject.class

               Classes
              New Code
              Code                                  JRebel
              111000100
              101000101
              101010010
              100010010                 New Code
                                                     agent
                                        111000100
                                        101010010




            MyObject                   Configuration
                                    (XML, annotations, …)

                                                            twitter.com/ekabanov
JRebel Integration
    IDEs       Containers   Frameworks




 Build Tools




                             twitter.com/ekabanov
Who is already using JRebel?
Banking & FSI     Web        IT        Telco               Air / Auto




                                                           Healthcare

                Consulting        Fashion/Entertain
                                       ment




                                                      twitter.com/ekabanov
(how awesome is that?)




     Over 40 million builds, redeploys & restarts
       prevented for 20,000+ Java developers



                                          twitter.com/ekabanov
Oracle Weblogic FastSwap
<container-descriptor>
 <fast-swap>true</fast-swap>
</container-descriptor>
   weblogic-application.xml



                               twitter.com/ekabanov
Q: Why Doesn’t Java Have
Instant Turnaround?
 A1: Other languages/platforms aren’t
 much better!
 A2: Reloading code is easy, preserving
 state is hard!
 A3: It’s better than it used to be!
 A4: Play!, Tapestry 5 and Grails do that!
 A5: But what about JRebel?


                                     twitter.com/ekabanov
Q?
     twitter.com/ekabanov
And also…




Instant, online rollout and rollback of
changes to production Java EE apps
for any deployment size.


                                  twitter.com/ekabanov

More Related Content

Viewers also liked

Project Lambda: To Multicore and Beyond
Project Lambda: To Multicore and BeyondProject Lambda: To Multicore and Beyond
Project Lambda: To Multicore and BeyondDmitry Buzdin
 
Glassfish Metro - Java Web Services Stack
Glassfish Metro - Java Web Services StackGlassfish Metro - Java Web Services Stack
Glassfish Metro - Java Web Services StackDmitry Buzdin
 
Java Riga Day 2011 Opening
Java Riga Day 2011 OpeningJava Riga Day 2011 Opening
Java Riga Day 2011 OpeningDmitry Buzdin
 
Creative Play with Technology
Creative Play with TechnologyCreative Play with Technology
Creative Play with TechnologyMiles Berry
 
Jazykové kurzy pro nevidomé
Jazykové kurzy pro nevidoméJazykové kurzy pro nevidomé
Jazykové kurzy pro nevidoméLiberix, o.p.s.
 
Crowdsourcing Expert Performance to Improve Training at Cyber Speed
Crowdsourcing Expert Performance to Improve Training at Cyber SpeedCrowdsourcing Expert Performance to Improve Training at Cyber Speed
Crowdsourcing Expert Performance to Improve Training at Cyber Speedjcichelli
 
Java EE7: Developing for the Cloud
Java EE7: Developing for the CloudJava EE7: Developing for the Cloud
Java EE7: Developing for the CloudDmitry Buzdin
 
Enterprise Integration Patterns and DSL with Apache Camel
Enterprise Integration Patterns and DSL with Apache CamelEnterprise Integration Patterns and DSL with Apache Camel
Enterprise Integration Patterns and DSL with Apache CamelDmitry Buzdin
 
Migliorare le performance Frontend con TYPO3
Migliorare le performance Frontend con TYPO3Migliorare le performance Frontend con TYPO3
Migliorare le performance Frontend con TYPO3David Denicolò
 

Viewers also liked (12)

Project Lambda: To Multicore and Beyond
Project Lambda: To Multicore and BeyondProject Lambda: To Multicore and Beyond
Project Lambda: To Multicore and Beyond
 
Glassfish Metro - Java Web Services Stack
Glassfish Metro - Java Web Services StackGlassfish Metro - Java Web Services Stack
Glassfish Metro - Java Web Services Stack
 
Java Memory Model
Java Memory ModelJava Memory Model
Java Memory Model
 
Java Riga Day 2011 Opening
Java Riga Day 2011 OpeningJava Riga Day 2011 Opening
Java Riga Day 2011 Opening
 
Creative Play with Technology
Creative Play with TechnologyCreative Play with Technology
Creative Play with Technology
 
JavaFX 2.0 overview
JavaFX 2.0 overviewJavaFX 2.0 overview
JavaFX 2.0 overview
 
Jazykové kurzy pro nevidomé
Jazykové kurzy pro nevidoméJazykové kurzy pro nevidomé
Jazykové kurzy pro nevidomé
 
Goatsheepmarketing
GoatsheepmarketingGoatsheepmarketing
Goatsheepmarketing
 
Crowdsourcing Expert Performance to Improve Training at Cyber Speed
Crowdsourcing Expert Performance to Improve Training at Cyber SpeedCrowdsourcing Expert Performance to Improve Training at Cyber Speed
Crowdsourcing Expert Performance to Improve Training at Cyber Speed
 
Java EE7: Developing for the Cloud
Java EE7: Developing for the CloudJava EE7: Developing for the Cloud
Java EE7: Developing for the Cloud
 
Enterprise Integration Patterns and DSL with Apache Camel
Enterprise Integration Patterns and DSL with Apache CamelEnterprise Integration Patterns and DSL with Apache Camel
Enterprise Integration Patterns and DSL with Apache Camel
 
Migliorare le performance Frontend con TYPO3
Migliorare le performance Frontend con TYPO3Migliorare le performance Frontend con TYPO3
Migliorare le performance Frontend con TYPO3
 

Similar to Wdjhit javaone-2011-aa

Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012Anton Arhipov
 
Binary patching of Java classes for fun and profit - Jfokus 2011
Binary patching of Java classes for fun and profit - Jfokus 2011Binary patching of Java classes for fun and profit - Jfokus 2011
Binary patching of Java classes for fun and profit - Jfokus 2011Anton Arhipov
 
Bea weblogic job_interview_preparation_guide
Bea weblogic job_interview_preparation_guideBea weblogic job_interview_preparation_guide
Bea weblogic job_interview_preparation_guidePankaj Singh
 
Advanced #6 clean architecture
Advanced #6  clean architectureAdvanced #6  clean architecture
Advanced #6 clean architectureVitali Pekelis
 
Apache Wicket: 10 jaar en verder - Martijn Dashorst
Apache Wicket: 10 jaar en verder - Martijn DashorstApache Wicket: 10 jaar en verder - Martijn Dashorst
Apache Wicket: 10 jaar en verder - Martijn DashorstNLJUG
 
Lecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.pptLecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.pptKalsoomTahir2
 
Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018
Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018
Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018Codemotion
 
Entity Framework Today (May 2012)
Entity Framework Today (May 2012)Entity Framework Today (May 2012)
Entity Framework Today (May 2012)Julie Lerman
 
Building Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with ScalaBuilding Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with ScalaWO Community
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011bobmcwhirter
 
Java Servlets
Java ServletsJava Servlets
Java ServletsNitin Pai
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersElena-Oana Tabaranu
 
Java Training in Noida Delhi NCR BY Ducat
Java Training in Noida Delhi NCR BY DucatJava Training in Noida Delhi NCR BY Ducat
Java Training in Noida Delhi NCR BY DucatShri Prakash Pandey
 
Lecture 19 dynamic web - java - part 1
Lecture 19   dynamic web - java - part 1Lecture 19   dynamic web - java - part 1
Lecture 19 dynamic web - java - part 1Д. Ганаа
 
best java training center in chennai
best java training center in chennaibest java training center in chennai
best java training center in chennaisathis est
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seamashishkulkarni
 

Similar to Wdjhit javaone-2011-aa (20)

Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
Why Doesn't Java Has Instant Turnaround - Con-FESS 2012
 
Binary patching of Java classes for fun and profit - Jfokus 2011
Binary patching of Java classes for fun and profit - Jfokus 2011Binary patching of Java classes for fun and profit - Jfokus 2011
Binary patching of Java classes for fun and profit - Jfokus 2011
 
Java J2EE Training in Chennai, Tambaram
Java J2EE  Training in Chennai, TambaramJava J2EE  Training in Chennai, Tambaram
Java J2EE Training in Chennai, Tambaram
 
Bea weblogic job_interview_preparation_guide
Bea weblogic job_interview_preparation_guideBea weblogic job_interview_preparation_guide
Bea weblogic job_interview_preparation_guide
 
Advanced #6 clean architecture
Advanced #6  clean architectureAdvanced #6  clean architecture
Advanced #6 clean architecture
 
Apache Wicket: 10 jaar en verder - Martijn Dashorst
Apache Wicket: 10 jaar en verder - Martijn DashorstApache Wicket: 10 jaar en verder - Martijn Dashorst
Apache Wicket: 10 jaar en verder - Martijn Dashorst
 
Lecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.pptLecture 19 - Dynamic Web - JAVA - Part 1.ppt
Lecture 19 - Dynamic Web - JAVA - Part 1.ppt
 
Spring session
Spring sessionSpring session
Spring session
 
Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018
Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018
Matteo Vaccari - Going Frameworkless in the Backend - Codemotion Milan 2018
 
Entity Framework Today (May 2012)
Entity Framework Today (May 2012)Entity Framework Today (May 2012)
Entity Framework Today (May 2012)
 
Building Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with ScalaBuilding Concurrent WebObjects applications with Scala
Building Concurrent WebObjects applications with Scala
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBusters
 
Java Training in Noida Delhi NCR BY Ducat
Java Training in Noida Delhi NCR BY DucatJava Training in Noida Delhi NCR BY Ducat
Java Training in Noida Delhi NCR BY Ducat
 
Lecture 19 dynamic web - java - part 1
Lecture 19   dynamic web - java - part 1Lecture 19   dynamic web - java - part 1
Lecture 19 dynamic web - java - part 1
 
best java training center in chennai
best java training center in chennaibest java training center in chennai
best java training center in chennai
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seam
 

More from Dmitry Buzdin

How Payment Cards Really Work?
How Payment Cards Really Work?How Payment Cards Really Work?
How Payment Cards Really Work?Dmitry Buzdin
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?Dmitry Buzdin
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?Dmitry Buzdin
 
Delivery Pipeline for Windows Machines
Delivery Pipeline for Windows MachinesDelivery Pipeline for Windows Machines
Delivery Pipeline for Windows MachinesDmitry Buzdin
 
Big Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop InfrastructureBig Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop InfrastructureDmitry Buzdin
 
Developing Useful APIs
Developing Useful APIsDeveloping Useful APIs
Developing Useful APIsDmitry Buzdin
 
Архитектура Ленты на Одноклассниках
Архитектура Ленты на ОдноклассникахАрхитектура Ленты на Одноклассниках
Архитектура Ленты на ОдноклассникахDmitry Buzdin
 
Riding Redis @ask.fm
Riding Redis @ask.fmRiding Redis @ask.fm
Riding Redis @ask.fmDmitry Buzdin
 
Rubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part IIRubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part IIDmitry Buzdin
 
Rubylight Pattern-Matching Solutions
Rubylight Pattern-Matching SolutionsRubylight Pattern-Matching Solutions
Rubylight Pattern-Matching SolutionsDmitry Buzdin
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with ClojureDmitry Buzdin
 
Poor Man's Functional Programming
Poor Man's Functional ProgrammingPoor Man's Functional Programming
Poor Man's Functional ProgrammingDmitry Buzdin
 
Rubylight programming contest
Rubylight programming contestRubylight programming contest
Rubylight programming contestDmitry Buzdin
 
Continuous Delivery
Continuous Delivery Continuous Delivery
Continuous Delivery Dmitry Buzdin
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsDmitry Buzdin
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump AnalysisDmitry Buzdin
 

More from Dmitry Buzdin (20)

How Payment Cards Really Work?
How Payment Cards Really Work?How Payment Cards Really Work?
How Payment Cards Really Work?
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
 
Delivery Pipeline for Windows Machines
Delivery Pipeline for Windows MachinesDelivery Pipeline for Windows Machines
Delivery Pipeline for Windows Machines
 
Big Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop InfrastructureBig Data Processing Using Hadoop Infrastructure
Big Data Processing Using Hadoop Infrastructure
 
JOOQ and Flyway
JOOQ and FlywayJOOQ and Flyway
JOOQ and Flyway
 
Developing Useful APIs
Developing Useful APIsDeveloping Useful APIs
Developing Useful APIs
 
Whats New in Java 8
Whats New in Java 8Whats New in Java 8
Whats New in Java 8
 
Архитектура Ленты на Одноклассниках
Архитектура Ленты на ОдноклассникахАрхитектура Ленты на Одноклассниках
Архитектура Ленты на Одноклассниках
 
Dart Workshop
Dart WorkshopDart Workshop
Dart Workshop
 
Riding Redis @ask.fm
Riding Redis @ask.fmRiding Redis @ask.fm
Riding Redis @ask.fm
 
Rubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part IIRubylight JUG Contest Results Part II
Rubylight JUG Contest Results Part II
 
Rubylight Pattern-Matching Solutions
Rubylight Pattern-Matching SolutionsRubylight Pattern-Matching Solutions
Rubylight Pattern-Matching Solutions
 
Refactoring to Macros with Clojure
Refactoring to Macros with ClojureRefactoring to Macros with Clojure
Refactoring to Macros with Clojure
 
Poor Man's Functional Programming
Poor Man's Functional ProgrammingPoor Man's Functional Programming
Poor Man's Functional Programming
 
Rubylight programming contest
Rubylight programming contestRubylight programming contest
Rubylight programming contest
 
Continuous Delivery
Continuous Delivery Continuous Delivery
Continuous Delivery
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Thread Dump Analysis
Thread Dump AnalysisThread Dump Analysis
Thread Dump Analysis
 

Recently uploaded

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

Wdjhit javaone-2011-aa

  • 1. Why Doesn’t Java Have Instant Turnaround? Anton Arhipov @antonarhipov Product Lead at ZeroTurnaround
  • 3. Turnaround cycle Check Make a the change change Build, deploy, wait twitter.com/ekabanov
  • 4. What about others? twitter.com/ekabanov
  • 5. Why Java is heavier than others? Vendors Standards Operations Dev << Prod twitter.com/ekabanov
  • 6. A typical web application build Resolve dependencies Copy static resources Compile classes Package modules in JARs Package everything in a WAR/EAR twitter.com/ekabanov
  • 7. Exploded layout twitter.com/ekabanov
  • 8. Automatic building twitter.com/ekabanov
  • 9. Deployment by linking Linux symbolic links • ln -s • Symlinks can point to any file Windows symbolic links • Sysinternals junction utility on NTFS partitions, included in Windows 7 • Can only link to local directories and must be careful when deleting twitter.com/ekabanov
  • 10. 2008 => 2011 Help! is downloading the internets! twitter.com/ekabanov
  • 11. 2008 => 2011 this works: mvn jetty:run others? twitter.com/ekabanov
  • 12. App Server Workspace getResource(“hello.html”) read(“src/main/.../hello.html”) twitter.com/ekabanov
  • 13. A typical web application build Resolve dependencies Copy static resources Compile classes Package modules in JARs Package everything in a WAR/EAR twitter.com/ekabanov
  • 14. Why code reloading is so hard? Externalized Temporary State Serializable Derivative twitter.com/ekabanov
  • 15. Reloading an Object OldClassLoader NewClassLoader MyObject.class MyObject.class Recreate the object MyObject MyObject twitter.com/ekabanov
  • 16. Web Deployment Serialize/deserialize init() Session Session Sevlet New Sevlet Classes Classes App App New State Libraries State Libraries OldClassLoader NewClassLoader twitter.com/ekabanov
  • 17. Twin ClassLoader Issues Classes Classes Objects Objects and Code and Code Libraries Libraries OutOfMemoryError ClassCastException OldClassLoader … NewClassLoader JVM twitter.com/ekabanov
  • 18. 2008 => 2011 twitter.com/ekabanov
  • 19. Frameworks twitter.com/ekabanov
  • 20. 2008 => 2011 twitter.com/ekabanov
  • 21. Component State New New Class Object Class Object Old Component New Component ClassLoader ClassLoader twitter.com/ekabanov
  • 22. JVM Languages Class-based languages have same limitations as Java Groovy Jython Non-class based languages can have better support JRuby Clojure twitter.com/ekabanov
  • 23. HotSwap User saves class from IDE OldClassLoader MyObject.class New Code Code HotSwap 111000100 101000101 Debugger 101010010 100010010 New Code 111000100 101010010 MyObject twitter.com/ekabanov
  • 24. JRebel Class Reloading HotSwap 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 twitter.com/ekabanov
  • 25. JRebel MyObject.class file OldClassLoader changed MyObject.class New Code Code JRebel 111000100 101000101 agent 101010010 100010010 New Code 111000100 101010010 MyObject twitter.com/ekabanov
  • 26. JRebel MyObject.class file Configuration changed OldClassLoader changed Framework MyObject.class Classes New Code Code JRebel 111000100 101000101 101010010 100010010 New Code agent 111000100 101010010 MyObject Configuration (XML, annotations, …) twitter.com/ekabanov
  • 27. JRebel Integration IDEs Containers Frameworks Build Tools twitter.com/ekabanov
  • 28. Who is already using JRebel? Banking & FSI Web IT Telco Air / Auto Healthcare Consulting Fashion/Entertain ment twitter.com/ekabanov
  • 29. (how awesome is that?) Over 40 million builds, redeploys & restarts prevented for 20,000+ Java developers twitter.com/ekabanov
  • 30. Oracle Weblogic FastSwap <container-descriptor> <fast-swap>true</fast-swap> </container-descriptor> weblogic-application.xml twitter.com/ekabanov
  • 31. Q: Why Doesn’t Java Have Instant Turnaround? A1: Other languages/platforms aren’t much better! A2: Reloading code is easy, preserving state is hard! A3: It’s better than it used to be! A4: Play!, Tapestry 5 and Grails do that! A5: But what about JRebel? twitter.com/ekabanov
  • 32. Q? twitter.com/ekabanov
  • 33. And also… Instant, online rollout and rollback of changes to production Java EE apps for any deployment size. twitter.com/ekabanov