The University of North Carolina at Chapel Hill

























- Slides: 25

The University of North Carolina at Chapel Hill COMP 144 Programming Language Concepts Spring 2002 Lecture 32: The Java Virtual Machine Felix Hernandez-Campos April 12 COMP 144 Programming Language Concepts Felix Hernandez-Campos 1

The Java Virtual Machine • Java Architecture – Java Programming Language – Java Virtual Machine (JVM) – Java API • We will use the JVM as a case study of an intermediate program representation COMP 144 Programming Language Concepts Felix Hernandez-Campos 2

Reference • The content of this lecture is based on Inside the Java 2 Virtual Machine by Bill Venners – Chapter 1 Introduction to Java's Architecture » http: //www. artima. com/insidejvm/ed 2/ch 01 Intro. To. Javas. Architect ure. Print. html – Chapter 5 The Java Virtual Machine » http: //www. artima. com/insidejvm/ed 2/ch 05 Java. Virtual. Machine 1. html – Interactive Illustrations » http: //www. artima. com/insidejvm/applets/index. html COMP 144 Programming Language Concepts Felix Hernandez-Campos 3

The Java Programming Environment COMP 144 Programming Language Concepts Felix Hernandez-Campos 4

The Java Platform • The byte code generated by the Java front-end is an intermediate form – Compact – Platform-independent COMP 144 Programming Language Concepts Felix Hernandez-Campos 5

Phases of Compilation COMP 144 Programming Language Concepts Felix Hernandez-Campos 6

The Role of the Virtual Machime Local or Remote COMP 144 Programming Language Concepts Felix Hernandez-Campos 7

The Execution Engine • Back-end transformation and execution – Simple JVM: byte code interpretation – Just-in-time compiler » Method byte codes are compiled into machine code the first time they are invoked » The machine code is cached for subsequent invocation » It requires more memory – Adaptive optimization » The interpreter monitors the activity of the program, compiling the heavily used part of the program into machine code » It is much faster than simple interpretation » The memory requirement is only slightly larger due to the 20%/80% rule of program execution (In general, 20% of the code is responsible for 80% of the execution) COMP 144 Programming Language Concepts Felix Hernandez-Campos 8

The Java Virtual Machine COMP 144 Programming Language Concepts Felix Hernandez-Campos 9

Shared Data Areas COMP 144 Programming Language Concepts Felix Hernandez-Campos 10

Thread Data Areas Frame in COMP 144 Programming Language Concepts Execution Felix Hernandez-Campos 11

Stack Frames • Stack frames have three parts: – Local variables – Operand stack – Frame data COMP 144 Programming Language Concepts Felix Hernandez-Campos 12

Stack Frame Local Variables class Example 3 a { public static int run. Class. Method(int i, long l, float f, double d, Object o, byte b) { return 0; } public int run. Instance. Method(char c, double d, short s, boolean b) { return 0; } } COMP 144 Programming Language Concepts Felix Hernandez-Campos 13

Stack Frame Operand Stack Adding 2 numbers iload_0 iload_1 Iadd istore_2 COMP 144 Programming Language Concepts Felix Hernandez-Campos 14

Execution Model • Eternal Math Example – http: //www. artima. com/insidejvm/applets/Eternal. Math. ht ml COMP 144 Programming Language Concepts Felix Hernandez-Campos 15

Stack Frame Data • The stack frame also supports – Constant pool resolution – Normal method return – Exception dispatch COMP 144 Programming Language Concepts Felix Hernandez-Campos 16

Stack Frame Allocation in a Heap class Example 3 c { public static void add. And. Print() { double result = add. Two. Types(1, 88. 88); System. out. println (result); } public static double add. Two. Types(int i, double d) { return i + d; } } COMP 144 Programming Language Concepts Felix Hernandez-Campos 17

Stack Frame Native Method • A simulated stack of the target language (e. g. C) is created for JNI COMP 144 Programming Language Concepts Felix Hernandez-Campos 18

The Heap • Class instances and array are stores in a single, shared heap • Each Java application has its own heap – Isolation – But a JVM crash will break this isolation • JVM heaps always implement garbage collection mechanisms COMP 144 Programming Language Concepts Felix Hernandez-Campos 19

Heap Monolithic Object Representation COMP 144 Programming Language Concepts Felix Hernandez-Campos 20

The Heap Splitted Object Representation COMP 144 Programming Language Concepts Felix Hernandez-Campos 21

Example • Heap. Of. Fish – http: //www. artima. com/insidejvm/applets/Heap. Of. Fish. htm l COMP 144 Programming Language Concepts Felix Hernandez-Campos 22

The Heap Memory/Speed Tradeoff COMP 144 Programming Language Concepts Felix Hernandez-Campos 23

The Heap Arrays as Objects COMP 144 Programming Language Concepts Felix Hernandez-Campos 24

Reading Assignment • Inside the Java 2 Virtual Machine by Bill Venners – Ch 1 – Ch 5 – Illustrations COMP 144 Programming Language Concepts Felix Hernandez-Campos 25