Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky...

32
Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    218
  • download

    3

Transcript of Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky...

Page 1: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Lecture 5

Java Introduction

CPE 401 / 601Computer Network Systems

slides are modified from Ricky Sethi

Page 2: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

So what the heck is Java (besides coffee, that is)?

A programming language. Syntax and constructs are very similar to C++

A virtual platform Java Virtual Machine is a software “machine” or

“hypothetical chip” Since it’s “virtual”, it can be implemented on any

hardware Cross-platform distribution achieved via .class binary

file of bytecodes (instead of machine-dependent machine code) Write Once, Run Anywhere

A class library Standard APIs for GUI, data storage, processing, I/O, and

networking. Java Introduction 2

Page 3: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Getting Java Brewing…1. Download the latest Java SDK from

http://java.sun.com The SDK is a command-line based set of tools

2. A Text Editor3. Web-browser that’s java-enabled (optional)4. Some introductory links/guides/tutorials:

http://developer.java.sun.com/developer/onlineTraining/Programming/BasicJava1/compile.html

http://www.horstmann.com/ccc/c_to_java.pdf http://www.csd.uu.se/datalogi/cmtrl/oopj/vt-2000/slides/OOPJ-1-04.pdf

Java Introduction 3

Page 4: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Mechanics of Writing Java Programs

Create a Java source file. Must have the .java extension and contain only one public

class. Compile the source file into a bytecode file. The Java compiler, javac, takes your source file and

translates its text into instructions that the Java Virtual Machine (Java VM) can understand. The compiler puts these instructions into a .class bytecode file.

Run the program contained in the bytecode file.

The Java VM is implemented by a Java interpreter, java. This interpreter takes your bytecode file and carries out the instructions by translating them into instructions that your computer can understand.

Java Introduction 4

Page 5: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Putting it all together

public class Hello {

public static void main(String args[]) {

System.out.println(“Hello, world!”);

}

}

1. Put in: Hello.java 2. Compile with: javac Hello.java

Creates Hello.class3. Run with: java Hello

Java Introduction 5

Page 6: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Applications vs. Applets A Java application:

Is a standalone program Is interpreted by the Java Virtual Machine and run using the

java command Contains a main() method.

A Java applet: Runs within a Java-enabled Web browser extends the Applet or JApplet class (Inheritance) Contains an init() or a paint() method (or both).

To create an applet, you'll perform the same basic steps: 1. Create a Java source file (NameOfProgram.java) and an HTML

file (NameOfHTMLFile.html)

2. Compile the source file (NameOfProgram.class)

3. Run the program (either using java NameOfProgram or appletviewer NameOfHTMLFile.html) Java Introduction 6

Page 7: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Java notes for C++ programmers

Everything’s an object Every object inherits from java.lang.Object

No code outside of the class definition! No global variables (use static variables instead)

Single inheritance only Instead, implement interfaces

All classes are defined in .java files One top level public class per file

• The file has to have the same name as the public class!

Syntax is similar (control structures are very similar). Primitive data types are similar But a bool is not an int To print to stdout, use System.out.println() Java Introduction 7

Page 8: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Why Java?

Network Programming in Java is very different than in C/C++ much more language support

• Networking is at the core of the language

well defined error handling

no global variables

no struct, union types, goto’s, enums, bitfields, typedefs

no pointers! (garbage collection)

Threads are part of the language.

some support for common application level protocols (HTTP).

Java Introduction 8

Page 9: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Requisite First Program (Application Version)

Put in HelloWorld.java:

public class HelloWorld {

public static void main(String args[]) {

System.out.println("Hello World");

}

}

Java Introduction 9

Page 10: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Compiling and Running

HelloWorld.java javac HelloWorld.java

java HelloWorld

HelloWorld.class

compile

run

bytecode

source code

Java Introduction 10

Page 11: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

So what’s going on? The Java bytecode and interpreter at work! Bytecode is an intermediate representation of the

program (the class file) Think of it as the machine-code for the Java Virtual Machine

The Java interpreter (java) starts up a new “Virtual Machine”

The VM starts executing the user’s class by running its main() method

Java Introduction 11

Page 12: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Put in HelloWorld.java:import java.awt.Graphics;public class HelloWorld extends java.applet.Applet { public void paint(Graphics g) { g.drawString("Hello World“, 35, 15); }}

Put in test.html:<html><title>Test the applet</title><body><h3>Test the applet</h3><applet code=“HelloWorld.class” height=“200” width=“300”></applet></body></html>

Requisite First Program (Applet Version)

Java Introduction 12

Page 13: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Java Language Basics Data types same as in C++ (except bool)

bool,char,byte,short,int,long,float, double,string, etc.

Operators (same as C++) Assignment: =, +=, -=, *=, … Numeric: +, -, *, /, %, ++, --, … Relational: ==. !=, <, >, <=, >=, … Boolean: &&, ||, ! Bitwise: &, |, ^, ~, <<, >>, …

Control Structures more of what you expect:1. conditional: if, if else, switch 2. loop: while, for, do3. break and continue

not an int!

Java Introduction 13

Page 14: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Classes, References, & Packages Classes and Objects

“All Java statements appear within methods, and all methods are defined within classes”.

Java classes are very similar to C++ classes (same concepts).

Instead of a “standard library”, Java provides a lot of Class implementations or packages

What are packages? You can organize a bunch of classes and interfaces into a

package (or library of classes)• defines a namespace that contains all the classes.

Use the import keyword to include the packages you need• import java.applet.*;

You need to use some java packages in your programs• java.io (for Files, etc.), java.util (for Vectors, etc.)

References No pointers everything’s a reference! classes, arrays

Java Introduction 14

Page 15: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Exceptions When a program carries out an illegal action, an

exception is generated. Terminology:

throw an exception: signal (in the method header) that some condition or error has occurred but we want to pass the buck and not deal with it.

catch an exception: deal with the error (or whatever) ourselves inside the function/method.

Catch it using a try/catch block (next slide).

In Java, exception handling is necessary forced by the compiler compilation errors! Except for RunTimeExceptions

Java Introduction 15

Page 16: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Try/Catch/Finallytry {

// code that can throw an exception

} catch (ExceptionType1 e1) {

// code to handle the exception

} catch (ExceptionType2 e2) {

// code to handle the exception

} catch (Exception e) {

// code to handle other exceptions

} finally {

// code to run after try or any catch

}This block is always run

Java Introduction 16

Page 17: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Exception Handling

Exceptions take care of handling errors instead of returning an error, some method calls will throw

an exception.

Can be dealt with at any point in the method invocation stack. But if no method in the hierarchy handles it, results in an

unchecked exception which generates a compiler error (unless it’s a RunTimeException)

Forces the programmer to be aware of what errors can occur and to deal with them.

Java Introduction 17

Page 18: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Defining a Class One top level public class per .java file.

Typically end up with many .java files for a single program with at least one containing a static public main() method (if they’re applications).

Class name must match the file name! The compiler/interpreter use class names to figure out what

the file name is.

Classes have these three features: A constructor that’s used to allocate memory for the object,

initiailize its elements, and return a reference to the object Methods (function members) Fields (data members)

Java Introduction 18

Page 19: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

A Sample Class

public class Point {public Point(double x, double y) {

this.x = x; this.y=y;}public double distanceFromOrigin(){

return Math.sqrt(x*x+y*y);}private double x,y;

}

Java Introduction 19

Page 20: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Objects and new You can declare a variable that can hold an object:

Point p;

But this doesn’t create the object! You have to use new:

Point p = new Point(3.1,2.4);

new allocates memory and the garbage collector reclaims unused memory

Java Introduction 20

Page 21: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Using Java objects Just like C++:

object.method() or object.field

BUT, never like this (no pointers!) object->method() or object->field

Event driven model: Objects “register” to receive (and respond to) certain

messages like button presses, mouse clicks, etc. (e.g., mouseUp(), mouseDown(), keyUp(), keyDown())

Java Introduction 21

Page 22: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Strings are special You can initialize Strings like this:

String blah = "I am a literal ";

Or this ( + String operator):

String foo = "I love " + “CET375";

Or this ( new operator):

String foo = new String(“Yummy FooBars!”);

Java Introduction 22

Page 23: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Arrays Arrays are supported as a second kind of reference

type (objects are the other reference type). Although the way the language supports arrays is

different than with C++, much of the syntax is compatible. however, creating an array requires new

Index starts at 0. Arrays can’t shrink or grow.

e.g., use Vector instead.

Each element is initialized. Array bounds checking (no overflow!)

ArrayIndexOutOfBoundsException

Arrays have a .length You can use array literals like C/C++ (no need for new

keyword): Java Introduction 23

Page 24: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Array Examples

Java Introduction 24

int x[] = new int[1000];

byte[] buff = new byte[256];

float[][] mvals = new float[10][10];

int[] values;

int total=0;

for (int i=0;i<value.length;i++) {

total += values[i];

}

String[] names = {“Joe”, “Sam”};

Page 25: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Java Introduction

Reference Types Objects and Arrays are reference types Primitive types are stored as values Reference type variables are stored as references

(pointers that we can’t mess with)

int x=3;

int y=x;

Point p = new Point(2.3,4.2);

Point t = p;

There are two copies of the value 3 in memory

There is only one Point object in memory!

25

Page 26: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Passing arguments to methods

Primitive types: the method gets a copy of the value. Changes won’t show up in the caller Pass by value

Reference types: the method gets a copy of the reference, the method accesses the same object Pass by reference

There is no pass by pointers!

Java Introduction 26

Page 27: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Comparing Reference Types

Comparison using == means: “Are the references the same?”

• Do they refer to the same object?

Sometimes you just want to know if two objects/arrays are identical copies. Use the .equals() method

• You need to write this for your own classes!

All objects and arrays are references!

Java Introduction 27

Page 28: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Inheritance

Use the extends keyword to inherit from a super (or parent) class

No multiple inheritance Use implements to implement multiple interfaces

(abstract, virtual classes)

Use import instead of #include (not exactly the same but pretty close) to include packages (libraries)

Java Introduction 28

Page 29: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Concurrent Multi-threaded Programming

Java is multithreaded! Threads are easy to use.

Two ways to create new threads: Extend java.lang.Thread

• Override “run()” method. Implement Runnable interface

• Include a “run()” method in your class. Usually, you’ll implement the Runnable interface

How to implement the Runnable interface: Add a public void start() function:

• This is where you’ll initialize the thread and start() it Add a public void stop() function:

• This is where you’ll set the boolean stopFlag to true Add a public void run() function:

• This is where you’ll call repaint() to paint each new frame and handle any synchronized variables or methods 29

Page 30: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

The synchronized Statement Instead of mutex (a binary semaphore), use synchronized:

synchronized ( object ) { // critical code here}

Also, declare a method as synchronized:

synchronized int blah(String x) { // blah blah blah}

Can also use wait() and notify() to put threads on hold and wake them up again (e.g., to implement a pause or suspend feature) Must be called within a synchronized block

Java Introduction 30

Page 31: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

Using Documentation Comments Documentation comments are delimited by /**

and */

javadoc automatically generates documentation Copies the first sentence of each documentation comment

to a summary table

• Write the first sentence with some care!

For each method/class, supply: @param followed by the parameter name and a short

explanation

@return followed by a description of the return value

@author for author info, etc.

• Need to use “javadoc –author” for this…

Java Introduction 31

Page 32: Lecture 5 Java Introduction CPE 401 / 601 Computer Network Systems slides are modified from Ricky Sethi.

javadoc The Java Standard calls for every class, every

method, every parameter, and every return value to have a comment

Write the method comments first! If you can’t explain what a class or method does, you aren’t

ready to implement it!

How to create HTML documentation: Type: javadoc *.java in the directory containing your

source code

This produces one HTML file for each class and an index.html file

Documenation is together with code!

Must come immediately before the class, method,

etc.

Java Introduction 32