Please Please Please Ask Questions
As Much As You Like• This is not a lecture!
- But an opportunity to learn from each other.
- If you haven’t seen some of these frameworks, methods, etc. It is OK!
- Let we know if you know
‣ Better ways
‣ Best practices
‣ My mistakes!
Introduction• What’s Java?
- Since 1995
- By James Gosling and Sun Microsystems
‣ Sun acquired by Oracle in 2009/2010, $7.4 billion.
‣ James Gosling resigned from Oracle (April 2010).
- Base on C/C++
- JVM (Java Virtual Machine)
• License Issue
- What’s OpenJDK?
3
JVM
Java Principles1.Simple
- Syntax is based on C++.
- No need to remove unreferenced objects.
2.Secure
- No explicit pointer.
- Programs run inside virtual machine sandbox.
3.Object Oriented
- Object, Class, Inheritance, Abstraction and etc.
- Java is pure OOP Language. (C++ is semi object oriented).
4.Robust
- Compiler detects many problems.
- Strong memory management.
- Lack of pointers that avoids security problem.
- Automatic garbage collection.
Java Principles5.Architecture-neutral
- Machine independent.
- Write one, run anywhere.
6.Portable
- Java byte codes on any environment and any platform.
7.High Performance
- Byte code is "close" to native code.
- Still somewhat slower than a compiled language (e.g., C++).
8.Multithreaded
- Many tasks at once by defining multiple threads.
9.Distributed
- URL class allows a Java application to open and access remote objects on the internet.
Java History• JDK 1.0 (January 21, 1996)
• JDK 1.1 (February 19, 1997)
• J2SE 1.2 (December 8, 1998)
• J2SE 1.3 (May 8, 2000)
• J2SE 1.4 (February 6, 2002)
• J2SE 5.0 (September 30, 2004)
• Java SE 6 (December 11, 2006)
• Java SE 7 (July 28, 2011)
• Java SE 8 (March 18, 2014)
7
Java Uses• Desktop, Web-based and Mobile Apps
- Android
- JetBrains IDEs (IntelliJ Idea, CLion and etc.), Eclipse, NetBeans
- LibreOffice (OpenOffice)
• Embedded Systems
- X86, ARM, MIPS, LynxOS, WinCE.
• Big Data
- Hadoop (Facebook), Cassandra (Netflix, CERN, Reddit)
8
Installation• Just enter the following command:
- $ sudo apt-get install openjdk-7-jdk
• Check Java version:
- $ java -version
• Check Java compiler version:
- $ javac -version
9
Java Syntax• Data Types
• Variables
• Operators
• Statements
10
Data Types• Primitives
- short, byte, boolean, int and etc.
• Objects
- Object, String, Date, Integer, Long and etc.
11
Primitive Data Types Integer
Type Min Max 2^
byte -128 127 2^7
short -32,768 32,767 2^15
int -2,147,483,648 2,147,483,647 2^31
long -9,223,372,036,854,775,808 9,223,372,036,854,775,807 2^63
Primitive Data Types Floating-point
Type Size (bits) Precision
float 32 From 3.402,823,5 E+38 to 1.4 E-45
double 64 From 1.797,693,134,862,315,7 E+308 to 4.9 E-324
Primitive Data Types Other
Type Size (bits) Precision
boolean 1 true, false
char 16All Unicode characters. From ‘\u0000’ to ‘\uFFFF’. Check http://unicode-table.com/
Object Data Types• Everything is Object!
- String
- Date
- Integer, Long, Double
- Person, Shape
- and almost everything.
15
Variables• type identifier [=value];
- boolean status;
- int i = 0;
- int d = 66, e, f = 1410;
‣ declare three ints and initialize d and f.
- String name;
- Date today = new Date();
16
Operators
17
Type operators
Arthimetic +, -, *, /, %
Assignment +=, =-. *=, /=, %=, =
Relational !=, ==, <, >, <=, >=
Logical &&, ||, !
Bitwise &, |, ~, ^, <<, >>
Select Statements• () ? : ;
- inline if, shortcut if-else
• if () {}
• if () {} else {}
• if () {} else if {} else {}
• switch () { case X: ; break; case Y: ; break; default : ;}
18
Iteration Statements• while () {}
• do {} while ();
• for () {}
• for (:) {} //foreach
19
Syntax Comments
• /* This is a multi-line comment. It may occupy more than one line. */
• // This is an end-of-line comment
• Java Docs
• /** * This is a documentation comment. * * @author Saeid Zebardast */
Access modifiersModifier Same class or
nested classOther class inside the same package
Extended Class inside another
package
Non-extended inside another
package
private yes no no no
default(package private) yes yes no no
protected yes yes yes no
public yes yes yes yes
Methods• [modifiers] return_type method_name([parameterType parameterName, …]) {
method body; [return result]}
• public static void main(String[] args) { System.out.println(“Hello World!”); // without return!}
• long getMax(int a, int b) { if (a > b) return a; else return b; }
Classes• Top-level class
- [modifiers] class CLASS_NAME { //the file name should be CLASS_NAME.java // Class members (variables, methods, classes)}
• Inner class
- class Foo { // Top-level class class Bar { // Inner class }}
• Local class
- class Foo { void bar() { class Foobar {// Local class within a method } }}
• Initialization
- Foo foo = new Foo();
Inheritance• Use extends
- class Foo { // class members}
- class Foobar extends Foo { // class members}
• Overriding methods
- class Operation { public int doSomething() { return 0; }}
- class NewOperation extends Operation { @Override public int doSomething() { return 1; }}
Interfaces• Interface (Animal.java)
- interface Animal { public void eat(); public void sleep(); }
• Implements (Cat.java)
- public class Cat implements Animal{ String name; public Cat(String name) { this.name = name; } public void eat(){ System.out.println(name + “ eats"); } public void sleep(){ System.out.println(name + “sleeps"); } public String getName(){ return name; } public static void main(String args[]){ Cat cat = new Cat(“Barney”); cat.eat(); cat.sleep(); }}
Abstract Methods and Classes
• abstract class GraphicObject { int x, y; ... void moveTo(int newX, int newY) { ... } abstract void draw(); abstract void resize();}
• class Circle extends GraphicObject { void draw() { ... } void resize() { ... }}
• class Rectangle extends GraphicObject { void draw() { ... } void resize() { ... }}
Java File Structure[package _________] // package directory name (com.zebardast.java.tutorials)
[import _________][import _________][import _________]
[public] class CLASS_NAME { //File Name should be CLASS_NAME.java //class members}class Foo { //class members}
class Bar { //class members}
Simple Exercise Hello Word!
• Create HelloWorldApp.java:
- public class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); // Print the string to the console. }}
• Compile:
- $ javac HelloWorldApp.java
• Run:
- $ java HelloWorldApp
28
Read The F* Manual• RTFM
- http://docs.oracle.com/javase/
• The Really Big Index
- http://docs.oracle.com/javase/tutorial/reallybigindex.html
29
Thank You