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 compiled into an optimized platform independent binary bytecode, and then this byte code is executed by Java’s interpreter. Java’s interpreter, JVM, execute an optimized form of source code, not the high level source code itself. 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 and the reuse this compiled form when it is needed again during hte execution. This is called Just-In-Time compilation


Hotspot JVM

There are multiple implementations of JVM. Oracle itself provides open source and commercial JVM versions. IBM 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. 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. 


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) 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)