Calvin & Kathryn`s Wonderful Group

Download Report

Transcript Calvin & Kathryn`s Wonderful Group

Announcements & Review
Last Time
Discussion Sections: • Acquiring &
creating language
PAI 5.70
until further notice • Noam Chomsky
• Catherine Snow
Pair in same discussion
Announcements
Email: 305j in subject
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
1. map each bytecode to a machine code sequence,
2. for each bytecode, execute the sequence
Translation to machine code
1. map all the bytecodes to machine code (or a
higher level intermediate representation),
2. massage them (e.g., get rid of redundancies
between instructions),
3. execute the machine code
Lecture 3: Scaffolding and Output
Dynamic Compilation &
Execution
“Hotspot” compilation, a hybrid
1. Initially interpret
2. 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