Introduction to Just-In-Time Compilation and Hotspot JVM

Just-In-Time compilation

Java is not purely a traditional compiled or interpreted language, but tries to come in between them. 

In Java, source code is saved in files with .java extensions. This source code is then compiled into a intermediate platform independent byte code, and this form has a .class extension. This .class file is then executed by Java’s JVM. 

Java’s JVM execute an optimized platform independent binary bytecode (the .class files), not the high level source code. So the execution will be clearly faster than a regular interpreter that interprets the source code.

Java can compile the bytecode again to platform specific binary with additional optimizations during execution. This called Just-In-Time compilation as compilation occurs during execution.

JVM will not compile the whole bytecode at first, but will wait to see the code run, and then compile some sections of the code that is executed frequently and execute some sections of code that is less frequent, without compiling.


Hotspot JVM

There are multiple implementations of JVM. Oracle itself provides open source and commercial JVM versions. IBM also provides its own JVM along with its products.

Oracle’s standard JVM implementation (that we download from oracle downloads page) is known as Hotspot JVM.

Hotspots are sections of code that are executed more than other sections of code.

When the JVM executes code, it does not begin compiling the code immediately. It would not be worth to compile and execute a section of code which is executed only once or very less times; instead it would be better to interpret the bytecode directly without compiling in those cases. Compiling a frequently executing section of code (hotspot) will be worth as the extra CPU cycle time taken for compilation can be overcome during subsequent runs. Also, more the JVM executes sections of code it can figure out more optimizations that can be made.       

This was a quick introduction to the compiler and JVM in Java and is enough for continuing with other tutorials in this book. Click here if you would like to learn more about JIT compilers.


in what cases jit will be done 

Was it useful?

JIT is enabled by default and it improves the permofmance by compiling bytecode into native machine code at runtime and JVM calls the compiled code directly

Was it useful?

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) ArrayLists (1) Arrays (2) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (53) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (8) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (12) Java Programmer 2 (8) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) resources (1) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)