core java- an advanced review of features

36
The Global Open University Nagaland JAVA Special Tips & Tricks

Upload: vidyamittal

Post on 20-Nov-2014

1.346 views

Category:

Education


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Core Java- An advanced review of features

The Global Open University Nagaland

JAVASpecial Tips & Tricks

Page 2: Core Java- An advanced review of features

2

Java Virtual Machine

Programin Java

JavaCompiler

JavaBytecode

Java Virtual Machine

“WRITE ONCE, RUN ANYWHERE!”debug

pretty portable

Page 3: Core Java- An advanced review of features

Web applciations!

3

Java Applet

Server

Java Applet

Page 4: Core Java- An advanced review of features

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)

4

Applet

ClientServer

Page 5: Core Java- An advanced review of features

Thin clients (minimize download) Java all “server side”

THIS IS WHAT YOU’LL BE DOING!!

5

Client

Server

JSPs

Servlets

EJB

JDBC

Page 6: Core Java- An advanced review of features

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 + runtime modification of code

Multi-threaded

6

Page 7: Core Java- An advanced review of 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 Packages Name spaces Reflection Applet model

7

Page 8: Core Java- An advanced review of features

Java programming language specification Syntax of Java programs Defines different constructs and their semantics

Java byte code: Intermediate representation for Java programs

Java compiler: Transform Java programs into Java byte code Java interpreter: Read programs written in Java byte code

and execute them Java virtual machine: Runtime system that provides various

services to running programs 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 hosts8

Page 9: Core Java- An advanced review of features

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?

9

Page 10: Core Java- An advanced review of features

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.javajavac HelloWorld.java

Output: HelloWorld.class Run

java HelloWorld

Output: Hello, World

10

Page 11: Core Java- An advanced review of features

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 = lo + hi;lo = hi – lo;

}}

}

11

Page 12: Core Java- An advanced review of features

Arithmetic: +, -, *,/, %, =8 + 3 * 2 /4

Use 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);

}

}

12

Page 13: Core Java- An advanced review of features

Every method is defined inside a Java class definitionpublic 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));

}}

13

Page 14: Core Java- An advanced review of features

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; }}}

14

Page 15: Core Java- An advanced review of features

Classes: templates for constructing instances Fields

Instance variables Static variables

Methods Instance Static

class 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

15

Page 16: Core Java- An advanced review of features

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());

}}

16

Page 17: Core Java- An advanced review of features

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

17

Page 18: Core Java- An advanced review of features

18

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 19: Core Java- An advanced review of features

19

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 20: Core Java- An advanced review of features

20

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 21: Core Java- An advanced review of features

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

21

Page 22: Core Java- An advanced review of features

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

22

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 23: Core Java- An advanced review of features

public 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); }}

23

Page 24: Core Java- An advanced review of features

public 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 } } }

24

Page 25: Core Java- An advanced review of features

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!

25

Page 26: Core Java- An advanced review of features

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)

26

Page 27: Core Java- An advanced review of features

27

package 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 28: Core Java- An advanced review of features

28

public 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 29: Core Java- An advanced review of features

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

29

Page 30: Core Java- An advanced review of features

public 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) {} } }}

30

Page 31: Core Java- An advanced review of features

public 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...

31

Page 32: Core Java- An advanced review of features

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(); } }}

32

Page 33: Core Java- An advanced review of features

33

public 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 34: Core Java- An advanced review of features

public class Share { private int s;

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

34

Synchronized provides mutual exclusion on an object

For any object, only one thread may execute inside any of that object’s synchronized methods

Share 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 35: Core Java- An advanced review of features

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 }} 35

Page 36: Core Java- An advanced review of features

This material has been taken from Online Certificate course on JAVA from Global

Open University Online certification programme. For complete course material

visit: http://tgouwp.eduhttp://tgouwp.edu

About Global Open University :The global open university is now offering certification

courses in various fields. Even you can study, give exam from comfort of your home. These are short term and totally online courses. For more details you can visit:

Email id: [email protected]: http://tgouwp.edu