The University of North Carolina at Chapel Hill

  • Slides: 25
Download presentation
The University of North Carolina at Chapel Hill COMP 144 Programming Language Concepts Spring

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

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

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

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

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

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

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

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

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

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

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.

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

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

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 –

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

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.

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

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

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

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

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

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

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