0% found this document useful (0 votes)
45 views42 pages

Introduction To Java Programming Language: Junji Zhi University of Toronto

The document provides an introduction to the Java programming language including syntax, examples of "Hello World" programs, compiling and running Java code, concepts of inheritance, threading and synchronization. It discusses Java language features and compares it to C/C++, and provides examples of declaring classes, variables, threads and using synchronization to prevent thread interference.

Uploaded by

MELAKU TATEK
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views42 pages

Introduction To Java Programming Language: Junji Zhi University of Toronto

The document provides an introduction to the Java programming language including syntax, examples of "Hello World" programs, compiling and running Java code, concepts of inheritance, threading and synchronization. It discusses Java language features and compares it to C/C++, and provides examples of declaring classes, variables, threads and using synchronization to prevent thread interference.

Uploaded by

MELAKU TATEK
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 42

Introduction to Java

Programming Language
Junji Zhi
University of Toronto

1
Content
• Java language Syntax
• “Hello World” program example
• Compiling, Running and Debugging Java code
• Inheritance
• Threading
• Synchronization

2
Java programming Language
• Some buzzwords for Java
– “Write Once, Run Anywhere”
– Simple
– Object oriented
– Distributed
– Multithreaded
– Dynamic
– Architecture neutral
– Portable
– High performance
– Robust
– Secure

3
Example: Hello World Program

• Everything is in a class
• One file, one public class
• In the runnable public class:
– public static void main(String [] args)

4
Primitive Data Types
• Primitive Data Types: byte, short, int, long, float,
double, boolean, char
• Arrays are also a class
long [] a = new long[5];
– You can get the length by visiting the length field of
array object a, like this: a.length
• String class is very commonly used to represents
character strings, for example
String s1 = “Hello ”, s2 = “Wolrd!”;
String s3 = s1 + s2;

5
Operators (same as C/C++) [3]
• ++,-- Auto increment/decrement
• +,- Unary plus/minus
• *,/ Multiplication/division
• % Modulus
• +,- Addition/subtraction

6
Declaring Variables [3]
int n = 1;
char ch = ‘A’;
String s = “Hello”;
Long L = new Long(100000);
boolean done = false;
final double pi = 3.14159265358979323846;
Employee joe = new Employee();
char [] a = new char[3];
Vector v = new Vector();

7
Compared with C/C++ [3]
• Java has no:
– pointers
– typedef
– preprocessor
– struct
– unions
– multiple inheritance
– goto
– operator overloading
– malloc
– …

8
Declaring a class
• package
• Class name
• Constructor
• Fields
• methods

9
Compiling, Running and
Debugging Java Programs

10
Java Development Process
.java => .class => JVM execution

11
Installing Java in your machine (1)
• Downloading Java Development Kit (JDK) from
Oracle
• Java Runtime Environment (JRE) is usually
included in the JDK installation file.

12
Installing Java in your machine (2)
• Setting JAVA_HOME (Windows):
– E.g., C:\Program Files\Java\jdk1.7.0_45
• Setting path and classpath

13
Compile .java File into a .class File
(Command Line)

14
Running HelloWorld in Eclipse IDE
Eclipse Download from here.

15
Java platform

16
Debugging Java in Eclipse (1)
• Debugging means “run a program
interactively while watching the source code
and the variables during the execution.” [5]
• Set breakpoints to stop the program at the
middle of execution
• Eclipse has a Debug Mode

17
Debugging Java in Eclipse(2)

Image courtesy: http://www.vogella.com/tutorials/EclipseDebugging/images/xdebugstart20.gif.pagespeed.ic.SqCELlNeCm.png


18
Debugging Java in Eclipse(3)

Table courtesy: http://www.vogella.com/tutorials/EclipseDebugging/article.html


19
Java Inheritance

20
Inheritance in Java
• Java classes can be derived from other classes,
thereby inheriting fields and methods from those
classes.

21
Common Root: Object

22
Interface

23
“Multiple Inheritance”

24
A Real World Example: ArrayList

http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html 25
Java Threading

26
Java Threading
• A thread is a thread of execution in a program [6]
• JVM allows an application to have multiple threads running
concurrently.
• Apache Harmony example:

27
http://harmony.apache.org/subcomponents/drlvm/TM.html
Two ways to do threading
1. Extends Thread class

2. Implements
Runnable interface

http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
28
Thread lifecycle

29
How to stop a Thread
• Using Thread.interrupt() method:

30
http://stackoverflow.com/questions/7786305/stopping-a-specific-java-thread
Java Synchronization

31
Thread Interference (1)
• Increment operation is translated to
multiple steps by the virtual
machine :
1. Retrieve the current value of c.
2. Increment the retrieved value
by 1.
3. Store the incremented value
back in c.

Example from: http://docs.oracle.com/javase/tutorial/essential/concurrency/interfere.html


32
Thread Interference (2)
• Assume we have 2 threads, A and B.
• A increments c, and B decrements c.
• Thread A and B runs together.
• One possible order of the low-level steps:
1. Thread A: Retrieve c.
2. Thread B: Retrieve c.
3. Thread A: Increment retrieved value; result is 1.
4. Thread B: Decrement retrieved value; result is -1.
5. Thread A: Store result in c; c is now 1.
6. Thread B: Store result in c; c is now -1.
• Is the result correct?
• What if the thread A and B are bank transactions?
33
Problem Root Cause
• Threads are visiting one field (resource) at the
same time.
• Multiple steps of an operation
• No enforced “happen-before” relationship

34
Solution: synchronized method

Example: http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html 35
synchronized method
• Enforce the ‘happen-before’ relationship in
the method level.
• Either one of the below instance will happen.
But result is always 0, which is correct.
1. Thread A: Retrieve c. 1. Thread B: Retrieve c.
2. Thread A: Increment retrieved value; 2. Thread B: Decrement retrieved value;
result is 1. result is -1.
3. Thread A: Store result in c; c is now 1. 3. Thread B: Store result in c; c is now -1.
4. Thread B: Retrieve c. OR 4. Thread A: Retrieve c.
5. Thread B: Decrement retrieved value; 5. Thread A: Increment retrieved value;
result is 0. result is 0.
6. Thread B: Store result in c; c is now 0. 6. Thread A: Store result in c; c is now 0.

36
synchronized statements (1)
• Every object has an intrinsic lock associated
with it
• Primitive types (e.g., int, char) do not have
intrinsic locks.
• We can combine object intrinsic locks and
synchronized keyword to create fine-grained
synchronization control.

37
synchronized statements (2)

http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html 38
synchronized statement hazards (1)

• Boolean has only two instances of Boolean


• If another thread also synchronizes on the same Boolean
instance, like this:
– private final Boolean someLock = Boolean.FALSE;
• The lock will be reused.
• The system might be deadlock or unresponsive.
• It is hard to detect this type of bugs!
More examples:
https://www.securecoding.cert.org/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused
39
synchronized statement hazards (2)
• Another example of the wrong way of using
locks:

What will happen another thread also synchronizes on an integer instance


with the 0 integer value?

https://www.securecoding.cert.org/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused
40
synchronized statement hazards (3)
• Correct way of using locks: using new to
instantiate an object

https://www.securecoding.cert.org/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused
41
References
1. Thinking in Java 4th Ed, Bruce Eckel
2. Oracle Java tutorial
(http://docs.oracle.com/javase/tutorial/index.ht
ml)
3. www.cs.drexel.edu/~spiros/teaching/CS575/slid
es/java.ppt
4. http://eclipsetutorial.sourceforge.net/Total_Begi
nner_Companion_Document.pdf
5. http://www.vogella.com/tutorials/EclipseDebug
ging/article.html

42

You might also like