110 likes | 252 Views
Announcements Discussion Sections: PAI 5.70 until further notice Pair in same discussion Email: 305j in subject. Last Time Acquiring & creating language Noam Chomsky Catherine Snow. Announcements & Review. Today. Compilation and Execution What’s “javac” do?
E N D
Announcements Discussion Sections: PAI 5.70 until further notice Pair in same discussion Email: 305j in subject Last Time Acquiring & creating language Noam Chomsky Catherine Snow Announcements & Review Lecture 3: Scaffolding and Output
Today Compilation and Execution • What’s “javac” do? • What happens next? Basics • Scaffolding - what every program needs • Making the computer talk to you! Lecture 3: Scaffolding and Output
Static Compilation & Execution Easier case: The C programming language “static” ahead-of-time compilation model: Tool: “cc” the C compiler Your file: Circle.c “cc Circle.c” -> (Circle.a) -> a.out Executable: a.out “a.out” Lecture 3: Scaffolding and Output
Dynamic Compilation & Execution Java “dynamic” compilation model: 2 Tools “javac” the Java bytecode compiler “java” the Java virtual machine Your file: Circle.java What do you do in Bluej? “javac Circle.java” -> Circle.class Executing Bytecode: low-level virtual machine form machine independent, portable What do you do in Bluej? “java Circle.class” Lecture 3: Scaffolding and Output
Java Dynamic Compilation Executing Bytecode: “java Circle.class” What happens? Interpretation vs Dynamic Compilation Lecture 3: Scaffolding and Output
Dynamic Compilation & Execution Java “dynamic” compilation model: Executing Bytecode: “java Circle.class” - What happens? Interpreting • map each bytecode to a machine code sequence, • for each bytecode, execute the sequence Translation to machine code • map all the bytecodes to machine code (or a higher level intermediate representation), • massage them (e.g., get rid of redundancies between instructions), • execute the machine code Lecture 3: Scaffolding and Output
Dynamic Compilation & Execution “Hotspot” compilation, a hybrid • Initially interpret • Find the “hot” (frequently executed code) methods, and translate only these hot methods to machine code Lecture 3: Scaffolding and Output
Basics What you write • Scaffolding - what every program needs • Making the computer talk to you! Comments - tell the compiler to ignore text // the compiler ignores this text on the same line /* For multi-line comments, you can use * this form and it will ignore all this text * too until it sees */ Lecture 3: Scaffolding and Output
Scaffolding:Magic or Logical? /* Kathryn S McKinley * January 10, 2005 * file: Song.java * My program does nothing right now! */ public class Song { // code can go here public static void main (String [] args) { // code here too } } Lecture 3: Scaffolding and Output
Printing System.out.print(“I love CS305j.”); System.out.println(“I love CS305j.”); [More examples in Bluej…] Lecture 3: Scaffolding and Output
Questions? Lecture 3: Scaffolding and Output