44
Introduction to Sun Microsystems java High level OOPL Platform Independent Case Sensitive

1- java

Embed Size (px)

Citation preview

Page 1: 1- java

Introduction to Sun Microsystems java

High level OOPL Platform Independent Case Sensitive

Page 2: 1- java

2

Can you make coffee with it?

Page 3: 1- java

3

It was meant to!!A programming language for appliances!

Page 4: 1- java

4

Java Virtual Machine

Must Run on Any Architecture

Programin Java

JavaCompiler

JavaBytecode

Java Virtual Machine

“WRITE ONCE, RUN ANYWHERE!”debug

pretty portable

Page 5: 1- java

5

Doesn’t Make Coffee Yet

Page 6: 1- java

6

So What’s Java Good For?Web applications!

Java Applet

Server

Java Applet

Page 7: 1- java

7

Java on the Web: Java Applets Clients download applets via Web browser Browser runs applet in a Java Virtual Machine

(JVM)

Interactive web, security, and client consistencySlow to download, inconsistent VMs (besides, flash won this war)

Applet

Client Server

Page 8: 1- java

8

Java on the Web: J2EE Thin clients (minimize download) Java all “server side”

THIS IS WHAT YOU’LL BE DOING!!

Client Server

JSPsServlets

EJB

JDBC

Page 9: 1- java

9

The Java programming environment Compared to C++:

no header files, macros, pointers and references, unions, operator overloading, templates, etc.

Object-orientation: Classes + Inheritance Distributed: RMI, Servlet, Distributed object

programming. Robust: Strong typing + no pointer + garbage collection Secure: Type-safety + access control Architecture neutral: architecture neutral representation Portable Interpreted

High performance through Just in time compilation (compiler converts byte code to native code) + runtime modification of code

Multi-threaded

Page 10: 1- java

10

Java Features Well defined primitive data types: int, float, double, char, etc.

int 4 bytes [–2,147,648, 2,147,483,647] Control statements similar to C++: if-then-else, switch, while,

for Interfaces Exceptions Concurrency (Multi-Threading) Packages Reflection (makes it possible to inspect classes, interfaces,

fields and methods at runtime, without knowing the names of the classes, methods etc. at compile time. It is also possible to instantiate new objects, invoke methods and get/set field values using reflection. )

Applet model

Page 11: 1- java

11

The Java programming environment Java programming language specification

Syntax of Java programs Defines different constructs

Java byte code: Intermediate representation for Java programs

Java compiler: Program that Transform Java programs into Java byte code

Java interpreter: Read programs written in Java byte code and execute them (converts byte into native code. i.e Codes other than java).

Java virtual machine: The whole technology is based on the concept of JVM. Translator of byte code into platform specific machine language. It is the Runtime system that provides various services to running programs (Logical representation of JRE)

Page 12: 1- java

12

JVM

Page 13: 1- java

13

JIT (Just-in-Time) Compilation

Page 14: 1- java

14

JVM JVM stands for Java Virtual Machine. It’s an abstract

computer or virtual computer which runs the compiled java programs. Actually JVM is a software implementation which stands on the top of the real hardware platform and operating system. It provides abstraction between the compiled java program and the hardware and operating system.

JIT: This Compiler converts byte code to native code. Old Interpreter was replaced with JIT to increase the

performance of java applications. When JVM compiles the class file it does not compile

the full class file in one shot. Compilation is done on function basis or file basis. Depending on need basis the compilation is done. This type of compilation is termed as JIT or Just-in- Time compilation.

Page 15: 1- java

15

General ( java1.5 –Tiger & java1.6 – Mustang (wild horse))

can run your compiled code on any operating system without recompiling your source code

JVM and Java Application Programming Interface (API) that are kinds of readymade software components

Java programming environment: Set of libraries that provide services such as GUI, data structures,etc.

Java enabled browsers: Browsers that include a JVM + ability to load programs from remote hosts

Platform Dependent – JVM, Java Compiler, Java Interpreter, C program, JDK.

Platform Independent – Java program. JDK (Java Development Kit) – Collection of various tools,

required to develop and run program Tools ( JRE, Java Compiler, Java Interpreter)

Page 16: 1- java

16

Path & classpath To run the program , Set the properties, then only MS-

DOS knows about java commands. (Temporary) set path=%path%; (jdk - bin) (Binary files will be

accessible in all the folders & driver of OS) set classpath=%classpath%.; (jdk - lib) (The class will be

available in all the folder of OS) The other way of setting up the path My Computer – Advanced – Environment variables –

proceed. (Permanent) JAVA_HOME – jdk Importance of path: Binary will be accessible in all the

folders and driver of O.S Importance of classpath: .class files will be available in

all the folders of O.S

Page 17: 1- java

17

OOPs Concepts- PIE Abstraction: Providing essential properties and

operation of an object by hiding internal things.

Encapsulation: Placing all the properties and operations of an object in one place.

The place is called as class, Properties are called as variables, Operations are called as methods.

Polymorphism : Remote control application - one button is used for switch on/ off.

Page 18: 1- java

18

Java: A tiny intro How are Java programs written? How are variables declared? How are expressions specified? How are control structures defined? How to define simple methods? What are classes and objects? What about exceptions?

Page 19: 1- java

19

How are Java programs written? Define a class HelloWorld and store it into a

file: HelloWorld.java:public class HelloWorld {public static void main (String[] args) {

System.out.println(“Hello, World”);}

} Compile HelloWorld.java

javac HelloWorld.javaOutput: HelloWorld.class

Run java HelloWorld

Output: Hello, World

Page 20: 1- java

20

How are variables declared?Fibonacci:

class Fibonacci {public static void main(String[] arg) {

int lo = 1;int hi = 1;System.out.println(lo);while (hi < 50) {

System.out.println(hi);hi = hi + lo;lo = hi – lo;

}}

}

Page 21: 1- java

21

How to define expressions? Arithmetic: +, -, *,/, %, =

8 + 3 * 2 /4Use standard precedence and associativity rules

Predicates: ==, !=, >, <, >=, <=public class Demo {

public static void main (String[] argv) {boolean b;b = (2 + 2 == 4);System.out.println(b);

}}

Page 22: 1- java

22

How are simple methods defined?Every method is defined inside a Java class definition

public class Movie {public static int movieRating(int s, int a, int d) {

return s+a+d;}

}public class Demo {

public static void main (String argv[]) {int script = 6, acting = 9, directing = 8;displayRating(script, acting, directing);

}public static void displayRating(int s, int a, int d){

System.out.print(“The rating of this movie is”);System.out.println(Movie.movieRating(s, a, d));

}}

Page 23: 1- java

23

How are control structures specified?

Typical flow of control statements: if-then-else, while, switch, do-while, and blocksclass ImprovedFibo { static final int MAX_INDEX = 10; public static void main (String[] args) { int lo = 1; int hi = 1; String mark = null; for (int i = 2; i < MAX_INDEX; i++) { if ((i % 2) == 0) mark = " *"; else mark = ""; System.out.println(i+ ": " + hi + mark); hi = lo + hi; lo = hi - lo; }}}

Page 24: 1- java

24

What are classes and objects?Classes: templates for constructing instances Fields

Instance variables Static variables

Methods Instance Staticclass Point {

public double x, y;}Point lowerleft = new Point();Point upperRight = new Point();Point middlePoint = new Point();lowerLeft.x = 0.0; lowerLeft.y = 0.0;upperRight.x = 1280.0; upperRight.y = 1024.0middlePoint.x = 640.0; middlePoint.y = 512.0

Page 25: 1- java

25

How are instance methods defined?Instance methods take an implicit parameter:

instance on which method is invokedpublic class Movie {

public int script, acting, directing;public int rating() {

return script + acting + directing;}

}public class Demo {

public static void main (String argv[]) {Movie m = new Movie();m.script = 6; m.acting = 9; m.directing = 8;System.out.print(“The rating of this movie is”);System.out.println(m.rating());

}}

Page 26: 1- java

26

How to extend classes? Inheritance: mechanism for extending behavior

of classes; leads to construction of hierarchy of classes [Note: no multiple inheritance]

What happens when class C extends class D: Inherits instance variables Inherits static variables Inherits instance methods Inherits static methods C can:

Add new instance variables Add new methods (static and dynamic) Modify methods (only implementation) Cannot delete anything

Page 27: 1- java

27

How to extend classes? public class Attraction {

public int minutes;public Attraction() {minutes = 75;}public int getMinutes() {return minutes;}public void setMinutes(int d) {minutes = d;}

}public class Movie extends Attraction {

public int script, acting, directing;public Movie() {script = 5; acting = 5; directing = 5;}public Movie(int s, int a, int d) {

script = s; acting = a; directing = d;} public int rating() {return script + acting + directing;}

}public class Symphony extends Attraction {

public int playing, music, conducting;public Symphony() {playing = music = conducting = 5;}public Symphony(int p, int m, int c) {

playing = p; music = m; conducting = c;} public int rating() {return playing + music + conducting;}

}

Page 28: 1- java

28

What are abstract classes? Abstract class: Merely a place holder for class

definitions; cannot be used to create instances.;public abstract class Attraction {

public int minutes;public Attraction() {minutes = 75;}public int getMinutes() {return minutes;}public void setMinutes(int d) {minutes = d;}public abstract void m();

} Following is an error:

Attraction x;x = new Attraction();

Following is not an error:public class Movie extends Attraction { … }public class Symphony extends Attraction { … }Attraction x;x = new Movie ();x = new Symphony();

Page 29: 1- java

29

Packages

Object

Attraction Auxiliaries Demonstration

Movie Symphony

extends

extends

• How do we organize above classes into a single unit? Put them in file? However, only one public class per file (whose name is same as file’s)• Solution: Place several files (compilation units) into a package

Page 30: 1- java

30

Packages – cont’d. units of organizing related Classes, Interfaces,

Sub packages Why?

Reduce name clashing Limit visibility of names

Java programs typically organized in terms of packages and subpackages Each package may then be divided into several

packages, subpackages, and classes Each class can then be stored in a separate file

Each source file starts with something like:package mypackage;

Code in source file is now part of mypackage

Page 31: 1- java

31

Packages – cont’d.

package onto.java.entertainment;public class Movie extends class Attraction {…}

package onto.java.entertainment;import java.io.*;import java.util.*;public class Auxiliaries { … }

package onto.java.entertainment;public abstract class Attraction { … }

•Where to store packages?•How does Java find packages?•Export and Import•Access control

Page 32: 1- java

32

Exceptionspublic class A { public void foo() throws MyException { if(aBadThingHappened()) { throw new MyException(); } } public void bar() { try { this.foo(); } catch (MyException e) { e.printStackTrace(); } } }

public class MyException extends Exception { public MyException() {} public MyException(String message) { super(String message); }}

Page 33: 1- java

33

Finallypublic class A { public void foo() throws MyException { throw new MyException(); } } public void bar() { try { this.foo(); } catch (MyException e) { e.printStackTrace(); } catch (YourException e) { e.printStackTrace(); } finally { ... // always executed before leaving the try/catch } } }

Page 34: 1- java

34

Resources http://java.sun.com/

Java[tm] 2 Platform, Standard Edition v1.4.1 java, javac, jar, jre, etc. Any platform... FREE!

Online documentation and tutorials http://www.eclipse.org/

Integrated development environment (IDE) for nothing in particular

Java[tm] development tools (JDT) (comes with Eclips) Project management Editor Incremental compiler CVS support

C/C++ extension in progress AspectJ support Windows, Linux, and Mac.... FREE!

Page 35: 1- java

35

Qualifiers public – any class* may access (no qualifier) “package protected” – only the

class* and classes* in the same package may access

protected – only the class* and decendent classes* may access

private – only the class* may access

The class or instances of the class (an object of the class)

Page 36: 1- java

36

Package Protectedpackage edu.ucdavis;public class A {

int x;}package edu.ucdavis;public class B {

void foo(A a) { a.x; } // OK, same package}

package edu.ucdavis.cs;public class B {

void foo(A a) { a.x; } // Not OK, different package}package edu;public class B {

void foo(A a) { a.x; } // Not OK, different package}

package edu.ucdavis.cs;public class B {

void foo(A a) { a.x; } // Not OK, different package}

package org.omg;public class B {

void foo(A a) { a.x; } // Not OK, different package}

Page 37: 1- java

37

Protectedpublic class A {

protected int x;}public class B extends A {

void foo(A a) { this.x; a.x; } // OK, B is a decendent of A}

public class C extends B {void foo(A a) { this.x; a.x; } // OK, C is a decendent of A through B

}package edu; // Uh oh!public class D extends C { void foo(A a) { this.x; a.x; } // OK, D is a decendent of A}

public class E { void foo(A a) { this.x; a.x; } // NOT OK, E is NOT a decendent of A}

Page 38: 1- java

38

Threads Multiple “threads” of execution within the

same program, share the same memory space -> “lightweight”.

Perform multiple tasks at the same time. Work on the same task in parallel. Heavily used in user interfaces.

Web browsers: load web pages while the user can still scroll, go back, open a new window, etc.

Web servers: serve multiple requests in parallel. Can take advantage of multiple processors. Threads in Java

Java manages and schedules threads Java provides “synchronize” to help coordinate

multiple threads

Page 39: 1- java

39

Creating a Thread in Javapublic class MyThread extends Thread { public MyThread(String threadName) { super(threadName); } public void run() { for(int i = 0; i < 10; i++) { System.out.println(i + “ “ + getName()); try { sleep((long)(Math.random() * 1000)); } catch(InterruptedException e) {} } }}

Page 40: 1- java

40

Creating a Thread in Javapublic class ThreadTest { public static void main(String[] args) { for(int i = 0; i < args.length; i++) { MyThread t = new MyThread(args[i]); t.start(); } }}

> java ThreadTest Bob Frank0 Bob0 Frank1 Bob2 Bob1 Frank3 Bob2 Frank3 Frank4 Frank...

Page 41: 1- java

41

Creating a Thread in Java via Interface

public class MyRunnable implements Runnable { String name; public MyRunnable(String name) { this.name = name; } public void run() { for(int i; i < 10; i++) { System.out.println(i + “ “ + name()); try { sleep((long)(Math.random() * 1000)); } catch(InterruptedException e) {} } }}

public class ThreadTest { public static void main(String[] args) { for(int i = 0; i < args.length; i++) { Thread t = new Thread(new MyRunnable(args[i]), args[i]); t.start(); } }}

Page 42: 1- java

42

Producer Consumer Problempublic class Producerextends Thread { private Share shared;

public Producer(Share s) { shared = s; }

public void run() { for(int i = 0; i < 10; i++){ shared.put(i); } }}

shared.put(0)shared.get() // 0 gottenshared.get() // 0 gotten again!!

shared.put(0)shared.put(1)shared.get() // 0 never gotten!!

public class Consumerextends Thread { private Share shared;

public Consumer(Share s) { shared = s; }

public void run() { int value; for(int i = 0; i < 10; i++) { value = shared.get(); } }}

// what about simultaneous// access?!shared.put(0) shared.get()

RACE CONDITIONS!

Page 43: 1- java

43

public class Share { private int s;

public synchronized int get() { ... } public synchronized void put(int s) { ... }}

Synchronized

Synchronized provides mutual exclusion on an object

For any object, only one thread may execute inside any of that object’s synchronized methodsShare s1 = new Share();

Share s2 = new Share();

Thread t1 = ...;Thread t2 = ...;

t1 -> s1.get() // gets int2 -> s1.put(32) // blocks

t1 -> s1.get() // gets int2 -> s2.put(4) // gets in

Page 44: 1- java

44

public class Share { private int s; private boolean empty = true;

public synchronized int get() { while (empty == true) { try { wait(); // nothing to get, wait } catch (InterruptedException e) {} } empty = true; notifyAll(); // wakeup waiting Consumers/Producers return s; } public synchronized void put(int s) { while (empty == false) { try { wait(); // no room } catch (InterruptedException e) {} } this.s = s; empty = false; notifyAll(); // wakeup waiting Consumers/Producers }}

Producer Consumer Coordination