Sie sind auf Seite 1von 30

Saeid Zebardast

@saeid
http://about.me/saeid
saeid.zebardast@gmail.com
1
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 Principles
1. 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 Principles
5. 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

All Unicode characters.


char 16 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
Type operators

Arthimetic +, -, *, /, %

Assignment +=, =-. *=, /=, %=, =

Relational !=, ==, <, >, <=, >=

Logical &&, ||, !

Bitwise &, |, ~, ^, <<, >>

17
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 modifiers
Extended Class Non-extended
Same class or Other class inside inside another
Modifier inside another
nested class the same package package
package

private yes no no no

default
yes yes no no
(package private)

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;

}

}
• Interface (Animal.java)
Interfaces
• Implements (Cat.java)

- public class Cat implements Animal{



- interface Animal {
 String name;

public void eat();
 public Cat(String name) {

public void sleep();
 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 {
 • class Circle extends GraphicObject {

int x, y;
 void draw() {

...
 ...

void moveTo(int newX, int newY) {
 }

...
 void resize() {

}
 ...

abstract void draw();
 }

abstract 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