ZeePedia

Java Virtual Machine & Runtime Environment

<< JAVA FEATURES
Learning Basics of JAVA >>
img
Web Design & Development ­ CS506
VU
Lesson 2
Java Virtual Machine & Runtime Environment
Basic Concept
When you write a program in C++ it is known as source code. The C++ compiler converts this source code
into the machine code of underlying system (e.g. Windows) If you want to run that code on Linux you need
to recompile it with a Linux based compiler. Due to the difference in compilers, sometimes you need to
modify your code.
Java has introduced the concept of WORA (write once run anywhere). When you write a java program it is
known as the source code of java. The java compiler does not compile this source code for any underlying
hardware system; rather it compiles it for a software system known as JVM (This compiled code is known
as byte code). We have different JVMs for different systems (such as JVM for Windows, JVM for Linux
etc). When we run our program the JVM interprets (translates) the compiled program into the language
understood by the underlying system. So we write our code once and the JVM runs it everywhere
according to the underlying system.
This concept is discussed in detail below
JAVA
Source
Code
Java Compiler javac
Java Byte
Code
Java Interpreter
Machine
Code
Bytecode
Java programs (Source code) are compiled into a form called Java bytecodes.
The Java compiler reads Java language source (.java) files, translates the source into
Java bytecodes, and places the bytecodes into class (.class) files.
The compiler generates one class file for each class contained in java source file.
5
img
Web Design & Development ­ CS506
VU
Java Virtual Machine (JVM)
The central part of java platform is java virtual machine
Java bytecode executes by special software known as a "virtual machine".
Most programming languages compile source code directly into machine code, suitable for execution
The difference with Java is that it uses bytecode - a special type of machine code.
The JVM executes Java bytecodes, so Java bytecodes can be thought of as the machine language of
the JVM.
App1
App2
App3
App4
App5
Java Virtual Machine
Windows
Linux
OS X
Solaris
Linux
Intel
PowerPC
SPARC
·
JVM are available for almost all operating systems.
·
Java bytecode is executed by using any operating system's JVM. Thus achieve portability.
Java Runtime Environment (JRE)
The Java Virtual Machine is a part of a large system i.e. Java Runtime
Environment (JRE).
Each operating system and CPU architecture requires different JRE.
The JRE consists of set of built-in classes, as well as a JVM.
Without an available JRE for a given environment, it is impossible to
run Java software.
References
Java World: http://www.javaworld.com
6
img
Web Design & Development ­ CS506
VU
Inside Java: http://www.javacoffeebreak.com/articles/inside_java
Java Program Development and Execution Steps
Java program normally go through five phases. These are
1.
Edit,
2.
Compile,
3.
Load,
4.
Verify and
5.
Execute
We look over all the above mentioned phases in a bit detail. First consider the following figure that
summarizes the all phases of a java program.
Phase 1: Edit
Phase 1 consists of editing a file. This is accomplished with an editor program. The programmer
types a java program using the editor like notepad, and make corrections if necessary.
When the programmer specifies that the file in the editor should be saved, the program is stored on a
secondary storage device such as a disk. Java program file name ends with a
7
img
Web Design & Development ­ CS506
VU
.java extension.
On Windows platform, notepad is a simple and commonly used editor for the beginners. However java
integrated development environments (IDEs) such as NetBeans, Borland JBuilder, JCreator and
IBM's Ecllipse have built-in editors that are smoothly integrated into the programming environment.
Phase 2: Compile
In Phase 2, the programmer gives the command javac to compile the program. The java compiler
translates the java program into bytecodes, which is the language understood by the java interpreter.
To compile a program called Welcome.java, type
javac Welcome.java
at the command window of your system. If the program compiles correctly, a file called
Welcome.class is produced. This is the file containing the bytecodes that will be interpreted
during the execution phase.
Phase 3: Loading
In phase 3, the program must first be placed in memory before it can be executed. This is done by the
class loader, which takes the .class file (or files) containing the bytecodes and transfers it to memory.
The .class file can be loaded from a disk on your system or over a network (such as your local
university or company network or even the internet).
Applications (Programs) are loaded into memory and executed using the java interpreter
via the command java. When executing a Java application called Welcome, the command
Java Welcome
Invokes the interpreter for the Welcome application and causes the class loader to load information
used in the Welcome program.
Phase 4: Verify
Before the bytecodes in an application are executed by the java interpreter, they are verified by the
bytecode verifier in Phase 4. This ensures that the bytecodes for class that are loaded form the internet
(referred to as downloaded classes) are valid and that they do not violate Java's security restrictions.
Java enforces strong security because java programs arriving over the network should not be able to
cause damage to your files and your system (as computer viruses might).
Phase 5: Execute
Finally in phase 5, the computer, under the control of its CPU, interprets the program one bytecode at a
time. Thus performing the actions specified by the program.
Programs may not work on the first try. Each of the preceding phases can fail because of various errors.
This would cause the java program to print an error message. The programmer would return to
the edit phase, make the necessary corrections and proceed through the remaining phases again to
determine id the corrections work properly.
8
img
Web Design & Development ­ CS506
VU
References:
JavaTM How to Program 5th edition by Deitel & Deitel
Sun Java online tutorial: http://java.sun.com/docs/books/tutorial/java/index.html
Installation and Environment Setting
Installation
·
Download the latest version j2se5.0 (java 2 standard edition) from http://java.sun.com
or get it from any other source like CD.
Note: j2se also called jdk (java development kit). You can also use the previous versions like
jdk 1.4 or 1.3 etc. but it is recommended that you use either jdk1.4 or jdk5.0
·
Install j2se5.0 on your system
Note: For the rest of this handout, assume that j2se is installed in C:\Program
Files\Java\jdk1.5.0
Environment Setting
Once you successfully installed the j2se, the next step is environment or path setting. You
can accomplish this in either of two ways.
·
Temporary Path Setting
Open the command prompt from Start Æ Programs Æ Accessories Æ Comman
Prompt. The command prompt screen would be opened in front of you.
Write the command on the command prompt according to the following format
path = < java installation directory\bin >
So, according to handout, the command will look like this
path = C:\Program Files\Java\jdk1.5.0\bin
To Test whether path has been set or not, write javac and press ENTER. If the list ofn b
options displayed as shown in the below figure means that you have successfully
completed the steps of path setting.
The above procedure is illustrates in the given below picture.
9
img
Web Design & Development ­ CS506
VU
Note: The issue with the temporary path setting is you have to repeat the above explained
procedure again and again each time you open a new command prompt window. To avoid this
overhead, it is better to set your path permanently
·
Permanent Path Setting
In Windows NT (XP, 2000), you can set the permanent environment variable.
Right click on my computer icon click on properties as shown below
A System Properties frame would appeared as shown in the picture
10
img
Web Design & Development ­ CS506
VU
Select the advanced tab followed by clicking the Environment Variable button. The
Environment variables frame would be displayed in front of you
Locate the Path variable in the System or user variables, if it is present there, select it by
single click. Press Edit button. The following dialog box would be appeared.
·
Write; C:\Program Files\Java\jdk1.5.0\bin at the end of the value field. Press OK
button. Remember to write semicolon (;) before writing the path for java installation
directory as illustrate in the above figure
·
If Path variable does not exist, click the New button. Write variable name
"PATH", variable value C:\Program Files\Java\jdk1.5.0\bin and press OK button.
·
Now open the command prompt and write javac, press enter button. You see the list of
options would be displayed.
·
After setting the path permanently, you have no need to set the path for each new opened
command prompt.
11
img
Web Design & Development ­ CS506
VU
References
Entire material for this handout is taken from the book JAVA A Lab Course by Umair Javed. This
material is available just for the use of VU students of the course Web Design and Development and
not for any other commercial purpose without the consent of author.
First Program in Java
Like any other programming language, the java programming language is used to create applications.
So, we start from building a classical "Hello World" application, which is generally used as the first
program for learning any new language.
HelloWorldApp
1. Open notepad editor from Start Æ ProgarmFiles Æ AccessoriesÆ Notepad.
2. Write the following code into it.
Note: Don't copy paste the given below code. Probably it gives errors and you can't able to remove them
at the beginning stage.
1.
/* The HelloWorldApp class implements an application that
2.
simply displays "Hello World!" to the standard output.
3.
*/
4.
public class HelloWorldApp {
5.
public static void main(String[] args) {
6.
//Display the string. No global main
7.
System.out.println("Hello World");
8.
}
9.
}
3. To save your program, move to File menu and choose save as option.
4. Save your program as "HelloWorldApp.java" in some directory. Make sure to add double quotes
around class name while saving your program.  For this example create a folder known as
"examples" in D: drive
Note: Name of file must match the name of the public class in the file (at line 4). Moreover, it
is case sensitive. For example, if your class name is MyClass, than file name must be MyClass.
Otherwise the Java compiler will refuse to compile the program.
For the rest of this handout, we assume that program is saved in D:\examples directory.
HelloWorldApp Described
Lines 1-3
Like in C++, You can add multiple line comments that are ignored by the compiler.
Lines 4
Line 4 declares the class name as HelloWorldApp. In java, every line of code must reside inside
class. This is also the name of our program (HelloWorldApp.java). The compiler creates the
12
img
Web Design & Development ­ CS506
VU
HelloWorldApp.class if this program successfully gets compiled.
Lines 5
Line 5 is where the program execution starts. The java interpreter must find this defined
exactly as given or it will refuse to run the program. (However you can change the name of
parameter that is passed to main. i.e. you can write String[] argv or String[] some Param instead of
String[] args)
Other programming languages, notably C++ also use the main( ) declaration as the starting point for
execution. However the main function in C++ is global and reside outside of all classes where as
in Java the main function must reside inside a class. In java there are no global variables or
functions. The various parts of this main function declaration will be covered at the end of this
handout.
Lines 6
Again like C++, you can also add single line comment
Lines 7
Line 7 illustrates the method call. The println( ) method is used to print something on the
console. In this example println( ) method takes a string argument and writes it to the standard
output i.e. console.
Lines 8-9
Line 8-9 of the program, the two braces, close the method main( ) and the class
HelloWorldApp respectively.
Compiling and Running HelloWorldApp
1. Open the command prompt from Start Æ Program Files Æ Accessories. OR
alternatively you can write cmd in the run command window.
2. Write cd.. to came out from any folder, and cd [folder name] to move inside the specified
directory. To move from one drive to another, use [Drive Letter]: See figure given below
3. After reaching to the folder or directory that contains your source code, in our case
HelloWorldApp.java.
4. Use "javac" on the command line to compile the source file (".java" file).
D:\examples> javac HelloWorld.java
5. If program gets successfully compiled, it will create a new file in the same directory named
HelloWorldApp.class that contains the byte-code.
6. Use "java" on the command line to run the compiled .class file. Note ".class" would be added with
the file name.
D:\examples> java HelloWorld
7. You can see the Hello World would be printed on the console. Hurrah! You are successful in
writing, compiling and executing your first program in java
13
img
Web Design & Development ­ CS506
VU
Points to Remember
Recompile the class after making any changes
Save your program before compilation
Only run that class using java command that contains the main method, because program
executions always starts form main
An Idiom Explained
You will see the following line of code often:
­
public static void main(String args[]) { ...}
· About main()
"main" is the function from which your program starts
Why public?
Since main method is called by the JVM that is why it is kept public so that it is
accessible from outside. Remember private methods are only accessible from within the
class
Why static?
Every Java program starts when the JRE (Java Run Time Environment) calls the
main method of that program. If main is not static then the JRE have to create an object
of the class in which main method is present and call the main method on that object (In
OOP based languages method are called using the name of object if they are not static).
It is made static so that the JRE can call it without creating an object.
Also to ensure that there is only one copy of the main method per class
Why void?
14
img
Web Design & Development ­ CS506
VU
·
Indicates that main ( ) does not return anything.
What is String args[] ?
Way of specifying input (often called command-line arguments) at startup of application.
More on it latter
References
Entire material for this handout is taken from the book JAVA A Lab Course by Umair Javed. This
material is available just for the use of VU students of the course Web Design and Development and not
for any other commercial purpose with out the consent of author.
15