100% found this document useful (1 vote)
78 views

Intro To Java: For ECS 160

This document provides an introduction to the Java programming language. It discusses that Java was created to allow programs to run on any architecture without needing to be recompiled. It also covers key Java concepts like object-oriented programming, classes and objects, inheritance, packages, exceptions, and the Java programming environment. The document uses examples to demonstrate how to write Java programs, declare variables, define methods and control structures, extend classes, and handle exceptions. It also discusses how Java is commonly used to build web applications and the role of the Java Virtual Machine.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
78 views

Intro To Java: For ECS 160

This document provides an introduction to the Java programming language. It discusses that Java was created to allow programs to run on any architecture without needing to be recompiled. It also covers key Java concepts like object-oriented programming, classes and objects, inheritance, packages, exceptions, and the Java programming environment. The document uses examples to demonstrate how to write Java programs, declare variables, define methods and control structures, extend classes, and handle exceptions. It also discusses how Java is commonly used to build web applications and the role of the Java Virtual Machine.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 38

Intro to Java

for ECS 160

Stoney Jackson
[email protected]
wwwcsif.cs.ucdavis.edu/~jacksoni

Whats the first question youve got to


ask about a language named Java?

Can you make coffee with it?

It was meant to!!


A programming language for appliances!

Must Run on Any Architecture


debug

WRITE ONCE, RUN ANYWHERE!


Program
in Java

Java
Compiler

Java Virtual Machine

pretty portable

Java
Bytecode

Java Virtual Machine

Doesnt Make Coffee Yet

So Whats Java Good For?


Web applications!

Java Applet
Java Applet

Server

Java on the Web: Java Applets

Clients download applets via Web browser


Browser runs applet in a Java Virtual Machine
(JVM)
Applet

Client

Server

Interactive web, security, and client consistency


Slow to download, inconsistent VMs (besides,
flash won this war)

Java on the Web: J2EE

Thin clients (minimize download)


Java all server side
JSPs
Servlets

Client

Server
EJB

THIS IS WHAT YOULL BE DOING!!

JDBC

The Java programming environment

Compared to C++:

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

no header files, macros, pointers and references, unions,


operator overloading, templates, etc.

High performance through Just in time compilation +


runtime modification of code

Multi-threaded

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

Packages

Name spaces

Reflection

Applet model

10

The Java programming environment

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 hosts

11

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?

12

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

Output: HelloWorld.class

Run
java HelloWorld

Output: Hello, World

13

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

14

How to define expressions?

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

15

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

16

How are control structures specified?


Typical flow of control statements: if-then-else, while,
switch, do-while, and blocks
class 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;
}}}

17

What are classes and objects?


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.0
middlePoint.x = 640.0; middlePoint.y = 512.0

18

How are instance methods defined?


Instance methods take an implicit parameter:
instance on which method is invoked
public 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());

19

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
Inherits
Inherits
Inherits
C can:

instance variables
static variables
instance methods
static methods

Add new instance variables


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

20

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

21

What are abstract classes?

Abstract class: Merely a place holder for class


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

int minutes;
Attraction() {minutes = 75;}
int getMinutes() {return minutes;}
void setMinutes(int d) {minutes = d;}
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();

22

Packages
Object
extends
Attraction

Auxiliaries

Demonstration

extends
Movie

Symphony

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
files)
Solution: Place several files (compilation units) into a package

23

Packages contd.

units of organizing related Classes, Interfaces,


Sub packages
Why?

Java programs typically organized in terms of


packages and subpackages

Reduce name clashing


Limit visibility of names

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

24

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

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

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

Where to store packages?


How does Java find packages?
Export and Import
Access control

25

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

26

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

27

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!

28

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)

29

Package Protected
package edu.ucdavis;
public class A {
int x;
}
package edu.ucdavis;
public class B {
void foo(A a) { a.x; } // OK, same package
}
package org.omg;
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 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
}

30

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

31

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

32

Creating a Thread in Java


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

33

Creating a Thread in Java


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 Frank
0 Bob
0 Frank
1 Bob
2 Bob
1 Frank
3 Bob
2 Frank
3 Frank
4 Frank
...

34

Creating a Thread in Java via


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

Runnable {

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

35

Producer Consumer Problem


public class Producer
extends Thread {
private Share shared;

public class Consumer


extends Thread {
private Share shared;

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

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

public void run() {


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

public void run() {


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

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

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

36

Synchronized
public class Share {
private int s;
public synchronized int get() { ... }
public synchronized void put(int s) { ... }
}

Synchronized provides mutual exclusion on an


object
For any object, only one thread may execute
inside any of that objects synchronized
Share s1 = new Share();
t1 -> s1.get() // gets in
methods
Share
s2 = new Share();
t2 -> s1.put(32) // blocks

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

t1 -> s1.get() // gets in


t2 -> s2.put(4) // gets in

37

Producer Consumer Coordination


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
}

38

You might also like