SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

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ò
 

Destacado (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 a Why Java Doesn't Have Instant Turnaround

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 a Why Java Doesn't Have Instant Turnaround (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
 

Más de 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
 

Más de 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
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
🐬 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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 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
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Why Java Doesn't Have Instant Turnaround

  • 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