0% found this document useful (0 votes)
62 views

Language: Beginners To Advance

This document provides an overview of key Java concepts for beginners and advanced learners. It covers Java syntax, classes, objects, inheritance, threads, synchronization, and debugging. Example code snippets are included to illustrate concepts like primitive data types, operators, and setting breakpoints in Eclipse for debugging. References are listed at the end for further reading. The goal is to equip readers with foundational Java knowledge from basic to more advanced topics.

Uploaded by

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

Language: Beginners To Advance

This document provides an overview of key Java concepts for beginners and advanced learners. It covers Java syntax, classes, objects, inheritance, threads, synchronization, and debugging. Example code snippets are included to illustrate concepts like primitive data types, operators, and setting breakpoints in Eclipse for debugging. References are listed at the end for further reading. The goal is to equip readers with foundational Java knowledge from basic to more advanced topics.

Uploaded by

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

JAVA

LANGUAGE
BEGINNERS TO ADVANCE

www.genial-code.com
 Java language Syntax
 “Hello World” program example
 Compiling, Running and Debugging Java code
 Inheritance
 Threading
 Synchronization

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

3
 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: 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
 ++,-- Auto increment/decrement
 +,- Unary plus/minus
 *,/ Multiplication/division
 % Modulus
 +,- Addition/subtraction

6
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
 Java has no:
 pointers
 typedef
 preprocessor
 struct
 unions
 multiple inheritance
 goto
 operator overloading
 malloc
 …

8
 package
 Class name
 Constructor
 Fields
 methods

9
10
.java => .class => JVM execution

11
 Downloading Java Development Kit (JDK) from Oracle
 Java Runtime Environment (JRE) is usually included in the JDK
installation file.

12
 Setting JAVA_HOME (Windows):
 E.g., C:\Program Files\Java\jdk1.7.0_45

 Setting path and classpath

13
14
Eclipse Download from here.

15
16
 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
Image courtesy: 18
http://www.vogella.com/tutorials/EclipseDebugging/images/xdebugstart20.gif.pagespeed.ic.SqCELlNeCm.png
Table courtesy: http://www.vogella.com/tutorials/EclipseDebugging/article.html 19
20
 Java classes can be derived from other
classes, thereby inheriting fields and
methods from those classes.

21
22
23
24
25
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
26
 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
1. Extends Thread
class

2. Implements
Runnable
interface

http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html 28
29
 Using Thread.interrupt() method:

30
http://stackoverflow.com/questions/7786305/stopping-a-specific-java-thread
31
 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


 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
 Threads are visiting one field (resource) at the same time.
 Multiple steps of an operation
 No enforced “happen-before” relationship

34
35
Example: http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html
 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 -
4. Thread B: Retrieve c. OR 1.
5. Thread B: Decrement retrieved value; 4. Thread A: Retrieve c.
result is 0. 5. Thread A: Increment retrieved value;
6. Thread B: Store result in c; c is now 0. result is 0.
6. Thread A: Store result in c; c is now 0.
36
 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
38
http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html
 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+
39
 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+
40
 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+
41
1. Thinking in Java 4th Ed, Bruce Eckel
2. Oracle Java tutorial
(http://docs.oracle.com/javase/tutorial/index.html)
3. www.cs.drexel.edu/~spiros/teaching/CS575/slides/java.pp
t
4. http://eclipsetutorial.sourceforge.net/Total_Beginner_Comp
anion_Document.pdf
5. http://www.vogella.com/tutorials/EclipseDebugging/article
.html

42

You might also like