Upload
teigra
View
29
Download
0
Embed Size (px)
DESCRIPTION
Compiling and the Java Virtual Machine (JVM). Working with a real language. The syntax of Pseudocode is pretty loose visual validation encourages a permissive approach emphasized the importance of structure Compilers essentially require perfection. - PowerPoint PPT Presentation
Citation preview
Compiling and the Java Virtual Machine (JVM)
• The syntax of Pseudocode is pretty loose– visual validation encourages a permissive approach– emphasized the importance of structure
• Compilers essentially require perfection.• The procedure for writing your algorithms won’t
change (much!) – Write a high level approach focusing on algorithm. – Write the code concentrating on details. – Check it by hand before compiling.
• Because we're introducing a real language at the same time as we're introducing the object oriented paradigm we will require you to just write some code. – You may not understand it all immediately– Eventually we'll explain!
Working with a real language
The First Part• Initially we’ll use Java to write procedural code just to let you get the feel of a real language.
• In fact, we’ll start by programming some of the same types of modules that we used in the procedural pseudocode earlier in the semester.
• Then, as we introduce the Object Oriented paradigm we’ll use Java as it was intended.
About Java
Introduction to Java• What Java is:
– A real professional programming language(which is good and bad...)
– Portable across any hardware platform that has a JVM interpreter (more later)
– An object-oriented language• What Java is not:
– “The Ultimate Programming Language”– HTML or another web-content language– Only useful for web applets– Just Another Vacuous Acronym
Real Languages• Real languages require the programmer to write code using a very specific set of rules, keywords and syntax.
• Then this code is transformed into actual instructions that a specific machine can execute. [Often a complex process]
• A number of strategies have been invented to accomplish this process– Assemblers– Compilers– Interpreters
• A traditional problem has been the necessity to have different versions of a program for different machines.
A New Idea• Java was specifically developed to be able to write code once and run it anywhere
• How is this magic accomplished?
• Using an intermediate language! Byte code.
• The Byte code is interpreted (executed) using a special piece of software (a program) called the Java Virtual Machine (JVM)
“Source Code” [.java]
Javacompiler
Generic“Byte Code” [.class]
OS-specificJVM
interpreter
OS-specific“Object Code”
Executeprogram
Compilation
Need one of these for every different
OS
Structure of Java Programs• Initially we’ll write programs that fit in one file.– Create the file with an editor (e.g. emacs)– Compile with javac producing a .class file– Execute by running java and sending it the .class file
• Our first (tiny) program will be roughly like a cross between an algorithm and a procedure.
• Let’s take a look...
Sample Application
public class HelloWorld{ public static void main(String argv[]) { System.out.println(“Hello World!”); }}
We create a file (using an editor) called “HelloWorld.java”
We compile by typing (at the OS prompt):
javac HelloWorld.java
Which produces HelloWorld.class
Then we execute by typing:
java HelloWorld
Hello World!
Demo>javac HelloWorld.java>java HelloWorldHello World!>
Quick Trix• The name of the file must match the name of the class EXACTLY!!!• File: Bubba.java• Contains:
• Everything must be EXACTLY correct!!!
class Bubba{...
Capitalization counts
Eventually...• Applications* (“normal” computer programs):
– Each program consists of multiple files.– Each file contains a class.– Each class will contain modules which will resemble procedures and functions.
– THE MODULES WILL BE CALLED METHODSMETHODS– The .class file that you send to java must contain a method named mainmain
– It will actually look like this:
public static void main(String argv[] ) { .. } – the JVM will use the file naming convention to find the other classes required by this main program.
*As opposed to Applets
Some basic syntax issues• Your TA is smarter than the java compiler• Lines need to terminate with a ;
– Easier said than done• Braces will be used to indicate "blocks" of code– Which essentially act like a single line
public class HelloWorld{ public static void main(String argv[]) { System.out.println(“Hello World!”); }}
A look ahead...• Pseudocodeif some_boolean then
a <- a + 1else
a <- a + 2b <- 7
endif
Note: Indentation is used in both cases. Means nothing to compiler.
= instead of <- (more later)
Must have parens in Java
• Javaif(some_boolean)
a = a + 1;else{
a = a + 2;b = 7;
}Note
;placement