Introduction to java 101
-
Upload
kanke-ishaku -
Category
Technology
-
view
220 -
download
0
Transcript of Introduction to java 101
![Page 1: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/1.jpg)
Java 101: Intro to Java Programming
![Page 2: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/2.jpg)
Introduction
• Your Name : Kanke Ishaku (KayKay)• Your day job: Software Engineer• Your last holiday destination?– UK: Dover– Outside UK: Mallorca, Spain
![Page 3: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/3.jpg)
Java 101
• Java Fundamentals– Setting up your development environment– Language Overview– How Java Works– Writing your first program– Built-in Data Types– Conditionals and Loops
![Page 4: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/4.jpg)
Java 102
• Object-oriented Programming– Classes and Objects– Polymorphism, Inheritance and Encapsulation– Functions and Libraries
![Page 5: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/5.jpg)
Java 103
• Data Structures– Arrays– Collections– Algorithms
![Page 6: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/6.jpg)
Java 101: Introduction to Java
Setting up your Development Environment
![Page 7: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/7.jpg)
Installing Java Development Kit• Download latest Java SE 8 JDK (not JRE) from
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
• For Windows, – download the X86 version, double click the .exe file and follow the instructions,
accepting all default• For MACs,
– check if java already installed (javac –version) and if not, download the JDK dmg file, run it and follow the instructions.
• After installation is complete, type javac –version in the Command window (Terminal window on MAC OS)- – The reported version should be 1.8.... – If not, you may need to modify the system variable PATH to include the bin
directory of JDK
![Page 8: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/8.jpg)
What is an IDE?
• IDE = Integrated Development Environment • Makes you more productive • Includes text editor, compiler, debugger, context-
sensitive help, works with different Java SDKs • Eclipse is the most widely used IDE • Alternatives:– IntelliJ IDEA (JetBrains) – NetBeans (Oracle)
![Page 9: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/9.jpg)
Installing Eclipse
• Download and install the latest Eclipse for Java EE (32 Bit version) from http://www.eclipse.org/downloads
• Unzip the content of the archive file you downloaded
• To start Eclipse– On PC, double-click on Eclipse.exe – On Mac, double click Eclipse.app in Application
folder
![Page 10: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/10.jpg)
Hands-on Exercise
Intelli j Setup & Demohttps://www.jetbrains.com/idea/download/
![Page 11: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/11.jpg)
Java 101: Introduction to Java
Language Overview
![Page 12: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/12.jpg)
Java Language Overview
![Page 13: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/13.jpg)
Java Editions
• Java SE: Java Standard Edition • Java EE: Java Enterprise Edition (a.k.a. J2EE)– includes a set of technologies built on top of Java
SE: Servlets, JSP, JSF, EJB, JMS, et al. • Java ME: Java Micro Edition• Java Card for Smart Cards• All Java programs run inside the Java Virtual
Machine (JVM)
![Page 14: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/14.jpg)
JDK vs. JRE
• Java Development Kit (JDK) is required to develop and compile programs
• Java Runtime Environment (JRE) is required to run programs.
• Users must have JRE installed, • Developers must have the JDK installed• JDK includes the JRE
![Page 15: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/15.jpg)
Java 101: Introduction to Java
How Java Works
![Page 16: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/16.jpg)
How Java Works
![Page 17: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/17.jpg)
Java File Structure
![Page 18: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/18.jpg)
Java 101: Introduction to Java
Writing Your First Program
![Page 19: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/19.jpg)
Writing Your First Java Program• Create a new project in your IDE named Java101• Create a HelloWorld class in the src folder inside the Java101
project as illustrated below.
![Page 20: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/20.jpg)
Compiling Your First Java Program• Save the HelloWorld class in the IDE• Run your program: right-clicking and selecting Run
As>Java Application• This automatically compiles the HelloWorld.java file into
into a HelloWorld.class file• Go to the folder you created the Java101 project on your
hard disk and open the src(eclipse) or out (Intelli j)folder.• What do you see?
![Page 21: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/21.jpg)
![Page 22: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/22.jpg)
Anatomy of a Java ApplicationComments Class Name
Access modifier
Function/static method
Arguments
![Page 23: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/23.jpg)
Built-in classes
![Page 24: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/24.jpg)
Introduction to Java
Built-in Data Types
![Page 25: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/25.jpg)
Built-in Data Types• Data type are sets of values and operations
defined on those values.
![Page 26: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/26.jpg)
Basic Definitions
• Variable - a name that refers to a value.• Assignment statement - associates a value with a
variable.
![Page 27: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/27.jpg)
String Data Type
Data Type Attributes
Values sequence of characters
Typical literals “Hello”, “1 “, “*”
Operation Concatenate
Operator +
• Useful for program input and output.
![Page 28: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/28.jpg)
String Data Type
![Page 29: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/29.jpg)
String Data Type• Meaning of characters depends on context.
![Page 30: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/30.jpg)
String Data Type
Expression Value
“Hi, “ + “Bob” “Hi, Bob”
“1” + “ 2 “ + “ 1” “ 1 2 1”
“1234” + “ + “ + “99” “1234 + 99”
“1234” + “99” “123499”
![Page 31: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/31.jpg)
Hands-on Exercise
Command Line Arguments
![Page 32: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/32.jpg)
Exercise: Command Line Arguments
• Create the Java program below that takes a name as command-line argument and prints “Hi <name>, How are you?”
![Page 33: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/33.jpg)
Integer Data Type
Data Type Attributes
Values Integers between -2E31 to +2E31-1
Typical literals 1234, -99 , 99, 0, 1000000
Operation Add subtract multiply divide remainder
Operator + - * / %
• Useful for expressing algorithms.
![Page 34: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/34.jpg)
Integer Data TypeExpression Value Comment
5 + 3 8
5 – 3 2
5 * 3 15
5 / 3 1 no fractional part
5 % 3 2 remainder
1 / 0 run-time error
3 * 5 - 2 13 * has precedence
3 + 5 / 2 5 / has precedence
3 – 5 - 2 -4 left associative
(3-5) - 2 -4 better style
3 – (5-2) 0 unambiguous
![Page 35: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/35.jpg)
Double Data Type
• Useful in scientific applications and floating-point arithmetic
Data Type Attributes
Values Real numbers specified by the IEEE 754 standard
Typical literals 3.14159 6.022e23 -3.0 2.0 1.41421356237209
Operation Add subtract multiply divide
Operator + - * /
![Page 36: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/36.jpg)
Double Data TypeExpression Value
3.141 + 0.03 3.171
3.141 – 0.03 3.111
6.02e23 / 2 3.01e23
5.0 / 2.0 1.6666666666667
10.0 % 3.141 0.577
1.0 / 0.0 Infinity
Math.sqrt(2.0) 1.4142135623730951
![Page 37: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/37.jpg)
Java Math Library
Methods
Math.sin() Math.cos()
Math.log() Math.exp()
Math.sqrt() Math.pow()
Math.min() Math.max()
Math.abs() Math.PI
http://java.sun.com/javase/6/docs/api/java/lang/Math.html
![Page 38: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/38.jpg)
Hands-on Exercise
Integer Operations
![Page 39: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/39.jpg)
Exercise: Integer Operations
• Create a Java class named IntOpsin the Java101 project that performs integer operations on a pair of integers from the command line and prints the results.
![Page 40: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/40.jpg)
Solution: Integer Operations
![Page 41: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/41.jpg)
Boolean Data Type
• Useful to control logic and flow of a program.
Data Type Attributes
Values true or false
Typical literals true false
Operation and or not
Operator && || !
![Page 42: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/42.jpg)
Logical operators
& (AND) | (OR)^
(EXCLUSIVE OR)
True False True False True False
True True False True True False True
False False False True False True False
![Page 43: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/43.jpg)
Logical operators• & (AND): Only TRUE if both operands are TRUE
• | (OR): Only FALSE if both operands are FALSE
• ^ (EXCLUSIVE OR): Only TRUE if both operands are DIFFERENT
![Page 44: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/44.jpg)
Conditional & Negation operatorsa !a a b a && b a || b
True False False False False False
False True False True False True
True false False True
True True true True
![Page 45: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/45.jpg)
Boolean Comparisons
• Take operands of one type and produce an operand of type boolean.
operation meaning true false
== equals 2 == 2 2 == 3
!= Not equals 3 != 2 2 != 2
< Less than 2 < 13 2 < 2
<= Less than or equal 2 <= 2 3 <= 2
> Greater than 13 > 2 2 > 13
>= Greater than or equal
3 >= 2 2 >= 3
![Page 46: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/46.jpg)
Type Conversion
• Convert from one type of data to another. • Implicit – no loss of precision– with strings
• Explicit: – cast – method.
![Page 47: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/47.jpg)
Type Conversion Examplesexpression Expression type Expression value
“1234” + 99 String “123499”
Integer.parseInt(“123”) int 123
(int) 2.71828 int 2
Math.round(2.71828) long 3
(int) Math.round(2.71828) int 3
(int) Math.round(3.14159) int 3
11 * 0.3 double 3.3
(int) 11 * 0.3 double 3.3
11 * (int) 0.3 int 0
(int) (11 * 0.3) int 3
![Page 48: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/48.jpg)
Hands-on Exercise
Leap Year Finder
![Page 49: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/49.jpg)
Exercise: Leap Year Finder
• A year is a leap year if it is either divisible by 400 or divisible by 4 but not 100.
• Write a java class named LeapYear in the Java101 project that takes a numeric year as command line argument and prints true if it’s a leap year and false if not
![Page 50: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/50.jpg)
Solution: Leap Year Finder
![Page 51: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/51.jpg)
Data Types Summary• A data type is a set of values and operations on those values.
– String for text processing– double, int for mathematical calculation– boolean for decision making
• In Java, you must: – Declare type of values. – Convert between types when necessary
• Why do we need types? – Type conversion must be done at some level. – Compiler can help do it correctly. – Example: in 1996, Ariane 5 rocket exploded after takeoff because of
bad type conversion.
![Page 52: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/52.jpg)
Introduction to Java
Conditionals and Loops
![Page 53: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/53.jpg)
Conditionals and Loops
• Sequence of statements that are actually executed in a program.
• Enable us to choreograph control flow.
![Page 54: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/54.jpg)
Conditionals• The if statement is a common branching structure. – Evaluate a boolean expression. • If true, execute some statements. • If false, execute other statements.
![Page 55: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/55.jpg)
If Statement Example
![Page 56: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/56.jpg)
More If Statement Examples
![Page 57: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/57.jpg)
While Loop
• A common repetition structure. – Evaluate a boolean expression. – If true, execute some statements. – Repeat.
![Page 58: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/58.jpg)
For Loop• Another common repetition structure. – Execute initialization statement. – Evaluate a boolean expression. • If true, execute some statements.
– And then the increment statement. – Repeat.
![Page 59: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/59.jpg)
Anatomy of a For Loop
![Page 60: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/60.jpg)
Loop Examples
![Page 61: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/61.jpg)
For Loop
![Page 62: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/62.jpg)
Hands-on Exercise
Powers of Two
![Page 63: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/63.jpg)
Exercise: Powers of Two• Create a new Java project in Eclipse named Pow2• Write a java class named PowerOfTwo to print powers of 2 that are <= 2N
where N is a number passed as an argument to the program.– Increment i from 0 to N. – Double v each time
![Page 64: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/64.jpg)
Solution: Power of 2
![Page 65: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/65.jpg)
Control Flow Summary• Sequence of statements that are actually executed in a
program. • Conditionals and loops enable us to choreograph the
control flow. Control flow Description Example
Straight line programs
all statements are executed in the order given
Conditionals certain statements are executed depending on the values of certain variables
IfIf-else
Loops certain statements are executed repeatedly until certain conditions are met
while for
do-while
![Page 66: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/66.jpg)
Homework Exercises
Java 101: Introduction to Java
![Page 67: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/67.jpg)
Hands-on Exercise
Random Number Generator
![Page 68: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/68.jpg)
Exercise: Random Number Generator• Write a java class named RandomInt to generate a pseudo-
random number between 0 and N-1 where N is a number passed as an argument to the program
![Page 69: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/69.jpg)
Solution: Random Number Generator
![Page 70: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/70.jpg)
Hands-on Exercise
Array of Days
![Page 71: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/71.jpg)
Exercise: Array of Days
• Create a java class named DayPrinter that prints out names of the days in a week from an array using a for-loop.
![Page 72: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/72.jpg)
Solution: Arrays of Days
public class DayPrinter {public static void main(String[] args) {
//initialize the array with the names of days of the week
String[] daysOfTheWeek =
{"Sunday","Monday","Tuesday","Wednesday",
"Thuesday","Friday”,"Saturday"};
//loop through the array and print their elements to //stdout
for (int i= 0;i < daysOfTheWeek.length;i++ ){System.out.println(daysOfTheWeek[i]);
}}
}
% javac DayPrinter.java
% java DayPrinterSundayMondayTuesdayWednesdayThuesdayFridaySaturday
![Page 73: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/73.jpg)
Hands-on Exercise
Print Personal Details
![Page 74: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/74.jpg)
Exercise: Print Personal Details
• Write a program that will print your name and address to the console, for example:
Alex Johnson23 Main StreetNew York, NY 10001 USA
![Page 75: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/75.jpg)
Hands-on Exercise
Sales Discount
![Page 76: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/76.jpg)
Exercise: Sales Discount• Create a new project in Eclipse named Sale • Create, compile, and run the FriendsAndFamily class as illustrated below • Debug this program in your IDE to find out how it works
![Page 77: Introduction to java 101](https://reader035.fdocuments.in/reader035/viewer/2022062523/58eea2a31a28aba1408b4669/html5/thumbnails/77.jpg)
Further Reading• Java Tutorials - https://docs.oracle.com/javase/tutorial/ • Java Language Basics -
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html • Eclipse IDE Workbench User Guide - http://help.eclipse.org/kepler/
index.jsp • Intelli J IDE User Guide - https://www.jetbrains.com/idea/documentation/• Eclipse Tutorial - http://www.vogella.com/tutorials/Eclipse/article.html