506
Sun Educational Services Java Programming Language September 1999 Java Programming Language SL-275 Sun Educational Services

Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

  • Upload
    others

  • View
    101

  • Download
    17

Embed Size (px)

Citation preview

Page 1: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Java ProgrammingLanguage

SL-275

Sun Educational Services

Page 2: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Copyright 1999 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, California 94303, U.S.A. All rights reserved.This product or document is protected by copyright and distributed under licenses restricting its use, copying, distribution, and decompilation. No part of this product or document maybe reproduced in any form by any means without prior written authorization of Sun and its licensors, if any.

Third-party software, including font technology, is copyrighted and licensed from Sun suppliers.

Parts of the product may be derived from Berkeley BSD systems, licensed from the University of California. UNIX is a registered trademark in the U.S. and other countries, exclusivelylicensed through X/Open Company, Ltd.

Sun, Sun Microsystems, the Sun Logo, Solstice, Java, JavaBeans, JDK, and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries. Products bearing SPARC trade-marks are based upon an architecture developed by Sun Microsystems, Inc.

The OPEN LOOK and Sun Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges the pioneering efforts of Xerox in researchingand developing the concept of visual or graphical user interfaces for the computer industry. Sun holds a non-exclusive license from Xerox to the Xerox Graphical User Interface, whichlicense also covers Sun’s licensees who implement OPEN LOOK GUIs and otherwise comply with Sun’s written license agreements.

RESTRICTED RIGHTS: Use, duplication, or disclosure by the U.S. Government is subject to restrictions of FAR 52.227-14(g) (2)(6/87) and FAR 52.227-19(6/87), or DFAR 252.227-7015(b)(6/95) and DFAR 227.7202-3(a).

X Window System is a product of the X Consortium, Inc.

DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS, AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTYOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS AREHELD TO BE LEGALLY INVALID.

Page 3: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Preface

About This Course

Page 4: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 2 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Goals

This course provides you with knowledge and skills to:

• Program and run advanced Java™ applications andapplets

• Help you prepare for the Sun™ Certified JavaProgrammer and Developer examinations

Page 5: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 3 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Overview

This course covers the following areas:

• Syntax of the Java programming language

• Object-oriented concepts as they apply to the Javaprogramming language

• Graphical user interface (GUI) programming

• Applet creation

• Multithreading

• Networking

Page 6: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 4 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 7: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 5 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Module-by-Module Overview

• Module 1 – Getting Started

• Module 2 – Identifiers, Keywords, and Types

• Module 3 – Expressions and Flow Control

• Module 4 – Arrays

• Module 5 – Objects and Classes

• Module 6 – Advanced Language Features

• Module 7 – Exceptions

• Module 8 – Building GUIs

Page 8: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 6 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Module-by-Module Overview

• Module 9 – The AWT Event Model

• Module 10 – The AWT Component Library

• Module 11 – Java Foundation Classes

• Module 12 – Introduction to Java Applets

• Module 13 – Threads

• Module 14 – Stream I/O and Files

• Module 15 – Networking

Page 9: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 7 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Objectives

• Describe key language features

• Compile and run a Java application

• Understand and use the onlinehypertext Java technologydocumentation

• Describe language syntactic elementsand constructs

• Understand the object-orientedparadigm and use object-orientedfeatures of the language

• Understand and use exceptions

• Develop a graphical user interface

• Describe the Java technologyplatform’s Abstract Window Toolkit(AWT) used to build GUIs

Page 10: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 8 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Objectives

• Program to take input from a GUI

• Understand event handling

• Describe the main features of Swing

• Develop Java applets

• Read and write to files and other datasources

• Perform input and output to allsources without the use of a GUI

• Understand the basics ofmultithreading

• Develop multithreaded Javaapplications and applets

• Develop Java client and serverprograms using Transmission ControlProtocol/Internet Protocol (TCP/IP)and User Datagram Protocol (UDP)

Page 11: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 9 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Skills Gained by Module

Module

Skills Gained 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Describe key language features

Compile and run a Java application

Understand and use the online hypertextJava technology documentation

Describe language syntactic elements andconstructs

Understand the object-oriented paradigmand use object-oriented features of thelanguage

Understand and use exceptions

Develop a GUI

Describe the Java technology platform’sAbstract Window Toolkit used to buildGUIs

Create a program to take input from agraphical user interface

Understand event handling

Describe the main features of Swing

Develop Java applets

Understand the basics of multithreading

Develop multithreaded Java applicationsand applets

Read and write to files and other datasources

Perform I/O to all sources without the useof a GUI

Page 12: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 10 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Develop Java client and server programs usingTCP/IP and UDP

Module

Skills Gained 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 13: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 11 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Guidelines for Module PacingModule Day 1 Day 2 Day 3 Day 4 Day

About This Course A.M.

Module 1 – Getting Started A.M.

Module 2 – Identifiers, Keywords, and Types A.M.

Module 3 – Expressions and Flow Control P.M.

Module 4 – Arrays P.M.

Module 5 – Objects and Classes A.M.

Module 6 – Advanced Language Features P.M.

Module 7 – Exceptions A.M.

Module 8 – Building GUIs A.M.

Module 9 – The AWT Event Model P.M.

Module 10 – The AWT Component Library A.M.

Module 11 – Java Foundation Classes A.M.

Module 12 – Introduction to Java Applets P.M.

Module 13 – Threads A.M.

Module 14 – Stream I/O and Files P.M.

Module 15 – Networking P.M.

Page 14: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 12 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Topics Not Covered

• General programming concepts. This is not a course forpeople who have never programmed before.

• General object-oriented concepts.

Page 15: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 13 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

How Prepared Are You?

Before attending this course, you should have completed

• SL-110: Java Programming For Non-Programmers

or have

• Created compiled programs with C or C++

• Created and edited text files using a text editor

• Used a World Wide Web (WWW) browser, such asNetscape Navigator™

Page 16: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 14 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Introductions

• Name

• Company affiliation

• Title, function, and job responsibility

• Programming experience

• Reasons for enrolling in this course

• Expectations for this course

Page 17: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 15 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

How to Use Course Materials

• Course Map

• Relevance

• Overhead Image

• Lecture

• Exercise

• Check Your Progress

• Think Beyond

Page 18: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 16 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Icons

• Reference

• Discussion

• Exercise

Page 19: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Preface, slide 17 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Typographical Conventions

• Courier – Commands, files and directories, and on-screen computer output

• Courier bold – Input you type

• Courier italic – Variables and command-lineplaceholders

• Palatino italics – Book titles, new words or terms, andwords that are emphasized

Page 20: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 1

Getting Started

Page 21: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 2 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 22: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 3 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Describe key features of Java programming language

• Describe the Java virtual machine’s (JVM) function

• Describe how garbage collection works

• List the three tasks performed by the Java platform thathandle code security

• Define the terms class, packages, applets, and applications

Page 23: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 4 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Write, compile, and run a simple Java application

• Use the Java technology application programminginterface (API) on-line documentation to identify themethods of the java.lang package

Page 24: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 5 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• Is the Java programming language a complete languageor is it just useful for writing programs for the Web?

• Why is another programming language needed?

• How does the Java technology platform improve onother language platforms?

Page 25: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 6 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

What Is theJava Programming Language?

• The Java programming language is:

• A programming language

• A development environment

• An application environment

• A deployment environment

• Similar in syntax to C++; similar in semantics toSmallTalk

• Used for developing both applets and applications

Page 26: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 7 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Primary Goals of the JavaProgramming Language

• Provides an easy-to-use language by:

• Avoiding the pitfalls of other languages

• Being object-oriented

• Enabling users to create streamlined and clear code

Page 27: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 8 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Primary Goals of the JavaProgramming Language

• Provides an interpreted environment for:

• Improved speed of development

• Code portability

• Enables users to run more than one thread of activity

• Supports dynamically changing programs duringruntime

• Furnishes better security

Page 28: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 9 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Primary Goals of the JavaProgramming Language

The following features fulfill these goals:

• The Java virtual machine (JVM)

• Garbage collection

• Code security

Page 29: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 10 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Java Virtual Machine

• Provides hardware platform specifications

• Reads compiled byte codes that are platformindependent

• Is implemented as software or hardware

• Is implemented in a Java technology development toolor a Web browser

Page 30: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 11 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Java Virtual Machine

• JVM provides definitions for the:

• Instruction set (central processing unit [CPU])

• Register set

• Class file format

• Stack

• Garbage-collected heap

• Memory area

Page 31: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 12 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Java Virtual Machine

• Bytecodes that maintain proper type discipline from thecode.

• The majority of type checking is done when the code iscompiled.

• Every Sun approved implementation of the JVM mustbe able to run any compliant class file.

Page 32: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 13 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Garbage Collection

• Allocated memory that is no longer needed should bedeallocated

• In other languages, deallocation is the programmer’sresponsibility

• The Java programming language provides a system-level thread to track memory allocation

• Garbage collection:

• Checks for and frees memory no longer needed

• Is done automatically

• Can vary dramatically across JVM implementations

Page 33: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 14 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Code Security

The Java application environment performs as follows:

Compile

javac Hello .java

Hello .class

Network

Classloader

Byte codeverifier

Interpreter

Runtime

codegenerator

Hardware

JIT

Runtime

Page 34: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 15 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Java Runtime Environment

• Performs three main tasks:

• Loads code

• Verifies code

• Executes code

Page 35: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 16 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Class Loader

• Loads all classes necessary for the execution of aprogram

• Maintains classes of the local file system in separate"namespaces"

• Prevents spoofing

Page 36: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 17 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Bytecode Verifier

Ensures that:

• The code adheres to the JVM specification

• The code does not violate system integrity

• The code causes no operand stack overflows orunderflows

• The parameter types for all operational code arecorrect

• No illegal data conversions (the conversion ofintegers to pointers) have occurred

Page 37: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 18 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Basic Java Application

HelloWorldApp.java

1 //2 // Sample HelloWorld application3 //4 public class HelloWorldApp{5 public static void main (String args[]) {6 System.out.println("Hello World!");7 }8 }

Page 38: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 19 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Compiling and RunningHelloWorldApp

• Compiling HelloWorldApp.java

javac HelloWorldApp.java

• Running an application

java HelloWorldApp

• Locating common compile and runtime errors

Page 39: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 20 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Compile-Time Errors

• javac: Command not found

• HelloWorldApp.java:6: Methodprintl(java.lang.String) not found in classjava.io.PrintStream.System.out.printl ^("Hello World!");

• In class HelloWorldApp :main must be public and static

Page 40: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 21 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Runtime Errors

• Can’t find class HelloWorldApp

• Naming

• One public class per file

Page 41: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 22 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Source File Layout

Contains three "top-level" elements:

• An optional package declaration

• Any number of import statements

• Class and interface declarations

Page 42: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 23 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Classes and Packages – AnIntroduction

• Classes and packages:

• Prominent packages within the Java class library are:java.langjava.awtjava.appletjava.netjava.iojava.util

Page 43: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 24 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Using the Java API Documentation

• A set of hypertext markup language (HTML) filesprovides information about the API

• One package contains hyperlinks to information on allof the classes

• A class document includes the class hierarchy, adescription of the class, a list of member variables, a listof constructors, and so on

Page 44: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 25 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Performing Basic Java Tasks

• Exercise objectives:

• Identify packages, classes, and methods in the JavaAPI documents

• Identify standard input and output methods

• Write, compile, and run two simple applicationsusing these methods

• Tasks:

• Read the documentation

• Create a Java application

• Use standard input and output

Page 45: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 26 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Describe key features of the Java programminglanguage

• Describe the Java virtual machine’s (JVM) function

• Describe how garbage collection works

• List the three tasks performed by the Java platform thathandle code security

• Define the terms class, packages, applets, and applications

• Write, compile, and run a simple Java application

Page 46: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 27 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Use the Java technology API online documentation toidentify the methods of the java.lang package.

Page 47: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 1, slide 28 of 28Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• How can you benefit from using this programminglanguage in your work environment?

Page 48: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 2

Identifiers, Keywords, and Types

Page 49: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 2 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 50: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 3 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Use comments in a source program

• Distinguish between valid and invalid identifiers

• Recognize Java technology keywords

• List the eight primitive types

• Define literal values for numeric and textual types

• Define the terms class, object, member variable, andreference variable

Page 51: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 4 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Create a class definition for a simple class containingprimitive member variables

• Declare variables of class type

• Construct an object using new

• Describe default initialization

• Access the member variables of an object using the dotnotation

• Describe the significance of a reference variable

• State the consequences of assigning variables of classtype

Page 52: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 5 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• What is your understanding of a class?

• What is your understanding of an object?

Page 53: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 6 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Comments

• Three permissible styles of comment in a Javatechnology program are:

// comment on one line

/* comment on oneor more lines */

/** documenting comment */

Page 54: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 7 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Semicolons, Blocks, and Whitespace

• A statement is a single line of code terminated by asemicolon(;):

totals = a + b + c + d + e + f;

• A block is a collection of statements bounded by openingand closing braces:

{

x = y + 1;y = x + 1;

}

Page 55: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 8 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Semicolons, Blocks, and Whitespace

• You can use a block in a class definition:

public class Date {int day;int month;int year;

}

• You can nest block statements

• Any amount of whitespace is allowed in a Java program

Page 56: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 9 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Identifiers

• Are names given to a variable, class, or method

• Can start with a letter, underscore(_), or dollar sign($)

• Are case sensitive and have no maximum length

Examples:

identifierusernameuser_name_sys_var1$change

Page 57: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 10 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Java Keywords

abstract do implements private throw

boolean double import protected throws

break else instanceof public transient

byte extends int return true

case false interface short try

catch final long static void

char finally native super volatile

class float new switch while

continue for null synchronized

default if package this

Page 58: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 11 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Primitive Types

• The Java programming language defines eightprimitive types:

• Logical boolean

• Textual char

• Integral byte, short, int, and long

• Floating double and float

Page 59: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 12 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Logical – boolean

• The boolean data type has two literals, true andfalse.

• For example, the statement:

boolean truth = true;

declares the variable truth as boolean type andassigns it a value of true.

Page 60: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 13 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Textual – char and String

char

• Represents a 16-bit Unicode character

• Must have its literal enclosed in single quotes(’ ’)

• Uses the following notations:

'a' The letter a

'\t' A tab

'\u????' A specific Unicode character, ????,is replaced with exactly fourhexadecimal digits

Page 61: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 14 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Textual – char and String

String

• Is not a primitive data type; it is a class

• Has its literal enclosed in double quotes (" " )

"The quick brown fox jumps over the lazy dog."

• Can be used as follows:

String greeting = "Good Morning !! \n ";String err_msg = "Record Not Found ! "

Page 62: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 15 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Integral – byte , short , int , andlong

• Uses three forms – Decimal, octal, or hexadecimal

2 The decimal value is two.077 The leading zero indicates an octal

value.0xBAAC The leading 0x indicates a

hexadecimal value.

• Has a default int

• Defines long by using the letter L or l

Page 63: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 16 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Integral – byte , short , int , andlong

• Each of the integral data types have the followingrange:

IntegerLength

Name or Type Range

8 bits byte -27 to 27-1

16 bits short -215 to 215 -1

32 bits int -231 to 231 -1

64 bits long -263 to 263 -1

Page 64: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 17 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Floating Point – float and double

• Default is double

• Floating point literal includes either a decimal point orone of the following:

• E or e (add exponential value)

• F or f (float )

• D or d (double )

3.14 A simple floating-point value (a double )6.02E23 A large floating-point value2.718F A simple float size value123.4E+306D A large double value with redundant D

Page 65: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 18 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Floating Point – float and double

• Floating point data types have the following ranges:

Float Length Name or Type

32 bits float

64 bits double

Page 66: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 19 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Variables, Declarations, andAssignments

1 public class Assign {2 public static void main(String args []) {34 int x, y; // declare int variables5 float z = 3.414f;// declare and assign float6 double w = 3.1415;// declare and assign double7 boolean truth = true;// declare and assign boolean8 char c;// declare character variable9 String str;// declare String10 String str1 = "bye";// declare and assign String variable11 c = 'A';// assign value to char variable12 str = "Hi out there!";// assign value to String variable13 x = 6;14 y = 1000;// assign values to int variables15 ...16 }17 }

Page 67: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 20 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Java Coding Conventions

• Classes:

class AccountBook

class ComplexVariable

• Interfaces:

interface Account

• Methods:

balanceAccount()addComplex()

Page 68: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 21 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Java Coding Conventions

• Variables:

currentCustomer

• Constants:

HEAD_COUNTMAXIMUM_SIZE

Page 69: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 22 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Understanding Objects

• Reviewing the history of objects

• Creating a new type, such as MyDate :

public class MyDate {int day;int month;int year;

}

• Declaring a variable:

MyDate myBirth, yourBirth

• Accessing members:

myBirth.day = 26;myBirth.month = 11;yourBirth.year = 1960;

Page 70: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 23 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating an Object

• Declaration of primitive types allocates memory space

• Declaration of nonprimitive types does not allocatememory space

• Declared variables are not the data itself, but references(or pointers) to the data

Page 71: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 24 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating an Object – MemoryAllocation and Layout

• A declaration allocates storage only for a reference:

MyDate today ;today = new MyDate();

today ????

Page 72: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 25 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating an Object – MemoryAllocation and Layout

• Use the new operator to allocate and initialize storage:

MyDate today;today = new MyDate() ;

today ????

day

month

year

0

0

0

Page 73: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 26 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating an Object – MemoryAllocation and Layout

• Assign newly created object to reference variable:

MyDate today;today = new MyDate();

today 0x01abcdef

day

month

year

0

0

0

Page 74: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 27 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Assignment of Reference Variables

• Consider the following code fragment:

int x = 7;int y = x;String s = “Hello ”;String t = s;

Page 75: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 28 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Assignment of ReferenceVariables

int x = 7;int y = x;String s = “Hello ”;String t = s;

• Two variables refer to single object

t = "World";

• Reassignment makes two variablespoint to two objects

x 7

y 7

s 0x01234567

t 0x01234567

“Hello”

x 7

y 7

s 0x01234567

t 0x12345678

“Hello”

“World”

Page 76: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 29 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Terminology Recap

• Class

• Object

• Reference type

• Member

Page 77: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 30 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Using Identifiers, Keywords,and Types

• Exercise objectives:

• Using the correct Java keywords, create a class andan object from the class

• Compile and run the program

• Verify that the references are assigned andmanipulated as described in this module

• Tasks:

• Create a class and corresponding objects

• Investigate reference assignments

Page 78: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 31 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Use comments in a source program

• Distinguish between valid and invalid identifiers

• Recognize Java technology keywords

• List the eight primitive types

• Define literal values for numeric and textual types

• Define the terms class, object, member variable, andreference variable

Page 79: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 32 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Create a class definition for a simple class containingprimitive member variables

• Declare variables of class type

• Construct an object using new

• Describe default initialization

• Access the member variables of an object using the dotnotation

• Describe the significance of a reference variable

• State the consequences of assigning variables of classtype

Page 80: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 2, slide 33 of 33Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• What classes and objects appear in your existingapplications?

Page 81: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 3

Expressions and Flow Control

Page 82: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 2 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 83: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 3 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Distinguish between instance and local variables

• Describe how instance variables are initialized

• Identify and correct a Possible reference beforeassignment compiler error

• Recognize, describe, and use Java operators

• Distinguish between legal and illegal assignments ofprimitive types

Page 84: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 4 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Identify boolean expressions and their requirementsin control constructs

• Recognize assignment compatibility and required castsin fundamental types

• Use if , switch , for , while , and do constructions andthe labeled forms of break and continue as flowcontrol structures in a program

Page 85: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 5 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• What types of variables are useful to programmers?

• Can multiple classes have variables with the same nameand, if so, what is their scope?

• What types of control structures are used in otherlanguages? What methods do these languages use tocontrol flow?

Page 86: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 6 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Variables and Scope

Local variables are:

• Variables that are defined inside a method and arecalled local, automatic, temporary, or stack variables

• Created when the method is executed and destroyedwhen the method is exited

• Variables that must be initialized before they are usedor compile-time errors will occur

Page 87: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 7 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Variable Initialization

Variable Value

byte 0

short 0

int 0

long 0L

float 0.0f

double 0.0d

char '\u0000' (NULL)

boolean false

All reference types null

Page 88: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 8 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Operators

Separator . [] () ; ,

R to L ++ -- + - ~ ! ( data type)

L to R * / %

L to R + -

L to R << >> >>>

L to R < > <= >= instanceof

L to R == !=

L to R &

L to R ^

L to R |

L to R &&

L to R ||

R to L ?:

R to L = *= /= %= += -= <<=>>= >>>= &= ^= |=

Page 89: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 9 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Logical Expressions

• The Boolean operators supported are:

! fl– NOT & fl– AND| – OR ̂– XOR

• The bitwise operators are:

~ – Complement & – AND| – OR ̂– XOR

• The bitwise operators can work with two Booleanoperands

Page 90: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 10 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Short -Circuit Logical Operators

• The operators are && (AND) and || (OR)

• Operators can be used as follows:

MyDate d = null;if ((d != null) && (d.day() > 31)) { // do something with d}

Page 91: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 11 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

String Concatenation With +

• The + operator:

• Performs String concatenation

• Produces a new String :

String salutation = "Dr.";String name = "Pete " + "Seymour";String title = salutation + name;

• One argument must be a String object

• Non-strings are converted to String objectsautomatically

Page 92: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 12 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Right-Shift Operators >> and >>>

• Arithmetic or signed right shift (>>) is used as follows:

128 >> 1 returns 128/2 1 = 64256 >> 4 returns 256/2 4 = 16-256 >> 4 returns -256/2 4 = -16

• The sign bit is copied during the shift.

• A logical or unsigned right shift operator (>>>) is:

• Used for bit patterns

• Not copied during the shift

Page 93: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 13 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Left-Shift Operator (<<)

• Left-shift works as follows:

128 << 1 returns 128 * 2 1 = 25616 << 2 returns 16 * 2 2 = 64

Page 94: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 14 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Casting

• If information is lost in an assignment, the programmermust confirm the assignment with a typecast.

• The assignment between short and char requires anexplicit cast.

long bigValue = 99L;int squashed = (int)(bigValue);

long bigval = 6; // 6 is an int type, OKint smallval = 99L; // 99L is a long, illegal

Page 95: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 15 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Promotion and Casting of Expressions

• Variables are automatically promoted to a longer form(such as int to long ).

• Expression is assignment compatible if the variable type isat least as large (the same number of bits) as theexpression type.

double z = 12.414F; // 12.414F is float, OKfloat z1 = 12.414; // 12.414 is double, illegal

Page 96: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 16 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Branching Statements

The if , else statements:

if ( boolean expression ) {statement or block ;

}

if ( condition is true ) {statement or block ;

} else {statement or block ;

}

Page 97: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 17 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Branching Statements

The if , else statements:

1 int count;2 count = getCount(); // a method defined in the program3 if (count < 0) {4 System.out.println("Error: count value is negative.");5 } else {6 System.out.println("There will be " + count +7 " people for lunch today.");8 }

Page 98: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 18 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Branching Statements

The switch statement:

The switch statement syntax is:

switch ( expr1 ) { case constant2 :

statements ;break;

case constant3 :statements ;break;

default:statements ;break;

}

Page 99: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 19 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Branching Statements

The switch statement:

int colorNum = 0;

switch (colorNum) { case 0: setBackground(Color.red); break; case 1: setBackground(Color.green);

break; default: setBackground(Color.black); break;}

Page 100: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 20 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Looping Statements

The for statement:

for ( init_expr; boolean testexpr; alter_expr ) {statement or block ;

}

Example:

for (int i = 0; i < 10; i++) { System.out.println("Are you finished yet?");}System.out.println("Finally!");

Page 101: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 21 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Looping Statements

The while loop:

} while ( boolean ) {statement or block ;

}

Example:

int i = 0;

while (i < 10) { System.out.println("Are you finished yet?"); i++;}System.out.println("Done");

Page 102: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 22 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Looping Statements

The do/while statement:

do {statement or block ;

} while ( boolean test );

Example:

int i = 0;

do { System.out.println("Are you finished yet?"); i++;} while (i < 10);System.out.println("Done");

Page 103: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 23 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Special Loop Flow Control

• break [ label ];

• continue [ label ];

• label: statement ; // Where statement should// be a loop

Page 104: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 24 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Special Loop Flow Control

The break statement:

do {statement or block;if (condition is true)

break ;} while ( boolean expression );

Page 105: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 25 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Special Loop Flow Control

The continue statement:

do {statement or block;if (boolean expression)

continue ;} while ( boolean expression );

Page 106: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 26 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Special Loop Flow Control

Using break with labels:

loop:do {

statement;do {

statement; statement; if (boolean expression)

break loop ;} while ( boolean expression )statement;

} while ( boolean expression );

Page 107: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 27 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Special Loop Flow Control

Using continue with labels:

test:do {

statement;do {

statement;statement;

if (condition is true)continue test ;

} while ( condition is true ) statement;

} while ( condition is true );

Page 108: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 28 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Using Expressions

• Exercise objective:

• Write, compile, and run two arithmetic programsthat use identifiers, expressions, and controlstructures

• Tasks:

• Use factorial application

• Create a geometry program

Page 109: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 29 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Distinguish between instance and local variables

• Describe how instance variables are initialized

• Identify and correct a Possible reference beforeassignment compiler error

• Recognize, describe, and use Java operators

• Distinguish between legal and illegal assignments ofprimitive types

Page 110: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 30 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Identify boolean expressions and their requirementsin control constructs

• Recognize assignment compatibility and required castsin fundamental types

• Use if , switch , for , while , and do constructions andthe labeled forms of break and continue as flowcontrol structures in a program

Page 111: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 3, slide 31 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• What data types do most programming languagesuse to group similar data elements together?

• How do you perform the same operation on allelements of a group (for example, a matrix)?

• What data types does the Java programminglanguage use?

Page 112: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 4

Arrays

Page 113: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 2 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 114: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 3 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Declare and create arrays of primitive, class, or arraytypes

• Explain why elements of an array are initialized

• Given an array definition, initialize the elements of anarray

• Determine the number of elements in an array

• Create a multidimensional array

• Write code to copy array values from one array type toanother

Page 115: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 4 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• What is the purpose of an array?

Page 116: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 5 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Declaring Arrays

• Group data objects of the same type

• Declare arrays of primitive or class types

char s[];Point p[];

char [] s;Point [] p;

• Create space for a reference

• Remember an array is an object not memory reservedfor primitive types

Page 117: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 6 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating Arrays

Use the new keyword to create an array object.

s = new char[20];p = new Point[100];

p[0] = new Point();p[1] = new Point();...

Page 118: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 7 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Initializing Arrays

• Initialize an array element

• Create an array with initial values:

1 String names[];2 names = new String[3];3 names[0] = "Georgianna";4 names[1] = "Jen";5 names[2] = "Simon";67 Myclass array[] = {8 new Myclass(),9 new Myclass(),10 new Myclass()11 };1213 Color palette[] = {14 Color.blue,15 Color.red,16 Color.white17 };

Page 119: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 8 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Multi-Dimensional Arrays

• Arrays of arrays:

int twoDim [][] = new int [4][];twoDim[0] = new int[5];twoDim[1] = new int[5];

int twoDim [][] = new int [][4]; illegal

Page 120: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 9 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Multi-Dimensional Arrays

• Non-rectangular arrays of arrays:

twoDim[0] = new int[2];twoDim[1] = new int[4];twoDim[2] = new int[6];twoDim[3] = new int[8];

• Array of four arrays of five integers each:

int twoDim[][] = new int[4][5];

Page 121: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 10 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Array Bounds

All array subscripts begin at 0:

int list[] = new int [10];for (int i = 0; i < list.length; i++) { System.out.println(list[i]);}

Page 122: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 11 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Array Resizing

• Cannot resize an array

• Can use the same reference variable to refer to anentirely new array:

int elements[] = new int[6];elements = new int[10];

Page 123: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 12 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Copying Arrays

The System .arraycopy() method:

1 //original array2 int elements[] = { 1, 2, 3, 4, 5, 6 };34 // new larger array5 int hold[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };67 // copy all of the elements array to the hold8 // array, starting with the 0th index9 System.arraycopy(elements, 0, hold, 0, elements.length);

Page 124: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 13 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Using Arrays

• Exercise objectives:

• Define and initialize an array

• Write a program that defines, initializes, and usesarrays

• Tasks:

• Use a basic array

• Create an array of arrays

• Create an anagram game

Page 125: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 14 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Declare and create arrays of primitive, class, or arraytypes

• Explain why elements of an array are initialized

• Given an array definition, initialize the elements of anarray

• Determine the number of elements in an array

• Create a multidimensional array

• Write code to copy array values from one array type toanother

Page 126: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 4, slide 15 of 15Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• How can you create a three-dimensional array?

• What is one disadvantage of using arrays?

Page 127: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 5

Objects and Classes

Page 128: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 2 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 129: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 3 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Define encapsulation, polymorphism, and inheritance

• Use the access modifiers private and public

• Develop a program segment to create and initialize anobject

• Invoke a method on a particular object

• Describe constructor and method overloading

• Describe the purpose of the this reference

Page 130: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 4 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Discuss why Java application code is reusable.

• In a Java program, identify the following:

• The package statement

• The import statement

• Classes, member functions, and variables

• Constructors

• Overloaded methods

• Overriden methods

• Parent class constructors

Page 131: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 5 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• The elements of the Java programming languagecovered so far exist in most languages regardless ofwhether they are object-oriented.

• What features does the Java programming languageposess that make it an object-oriented language?

• What does the term object-oriented mean?

Page 132: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 6 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Object Fundamentals

• Key features:

• Encapsulation

• Polymorphism

• Inheritance

• Abstraction

• Classes and objects

Page 133: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 7 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Classes and Objects

• A class is a template or model.

• An object is created based on that model.

• There is one copy of a class per program, but manyobjects (instantiate using the new keyword).

• Methods define the operations for a class.

• Methods must belong to a class.

Page 134: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 8 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Classes and Objects

1 class EmpInfo {2 String name;3 String designation;4 String department;5 }67 // Create instance8 EmpInfo employee = new EmpInfo();910 // Initializes the three members11 employee.name = "Robert Javaman "; employee.designation = " Manager " ;12 employee.department = " Coffee Shop ” ;1314 System.out.println(employee.name + “ is “ +15 employee.designation + “ at “ +16 employee.department);

Page 135: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 9 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Classes and Objects

1 public class MyDate {2 int day, month, year;34 public void tomorrow() {5 // code to increment day6 }7 }

1 MyDate d = new MyDate();2 d.tomorrow();3 int i = d.day;

Page 136: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 10 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Defining Methods

The method declaration takes the following form:

<modifiers > < return_type > < name> ( [< argument_list >]) [throws < exception >] { < block >}

Example:

public int addDays(int days) { < block > // Method code here}

Page 137: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 11 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Pass-by-Value

• The Java programming language only passesarguments by value

• When an object instance is passed as an argument to amethod, the value of the argument is a reference to theobject

• The contents of the object can be changed in the calledmethod, but the object reference is never changed

Page 138: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 12 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The this Reference

public class MyDate { int day, month, year;

public void tomorrow() { this.day = this.day + 1; // wrap around code... }}

Page 139: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 13 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Data Hiding

public class MyDate { private int day, month, year;

public void tomorrow() { this.day = this.day + 1; // validate day range }}

public class DateUser { public static void main(String args[]) { MyDate mydate = new MyDate(); mydate.day = 21; // illegal! }}

Page 140: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 14 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Data Hiding

// Part of MyDate classpublic void setDay(int targetDay) {

if (targetDay > this.daysInMonth()) {System.err.println( “ invalid day ” + targetDay);

}else {

this.day = targetDay;}

}

Page 141: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 15 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Encapsulation

• Hides the implementation details of a class

• Forces the user to use an interface to access data

• Makes the code more maintainable

Page 142: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 16 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Overloading Method Names

• It can be used as follows:

public void println(int i)public void println(float f)public void println(String s)

• Argument lists must differ.

• Return types can be different.

Page 143: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 17 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Constructing and Initializing Objects

• Calling new Xxxx() to allocate space for the new objectresults in:

• Space for the new object is allocated and initialized to0 or null.

• Explicit initialization is performed.

• A constructor is executed.

Page 144: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 18 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Explicit Member Initialization

public class Initialized { private int x = 5; private String name = "Fred";

private MyDate created = new MyDate();

// Accessor methods go here ...}

Page 145: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 19 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Constructors

• The method name must exactly match the classname.

• There must not be a return type declared for themethod.

Page 146: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 20 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Constructors

public class Xyz { // member variables go here

public Xyz() { // set up the object }

public Xyz(int x) { // set up the object with a parameter }}

Page 147: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 21 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Invoking Overloaded Constructors

public class Employee { private String name; private int salary;

public Employee(String n, int s) {name = n;

salary = s; }

public Employee(String n) { this(n, 0);

}

public Employee() { this( “ Unknown” );

}}

Page 148: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 22 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Default Constructor

• Is in every class

• Enables you to create object instances with new Xxx()

• Is invalid if you add a constructor declaration witharguments

Page 149: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 23 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The isa Relationship

The Employee class:

public class Employee { String name; Date hireDate;

Date dateOfBirth;}

Page 150: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 24 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The isa Relationship

• The Manager class:

public class Manager { String name; Date hireDate; Date dateOfBirth; String department; Employee subordinates [];}

• Subclassing

Page 151: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 25 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The extends Keyword

public class Employee { String name; Date hireDate;

Date dateOfBirth;}

public class Manager extends Employee { String department; Employee subordinates [];}

Page 152: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 26 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Single Inheritance

• When a class inherits from only one class, it is calledsingle inheritance.

• Single inheritance makes code more reliable.

• Interfaces provide the benefits of multiple inheritancewithout drawbacks.

Page 153: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 27 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Single Inheritance

attributesnameaddresssalary

up_salarypromote

methods

Employee

attributescar allowance

up_allowance

methods

Director

Engineer

Secretary

attributesbonus

up_bonus

methods

Manager

promote

Inheritance examples

Page 154: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 28 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Constructors Are Not Inherited

• A subclass inherits all methods and variables from thesuperclass (parent class).

• A subclass does not inherit the constructor from thesuperclass.

• Two ways to include a constructor are:

• Use the default constructor

• Write one or more explicit constructors

Page 155: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 29 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Polymorphism

• Polymorphism is the ability to have many differentforms; for example, the Manager class has access tomethods from Employee class.

• An object has only one form.

• A reference variable has many forms; it can refer toobjects of different forms.

Page 156: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 30 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Polymorphism

Employee e = new Manager() //legal

// Illegal attempt to assign Manager member// variable when object is a parent Employee classe.department = "Finance";

Page 157: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 31 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Heterogeneous Collections

• Collections with a common class are called homogenouscollections.

• Collections with dissimilar objects are heterogeneouscollections.

Page 158: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 32 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Heterogeneous Collections

• Because a Manager is an Employee :

// In the Employee classpublic TaxRate findTaxRate( Employee e ) {}// Meanwhile, elsewhere in the application classManager m = new Manager() ;:TaxRate t = findTaxRate( m);

• An example of heterogeneous collection is:

Employee [] staff = new Employee[1024];staff[0] = new Manager();staff[1] = new Employee();

Page 159: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 33 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The instanceof Operator

public class Employee extends Objectpublic class Manager extends Employeepublic class Contractor extends Employee----------------------------------------

public void method(Employee e) { if (e instanceof Manager) { // Gets benefits and options // along with salary } else if (e instanceof Contractor) { // Gets hourly rates } else { // regular employee }}

Page 160: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 34 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Casting Objects

• Use instanceof to test the type of an object.

• Restore full functionality of an object by casting.

• Check for proper casting using the followingguidelines:

• Casts up hierarchy are done implicitly.

• Downward casts must be to a subclass and checkedby the compiler.

• The object type is checked at runtime when runtimeerrors can occur.

Page 161: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 35 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Overriding Methods

• A subclass can modify behavior inherited from a parentclass.

• A subclass can create a method with differentfunctionality than the parent’s method but with thesame:

• Name

• Return type

• Argument list

Page 162: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 36 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Overriding Methods

public class Employee {String name;int salary;public String getDetails() {

return “ Name: “ + name + “ \n ” +“Salary : “ + salary;

}}

public class Manager extends Employee {String department;

public String getDetails() {return “ Name: “ + name + “ \n ” +

“ Manager of “ + department;}

}

Page 163: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 37 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Overriding Methods

• Virtual method invocation:

Employe e e = new Manager();e.getDetails();

• Compile-time type and runtime type

Page 164: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 38 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Rules About Overridden Methods

• Must have a return type that is identical to the methodit overrides

• Cannot be less accessible than the method it overrides

• Must throw exceptions that are same type as themethod being overridden

Page 165: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 39 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Rules About Overridden Methods

public class Parent {public void method() {}

}

public class Child extends Parent {private void method() {}

}

public class UseBoth { public void otherMethod() { Parent p1 = new Parent();

Parent p2 = new Child(); p1.method(); p2.method(); }}

Page 166: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 40 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The super Keyword

• super is used in a class to refer to its superclass.

• super is used to refer to the member variables ofsuperclass.

• Superclass behavior is invoked as if the object was partof the superclass.

• Behavior invoked does not have to be in the superclass;it can be further up in the hierarchy.

Page 167: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 41 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The super Keyword

public class Employee {private String name;private int salary;public String getDetails() {

return Name: " + name + "\nSalary: " + salary;}

}public class Manager extends Employee {

private String department;public String getDetails() {

// call parent methodreturn super.getDetails () +"\nDepartment: " + department;

}}

Page 168: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 42 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Invoking Parent Class Constructors

• Initialization of objects is structured.

• When an object is initialized, the following sequence ofevents occur:

• The memory space is allocated and initialized to"zero" values

• Explicit initialization is performed for each class inthe hierarchy

• A constructor is called for each class in the hierarchy

Page 169: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 43 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Invoking Parent Class Constructors

• In many circumstances, the default constructor is usedto initialize the parent object.

public class Employee {String name;

public Employee(String n) {name = n;

}}public class Manager extends Employee { String department; public Manager(String s, String d) {

super(s) ; department = d; }}

• If used, you must place super or this in the first lineof the constructor.

Page 170: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 44 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Packages

• You must specify package declaration at the beginningof the source file.

• You are permitted only one package declaration persource file.

// Class Employee of the Finance department for the// ABC companypackage abc.financeDept;

public class Employee { ...}

• Package names must be hierarchical and separated bydots.

Page 171: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 45 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The import Statement

• Tells the compiler where to find classes to use

• Precedes all class declarations:

import abc.financeDept.*;

public class Manager extends Employee { String department; Employee subordinates [];}

Page 172: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 46 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Directory Layout and Packages

• Packages are stored in the directory tree containing thepackage name.

package abc.financedept

public class Employee { ...}

javac -d . Employee.java

Page 173: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 47 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Using Objects and Classes

• Exercise objective:

• Write, compile, and run three programs that use theobject-oriented concepts of inheritance, constructors,and data hiding by modeling a bank account.

• Tasks:

• Create a bank account

• Create several account types

• Create an online account service

Page 174: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 48 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Define encapsulation, polymorphism, and inheritance

• Use the access modifiers private and public

• Develop a program segment to create and initialize anobject

• Invoke a method on a particular object

• Describe constructor and method overloading

• Describe the purpose of the this reference

Page 175: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 49 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Discuss why Java application code is reusable

• In a Java program, identify the following:

• The package statement

• The import statement

• Classes, member functions, and variables

• Constructors

• Overloaded methods

• Overriden methods

• Parent class constructors

Page 176: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 5, slide 50 of 50Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• Now that you understand objects and classes, howcould you put this to use on a project you are workingon?

Page 177: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 6

Advanced Language Features

Page 178: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 2 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 179: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 3 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Describe static variables, methods, and initializers

• Describe final classes, methods, and variables

• List the access control levels

• Identify deprecated classes and explain how to migratefrom JDK™ 1.0 to JDK 1.1 to JDK 1.2

• Describe how to apply collections and reflections

Page 180: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 4 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• In a Java program, identify:

• static methods and variables

• public , private , protected, and default variables

• Use abstract classes and methods

• Explain how and when to use inner classes

• Explain how and when to use interfaces

• Describe the difference between == and equals()

Page 181: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 5 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• How can you keep a class or method from beingsubclassed or overriden?

• How can you extend the use of array concepts toobjects?

Page 182: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 6 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Class (static ) Variables

• Are shared among all instances of a class

• Can be marked either as public or as private

• Can be accessed from outside the class if marked aspublic without an instance of the class

public class Count { private int serialNumber; private static int counter = 0;

public Count() {counter ++;

serialNumber = counter; }}

Page 183: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 7 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Class (static ) Methods

You can invoke static method without any instance of theclass to which it belongs.

public class GeneralFunction { public static int addUp(int x, int y) { return x + y; }}

public class UseGeneral { public void method() { int a = 9; int b = 10;

int c = GeneralFunction.addUp(a, b); System.out.println( " addUp() gives " + c); }}

Page 184: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 8 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Static Initializers

• A class can contain code in a static block that does notexist within a method body.

• Static block code executes only once, when the class isloaded.

Page 185: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 9 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Static Initializers

1 public class StaticInitDemo {2 static int i = 5;34 static {5 System.out.println("Static code i= "+ i++ );6 }7 }89 public class Test {1011 public static void main(String args[]) {12 System.out.println("Main code: i=" + StaticInitDemo.i);13 }14 }

Page 186: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 10 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Static Methods and Data

1 public class Car {2 String color;3 String model;45 // Specific to this instance.6 int serialNumber ;78 // Accessible by all instances.9 static int nextSerialNumber = 1;1011 public Car (String color, String model) {12 this.color = color;13 this.model = model;14 serialNumber = nextSerialNumber++;15 }1617 public void whoAmI() {18 System.out.println(19 "I am a " + color + " " + model +20 ", serial number = " + serialNumber);21 }2223 public static void main (String args[]) {24 Car JanesCar = new Car("Red", "Coupe");25 Car JoesCar = new Car("Blue", "Hatchback");2627 JanesCar.whoAmI();28 JoesCar.whoAmI();29 }30 }

Access class data:

nextSerialNumber orCar.nextSerialNumber

Page 187: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 11 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Static Methods and Data

1 public class Car2 {2 private String color;3 private String model;45 // Specific to this instance.6 private int serialNumber;78 // Accessible by all instances.9 private static int nextSerialNumber = 1;1011 public Car2 (String color, String model) {12 this.color = color;13 this.model = model;14 serialNumber = nextSerialNumber++;15 }1617 public void whoAmI() {18 System.out.println(19 "I am a " + color + model +20 ", serial number = " + serialNumber);21 }2223 public static void getNextSerialNum () {24 System.out.println(25 "The next available serial number is " +26 nextSerialNumber);27 }2829 public static void main (String args[]) {30 Car2 JanesCar = new Car2("Red", "Coupe");31 Car2 JoesCar = new Car2("Blue", "Hatchback");3233 // Use nonstatic method to get instance data34 JanesCar.whoAmI();35 JoesCar.whoAmI();3637 // Use static method to get class data38 getNextSerialNum ();39 }} // just to fit on page

Page 188: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 12 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Static Methods and Data

Car

JanesCar

instance data

serialNumber = 1; JanesCar.whoAmI()

getNextSerialNum() and main()

Car

class (static) data

nextSerialNumber = 3; getNextSerialNum() and main()

JoesCar

instance data

serialNumber = 2; getNextSerialNum() and main()

JoesCar.whoAmI()

Page 189: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 13 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The final Keyword

• You cannot subclass a final class.

• You cannot override a final method.

• A final variable is a constant.

Page 190: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 14 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Abstract Classes

• A class that declares the existence of methods but notthe implementation is called an abstract class.

• You can declare a class as abstract by marking it withthe abstract keyword.

public abstract class Drawing {public abstract void drawDot(int x, int y);public void drawLine(int x1, int y1,

int x2, int y2) {// draw using the drawDot() method repeatedly.

}}

• An abstract class can contain member variables andnon-abstract methods.

Page 191: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 15 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Interfaces

• An interface is a variation on the idea of an abstractclass.

• In an interface , all the methods are abstract.

• You can simulate multiple inheritance by implementingsuch interfaces.

• The syntax is:

public interface Transparency {

public static final int OPAQUE=1;public static final int BITMASK=2;public static final int TRANSLUCENT=3;

public int getTransparency();}

Page 192: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 16 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Interfaces

public class MyApplet extends Applet implements Runnable, MouseListener { "..."}

interface SayHello { void printMessage();}

class SayHelloImpl implements SayHello { void printMessage() { System.out.println("Hello"); }}

Page 193: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 17 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Interfaces

• Interfaces are useful for:

• Declaring methods that one or more classes areexpected to implement

• Determining an object’s programming interfacewithout revealing the actual body of the class

• Capturing similarities between unrelated classeswithout forcing a class relationship

Page 194: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 18 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Advanced Access Control

Modifier Same ClassSamePackage

Subclass Universe

public Yes Yes Yes Yes

protected Yes Yes Yes

default Yes Yes

private Yes

Page 195: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 19 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Deprecation

• Deprecation is the obsoletion of class constructors andmethod calls.

• Obsolete methods and constructors are replaced bymethods with a more standardized naming convention.

• When migrating code, compile the code with the-deprecation flag:

javac -deprecation MyFile.java

Page 196: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 20 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Deprecation

JDK 1.1 code, before deprecation is asfollows:

1 package myutilities;23 import java.util.*;4 import java.text.*;56 public final class DateConverter {7 private static String day_of_the_week [] =8 {"Sunday", "Monday", "Tuesday", "Wednesday",9 "Thursday", "Friday", "Saturday"};1011 public static String getDayOfWeek (String theDate){12 int month, day, year;1314 StringTokenizer st = new StringTokenizer (theDate, "/");1516 month = Integer.parseInt(st.nextToken ());17 day = Integer.parseInt(st.nextToken());18 year = Integer.parseInt(st.nextToken());19 Date d = new Date (year, month, day);2021 return (day_of_the_week[d.getDay()]);22 }23 }

Page 197: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 21 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Deprecation

Compiling previous code with the -deprecation flag yields:

% javac -deprecation DateConverter.javaDateConverter.java:16: Note: The constructor java.util.Date(int,int,int) has beendeprecated. Date d = new Date (year, month, day); ̂DateConverter.java:18: Note: The method int getDay() in class java.util.Date hasbeen deprecated. return (day_of_the_week[d.getDay()]); ̂Note: DateConverter.java uses a deprecated API.Please consult the documentation fora better alternative.3 warnings

Page 198: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 22 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Deprecation

A JDK 1.3 version rewritten is:

1 package myutilities;23 import java.util.*;4 import java.text.*;56 public final class DateConverter2 {7 private static String day_Of_The_Week[] =8 {"Sunday", "Monday", "Tuesday", "Wednesday",9 "Thursday", "Friday", "Saturday"};1011 public static String getDayOfWeek (String theDate) {12 Date d = null;13 SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy");1415 try {16 d = sdf.parse (theDate);17 } catch (ParseException e) {18 System.out.println (e);19 e.printStackTrace();20 }2122 // Create a GregorianCalendar object23 Calendar c =24 new GregorianCalendar(25 TimeZone.getTimeZone("EST"),Locale.US);26 c.setTime (d);2728 return(29 day_Of_The_Week[(c.get(Calendar.DAY_OF_WEEK)-1)]);30 }31 }

Page 199: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 23 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The == Operator Versus equals()Method

• The equals() and == methods determine if referencevalues refer to the same object.

• The equals() method is overridden in classes to returntrue if the contents and type of two separate objectsmatch.

Page 200: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 24 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

toString() Method

• Converts an object to a String

• Converts a primitive type to a String, but useswrapper classes that have the method

• Overrides to provide information about the object inreadable format

Page 201: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 25 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Inner Classes

• Added to JDK 1.1

• Allow a class definition to be placed inside another classdefinition

• Group classes that logically belong together

• Have access to their enclosing class’s scope

Page 202: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 26 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Properties of Inner Classes

• You can use the class name only within the definedscope, except when used in a qualified name.

The name of the inner class must differ from theenclosing class.

• The inner class can be defined inside a method.

Any variable, either a local variable or a formalparameter, can be accessed by methods within aninner class provided the variable is marked asfinal .

Page 203: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 27 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Properties of Inner Classes

• The inner class can use both class and instance variablesof enclosing classes and local variables of enclosingblocks.

• The inner class can be defined as abstract.

• Only inner classes can be declared as private orprotected .

• An inner class can act as an interface implemented byanother inner class.

Page 204: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 28 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Properties of Inner Classes

• Inner classes that are declared static automaticallybecome top-level classes.

• Inner classes cannot declare any static members; onlytop-level classes can declare static members.

An inner class wanting to use a static must declarestatic in the top-level class.

Page 205: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 29 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Wrapper Classes

• Look at primitive data elements as objects

Primitive Data Type Wrapper Class

boolean Boolean

byte Byte

char Character

short Short

int Integer

long Long

float Float

double Double

Page 206: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 30 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Wrapper Classes

int pInt = 500;Integer wInt = new Integer(pInt);

int p2 = wInt.intValue();

Page 207: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 31 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Collection API

• A collection (or a container) is a single objectrepresenting a group of objects known as its elements.

• Collection classes Vector , Bits , BitSet , Stack ,Hashtable , LinkedList , and so on are supported.

• The Collection API contains interfaces that maintainobjects as a:

• Collection – A group of objects with no specificordering

• Set – A group of objects with no duplication

• List – A group of ordered objects; duplication ispermitted

Page 208: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 32 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Vector Class

The Vector class provides methods for working withdynamic arrays of varied element types.

java.lang.Object

java.util.AbstractCollection

java.util.AbstractList

java.util.Vector

Page 209: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 33 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Synopsis

• Each vector maintains a capacity andcapacityIncrement .

• As elements are added, storage for the vector increasesin chunks up to the size of the capacityIncrementvariable.

Page 210: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 34 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Constructors

• public Vector()

• public Vector(int initialCapacity)

• public Vector(int initialCapacity, int capacityIncrement)

Page 211: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 35 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Variables

• protected int capacityIncrement

• protected int elementCount

• protected Object elementData[]

Page 212: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 36 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Methods

public final int size()

public final boolean contains(Object elem)

public final int indexOf(Object elem)

public final synchronized Object elementAt(int index)

public final synchronized void setElementAt(Object obj, int index)

public final synchronized void removeElementAt(int index)

public final synchronized void addElement(Object obj)

public final synchronized void insertElementAt(Object obj, int index)

Page 213: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 37 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Vector Class

1 import java.util.*;23 public class MyVector extends Vector {4 public MyVector() {56 // storage capacity & capacityIncrement7 super(1,1);8 }910 public void addInt(int i) {1112 // addElement requires Object arg13 addElement(new Integer(i));14 }1516 public void addFloat(float f) {17 addElement(new Float(f));18 }1920 public void addString(String s) {21 addElement(s);22 }2324 public void addCharArray(char a[]) {25 addElement(a);26 }

Page 214: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 38 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Vector Class

27 public void printVector() {28 Object o;2930 // compare with capacity()31 int length = size();32 System.out.println("Number of vector elements is " +33 length + " and they are:");3435 for (int i = 0; i < length; i++) {36 o = elementAt(i);3738 if (o instanceof char[]) {3940 // An array's toString() method does not print41 // what we want.42 System.out.println(String.copyValueOf((char[]) o));43 } else {44 System.out.println(o.toString());45 }46 }47 }4849 public static void main(String args[]) {50 MyVector v = new MyVector();51 int digit = 5;52 float real = 3.14F;53 char letters[] = { 'a', 'b', 'c', 'd' };54 String s = new String("High there!");5556 v.addInt(digit);57 v.addFloat(real);58 v.addString(s);59 v.addCharArray(letters);6061 v.printVector();62 }63 }

Page 215: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 39 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Reflection API

Can be used to:

• Construct new class instances and new arrays

• Access and modify fields of objects and classes

• Invoke methods on objects and classes

• Access and modify elements of arrays

Page 216: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 40 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Reflection API Features

java.lang.Class

java.lang.reflect.Field

java.lang.reflect.Method

java.lang.reflect.Array

java.lang.reflect.Constructor

Page 217: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 41 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Reflection API Security Model

• The Java Security Manager controls access to the coreReflection API on a class-by-class basis.

• Standard Java programming language access control isenforced when:

• A Field is used to get or set a field value

• A Method is used to invoke a method

• A Constructor is used to create and initialize anew instance of a class

Page 218: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 42 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Working With AdvancedLanguage Features

• Exercise objective:

• Rewrite, compile, and run three programs that usethe bank account model and employ advancedobject-oriented features, such as inner classes, vectorclasses, and interfaces

• Tasks:

• Modify the bank account

• Use inner classes

• Add find and delete methods to MyVector class

Page 219: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 43 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Describe static variables, methods, and initializers

• Describe final classes, methods, and variables

• List the access control levels

• Identify deprecated classes and explain how to migratefrom JDK 1.0 to JDK 1.1 to JDK 1.2

• Describe how to apply collections and reflections

Page 220: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 44 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• In a Java program, identify:

• static methods and variables

• public , private , protected, and defaultvariables

• Use abstract classes and methods

• Explain how and when inner classes are used

• Explain how and when interfaces are used

• Describe the difference between == and equals()

Page 221: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 6, slide 45 of 45Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• What features of the Java programming language areused to deal with runtime error conditions?

Page 222: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 7

Exceptions

Page 223: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 2 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 224: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 3 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Define exceptions

• Use try, catch, and finally statements

• Describe exception categories

• Identify common exceptions

• Develop programs to handle your own exceptions

Page 225: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 4 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• In most programming languages, how do you resolveruntime errors?

Page 226: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 5 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exceptions

• The Exception class defines mild error conditions thatyour program encounters.

• Exceptions can occur when:

• The file you try to open does not exist

• The network connection is disrupted

• Operands being manipulated are out of prescribedranges

• The class file you are interested in loading is missing

• An error class defines serious error conditions

Page 227: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 6 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exception Example

1 public class HelloWorld {9 public static void main (String args[]) {10 int i = 0;1112 String greetings [] = {13 "Hello world!",14 "No, I mean it!",15 "HELLO WORLD!!"16 };1718 while (i < 4) {19 System.out.println (greetings[i]);20 i++;21 }22 }23 }

Page 228: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 7 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

try and catch Statements

1 try {2 // code that might throw a particular exception3 } catch (MyExceptionType e) {4 // code to execute if a MyExceptionType exception is thrown5 } catch (Exception e) {6 // code to execute if a general Exception exception is thrown7 }

Page 229: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 8 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Call Stack Mechanism

• If an exception is not handled in the current try/catchblock, it is thrown to the caller of that method.

• If the exception gets back to the main method and is nothandled there, the program is terminated abnormally.

Page 230: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 9 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

finally Statement

1 try {2 startFaucet();3 waterLawn();4 } finally {5 stopFaucet();6 }

Page 231: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 10 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exception Example Revisited

1 public class HelloWorld2 {2 public static void main (String args[]) {3 int i = 0;45 String greetings [] = {6 "Hello world!",7 "No, I mean it!",8 "HELLO WORLD!!"9 };1011 while (i < 4) {12 try {13 System.out.println (greetings[i]);14 } catch (ArrayIndexOutOfBoundsException e){15 System.out.println("Re-stting Index Value");16 i = -1;17 } finally {18 System.out.println("This is always printed");19 }2021 i++;22 }23 }24 }

Page 232: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 11 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exception Categories

Throwable

Error

Exception

RuntimeException

IOException

ArithmeticException

NullPointerException

IndexOutOfBoundsException

EOFException

FileNotFoundException

VirtualMachineError

AWTError

OutOfMemoryError StackOverflowError

Page 233: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 12 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Common Exceptions

• ArithmeticException

• NullPointerException

• NegativeArraySizeException

• ArrayIndexOutOfBoundsException

• SecurityException

Page 234: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 13 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Handle or Declare Rule

• Handle the exception by using the try-catch-finally block.

• Declare that the code causes an exception by using thethrows clause.

Page 235: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 14 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating Your Own Exceptions

1 public class ServerTimedOutException extends Exception {2 private int port;34 public ServerTimedOutException(String reason, int port) {5 super(reason);6 this.port = port;7 }89 // Use Exception class`s getMessage() to get the10 // reason the exception was madE1112 public int getPort() {13 return port;14 }15 }

Page 236: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 15 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Handling User-Defined Exceptions

1 public void connectMe(String serverName) throws ServerTimedOutException {2 int success;3 int portToConnect = 80;4 success = open(serverName, portToConnect);5 if (success == -1) {6 throw new ServerTimedOutException("Could not connect", 80);7 }8 }

1 public void findServer() {2 try {3 connectMe(defaultServer);4 } catch (ServerTimedOutException e) {5 System.out.println(6 "Server timed out, trying alternative");7 try {8 connectMe(alternativeServer);9 } catch (ServerTimedOutException e1) {10 System.out.println(11 "Error: " + e1.getReason() +12 " connecting to port " + e1.getPort());13 }14 }15 }

Page 237: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 16 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Define exceptions

• Use try, catch, and finally statements

• Describe exception categories

• Identify common exceptions

• Develop programs to handle your own exceptions

Page 238: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 7, slide 17 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• What features does the Java application environmenthave that support user interface development?

Page 239: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 8

Bulding GUIs

Page 240: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 2 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 241: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 3 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Describe the AWT package and its components

• Define the terms containers, components, and layoutmanagers, and how they work together to build agraphical user interface (GUI)

• Use layout managers

• Use the FlowLayout , BorderLayout , GridLayout , andCardLayout managers to achieve a desired dynamiclayout

• Add components to a container

• Use the Frame and Panel containers appropriately

Page 242: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 4 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Describe how complex layouts with nested containerswork

• In a Java program, identify the following:

• Containers

• The associated layout managers

• The layout hierarchy of all components

Page 243: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 5 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• As a platform-independent programming language,how is Java technology used to make the GUI platformindependent?

Page 244: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 6 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The AWT

• Provides basic GUI components that are used in all Javaapplets and applications

• Contains classes that can be extended and theirproperties inherited; classes can also be abstract

• Ensures that every GUI component that is displayed onthe screen is a subclass of the abstract class Component

• Has Container , which is an abstract subclass ofComponent and includes two subclasses:

• Panel

• Window

Page 245: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 7 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The java.awt Package

java.lang. Object

ButtonCanvasCheckboxChoiceContainerLabelListScrollbarTextComponent

BorderLayoutCardLayoutCheckboxGroupColorDimensionEventFontFlowLayoutFontMetricsGraphicsGridBagConstraintsGridBagLayoutGridLayoutImageInsetsPointPolygonRectangleToolkitMenuComponentComponent

MenuBarMenuItem Menu - PopupMenu

CheckboxMenuItem

TextAreaTextField

PanelWindowScrollPane Dialog

Frame

Applet (java.applet package)

FileDialog

Exceptions – AWTException Errors – AWTError

Page 246: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 8 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Containers

• The two main types of containers are Window andPanel .

• Windows are objects of java.awt.Window .

• Panel s are objects of java.awt.Panel .

Page 247: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 9 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Building Graphical User Interfaces

• The position and size of a component in a container isdetermined by a layout manager.

• You can control the size or position of components bydisabling the layout manager.

You must then use setLocation() , setSize() , orsetBounds() on components to locate them in thecontainer.

Page 248: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 10 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Frame

• Is a subclass of Window

• Has title and resizing corners

• Inherits from Container and adds components withthe add() method

• Can be used to create invisible Frame objects with a titlespecified by a string.

• Has BorderLayout as the default layout manager

• Uses the setLayout method to change the defaultlayout manager

Page 249: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 11 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

MyFrame.java

1 import java.awt.*;23 public class MyFrame extends Frame {45 public MyFrame (String str) {6 super(str);7 }89 public static void main (String args[]) {10 MyFrame fr = new MyFrame("Hello Out There!");11 fr.setSize(500,500);12 fr.setBackground(Color.blue);13 fr.setVisible(true);14 }15 }

Page 250: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 12 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

MyFrame.java

Page 251: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 13 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Panel

• Provides a space for components

• Allows subpanels to have their own layout manager

• Adds components with the add() method

Page 252: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 14 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

FrameWithPanel.java

1 import java.awt.*;23 public class FrameWithPanel extends Frame {45 // Constructor6 public FrameWithPanel (String str) {7 super(str);8 }910 public static void main (String args[]) {11 FrameWithPanel fr =12 new FrameWithPanel("Frame with Panel");13 Panel pan = new Panel();1415 fr.setSize(200,200);16 fr.setBackground(Color.blue);17 fr.setLayout(null); // Override default layout mgr1819 pan.setSize(100,100);20 pan.setBackground(Color.yellow);2122 fr.add(pan);23 fr.setVisible(true);24 }25 }

Page 253: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 15 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

FrameWithPanel.java

Page 254: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 16 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Container Layouts

• FlowLayout

• BorderLayout

• GridLayout

• CardLayout

• GridBagLayout

Page 255: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 17 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Default Layout ManagersComponent

Container

Window

Frame Dialog

BorderLayout

Panel

Applet

FlowLayout

Page 256: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 18 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Simple FlowLayoutExample

1 import java.awt.*;23 public class ExGui {4 private Frame f;5 private Button b1;6 private Button b2;78 public void go() {9 f = new Frame("GUI example");10 f.setLayout(new FlowLayout());11 b1 = new Button("Press Me");12 b2 = new Button("Don't press Me");13 f.add(b1);14 f.add(b2);15 f.pack();16 f.setVisible(true);17 }1819 public static void main(String args[]) {20 ExGui guiWindow = new ExGui();21 guiWindow.go();22 }23 }

Page 257: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 19 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

FlowLayout Manager

• Default layout for Panel s

• Components added from left to right

• Default alignment is centered

• Uses components’ preferred sizes

• Use the constructor to tune behavior

Page 258: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 20 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

MyFlow.java

1 import java.awt.*;23 public class MyFlow {4 private Frame f;5 private Button button1, button2, button3;67 public void go() {8 f = new Frame("Flow Layout");9 f.setLayout(new FlowLayout());10 button1 = new Button("Ok");11 button2 = new Button("Open");12 button3 = new Button("Close");13 f.add(button1);14 f.add(button2);15 f.add(button3);16 f.setSize(100,100);17 f.setVisible(true);18 }1920 public static void main(String args[]) {21 MyFlow mflow = new MyFlow();22 mflow.go();23 }24 }

Page 259: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 21 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

MyFlow.java

After user or pro-gram resizes

After user or pro-gram resizes

Page 260: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 22 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

ExGui2.java

1 import java.awt.*;23 public class ExGui2 {4 private Frame f;5 private Button bn, bs, bw, be, bc;67 public void go() {8 f = new Frame("Border Layout");9 bn = new Button("B1");10 bs = new Button("B2");11 bw = new Button("B3");12 be = new Button("B4");13 bc = new Button("B5");1415 f.add(bn, BorderLayout.NORTH );16 f.add(bs, BorderLayout.SOUTH);17 f.add(bw, BorderLayout.WEST);18 f.add(be, BorderLayout.EAST);19 f.add(bc, BorderLayout.CENTER);2021 f.setSize(200,200);22 f.setVisible(true);23 }2425 public static void main(String args[]) {26 ExGui2 guiWindow2 = new ExGui2();27 guiWindow2.go();28 }29 }

Page 261: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 23 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

ExGui2.java

After window is resized

After window is resized

Page 262: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 24 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

GridLayout Manager

• Components are added left to right, top to bottom.

• All regions are equally sized.

• The constructor specifies the rows and columns.

Page 263: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 25 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

GridEx.java

1 import java.awt.*;23 public class GridEx {4 private Frame f;5 private Button b1, b2, b3, b4, b5, b6;67 public void go() {8 f = new Frame("Grid Example");9 f.setLayout (new GridLayout(3,2));1011 b1 = new Button("1");12 b2 = new Button("2");13 b3 = new Button("3");14 b4 = new Button("4");15 b5 = new Button("5");16 b6 = new Button("6");1718 f.add(b1);19 f.add(b2);20 f.add(b3);21 f.add(b4);22 f.add(b5);23 f.add(b6);2425 f.pack();26 f.setVisible(true);27 }2829 public static void main(String args[]) {30 GridEx grid = new GridEx();31 grid.go();32 }33 }

Page 264: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 26 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

GridEx.java

After window is resized

After window is resized

Page 265: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 27 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

CardLayout Manager

Page 266: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 28 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

CardLayout Manager

1 import java.awt.*;2 import java.awt.event.*;34 public class CardTest implements MouseListener {5 private Panel p1, p2, p3, p4, p5;6 private Label lb1, lb2, lb3, lb4, lb5;78 // Declare a CardLayout object to call its methods.9 private CardLayout myCard;10 private Frame f;1112 public void go() {13 f = new Frame ("Card Test");14 myCard = new CardLayout();15 f.setLayout(myCard);1617 // Create the panels that I want18 // to use as cards.19 p1 = new Panel();20 p2 = new Panel();21 p3 = new Panel();22 p4 = new Panel();23 p5 = new Panel();2425 // Create a label to attach to each panel, and26 // change the color of each panel, so they are27 // easily distinguishable2829 lb1 = new Label("This is the first Panel");30 p1.setBackground(Color.yellow);31 p1.add(lb1);3233 lb2 = new Label("This is the second Panel");34 p2.setBackground(Color.green);35 p2.add(lb2);3637 lb3 = new Label("This is the third Panel");38 p3.setBackground(Color.magenta);39 p3.add(lb3);

Page 267: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 29 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

CardLayout Manager

4041 lb4 = new Label("This is the fourth Panel");42 p4.setBackground(Color.white);43 p4.add(lb4);4445 lb5 = new Label("This is the fifth Panel");46 p5.setBackground(Color.cyan);47 p5.add(lb5);4849 // Set up the event handling here.50 p1.addMouseListener(this);51 p2.addMouseListener(this);52 p3.addMouseListener(this);53 p4.addMouseListener(this);54 p5.addMouseListener(this);5556 // Add each panel to my CardLayout57 f.add(p1, "First");58 f.add(p2, "Second");59 f.add(p3, "Third");60 f.add(p4, "Fourth");61 f.add(p5, "Fifth");6263 // Display the first panel.64 myCard.show(f, "First");6566 f.setSize(200,200);67 f.setVisible(true);68 }6970 public void mousePressed(MouseEvent e) {71 myCard.next(f);72 }7374 public void mouseReleased(MouseEvent e) { }75 public void mouseClicked(MouseEvent e) { }76 public void mouseEntered(MouseEvent e) { }77 public void mouseExited(MouseEvent e) { }78

Page 268: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 30 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

CardLayout Manager

79 public static void main (String args[]) {80 CardTest ct = new CardTest();81 ct.go();82 }83 }

Page 269: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 31 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

GridBagLayout Manager

• Complex layout facilities can be placed in a grid.

• A single component can take its preferred size.

• A component can extend over more than one cell.

Page 270: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 32 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

ExGui3.java

1 import java.awt.*;23 public class ExGui3 {4 private Frame f;5 private Panel p;6 private Button bw, bc;7 private Button bfile, bhelp;89 public void go() {10 f = new Frame("GUI example 3");11 bw = new Button("West");12 bc = new Button("Work space region");13 f.add(bw, BorderLayout.WEST);14 f.add(bc, BorderLayout.CENTER);15 p = new Panel();16 bfile = new Button("File");17 bhelp = new Button("Help");18 p.add(bfile);19 p.add(bhelp);20 f.add(p, BorderLayout.NORTH);21 f.pack();22 f.setVisible(true);23 }2425 public static void main(String args[]) {26 ExGui3 gui = new ExGui3();27 gui.go();28 }29 }

Page 271: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 33 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Output of ExGui3.java

Page 272: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 34 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Building GUIs

• Exercise objective:

• Develop two graphical user interfaces using theAWT

• Tasks:

• Create a calculator GUI

• Create an account GUI

Page 273: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 35 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Describe the AWT package and its components

• Define the terms containers, components, and layoutmanagers, and how they work together to build agraphical user interface (GUI)

• Use layout managers

• Use the FlowLayout , BorderLayout , GridLayout , andCardLayout managers to achieve a desired dynamiclayout

• Add components to a container

• Use the Frame and Panel containers appropriately

Page 274: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 36 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Describe how complex layouts with nested containerswork

• In a Java program, identify the following:

• Containers

• The associated layout managers

• The layout hierarchy of all components

Page 275: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 8, slide 37 of 37Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• You now know how to display a GUI on the computerscreen. What do you need to make the GUI useful?

Page 276: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 9

The AWT Event Model

Page 277: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 2 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 278: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 3 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Write code to handle events that occur in a GUI

• Describe the concept of adapter classes, including howand when to use them

• Determine the user action that originated the eventfrom the event object details

• Create the appropriate interface and event handlermethods for a variety of event types

Page 279: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 4 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• What parts are required for a GUI to make it useful?

• How does a graphical progam handle a mouse click orany other type of user interaction?

Page 280: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 5 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

What Is an Event?

• Events – Objects that describe what happened

• Event sources – The generator of an event

• Event handlers – A method that receives an eventobject, deciphers it, and processes the user’s interaction

Page 281: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 6 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

JDK 1.0 Event Model Versus Java 2SDK Event Model

• Hierarchical model (JDK 1.0)

• Delegation model (JDK 1.1 and beyond)

Page 282: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 7 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Hierarchical Model (JDK 1.0)

• Is based on containment

Frame

Button

Panel

Action event

Page 283: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 8 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Hierarchical Model (JDK 1.0)

• Advantages:

• Uses object-oriented principles

• Disadvantages:

• An event can be handled only by the componentfrom which it originated or by one of the containersof the originating component

• To handle events, you must either subclass thecomponent that receives the event or create ahandleEvent() method at the base container

Page 284: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 9 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Delegation Model

Frame

Button

Panel

actionPerformed (ActionEvent e) {

...

}

Panel and Frame

event handlers

Action event

Action handler

Page 285: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 10 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Delegation Model

1 import java.awt.*;23 public class TestButton {4 public static void main(String args[]) {5 Frame f = new Frame("Test");6 Button b = new Button("Press Me!");7 b.addActionListener(new ButtonHandler());8 f.add(b,BorderLayout.CENTER);9 f.pack();10 f.setVisible(true);11 }12 }

1 import java.awt.event.*;23 public class ButtonHandler implements ActionListener {4 public void actionPerformed(ActionEvent e) {5 System.out.println("Action occurred");6 System.out.println(7 "Button's label is :" + e.getActionCommand());8 }9 }

Page 286: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 11 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Delegation Model (JDK 1.1 andBeyond)

• Advantages:

• Events are not accidentally handled

• You can create and use filter (adapter) classes toclassify event actions

• There is better distribution of work among the classes

• Disadvantage:

• You should not combine two event models

Page 287: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 12 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Frame With a Single Button

1 import java.awt.*;23 public class TestButton {4 public static void main(String args[]) {5 Frame f = new Frame("Test");6 Button b = new Button("Press Me!");7 b.addActionListener(new ButtonHandler());8 f.add(b,BorderLayout.CENTER);9 f.pack();10 f.setVisible(true);11 }12 }

Page 288: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 13 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The ButtonHandlerClass

1 import java.awt.event.*;23 public class ButtonHandler implements ActionListener {4 public void actionPerformed(ActionEvent e) {5 System.out.println("Action occurred");6 System.out.println(7 "Button's label is :" + e.getActionCommand());8 }9 }

Page 289: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 14 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Event Categories

java.util.EventObject

java.awt.AWTEvent

ActionEvent

AdjustmentEvent

ComponentEvent

ItemEvent

TextEvent

ContainerEvent

FocusEvent

InputEvent

WindowEvent

KeyEvent

MouseEvent

java.beans.beancontext

BeanContextEvent

...

java.awt.event

Page 290: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 15 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Java GUI Behavior

Category Interface Name Methods

Action ActionListener actionPerformed(ActionEvent)

Item ItemListener itemStateChanged(ItemEvent)

Mouse motion MouseMotionListener mouseDragged(MouseEvent)

mouseMoved(MouseEvent)

Mouse button MouseListener mousePressed(MouseEvent)

mouseReleased(MouseEvent)

mouseEntered(MouseEvent)

mouseExited(MouseEvent)

mouseClicked(MouseEvent)

Key KeyListener keyPressed(KeyEvent)

keyReleased(KeyEvent)

keyTyped(KeyEvent)

Focus FocusListener focusGained(FocusEvent)

focusLost(FocusEvent)

Adjustment AdjustmentListener adjustmentValueChanged(AdjustmentEvent)

Component ComponentListener componentMoved(ComponentEvent)

componentHidden(ComponentEvent)

componentResized(ComponentEvent)

componentShown(ComponentEvent)

Page 291: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 16 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Java GUI Behavior

Category Interface Name Methods

Window WindowListener windowClosing(WindowEvent)

windowOpened(WindowEvent)

windowIconified(WindowEvent)

windowDeiconified(WindowEvent)

windowClosed(WindowEvent)

windowActivated(WindowEvent)

windowDeactivated(WindowEvent)

Container ContainerListener componentAdded(ContainerEvent)

componentRemoved(ContainerEvent)

Text TextListener textValueChanged(TextEvent)

Page 292: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 17 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Complex Example

1 import java.awt.*;2 import java.awt.event.*;34 public class TwoListen5 implements MouseMotionListener,6 MouseListener {7 private Frame f;8 private TextField tf;910 public void go() {11 f = new Frame("Two listeners example");12 f.add(new Label ("Click and drag the mouse"),13 BorderLayout.NORTH);14 tf = new TextField (30);15 f.add (tf, BorderLayout.SOUTH);1617 f.addMouseMotionListener(this);18 f.addMouseListener (this);19 f.setSize(300, 200);20 f.setVisible(true);21 }2223 // These are MouseMotionListener events24 public void mouseDragged (MouseEvent e) {25 String s =26 "Mouse dragging: X = " + e.getX() +27 " Y = " + e.getY();28 tf.setText (s);29 }3031 public void mouseEntered (MouseEvent e) {32 String s = "The mouse entered";33 tf.setText (s);34 }3536 public void mouseExited (MouseEvent e) {37 String s = "The mouse has left the building";38 tf.setText (s);39 }

Page 293: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 18 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Complex Example

4041 // Unused MouseMotionListener method.42 // All methods of a listener must be present in the43 // class even if they are not used.44 public void mouseMoved (MouseEvent e) { }4546 // Unused MouseListener methods.47 public void mousePressed (MouseEvent e) { }48 public void mouseClicked (MouseEvent e) { }49 public void mouseReleased (MouseEvent e) { }5051 public static void main(String args[]) {52 TwoListen two = new TwoListen();53 two.go();54 }55 }

Page 294: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 19 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Multiple Listeners

• Multiple listeners cause unrelated parts of a program toreact to the same event

• All registered listeners call their handlers when theevent occurs

Page 295: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 20 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Event Adapters

• The listener classes that you define can extend adapterclasses and override only the methods that you need.

• For example:

1 import java.awt.*;2 import java.awt.event.*;34 public class MouseClickHandler extends MouseAdapter {56 // We just need the mouseClick handler, so we use7 // the an adapter to avoid having to write all the8 // event handler methods910 public void mouseClicked (MouseEvent e) {11 // Do stuff with the mouse click...12 }13 }

Page 296: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 21 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Anonymous Classes

1 import java.awt.*;2 import java.awt.event.*;34 public class AnonTest {5 private Frame f;6 private TextField tf;78 public void go() {9 f = new Frame("Anonymous classes example");10 f.add(new Label("Click and drag the mouse"),11 BorderLayout.NORTH);12 tf = new TextField (30);13 f.add (tf, BorderLayout.SOUTH);1415 f.addMouseMotionListener( new MouseMotionAdapter() {16 public void mouseDragged (MouseEvent e) {17 String s = "Mouse dragging: X = "+ e.getX() +18 " Y = " + e.getY();19 tf.setText (s);20 }21 } ); // <- note the closing parenthesis2223 f.addMouseListener (new MouseClickHandler());24 f.setSize(300, 200);25 f.setVisible(true);26 }2728 public static void main(String args[]) {29 AnonTest obj = new AnonTest();30 obj.go();31 }32 }

Page 297: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 22 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Working With Events

• Exercise objective:

• Write, compile, and run the revised Calculator GUIand Account GUI codes to include event handlers.

• Tasks:

• Re-create the calculator GUI

• Re-create the account GUI

Page 298: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 23 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Write code to handle events that occur in a GUI

• Describe the concept of adapter classes, including howand when to use them

• Determine the user action that originated the eventfrom the event object details

• Create the appropriate interface and event handlermethods for a variety of event types

Page 299: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 9, slide 24 of 24Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

You now know how to set up a Java GUI for bothgraphic output and interactive user input. However,only a few of the components from which GUIs canbe built have been described. What other componentswould be useful in a GUI?

Page 300: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 10

The AWT Component Library

Page 301: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 2 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 302: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 3 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Identify key AWT components

• Use AWT components to build user interfaces for realprograms

• Control the colors and fonts used by an AWTcomponent

• Use the Java printing mechanism

Page 303: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 4 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• You now know how to set up a Java GUI for bothgraphic output and interactive user input. However,only a few of the components from which GUIs can bebuilt have been described. What other componentswould be useful in a GUI?

Page 304: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 5 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Features of the AWT

• AWT components provide mechanisms for controllingthe interface appearance, including color and font.

• The AWT also supports printing. (It was added in theJDK 1.1 release.)

Page 305: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 6 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Button

1 f = new Frame("Sample Button");2 Button b = new Button("Sample");3 b.addActionListener(this);4 f.add(b);

1 public void actionPerformed (ActionEvent ae) {2 System.out.println( "Button press received. ");3 System.out.println( "Button’s action command is: " +4 ae.getActionCommand());5 }6

1 b = new Button("Sample");2 b.setActionCommand("Action Command Was Here!");3 b.addActionListener(this);4 f.add(b);

Page 306: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 7 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Checkbox

1 f = new Frame("Sample Checkbox");5 one = new Checkbox("One", true);6 two = new Checkbox("Two", false);7 three = new Checkbox("Three", false);89 one.addItemListener(this);10 two.addItemListener(this);11 three.addItemListener(this);1213 f.setLayout(new FlowLayout());14 f.add(one);15 f.add(two);16 f.add(three);

Page 307: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 8 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating the ItemListener Interface

1 class Handler implements ItemListener {2 public void itemStateChanged(ItemEvent ev) {3 String state = "deselected";4 if (ev.getStateChange() == ItemEvent.SELECTED){5 state = "selected";6 }7 System.out.println(ev.getItem() + " " + state);8 }9 }

Page 308: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 9 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating the CheckboxGroup – RadioButtons

1 f = new Frame("CheckBoxGroup");2 cbg = new CheckboxGroup();3 one = new Checkbox("One", cbg, false);4 two = new Checkbox("Two", cbg, false);5 three = new Checkbox("Three", cbg, true);67 f.setLayout(new FlowLayout());89 one.addItemListener(this);10 two.addItemListener(this);11 three.addItemListener(this);1213 f.add(one);14 f.add(two);15 f.add(three);

Page 309: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 10 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Choice

1 f = new Frame("Sample Choice");2 choice = new Choice();3 choice.addItem("First");4 choice.addItem("Second");5 choice.addItem("Third");6 choice.addItemListener(this);7 f.add(choice, BorderLayout.CENTER);

Page 310: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 11 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Canvas

• Provides a blank space to draw, write text, or receivekeyboard or mouse input

Page 311: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 12 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Canvas

1 import java.awt.*;2 import java.awt.event.*;3 import java.util.*;45 public class MyCanvas extends Canvas6 implements KeyListener{7 private int index;8 Color colors[] = { Color.red, Color.green, Color.blue };910 public void paint(Graphics g) {11 g.setColor(colors[ index ]);12 g.fillRect(0, 0, getSize().width, getSize().height);13 }1415 public void keyTyped(KeyEvent ev) {16 index++;17 if ( index == colors.length ) {18 index = 0;19 }20 repaint();21 }2223 // Unused KeyListener methods24 public void keyPressed(KeyEvent ev) { }25 public void keyReleased(KeyEvent ev) { }2627 public static void main(String args[]) {28 Frame f = new Frame("Canvas");29 MyCanvas mc = new MyCanvas();30 mc.setSize(150, 150);31 f.add(mc, BorderLayout.CENTER);32 mc.requestFocus();33 mc.addKeyListener(mc);34 f.pack();35 f.setVisible(true);36 }37 }

Page 312: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 13 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Label

1 Frame f = new Frame("Label");2 Label lb = new Label("Hello");3 f.add(lb);

Page 313: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 14 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a TextField

1 Frame f = new Frame("TextField");2 TextField tf = new TextField("Single line" ” , 30);3 tf.addActionListener(this);4 f.add(tf);

Page 314: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 15 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a TextArea

1 f = new Frame("TextArea");2 ta = new TextArea("Hello!", 4, 30);3 f.add(ta, BorderLayout.CENTER);

Page 315: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 16 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Text Components

• TextArea and TextField are subclasses

• TextArea and TextField inherit the default behavior forkeystrokes from TextComponent

Page 316: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 17 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a List Component

1 List lst = new List(4, true);2 lst.add("Hello");3 lst.add("there");4 lst.add("how");

Page 317: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 18 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Dialog

1 d = new Dialog(f, "Dialog", true);2 d.setLayout(new GridLayout(2,1));3 dl = new Label("Hello, I'm a Dialog");4 db1 = new Button("OK");5 d.add(dl);6 d.add(db1);7 d.pack();

Page 318: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 19 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a FileDialog

1 FileDialog d = new FileDialog(parentFrame, "FileDialog");2 d.setVisible(true); // block here until OK selected3 String fname = d.getDirectory() + d.getFile();

Page 319: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 20 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a ScrollPane

1 Frame f = new Frame("ScrollPane");2 Panel p = new Panel();3 ScrollPane sp = new ScrollPane();4 p.setLayout(new GridLayout(3, 4));5 .6 .7 .8 sp.add(p);9 f.add(sp, BorderLayout.CENTER");10 f.setSize(100, 100);11 f.setVisible(true);

Page 320: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 21 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Menu

• Must be added to a menu container

• Includes a help menu:

• setHelpMenu(Menu)

Page 321: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 22 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a MenuBar

1 Frame f = new Frame("MenuBar");2 MenuBar mb = new MenuBar();3 f.setMenuBar(mb);

Page 322: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 23 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Menu

1 f = new Frame("Menu");2 mb = new MenuBar();3 m1 = new Menu("File");4 m2 = new Menu("Edit");5 m3 = new Menu("Help");6 mb.add(m1);7 mb.add(m2);8 mb.setHelpMenu(m3);9 f.setMenuBar(mb);

Page 323: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 24 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a MenuItem

1 mi1 = new MenuItem("New");2 mi2 = new MenuItem("Save");3 mi3 = new MenuItem("Load");4 mi4 = new MenuItem("Quit");5 mi1.addActionListener(this);6 mi2.addActionListener(this);7 mi3.addActionListener(this);8 mi4.addActionListener(this);9 m1.add(mi1);10 m1.add(mi2);11 m1.add(mi3);12 m1.addSeparator();13 m1.add(mi4);

Page 324: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 25 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating aCheckBoxMenuItem

1 mb = new MenuBar();2 m1 = new Menu("File");3 m2 = new Menu("Edit");4 m3 = new Menu("Help");5 mb.add(m1);6 mb.add(m2);7 mb.setHelpMenu(m3);8 f.setMenuBar(mb);9 .....10 mi2 = new MenuItem("Save");11 mi2.addActionListener(this);12 m1.add(mi2);13 ......14 mi5 = new CheckboxMenuItem("Persistent");15 mi5.addItemListener(this);16 m1.add(mi5);

Page 325: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 26 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a PopupMenu

1 Frame f = new Frame("PopupMenu");2 Button b = new Button("Press Me");3 PopupMenu p = new PopupMenu("Popup");4 MenuItem s = new MenuItem("Save");5 MenuItem ld = new MenuItem("Load");6 b.addActionListener(this);7 f.add(b,BorderLayout.CENTER);8 p.add(s);9 p.add(ld);10 f.add(p);

1 public void actionPerformed(ActionEvent ev) {23 // display popup at (10,10) relative to b4 p.show(b, 10, 10);5 }

Page 326: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 27 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Controlling Visual Aspects

• Colors:

• setForeground()

• setBackground()

Example:

int r = 255; Color c = new Color(r, 0, 0);

Page 327: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 28 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Controlling Visual Aspects

• Fonts:

• You can use the setFont() method to specify thefont used for displaying text.

• Dialog , DialogInput , Serif , and SansSerif arevalid font names.

Page 328: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 29 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Printing

• Allow the use of local printer conventions:

1 Frame f = new Frame("Print test");2 Toolkit t = f.getToolkit();3 PrintJob job = t.getPrintJob(f, "MyPrintJob", null);4 Graphics g = job.getGraphics();

• Draw on the graphics object

• Send the graphics object to printer

• End the print job

• Obtain a new graphic for each page use:

f.printComponents(g);

Page 329: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 30 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Creating a Paint ProgramLayout

• Exercise objective:

• Practice creating a more sophisticated GUIapplication that uses many components

• Tasks:

• Create a Java application to use classes and objects

• Investigate reference assignments

Page 330: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 31 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Identify key AWT components

• Use AWT components to build user interfaces for realprograms

• Control the colors and fonts used by an AWTcomponent

• Use the Java printing mechanism

Page 331: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 10, slide 32 of 32Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• What would make the AWT work better?

Page 332: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 11

Java Foundation Classes

Page 333: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 2 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 334: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 3 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Identify the key features of Java Foundation Classes

• Describe the key features of com.sun.java.swingpackage

• Identify Swing components

• Define containers and components, and explain how theywork together to build a Swing GUI

• Write, compile, and run a basic Swing application

• Use top-level containers, such as JFrame and JAppleteffectively

Page 335: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 4 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• While the AWT by itself is useful, it is a part of a new setof classes, called Java Foundation Classes (JFC), that, asa whole, take GUIs to a new level. What exactly is JFCand, in particular, what is Swing? What can Swing dothat AWT cannot?

Page 336: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 5 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Introduction

• Java Foundation Classes (JFC) consists of five APIs:

• AWT

• Java 2D

• Accessibility

• Drag and Drop

• Swing

Page 337: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 6 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Swing Introduction

• Pluggable look and feel:

• Application appears to be platform specific

• There are custom Swing components

• Swing architecture:

• Built around APIs that implement various parts ofAWT

• Most components do not use platform-specificimplementations like AWT

Page 338: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 7 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Swing Hierarchy

JTextComponent

AbstractButton

JPanelJComboBoxJLabelJLayeredPaneJListJToolBarJMenuBarJPopupMenuJPanelJScrollBarJScrollPaneJSliderJTableJSeparatorJTreeJProgressBarJRootPane

JTextAreaJTextFieldHtmlEditorKit

JToggleButtonJButtonJMenuItem

JCheckBoxJRadioButton

JRadioButtonMenuItemJCheckBoxMenuItemJMenu

JPasswordField

com.sun.java.swing.JComponent

java.awt.Container

Page 339: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 8 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Swing Components

JApplet JComboBox JList

Page 340: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 9 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Swing Components

JLabel JButton JOptionPaneJToggleButton

Page 341: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 10 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Basic Swing Application

Page 342: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 11 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

HelloSwing

1 import java.awt.*;2 import java.awt.event.*;3 import com.sun.java.swing.*;4 import com.sun.java.accessibility.*;56 public class HelloSwing implements ActionListener {7 private JFrame jFrame;8 private JLabel jLabel;9 private JPanel jPanel;10 private JButton jButton;11 private AccessibleContext accContext;1213 private String labelPrefix = "Number of button clicks: ";14 private int numClicks = 0;1516 public void go() {17 // Here is how you can set up a particular18 // lookAndFeel. Not necessary for default.19 //20 // try {21 // UIManager.setLookAndFeel(22 // UIManager.getLookAndFeel());23 // } catch (UnsupportedLookAndFeelException e) {24 // System.err.println("Couldn't use the " +25 // "default look and feel " + e);26 // }2728 jFrame = new JFrame("HelloSwing");29 jLabel = new JLabel(labelPrefix + "0");3031 jButton = new JButton("I am a Swing button!");3233 // Create a shortcut: make ALT-A be equivalent34 // to pressing mouse over button.35 jButton.setMnemonic('i');3637 jButton.addActionListener(this);38

Page 343: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 12 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

HelloSwing

39 // Add support for accessibility.40 accContext = jButton.getAccessibleContext();41 accContext.setAccessibleDescription(42 "Pressing this button increments " +43 "the number of button clicks");4445 // Set up pane.46 // Give it a border around the edges.47 jPanel = new JPanel();48 jPanel.setBorder(49 BorderFactory.createEmptyBorder(30,30,10,30));5051 // Arrange for compts to be in a single column.52 jPanel.setLayout(new GridLayout(0, 1));5354 // Put compts in pane, not in JFrame directly.55 jPanel.add(jButton);56 jPanel.add(jLabel);57 jFrame.setContentPane(jPanel);5859 // Set up a WindowListener inner class to handle60 // window's quit button.61 WindowListener wl = new WindowAdapter() {62 public void windowClosing(WindowEvent e) {63 System.exit(0);64 }65 };6667 jFrame.addWindowListener(wl);6869 jFrame.pack();70 jFrame.setVisible(true);71 }7273 // Button handling.74 public void actionPerformed(ActionEvent e) {75 numClicks++;76 jLabel.setText(labelPrefix + numClicks);77 }

Page 344: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 13 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

HelloSwing

7879 public static void main(String[] args) {80 HelloSwing helloSwing = new HelloSwing();81 helloSwing.go();82 }83 }

Page 345: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 14 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Basic Swing Application

• Importing Swing packages

• Choosing the look and feel:

• getLookAndFeel()

• Setting up a Window container

• JFrame is similar to Frame

• You cannot add components directly to JFrame

• A content pane contains all of the Frame’s visiblecomponents except menu bar

Page 346: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 15 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Basic Swing Application

• Setting up Swing components:

• HelloSwing.java example instantiates four Swingcomponents: JFrame , JButton , JLabel , and JPanel

• Supporting assistive technologies:

• HelloSwing.java example code supports assistivetechnologies

1 accContext = jButton.getAccessibleContext();2 accContext.setAccessibleDescription(3 "Pressing this button increments " + "the number of button clicks.");

Page 347: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 16 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Building a Swing GUI

• Top-level containers (JFrame , JApplet , JDialog , andJWindow)

• Lightweight components (such as JButton , JPanel ,and JMenu)

• Swing components are added to a content paneassociated with a top-level container

Page 348: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 17 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Building a Swing GUI

1 import java.awt.*;2 import com.sun.java.swing.*;34 public class SwingGUI {5 private JFrame topLevel;6 private JPanel jPanel;7 private JTextField jTextField;8 private JList jList;910 private JButton b1;11 private JButton b2;12 private Container contentPane;1314 private Object listData[] = {15 new String("First selection"),16 new String("Second selection"),17 new String("Third selection")18 };1920 public void go() {21 topLevel = new JFrame("Swing GUI");2223 // Set up the JPanel, which contains the text field24 // and list.25 jPanel = new JPanel();26 jTextField = new JTextField(20);27 jList = new JList(listData);2829 contentPane = topLevel.getContentPane();30 contentPane.setLayout(new BorderLayout());3132 b1 = new JButton("1");33 b2 = new JButton("2");34 contentPane.add(b1, BorderLayout.NORTH);35 contentPane.add(b2, BorderLayout.SOUTH);

Page 349: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 18 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Building a Swing GUI

3637 jPanel.setLayout(new FlowLayout());38 jPanel.add(jTextField);39 jPanel.add(jList);40 contentPane.add(jPanel, BorderLayout.CENTER);4142 topLevel.pack();43 topLevel.setVisible(true);44 }4546 public static void main (String args[]) {47 SwingGUI swingGUI = new SwingGUI();48 swingGUI.go();49 }50 }

Page 350: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 19 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The JComponent Class

• Swing components that are subclasses of JComponent

• Borders

• Double buffering

• Tool tips

• Keyboard navigation

• Application-wide pluggable look and feel

Page 351: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 20 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Creating Swing Applications

• Exercise objective:

• Write, compile, and run a simple and an advancedSwing GUI program using Swing components

• Tasks:

• Create a basic Swing application

• Create a text editor using Swing

Page 352: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 21 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Identify the key features of Java Foundation Classes

• Describe the key features of com.sun.java.swingpackage

• Identify Swing components

• Define containers and components, and explain how theywork together to build a Swing GUI

• Write, compile, and run a basic Swing application

• Use top-level containers, such as JFrame and JAppleteffectively

Page 353: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 11, slide 22 of 22Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• You now know how to program GUI applications.Suppose you want to run a GUI application using a Webbrowser. How is this done?

Page 354: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 12

Introduction to Java Applets

Page 355: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 2 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 356: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 3 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Differentiate between a standalone application and anapplet

• Write an HTML tag to call a Java applet

• Describe the class hierarchy of the applet and AWTclasses

• Create the HelloWorld.Java applet

• List the major methods of an applet

• Describe and use the painting model of AWT

Page 357: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 4 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Use applet methods to read images and files from URLs

• Use <param> tags to configure applets

Page 358: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 5 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• What advantages do applets provide?

Page 359: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 6 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

What Is an Applet?

A Java class that can be:

• Embedded within an HTML page and downloaded andexecuted by a Web browser

• Loaded using the browser as follows:

• Load URL

• Load the HTML document

• Load applet classes

• Run the applet

Page 360: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 7 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Applet Security Restrictions

• Most browsers prevent the following:

• Runtime execution of another program

• File I/O (input/output)

• Calls to any native methods

• Attempts to open a socket to any system except thehost that provided the applet

Page 361: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 8 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Applet Class Hierarchy

java.lang.Object

java.awt.Component

java.awt.Container

java.awt.Window java.awt.Panel

java.applet.Appletjava.awt.Frame

Page 362: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 9 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Key Applet Methods

• init()

• start()

• stop()

• destroy()

• paint()

Page 363: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 10 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Applet Display

• Applets are graphical in nature

• The browser environment calls the paint() method

1 import java.awt.*;2 import java.applet.*;34 public class HelloWorld extends Applet {5 public void paint(Graphics g){6 g.drawString("Hello World!", 25, 25);7 }8 }

Page 364: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 11 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Applet Methods and the Applet LifeCycle

• init()

• Called when the applet is created

• Can be used to initialize data values

• start()

• Called when the applet becomes visible

• stop()

• Called when the applet becomes invisible

Page 365: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 12 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

AWT Painting

• paint(Graphics g)

• repaint()

• update(Graphics g)

Page 366: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 13 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

AWT Painting

AWT thread (waiting)

update() – cleararea and thencall paint()

paint()

repaint( )

Exposure

Page 367: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 14 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Applet Display Strategies

• Maintain a model of the display

• Use paint() to render the display based only on themodel

• Update the model and call repaint() to change thedisplay

Page 368: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 15 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

What Is the appletviewer ?

A Java application that:

• Enables you to run applets without using a Webbrowser

• Loads the HTML file supplied as an argument

appletviewer HelloWorld.html

• Needs at least the following HTML code:

9 <applet code=HelloWorld.class width=100 height=100>10 </applet>

Page 369: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 16 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The applet Tag

<applet[archive=archiveList]code=appletFile.classwidth=pixels height=pixels[codebase=codebaseURL][alt=alternateText][name=appletInstanceName][align=alignment][vspace=pixels] [hspace=pixels]>[<param name=appletAttribute1 value=value>][<param name=appletAttribute2 value=value>] . . .[alternateHTML]</applet>

Page 370: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 17 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Additional Applet Facilities

• getDocumentBase() – Returns a URL object thatdescribes the directory of the current browser page

• getCodeBa se() – Returns a URL object that describesthe source directory of the applet class

• getImage(URL base, String target) andgetAudioClip(URL base, String target) – Use theURL object as a starting point

Page 371: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 18 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Simple Image Test

1 // Applet which shows an image of Duke in surfing mode23 import java.awt.*;4 import java.applet.Applet;56 public class HwImage extends Applet {7 Image duke;89 public void init() {10 duke = getImage(getDocumentBase(),11 "graphics/surferDuke.gif");12 }1314 public void paint(Graphics g) {15 g.drawImage(duke, 25, 25, this);16 }17 }

Page 372: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 19 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

AudioClip

• Playing a clip

play(URL soundDirectory, String soundFile);

play(URL soundURL);

Page 373: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 20 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Simple Audio Test

1 // Applet which plays a sound once23 import java.awt.Graphics;4 import java.applet.Applet;56 public class HwAudio extends Applet {7 public void paint(Graphics g) {8 g.drawString("Audio Test", 25, 25);9 play(getCodeBase(), "sounds/cuckoo.au");10 }11 }

Page 374: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 21 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Looping an AudioClip

• Loading an AudioClip

• Playing an AudioClip

• Stopping an AudioClip

Page 375: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 22 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Simple Looping Test

1 // Applet which continuously repeats a sound23 import java.awt.Graphics;4 import java.applet.*;56 public class HwLoop extends Applet {7 AudioClip sound;89 public void init() {10 sound = getAudioClip(getCodeBase(), "sounds/cuckoo.au");11 }1213 public void paint(Graphics g) {14 g.drawString("Audio Test", 25, 25);15 }1617 public void start() {18 sound.loop();19 }2021 public void stop() {22 sound.stop();23 }24 }

Page 376: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 23 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Mouse Input

• mouseClicked – The mouse has been clicked (mousebutton pressed and then released in one motion)

• mouseEntered – The mouse cursor enters a component

• mouseExited – The mouse cursor leaves a component

• mousePressed – The mouse button is pressed down

• mouseReleased – The mouse button is later released

Page 377: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 24 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Simple Mouse Test

1 // This applet is HelloWorld extended to watch for mouse2 // input. "Hello World!" is reprinted at the location of3 // the mouse press.45 import java.awt.Graphics;6 import java.awt.event.*;7 import java.applet.Applet;89 public class HwMouse10 extends Applet11 implements MouseListener {1213 private int mouseX = 25;14 private int mouseY = 25;1516 // Register this applet instance to catch17 // MouseListener events.18 public void init() {19 addMouseListener(this);20 }2122 public void paint(Graphics g) {23 g.drawString("Hello World!", mouseX, mouseY);24 }2526 // Process the mousePressed MouseListener event27 public void mousePressed(MouseEvent evt) {28 mouseX = evt.getX();29 mouseY = evt.getY();30 repaint();31 }3233 // We are not using the other mouse events.34 public void mouseClicked(MouseEvent e) { }35 public void mouseEntered(MouseEvent e) { }36 public void mouseExited(MouseEvent e) { }37 public void mouseReleased(MouseEvent e) { }38 }

Page 378: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 25 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Reading Parameters

• Applet code

1 <html>2 <applet code=DrawAny.class width=200 height=200>3 <param name=image value="graphics/duke.gif">4 </applet>5 </html>

• Program code

1 import java.awt.*;2 import java.applet.*;34 public class DrawAny extends Applet {5 Image im;67 public void init() {8 String imageName = getParameter ("image");910 if ( imageName == null ) {11 System.out.println(12 "Error: Cannot find image");13 System.exit(0);14 }1516 im = getImage(getDocumentBase(), imageName);17 }1819 public void paint(Graphics g) {20 g.drawImage(im, 0, 0, this);21 }22 }23

Page 379: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 26 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Dual Purpose CodeSample

1 // Applet/Application which shows an image of2 // Duke in surfing mode34 import java.applet.Applet;5 import java.awt.*;6 import java.awt.event.*;7 import java.util.*;89 public class AppletApp extends Applet {10 Date date;1112 public void init() {13 date = new Date();14 }1516 public void paint (Graphics g) {17 g.drawString("This Java program started at", 25, 25);18 g.drawString(date.toString(), 25, 60);19 }2021 // An application will require a main()22 public static void main (String args[]) {2324 // Create a Frame to house the applet25 Frame frame = new Frame("Application");2627 // Create an instance of the class (applet)28 AppletApp app = new AppletApp();2930 // Add it to the center of the frame31 frame.add(app, BorderLayout.CENTER);32 frame.setSize (250, 150);33

Page 380: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 27 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Dual Purpose CodeSample

34 // Register the AppletApp class as the35 // listener for a Window Destroy event36 frame.addWindowListener (new WindowAdapter() {37 public void windowClosing (WindowEvent e) {38 System.exit(0);39 }40 });4142 // Call the applet methods43 app.init();44 app.start();45 frame.setVisible(true); // Invokes paint()46 }47 }

Page 381: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 28 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Creating Applets

• Exercise objective:

• Become familiar with programming Java applets

• Tasks:

• Write an applet

• Create concentric squares

• Create a rollover applet

Page 382: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 29 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Differentiate between a standalone application and anapplet

• Write an HTML tag to call a Java applet

• Describe the class hierarchy of the applet and AWTclasses

• Create the HelloWorld.Java applet

• List the major methods of an applet

• Describe and use the painting model of AWT

• Use applet methods to read images and files from URLs

Page 383: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 30 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Use <param> tags to configure applets

• Use the URL object to fetch sounds and images intoyour applet

• Handle various mouse events within the applet

• Pass parameters to an applet from an HTML file usingthe <param > tags

Page 384: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 12, slide 31 of 31Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• How can you use applets on your company’s Web pageto improve the overall presentation?

Page 385: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 13

Threads

Page 386: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 2 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 387: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 3 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Define a thread

• Create separate threads in a Java program, controllingthe code and data that are used by that thread

• Control the execution of a thread and write platform-independent code with threads

• Describe the difficulties that might arise when multiplethreads share data

• Use wait() and notify() to communicate beweenthreads

Page 388: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 4 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Use synchronized to protect data from corruption

• Explain why suspend() , resume() , and stop()methods have been deprecated in JDK 1.2

Page 389: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 5 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• How do you get programs to perform multiple tasks?

Page 390: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 6 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Threads

• What are threads?

• Virtual CPU

Page 391: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 7 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Three Parts of a Thread

• CPU

• Code

• Data

Page 392: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 8 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating the Thread

1 public class ThreadTest {2 public static void main(String args[]) {3 Xyz r = new Xyz();4 Thread t = new Thread(r);5 t.start();6 }7 }89 class Xyz implements Runnable {10 int i;1112 public void run() {13 i = 0;1415 while (true) {16 System.out.println("Hello " + i++);17 if ( i == 50 ) {18 break;19 }20 }21 }22 }

Page 393: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 9 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating the Thread

• Multithreaded programming:

• Multiple threads from the same Runnable instance

• Threads share the same data and code

Page 394: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 10 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Starting the Thread

• Using the start() method

• Placing the thread in runnable state

Page 395: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 11 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Thread Scheduling

New

start()

Running

Blocked inobject’s

wait() pool

Blocked inobject’slock pool

Runnable

Otherwiseblocked

DeadScheduler run()

sleep()or

join()

sleep() timeoutor

thread join() sor

interupt()

wait() synchronized()

Lockavailable

notify()

interupt()

completes

Page 396: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 12 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Thread Scheduling

1 public class Xyz implements Runnable {2 public void run() {3 while (true) {4 // do lots of interesting stuff5 :6 // Give other threads a chance7 try {8 Thread.sleep(10);9 } catch (InterruptedException e) {10 // This thread’s sleep was interrupted11 // by another thread12 }13 }14 }15 }

Page 397: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 13 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Terminating a Thread1 public class Xyz implements Runnable {2 private boolean timeToQuit=false;34 public void run() {5 while(! timeToQuit) {6 ...7 }8 // clean up before run() ends9 }1011 public void stopRunning() {12 timeToQuit=true;13 }14 }1516 public class ControlThread {17 private Runnable r = new Xyz();18 private Thread t = new Thread(r);1920 public void startThread() {21 t.start();22 }2324 public void stopThread() {25 // use specific instance of Xyz26 r.stopRunning();27 }28 }

Page 398: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 14 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Basic Control of Threads

• Testing threads:

• isAlive()

• Putting threads on hold:

• sleep()

• join()

Page 399: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 15 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Putting Threads on Hold

1 public class Xyz implements Runnable {2 ...3 public void run() {4 while (running) {5 // do your task6 try {7 Thread.sleep ((int)(Math.rando() * 100));8 } catch (InterruptedException e) {9 // somebody woke me up10 }11 ...12 }13 }14 }1516 public class TTest {17 public static void main(String args[]) {18 Runnable r = new Xyz();19 Thread t1 = new Thread(r);20 t1.start();21 }22 }

Page 400: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 16 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Putting Threads on Hold

1 public void doTask() {2 TimerThread tt = new TimerThread (100);3 tt.start ();4 ...5 // Do stuff in parallel with the other thread for6 // a while7 ...8 // Wait here for the timer thread to finish9 try {10 tt.join ();11 } catch (InterruptedException e) {12 // tt came back early13 }14 ...15 // Now continue in this thread16 ...17 }

Page 401: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 17 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Extending the Thread Class

1 public class MyThread extends Thread {2 public void run() {3 while (running) {4 // do lots of interesting stuff5 try {6 sleep(100);7 } catch (InterruptedException e) {8 // sleep interrupted9 }10 }11 }1213 public static void main(String args[]) {14 Thread t = new MyThread();15 t.start();16 }17 }

Page 402: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 18 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Selecting a Way to Create Threads

• Implementing Runnable :

• Better object-oriented design

• Single inheritance

• Consistency

• Extending Thread :

• Simpler code

Page 403: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 19 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Using the synchronized Keyword

1 public class MyStack {2 int idx = 0;3 char [] data = new char[6];45 public void push(char c) {6 data[idx] = c;7 idx++;8 }910 public char pop() {11 idx--;12 return data[idx];13 }14 }

Page 404: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 20 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Object Lock Flag

• Every object has a flag that can be thought of as a "lockflag"

• synchronized allows interaction with the lock flag

Object this

public void push(char c) {

synchronized (this) {

data[idx] = c;

idx++;

}

}

Thread before synchronized(this)

Code orbehavior

Data orstate

Page 405: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 21 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Object Lock Flag

Object this

public char pop() {

synchronized (this) {

idx--;

return data[idx];

}

}

Thread, trying to executesynchronized(this)

Waiting for

Lock flag missing

object lock

Code orbehavior

Data orstate

Page 406: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 22 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Releasing the Lock Flag

• Released when the thread passes the end of thesynchronized() code block

• Automatically released when a break or exception isthrown by the synchronized() code block

Page 407: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 23 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

synchronized – Putting It Together

• All access to delicate data should be synchronized.

• Delicate data protected by synchronized should beprivate.

Page 408: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 24 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

synchronized – Putting It Together

• The following two code segments are equivalent:

public void push(char c) { synchronized(this) { : : }}

public synchronized void push(char c) { : :}

Page 409: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 25 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Deadlock

• Is two threads, each waiting for a lock from the other

• Is not detected or avoided

• Can be avoided by:

• Deciding on the order to obtain locks

• Adhering to this order throughout

• Releasing locks in reverse order

Page 410: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 26 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Thread Interaction – wait() andnotify()

• Scenario:

• Consider yourself and a cab driver as two threads

• The problem:

• How to determine when you are at your destination

• The solution:

• You notify the cabbie of your destination and relax

• Cabbie drives and notifies you upon arrival at yourdestination

Page 411: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 27 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Thread Interaction

• wait() and notify()

• The pools:

• Wait pool

• Lock pool

Page 412: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 28 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Monitor Model for Synchronization

• Leave shared data in a consistent state

• Ensure programs cannot deadlock

• Do not put threads expecting different notifications inthe same wait pool

Page 413: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 29 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Producer

1 public void run() {2 char c;34 for (int i = 0; i < 200; i++) {5 c = (char)(Math.random() * 26 +'A');6 theStack.push(c);7 System.out.println("Producer" + num + ": " + c);8 try {9 Thread.sleep((int)(Math.random() * 300));10 } catch (InterruptedException e) {11 // ignore it12 }13 }14 }

Page 414: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 30 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Consumer

1 public void run() {2 char c;3 for (int i = 0; i < 200; i++) {4 c = theStack.pop();5 System.out.println("Consumer" + num + ": " + c);67 try {8 Thread.sleep((int)(Math.random() * 300));9 } catch (InterruptedException e) { }1011 }12 }

Page 415: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 31 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

SyncStack Class

13 public class SyncStack {14 private Vector buffer = new Vector(400, 200);1516 public synchronized char pop() {17 }1819 public synchronized void push(char c) {20 }

Page 416: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 32 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

pop() Method

1 public synchronized char pop() {2 char c;3 while (buffer.size() == 0) {4 try {5 this.wait();6 } catch (InterruptedException e) {7 // ignore it...8 }9 }10 c = ((Character)buffer.remove(buffer.size()-1)).11 charValue();12 return c;13 }

Page 417: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 33 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

push() Method

1 public synchronized void push(char c) {2 this.notify();3 Character charObj = new Character(c);4 buffer.addElement(charObj);5 }

Page 418: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 34 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

SyncTest.java

1 package mod13;23 public class SyncTest {45 public static void main(String[] args) {67 SyncStack stack = new SyncStack();89 Producer p1 = new Producer(stack);10 Thread prodT1 = new Thread (p1);11 prodT1.start();1213 Producer p2 = new Producer(stack);14 Thread prodT2 = new Thread (p2);15 prodT2.start();1617 Consumer c1 = new Consumer(stack);18 Thread consT1 = new Thread (c1);19 consT1.start();2021 Consumer c2 = new Consumer(stack);22 Thread consT2 = new Thread (c2);23 consT2.start();24 }25 }

Page 419: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 35 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Producer.java

1 package mod13;23 public class Producer implements Runnable {4 private SyncStack theStack;5 private int num;6 private static int counter = 1;78 public Producer (SyncStack s) {9 theStack = s;10 num = counter++;11 }1213 public void run() {14 char c;15 for (int i = 0; i < 200; i++) {16 c = (char)(Math.random() * 26 +'A');17 theStack.push(c);18 System.out.println("Producer" + num + ": " + c);19 try {20 Thread.sleep((int)(Math.random() * 300));21 } catch (InterruptedException e) {22 // ignore it23 }24 }25 }26 }

Page 420: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 36 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Consumer.java

1 package mod13;23 public class Consumer implements Runnable {4 private SyncStack theStack;5 private int num;6 private static int counter = 1;78 public Consumer (SyncStack s) {9 theStack = s;10 num = counter++;11 }1213 public void run() {14 char c;15 for (int i = 0; i < 200; i++) {16 c = theStack.pop();17 System.out.println("Consumer" + num + ": " + c);1819 try {20 Thread.sleep((int)(Math.random() * 300));21 } catch (InterruptedException e) { }2223 }24 }25 }

Page 421: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 37 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

SyncStack.java

1 package mod13;23 import java.util.Vector;45 public class SyncStack {6 private Vector buffer = new Vector(400, 200);78 public synchronized char pop() {9 char c;10 while (buffer.size() == 0) {11 try {12 this.wait();13 } catch (InterruptedException e) {14 // ignore it...15 }16 }17 c = ((Character)buffer.remove(buffer.size()-1)).18 charValue();19 return c;20 }2122 public synchronized void push(char c) {23 this.notify();24 Character charObj = new Character(c);25 buffer.addElement(charObj);26 }27 }

Page 422: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 38 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The suspend() and resume()Methods

• Have been deprecated in JDK 1.2

• Should be replaced with wait() and notify()

Page 423: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 39 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The stop() Method

• Releases the lock before it terminates

• Can leave shared data in an inconsistent state

• Should be replaced with wait() and notify()

• Should create long-lived threads

Page 424: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 40 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Proper Thread Control

1 public class ControlledThread extends Thread {2 static final int SUSP = 1;3 static final int STOP = 2;4 static final int RUN = 0;5 private int state = RUN;67 public synchronized void setState(int s) {8 state = s;9 if ( s == RUN ) {10 notify();11 }12 }1314 public synchronized boolean checkState() {15 while ( state == SUSP ) {16 try {17 wait();18 } catch (InterruptedException e) {19 // ignore20 }21 }22 if ( state == STOP ) {23 return false;24 }25 return true;26 }2728 public void run() {29 while ( true ) {30 // doSomething();3132 // Be sure shared data is in consistent state in33 // case the thread is waited or marked for exiting34 // from run()35 if ( !checkState() ) {36 break;37 }38 }39 }} // just to fit it on this page

Page 425: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 41 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Using MultithreadedProgramming

• Exercise objectives:

• Become familiar with the concepts of multithreadingby writing some multithreaded programs

• Create a multithreaded applet

• Tasks:

• Create three threads

• Incorporate animation

Page 426: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 42 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Define a thread

• Create separate threads in a Java program, controllingthe code and data that are used by that thread

• Control the execution of a thread and write platform-independent code with threads

• Describe the difficulties that might arise when multiplethreads share data

• Use keyword synchronized to protect data fromcorruption

• Use wait() and notify() to communicate beweenthreads

Page 427: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 43 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Use synchronized to protect data from corruption

• Explain why suspend(), resume(), and stop()methods have been deprecated in JDK 1.2

Page 428: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 13, slide 44 of 44Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• Do you have applications that could benefit from beingmultithreaded?

Page 429: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 14

Stream I/O and Files

Page 430: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 2 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 431: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 3 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Describe and use the streams philosophy of thejava.io package

• Construct file and filter streams, and use themappropriately

• Distinguish readers and writers from streams, andselect appropriately between them

• Examine and manipulate files and directories

• Read, write, and update text and data files

• Use the Serialization interface to persist the state ofobjects

Page 432: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 4 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• What mechanisms are in place within the Javaprogramming language to read and write from files?

Page 433: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 5 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Stream I/O

• A stream is either a source of bytes or a destination forbytes.

• The two basic types of streams are:

• Input stream

• Output stream

• Node streams read from or write to a specific place.

• Filter streams use node streams as input or output.

Page 434: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 6 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Stream Fundamentals

Node InputStream(for example, from file)

h

e

l

lo

wo r l

d

"Flow" ofbytes downstream

FilterInputStream

read()

Page 435: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 7 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

InputStream Methods

• The three basic read() methods:

• int read()• int read(byte[])• int read(byte[], int, int)

• The other methods:

• void close()• int available()• skip(long)• boolean markSupported()• void mark(int)• void reset()

Page 436: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 8 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

OutputStream Methods

• The three basic write() methods:

• void write(int)• void write(byte[])• void write(byte[], int, int)

• The other methods:

• void close()• void flush()

Page 437: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 9 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Basic Stream Classes

InputStream

SequenceInputStream

PipedInputStream

FilterInputStream

FileInputStream

ByteArrayInputStream

ObjectInputStream

DataInputStream

BufferedInputStreamPushbackInputStream

Page 438: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 10 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Basic Stream Classes

• FileInputStream and FileOutputStream

• BufferedInputStream and BufferOutputStream

• DataInputStream and DataOutputStream

• PipedInputStream and PipedOutputStream

Page 439: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 11 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

URL Input Streams

1 java.net.URL imageSource;23 try {4 imageSource = new URL("http://mysite.com/~info");5 } catch ( MalformedURLException e) {6 // ignore7 }89 images[0] = getImage(imageSource, "Duke/T1.gif");

Page 440: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 12 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Opening an Input Stream

1 InputStream is = null;2 String datafile = new String("Data/data.1-96");3 byte buffer[] = new byte[24];4 try {5 // new URL throws a MalformedURLException6 // URL.openStream() throws an IOException7 is = (new URL(getDocumentBase(),datafile)).openStream();8 } catch (Exception e) {9 // ignore10 }

Now you can use it to read information, just as with a FileInputStream object:

11 try {12 is.read(buffer, 0, buffer.length);13 } catch (IOException e1) {14 // ignore15 }

Page 441: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 13 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Readers and Writers

• The Java programming language uses Unicode torepresent strings and characters.

• InputStreamReader and OutputStreamWriterconvert Unicode to platform-specific code.

• Chain BufferedReader and BufferedWriter toInputStreamReader and OutputStreamWriterfor efficiency.

Page 442: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 14 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Reading String Input

1 import java.io.*;23 public class CharInput {45 public static void main (String args[])6 throws java.io.IOException {7 String s;8 InputStreamReader ir;9 BufferedReader in;1011 ir = new InputStreamReader(System.in);12 in = new BufferedReader(ir);1314 while ((s = in.readLine()) != null) {15 System.out.println("Read: " + s);16 }17 }18 }

Page 443: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 15 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a New File Object

• File myFile;

• myFile = new File("mymotd");

• myFile = new File("/", "mymotd");

• // more useful if the directory or filename// is a variableFile myDir = new File("/");myFile = new File(myDir, "mymotd");

Page 444: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 16 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

File Tests and Utilities

• File names:

String getName()String getPath()String getAbsolutePath()String getParent()boolean renameTo(File newName)

• File tests:

boolean exists()boolean canWrite()boolean canRead()boolean isFile()boolean isDirectory()boolean isAbsolute();

Page 445: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 17 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

File Tests and Utilities

• General file information and utilities:

long lastModified()long length()boolean delete()

• Directory utilities:

boolean mkdir()String[] list()

Page 446: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 18 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Random Access File

• With the file name:

myRAFile = new RandomAccessFile( String name, String mode);

• With a File object:

myRAFile = new RandomAccessFile( File file, String mode);

Page 447: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 19 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Random Access Files

• long getFilePointer()

• void seek(long pos)

• long length()

Page 448: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 20 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Serialization

• Saving an object to permanent storageis called persistence.

• Only the object’s data are serialized.

• Data marked with the transientkeyword are not serialized.

1 public class MyClass implements Serializable {2 public transient Thread myThread;3 private String customerID;4 private int total;5 }

1 public class MyClass implements Serializable {2 public transient Thread myThread;3 private transient String customerID;4 private int total;5 }

Page 449: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 21 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Writing an Object to a FileStream

1 import java.io.*;2 import java.util.Date;34 public class SerializeDate {56 SerializeDate() {7 Date d = new Date ();89 try {10 FileOutputStream f =11 new FileOutputStream ("date.ser");12 ObjectOutputStream s =13 new ObjectOutputStream (f);14 s.writeObject (d);15 s.close ();16 } catch (IOException e) {17 e.printStackTrace ();18 }19 }2021 public static void main (String args[]) {22 new SerializeDate();23 }24 }

Page 450: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 22 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Reading an Object From a File Stream

1 import java.io.*;2 import java.util.Date;34 public class UnSerializeDate {56 UnSerializeDate () {7 Date d = null;89 try {10 FileInputStream f =11 new FileInputStream ("date.ser");12 ObjectInputStream s =13 new ObjectInputStream (f);14 d = (Date) s.readObject ();15 s.close ();16 } catch (Exception e) {17 e.printStackTrace ();18 }1920 System.out.println(21 "Unserialized Date object from date.ser");22 System.out.println("Date: "+d);23 }2425 public static void main (String args[]) {26 new UnSerializeDate();27 }28 }

Page 451: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 23 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Getting Acquainted With I/O

• Exercise objective:

• Become familiar with stream I/O by writingprograms that perform I/O to files

• Tasks:

• Open a file

• Create a simple database program

• Use persistence

Page 452: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 24 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Describe and use streams philosophy of the java.iopackage

• Construct file and filter streams, and use themappropriately

• Distinguish readers and writers from streams, andselect appropriately between them

• Examine and manipulate files and directories

• Read, write, and update text and data files

• Use the Serialization interface to persist the state ofobjects

Page 453: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 14, slide 25 of 25Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• Do you have applications that require file I/O?

Page 454: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Module 15

Networking

Page 455: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 2 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Course Map

Exceptions

The Java Programming Language Basics

Object-Oriented Programming

Exception Handling

Communications

Multithreading

Applets

Developing Graphical User Interfaces

Threads

Introductionto Java Applets

Stream I/Oand Files

Identifiers, Keywords, and Types

Getting StartedExpressions and

Flow ControlArrays

Objectsand Classes

Advanced Language Features

The AWTEvent Model

Building GUIsThe AWT

Component LibraryJava Foundation

Classes

Networking

Page 456: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 3 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Objectives

• Create a minimal Transmission Control Protocol/Internet Protocol (TCP/IP) server and a minimal TCP/IP client:

• ServerSocket

• Socket

• Create a minimal User Datagram Protocol (UDP) serverand a minimal UDP client:

• DatagramSocket

• DatagramPacket

Page 457: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 4 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Relevance

• How can a communication link between a clientmachine and a server on the network be established?

Page 458: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 5 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Networking

• Sockets:

• Sockets hold two streams

• Setting up the connection:

• Set up is similar to a telephone system

Page 459: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 6 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Networking With Java Technology

• Addressing the connection:

• Address or name of remote machine

• Port number to identify purpose

• Port numbers:

• Range from 0–65535

Page 460: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 7 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Java Networking Model

Server

ServerSocket (port # )

OutputStream

InputStream

Socket.close ()

Client

Socket (host, port# )

OutputStream

InputStream

Socket.close ()

Register withthis service

Wait for aconnection

(Attempt to connect)Socket()

ServerSocket.accept()

Page 461: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 8 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal TCP/IP Server

1 import java.net.*;2 import java.io.*;34 public class SimpleServer {5 public static void main(String args[]) {6 ServerSocket s = null;7 Socket s1;8 String sendString = "Hello Net World!";9 int slength = sendString.length();10 OutputStream s1out;11 DataOutputStream dos;1213 // Register your service on port 543214 try {15 s = new ServerSocket(5432);16 } catch (IOException e) {17 // ignore18 }19

Page 462: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 9 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal TCP/IP Server

20 // Run the listen/accept loop forever21 while (true) {22 try {23 // Wait here and listen for a connection24 s1=s.accept();2526 // Get a communication stream associated with27 // the socket28 s1out = s1.getOutputStream();29 dos = new DataOutputStream (s1out);3031 // Send your string!32 // (UTF provides machine independence)33 dos.writeUTF(sendString);3435 // Close the connection, but not the server socket36 dos.close();37 s1out.close();38 s1.close();39 } catch (IOException e) {40 // ignore41 }42 }43 }44 }

Page 463: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 10 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal TCP/IP Client

1 import java.net.*;2 import java.io.*;34 public class SimpleClient {56 public static void main(String args[])7 throws IOException {8 int c;9 Socket s1;10 InputStream s1In;11 DataInputStream dis;1213 // Open your connection to a server, at port 543214 // localhost used here15 s1 = new Socket("127.0.0.1",5432);1617 // Get an input file handle from the socket and18 // read the input19 s1In = s1.getInputStream();20 dis = new DataInputStream(s1In);2122 String st = new String (dis.readUTF());23 System.out.println(st);2425 // When done, just close the connection and exit26 dis.close();27 s1In.close();28 s1.close();29 }30 }

Page 464: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 11 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

UDP Sockets

• Are used for connection-less protocol

• Messages are not guaranteed

• Are supported in Java technology through theDatagramSocket and DatagramPacket classes

Page 465: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 12 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Datagram Packet

DatagramPacket has two constructors: one for receivingdata and one for sending data.

• DatagramPacket( byte [] recvBuf, int readLength)

• DatagramPacket( byte [] sendBuf, int sendLength, InetAddress iaddr, int iport)

Page 466: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 13 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The DatagramSocket

DatagramSocket has three constructors:

• Datagr amSocket()

• DatagramSoc ket(int port)

• DatagramSocke t(int port, InetAddress iaddr)

Page 467: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 14 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal UDP Server

1 import java.io.*;2 import java.net.*;3 import java.util.*;45 public class UdpServer{67 //This method retrieves the current time on the server8 public byte[] getTime(){9 Date d= new Date();10 return d.toString().getBytes();11 }1213 // Main server loop.14 public void go() throws IOException {1516 DatagramSocket datagramSocket;17 // Datagram packet from the client18 DatagramPacket inDataPacket;19 // Datagram packet to the client20 DatagramPacket outDataPacket;21 // Client return address22 InetAddress clientAddress;23 // Client return port24 int clientPort;25 // Incoming data buffer. Ignored.26 byte[] msg= new byte[10];27 // Stores retrieved time28 byte[] time;2930 // Allocate a socket to man port 8000 for requests.31 datagramSocket = new DatagramSocket(8000);32 System.out.println("UDP server active on port 8000");33

Page 468: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 15 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal UDP Server

34 // Loop forever35 while(true) {3637 // Set up receiver packet. Data will be ignored.38 inDataPacket = new DatagramPacket(msg, msg.length);3940 // Get the message.41 datagramSocket.receive(inDataPacket);4243 // Retrieve return address information, including44 // InetAddress and port from the datagram packet45 // just recieved.4647 clientAddress = inDataPacket.getAddress();48 clientPort = inDataPacket.getPort();4950 // Get the current time.51 time = getTime();5253 //set up a datagram to be sent to the client using the54 //current time, the client address and port55 outDataPacket =56 new DatagramPacket(57 time, time.length, clientAddress, clientPort);5859 //finally send the packet60 datagramSocket.send(outDataPacket);61 }62 }63

Page 469: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 16 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal UDP Server

64 public static void main(String args[]) {65 UdpServer udpServer = new UdpServer();6667 try {68 udpServer.go();69 } catch (IOException e) {70 System.out.println(71 "IOException occured with socket.");72 System.out.println (e);73 System.exit(1);74 }75 }76 }

Page 470: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 17 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal UDP Client

1 import java.io.*;2 import java.net.*;34 public class UdpClient {56 public void go()7 throws IOException,8 UnknownHostException {910 DatagramSocket datagramSocket;11 // Datagram packet to the server12 DatagramPacket outDataPacket;13 // Datagram packet from the server14 DatagramPacket inDataPacket;15 // Server host address16 InetAddress serverAddress;17 // Buffer space.18 byte[] msg = new byte[100];19 // Received message in String form.20 String receivedMsg;2122 // Allocate a socket by which messages are sent23 // and received.24 datagramSocket = new DatagramSocket();2526 // Server is running on this same machine for this27 // example.28 // This method can throw an UnknownHostException.29 serverAddress = InetAddress.getLocalHost();3031 // Set up a datagram request to be sent to the server.32 // Send to port 8000.33 outDataPacket =34 new DatagramPacket(msg, 1, serverAddress, 8000);3536 // Make the request to the server.37 datagramSocket.send(outDataPacket);38

Page 471: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 18 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Minimal UDP Client

39 // Set up a datagram packet to receive40 // server's response.41 inDataPacket = new DatagramPacket(msg, msg.length);4243 // Receive the time data from the server44 datagramSocket.receive(inDataPacket);4546 // Print the data received from the server47 receivedMsg = new String(48 inDataPacket.getData(), 0, inDataPacket.getLength());49 System.out.println(receivedMsg);5051 //close the socket52 datagramSocket.close();53 }5455 public static void main(String args[]) {56 UdpClient udpClient = new UdpClient();5758 try {59 udpClient.go();60 } catch (Exception e) {61 System.out.println ("Exception occured with socket.");62 System.out.println (e);63 System.exit(1);64 }65 }66 }

Page 472: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 19 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Exercise: Using Socket Programming

• Exercise objective:

• Gain experience using sockets by implementing aclient and server which communicate using sockets

• Tasks:

• Create sockets

• Use a multithreaded server

Page 473: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 20 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress

• Develop code to set up network connection

• Understand TCP/IP and UDP protocol

• Use ServerSocket and Socket classes forimplementing TCP/IP client and servers

• Use DatagramPacket and DatagramSocket foreffecting a UDP-based network communication

Page 474: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Module 15, slide 21 of 21Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• There are several advanced Java platform topics, manyof which are addressed in other SunEd courses. SeeAppendix A for a brief discourse on some of them. Besure and check out the JavaSoft web site(www.javasoft.com ) as well.

Page 475: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language September 1999

Appendix B

Using the GridBagLayout

Page 476: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 2 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Layout Managers

• Position and size components in a Container

• Adhere to a policy

• Make absolute coordinates platform dependent

• Determine limitations of:

• FlowLayout

• GridLayout

• BorderLayout

Page 477: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 3 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The GridBagLayout

• Divides the region into rows and columns

• Sizes components to fit width, height, both, or neither oftheir regions (one or more contiguous rows and one ormore contiguous columns)

Page 478: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 4 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The GridBagLayout

• Row/column count determined by cell usage

• Row/column basic size determined by contents

Page 479: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 5 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The GridBagLayout

• Use of "spare" space is determined by weight.

• Components can fit width, height, or both of the region.

Page 480: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 6 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The GridBagLayout

• Components are located within a region by an anchor.

• Fill can make the anchor ineffective.

Page 481: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 7 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The GridBagConstraints Class

• For each component, specify:

• Top left corner of cell with gridx and gridy

• Cell size with gridwidth and gridheight

• Capacity with fill

• anchor

• For each row and column, specify:

• Capacity with weightx and weighty

Page 482: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 8 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Designing with GridBagLayout

• Sketch all components

• Sketch all components on resized container

• Identify all gridlines and rowhence/column counts

• Identify stretchy rows/columns and allocate weights

• Identify starting row/column for each component

• Identify width/height for each component

• Identify fill for each component

• Identify anchor for each component

• Define row/column weights for each component

Page 483: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 9 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Example

Basic, unexpanded layout proposal

Basic, expanded layout proposal

Page 484: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 10 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Example

Extra column

Loose component

0 1 2 3 4

0 1 2 3 4

0

1

2

3

4

5

6

0

1

2

3

4

5

6

Page 485: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 11 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Example

Component

gridx

gridygridwidth

gridheight

1 0 0 5 1

2 0 1 1 1

3 1 1 1 1

4 2 1 1 1

5 3 1 2 1

6 0 2 1 4

7 1 2 3 4

8 4 2 1 1

9 4 3 1 1

10 4 4 1 1

11 4 5 1 1

12 0 6 5 1

1

2 3 4 5

6 7

8

9

10

11

12

Page 486: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 12 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Example0 1 2 3 4

0

1

2

3

4

5

6

1

2 543

67

8

9

12

10

11

Page 487: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 13 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Example

Page 488: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 14 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Example

1 import java.awt.*;2 import com.sun.java.swing.*;34 public class ExampleGB {5 public static void main(String args[]) {6 JFrame f = new JFrame(“GridBag Example”);7 Container c = f.getContentPane();8 c.setLayout(new GridBagLayout());9 GridBagAdder.add(c, new Canvas(), 3, 2, 1, 1, 1, 0,10 GridBagConstraints.NONE, GridBagConstraints.CENTER);11 GridBagAdder.add(c, new JButton(“1”), 0, 0, 5, 1, 0, 0,12 GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER);13 GridBagAdder.add(c, new JButton(“2”), 0, 1, 1, 1, 0, 0,14 GridBagConstraints.BOTH, GridBagConstraints.CENTER);15 GridBagAdder.add(c, new JButton(“3”), 1, 1, 1, 1, 1, 0,16 GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER);17 GridBagAdder.add(c, new JButton(“4”), 2, 1, 1, 1, 0, 0,18 GridBagConstraints.BOTH, GridBagConstraints.CENTER);19 GridBagAdder.add(c, new JButton(“5”), 3, 1, 2, 1, 0, 0,20 GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER);21 GridBagAdder.add(c, new JButton(“6”), 0, 2, 1, 4, 0, 0,22 GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER);23 GridBagAdder.add(c, new JButton(“7”), 1, 2, 3, 4, 0, 0,24 GridBagConstraints.BOTH, GridBagConstraints.CENTER);25 GridBagAdder.add(c, new JButton(“8”), 4, 2, 1, 1, 0, 1,26 GridBagConstraints.BOTH, GridBagConstraints.CENTER);27 GridBagAdder.add(c, new JButton(“9”), 4, 3, 1, 1, 0, 1,28 GridBagConstraints.BOTH, GridBagConstraints.CENTER);29 GridBagAdder.add(c, new JButton(“10”), 4, 4, 1, 1, 0, 1,30 GridBagConstraints.BOTH, GridBagConstraints.CENTER);31 GridBagAdder.add(c, new JButton(“11”), 4, 5, 1, 1, 0, 1,32 GridBagConstraints.BOTH, GridBagConstraints.CENTER);33 GridBagAdder.add(c, new JButton(“12”), 0, 6, 5, 1, 0, 0,34 GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER);35 f.pack();36 f.setVisible(true);37 }

Page 489: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 15 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Example

38 static class GridBagAdder {39 // OK to reuse this as we overwrite all elements every time40 // Note that this is not threadsafe however!41 static GridBagConstraints cons = new GridBagConstraints();42 public static void add(Container cont, Component comp, int x, int y,43 int width, int height, int weightx, int weighty, int fill, int anchor) {44 cons.gridx = x;45 cons.gridy = y;46 cons.gridwidth = width;47 cons.gridheight = height;48 cons.weightx = weightx;49 cons.weighty = weighty;50 cons.fill = fill;51 cons.anchor = anchor;52 cont.add(comp, cons);53 }54 }55 }

Page 490: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 16 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

RELATIVE and REMAINDER

• Shorthand for position, size, or both

• For gridx /gridy :RELATIVE => extends to the next position

• For gridwidth /gridheight :RELATIVE => extends to last one

• For gridwidth /gridheight :REMAINDER => extends to last one

• Careful use of these helps maintenance, but it:

• Makes adding order significant

• Might decrease readability of code

Page 491: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language Appendix B, slide 17 of 17Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond

• Are there any layout effects that you cannot handleusing the layout managers you now understand?

Page 492: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language i of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

About This Course .......................................................................................................Preface-1Course Goals ................................................................................................................................. Preface-2Course Overview ......................................................................................................................... Preface-3Course Map ................................................................................................................................... Preface-4Module-by-Module Overview ................................................................................................... Preface-5Course Objectives ......................................................................................................................... Preface-7Skills Gained by Module ............................................................................................................. Preface-9Guidelines for Module Pacing ................................................................................................. Preface-10Topics Not Covered ................................................................................................................... Preface-11How Prepared Are You? ........................................................................................................... Preface-12Introductions .............................................................................................................................. Preface-13How to Use Course Materials .................................................................................................. Preface-14Course Icons ................................................................................................................................ Preface-15Typographical Conventions ..................................................................................................... Preface-16

Getting Started .......................................................................................................................1-1Course Map .............................................................................................................................................. 1-2Objectives ................................................................................................................................................. 1-3Relevance .................................................................................................................................................. 1-5What Is the Java Programming Language? ......................................................................................... 1-6Primary Goals of the Java Programming Language .......................................................................... 1-7The Java Virtual Machine .................................................................................................................... 1-10Garbage Collection ............................................................................................................................... 1-13Code Security ......................................................................................................................................... 1-14Java Runtime Environment ................................................................................................................. 1-15Class Loader ........................................................................................................................................... 1-16Bytecode Verifier ................................................................................................................................... 1-17Compiling and Running HelloWorldApp ....................................................................................... 1-19Compile-Time Errors ............................................................................................................................ 1-20Runtime Errors ...................................................................................................................................... 1-21

Page 493: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language ii of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The Source File Layout ......................................................................................................................... 1-22Classes and Packages – An Introduction ........................................................................................... 1-23Using the Java API Documentation ................................................................................................... 1-24Exercise: Performing Basic Java Tasks ............................................................................................... 1-25Check Your Progress ............................................................................................................................ 1-26Think Beyond ........................................................................................................................................ 1-28

Identifiers, Keywords, and Types .........................................................................................2-1Course Map .............................................................................................................................................. 2-2Objectives ................................................................................................................................................. 2-3Relevance .................................................................................................................................................. 2-5Comments ................................................................................................................................................ 2-6Semicolons, Blocks, and Whitespace .................................................................................................... 2-7Identifiers ................................................................................................................................................. 2-9Java Keywords ....................................................................................................................................... 2-10Primitive Types ..................................................................................................................................... 2-11Logical – boolean ................................................................................................................................... 2-12Textual – char and String ..................................................................................................................... 2-13Integral – byte, short, int, and long .................................................................................................... 2-15Floating Point – float and double ....................................................................................................... 2-17Variables, Declarations, and Assignments ........................................................................................ 2-19Java Coding Conventions .................................................................................................................... 2-20Understanding Objects ......................................................................................................................... 2-22Creating an Object ................................................................................................................................. 2-23Creating an Object – Memory Allocation and Layout ..................................................................... 2-24Assignment of Reference Variables .................................................................................................... 2-27Assignment of Reference Variables .................................................................................................... 2-28Terminology Recap ............................................................................................................................... 2-29Exercise: Using Identifiers, Keywords, and Types .......................................................................... 2-30Check Your Progress ............................................................................................................................ 2-31

Page 494: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language iii of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Think Beyond ........................................................................................................................................ 2-33

Expressions and Flow Control .............................................................................................3-1Course Map .............................................................................................................................................. 3-2Objectives ................................................................................................................................................. 3-3Relevance .................................................................................................................................................. 3-5Variables and Scope ................................................................................................................................ 3-6Variable Initialization ............................................................................................................................. 3-7Operators .................................................................................................................................................. 3-8Logical Expressions ................................................................................................................................ 3-9Short -Circuit Logical Operators ......................................................................................................... 3-10String Concatenation With + ............................................................................................................... 3-11Right-Shift Operators >> and >>> ..................................................................................................... 3-12Left-Shift Operator (<<) ....................................................................................................................... 3-13Casting .................................................................................................................................................... 3-14Promotion and Casting of Expressions .............................................................................................. 3-15Branching Statements ........................................................................................................................... 3-16Looping Statements .............................................................................................................................. 3-20Special Loop Flow Control .................................................................................................................. 3-23Exercise: Using Expressions ................................................................................................................ 3-28Check Your Progress ............................................................................................................................ 3-29Think Beyond ........................................................................................................................................ 3-31

Arrays .......................................................................................................................................4-1Course Map .............................................................................................................................................. 4-2Objectives ................................................................................................................................................. 4-3Relevance .................................................................................................................................................. 4-4Declaring Arrays ..................................................................................................................................... 4-5Creating Arrays ....................................................................................................................................... 4-6Initializing Arrays ................................................................................................................................... 4-7

Page 495: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language iv of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Multi-Dimensional Arrays ..................................................................................................................... 4-8Array Bounds ........................................................................................................................................ 4-10Array Resizing ....................................................................................................................................... 4-11Exercise: Using Arrays ......................................................................................................................... 4-13Check Your Progress ............................................................................................................................ 4-14Think Beyond ........................................................................................................................................ 4-15

Objects and Classes ...............................................................................................................5-1Course Map .............................................................................................................................................. 5-2Objectives ................................................................................................................................................. 5-3Relevance .................................................................................................................................................. 5-5Object Fundamentals .............................................................................................................................. 5-6Classes and Objects ................................................................................................................................. 5-7Defining Methods ................................................................................................................................. 5-10Pass-by-Value ........................................................................................................................................ 5-11The this Reference ................................................................................................................................. 5-12Data Hiding ........................................................................................................................................... 5-13Encapsulation ........................................................................................................................................ 5-15Overloading Method Names ............................................................................................................... 5-16Constructing and Initializing Objects ................................................................................................ 5-17Explicit Member Initialization ............................................................................................................ 5-18Constructors ........................................................................................................................................... 5-19Invoking Overloaded Constructors .................................................................................................... 5-21The Default Constructor ...................................................................................................................... 5-22The is a Relationship .......................................................................................................................... 5-23The extends Keyword ......................................................................................................................... 5-25Single Inheritance .................................................................................................................................. 5-26Constructors Are Not Inherited .......................................................................................................... 5-28Polymorphism ....................................................................................................................................... 5-29Heterogeneous Collections .................................................................................................................. 5-31

Page 496: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language v of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The instanceof Operator ....................................................................................................................... 5-33Casting Objects ...................................................................................................................................... 5-34Overriding Methods ............................................................................................................................. 5-35Rules About Overridden Methods ..................................................................................................... 5-38The super Keyword ............................................................................................................................. 5-40Invoking Parent Class Constructors ................................................................................................... 5-42Packages ................................................................................................................................................. 5-44The import Statement ........................................................................................................................... 5-45Directory Layout and Packages ......................................................................................................... 5-46Exercise: Using Objects and Classes ................................................................................................... 5-47Check Your Progress ............................................................................................................................ 5-48Think Beyond ........................................................................................................................................ 5-50

Advanced Language Features ...............................................................................................6-1Course Map .............................................................................................................................................. 6-2Objectives ................................................................................................................................................. 6-3Relevance .................................................................................................................................................. 6-5Class (static) Variables ............................................................................................................................ 6-6Static Initializers ...................................................................................................................................... 6-8Static Methods and Data ..................................................................................................................... 6-10The final Keyword ................................................................................................................................ 6-13Abstract Classes ..................................................................................................................................... 6-14Interfaces ................................................................................................................................................ 6-15Interfaces ................................................................................................................................................ 6-16Advanced Access Control .................................................................................................................... 6-18Deprecation ............................................................................................................................................ 6-19The == Operator Versus equals() Method ......................................................................................... 6-23toString() Method ........................................................................................................................... 6-24Inner Classes .......................................................................................................................................... 6-25Properties of Inner Classes .................................................................................................................. 6-26

Page 497: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language vi of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Wrapper Classes .................................................................................................................................... 6-29Collection API ........................................................................................................................................ 6-31The Vector Class .................................................................................................................................. 6-32Synopsis .................................................................................................................................................. 6-33 Constructors .......................................................................................................................................... 6-34Variables ................................................................................................................................................. 6-35Methods .................................................................................................................................................. 6-36The Vector Class .................................................................................................................................. 6-37 The Vector Class ................................................................................................................................ 6-38Reflection API ........................................................................................................................................ 6-39Reflection API Security Model ............................................................................................................ 6-41Exercise: Working With Advanced Language Features .................................................................. 6-42Check Your Progress ............................................................................................................................ 6-43Think Beyond ........................................................................................................................................ 6-45

Exceptions ................................................................................................................................7-1Course Map .............................................................................................................................................. 7-2Objectives ................................................................................................................................................. 7-3Relevance .................................................................................................................................................. 7-4Exceptions ................................................................................................................................................ 7-5Exception Example ................................................................................................................................. 7-6try and catch Statements ........................................................................................................................ 7-7Call Stack Mechanism ............................................................................................................................ 7-8finally Statement ..................................................................................................................................... 7-9Exception Example Revisited .............................................................................................................. 7-10Exception Categories ............................................................................................................................ 7-11Common Exceptions ............................................................................................................................. 7-12The Handle or Declare Rule ................................................................................................................ 7-13Creating Your Own Exceptions .......................................................................................................... 7-14Handling User-Defined Exceptions ................................................................................................... 7-15

Page 498: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language vii of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Check Your Progress ............................................................................................................................ 7-16Think Beyond ........................................................................................................................................ 7-17

Bulding GUIs ...........................................................................................................................8-1Course Map .............................................................................................................................................. 8-2Objectives ................................................................................................................................................. 8-3Relevance .................................................................................................................................................. 8-5The AWT .................................................................................................................................................. 8-6The java.awt Package ............................................................................................................................. 8-7Containers ................................................................................................................................................ 8-8Building Graphical User Interfaces ...................................................................................................... 8-9Frame ..................................................................................................................................................... 8-10MyFrame.java ...................................................................................................................................... 8-11Panel ..................................................................................................................................................... 8-13FrameWithPanel.java ...................................................................................................................... 8-14Container Layouts .............................................................................................................................. 8-16Default Layout Managers .................................................................................................................... 8-17A Simple FlowLayout Example .......................................................................................................... 8-18FlowLayout Manager ........................................................................................................................... 8-19MyFlow.java ........................................................................................................................................ 8-20ExGui2.java ........................................................................................................................................ 8-22GridLayout Manager ........................................................................................................................... 8-24GridEx.java ........................................................................................................................................ 8-25GridBagLayout Manager .................................................................................................................... 8-31ExGui3.java ........................................................................................................................................ 8-32Output of ExGui3.java .......................................................................................................................... 8-33Exercise: Building GUIs ....................................................................................................................... 8-34Check Your Progress ............................................................................................................................ 8-35Think Beyond ........................................................................................................................................ 8-37

Page 499: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language viii of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

The AWT Event Model ...........................................................................................................9-1Course Map .............................................................................................................................................. 9-2Objectives ................................................................................................................................................. 9-3Relevance .................................................................................................................................................. 9-4What Is an Event? ................................................................................................................................... 9-5JDK 1.0 Event Model Versus Java 2 SDK Event Model.................................................................... 9-6Hierarchical Model (JDK 1.0) ................................................................................................................ 9-7Delegation Model .................................................................................................................................... 9-9Delegation Model .................................................................................................................................. 9-10Frame With a Single Button ................................................................................................................. 9-12The ButtonHandler Class ..................................................................................................................... 9-13Event Categories ................................................................................................................................... 9-14Java GUI Behavior ................................................................................................................................. 9-15Complex Example ................................................................................................................................. 9-17Complex Example ................................................................................................................................. 9-18Multiple Listeners ................................................................................................................................. 9-19Event Adapters ...................................................................................................................................... 9-20Anonymous Classes ............................................................................................................................. 9-21Exercise: Working With Events .......................................................................................................... 9-22Check Your Progress ............................................................................................................................ 9-23Think Beyond ........................................................................................................................................ 9-24

The AWT Component Library ............................................................................................10-1Course Map ............................................................................................................................................ 10-2Objectives ............................................................................................................................................... 10-3Relevance ................................................................................................................................................ 10-4Features of the AWT ............................................................................................................................. 10-5Creating a Button ................................................................................................................................ 10-6Creating a Checkbox ........................................................................................................................... 10-7Creating the ItemListener Interface .................................................................................................... 10-8

Page 500: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language ix of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a Choice .............................................................................................................................. 10-10Canvas ................................................................................................................................................. 10-11Creating a Label ................................................................................................................................ 10-13Creating a TextField ....................................................................................................................... 10-14Creating a TextArea ......................................................................................................................... 10-15Text Components ................................................................................................................................ 10-16Creating a List Component ............................................................................................................. 10-17Creating a Dialog .............................................................................................................................. 10-18Creating a FileDialog ..................................................................................................................... 10-19Creating a ScrollPane ..................................................................................................................... 10-20Menu ..................................................................................................................................................... 10-21Creating a MenuBar ............................................................................................................................ 10-22Creating a Menu .................................................................................................................................. 10-23Creating a MenuItem ......................................................................................................................... 10-24Creating a CheckBoxMenuItem ........................................................................................................ 10-25Creating a PopupMenu ....................................................................................................................... 10-26Controlling Visual Aspects ................................................................................................................ 10-27Printing ................................................................................................................................................. 10-29Exercise: Creating a Paint Program Layout .................................................................................... 10-30Check Your Progress .......................................................................................................................... 10-31Think Beyond ...................................................................................................................................... 10-32

Java Foundation Classes .....................................................................................................11-1Course Map ............................................................................................................................................ 11-2Objectives ............................................................................................................................................... 11-3Relevance ................................................................................................................................................ 11-4Introduction ........................................................................................................................................... 11-5Swing Introduction ............................................................................................................................... 11-6Swing Hierarchy ................................................................................................................................... 11-7Swing Components ............................................................................................................................. 11-8

Page 501: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language x of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Basic Swing Application ................................................................................................................ 11-10HelloSwing ........................................................................................................................................ 11-11

HelloSwing .................................................................................................................................... 11-12HelloSwing .................................................................................................................................... 11-13

Basic Swing Application .................................................................................................................... 11-14Building a Swing GUI ........................................................................................................................ 11-16The JComponent Class ....................................................................................................................... 11-19Exercise: Creating Swing Applications ............................................................................................ 11-20Check Your Progress .......................................................................................................................... 11-21Think Beyond ...................................................................................................................................... 11-22

Introduction to Java Applets ..............................................................................................12-1Course Map ............................................................................................................................................ 12-2Objectives ............................................................................................................................................... 12-3Relevance ................................................................................................................................................ 12-5What Is an Applet? ............................................................................................................................... 12-6Applet Security Restrictions ................................................................................................................ 12-7Applet Class Hierarchy ........................................................................................................................ 12-8Key Applet Methods ............................................................................................................................ 12-9Applet Display .................................................................................................................................... 12-10Applet Methods and the Applet Life Cycle .................................................................................... 12-11AWT Painting ...................................................................................................................................... 12-12Applet Display Strategies .................................................................................................................. 12-14What Is the appletviewer ? .............................................................................................................. 12-15The applet Tag ..................................................................................................................................... 12-16Additional Applet Facilities .............................................................................................................. 12-17A Simple Image Test ........................................................................................................................... 12-18AudioClip .......................................................................................................................................... 12-19A Simple Audio Test .......................................................................................................................... 12-20Looping an AudioClip ..................................................................................................................... 12-21

Page 502: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language xi of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

A Simple Looping Test ....................................................................................................................... 12-22Mouse Input ......................................................................................................................................... 12-23A Simple Mouse Test .......................................................................................................................... 12-24Reading Parameters ............................................................................................................................ 12-25Dual Purpose Code Sample ............................................................................................................... 12-26Exercise: Creating Applets ................................................................................................................. 12-28Check Your Progress .......................................................................................................................... 12-29Think Beyond ...................................................................................................................................... 12-31

Threads ...................................................................................................................................13-1Course Map ............................................................................................................................................ 13-2Objectives ............................................................................................................................................... 13-3Relevance ................................................................................................................................................ 13-5Threads ................................................................................................................................................... 13-6Three Parts of a Thread ........................................................................................................................ 13-7Creating the Thread .............................................................................................................................. 13-8Starting the Thread ............................................................................................................................. 13-10Thread Scheduling .............................................................................................................................. 13-11Terminating a Thread ......................................................................................................................... 13-13Basic Control of Threads .................................................................................................................... 13-14Putting Threads on Hold ................................................................................................................... 13-15Extending the Thread Class ............................................................................................................... 13-17Selecting a Way to Create Threads ................................................................................................... 13-18Using the synchronized Keyword .................................................................................................... 13-19The Object Lock Flag .......................................................................................................................... 13-20The Object Lock Flag .......................................................................................................................... 13-21Releasing the Lock Flag ...................................................................................................................... 13-22synchronized – Putting It Together ............................................................................................... 13-23Deadlock ............................................................................................................................................... 13-25Thread Interaction – wait() and notify() .................................................................................. 13-26

Page 503: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language xii of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Thread Interaction ............................................................................................................................... 13-27Monitor Model for Synchronization ................................................................................................ 13-28Producer ............................................................................................................................................. 13-29Consumer ............................................................................................................................................. 13-30pop() Method .................................................................................................................................... 13-32push() Method ................................................................................................................................... 13-33SyncTest.java .................................................................................................................................. 13-34Producer.java .................................................................................................................................. 13-35Consumer.java .................................................................................................................................. 13-36SyncStack.java ............................................................................................................................... 13-37The suspend() and resume() Methods ......................................................................................... 13-38The stop() Method ............................................................................................................................ 13-39Proper Thread Control ....................................................................................................................... 13-40Exercise: Using Multithreaded Programming ................................................................................ 13-41Check Your Progress .......................................................................................................................... 13-42Think Beyond ...................................................................................................................................... 13-44

Stream I/O and Files ............................................................................................................14-1Course Map ............................................................................................................................................ 14-2Objectives ............................................................................................................................................... 14-3Relevance ................................................................................................................................................ 14-4Stream I/O ............................................................................................................................................. 14-5Stream Fundamentals ........................................................................................................................... 14-6InputStream Methods ........................................................................................................................... 14-7OutputStream Methods ....................................................................................................................... 14-8Basic Stream Classes ............................................................................................................................. 14-9URL Input Streams ............................................................................................................................. 14-11Opening an Input Stream .................................................................................................................. 14-12Readers and Writers ........................................................................................................................... 14-13Reading String Input .......................................................................................................................... 14-14

Page 504: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language xiii of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Creating a New File Object ............................................................................................................. 14-15File Tests and Utilities ...................................................................................................................... 14-16Creating a Random Access File ......................................................................................................... 14-18Random Access Files .......................................................................................................................... 14-19Serialization ......................................................................................................................................... 14-20Writing an Object to a File Stream .................................................................................................... 14-21Reading an Object From a File Stream ............................................................................................. 14-22Exercise: Getting Acquainted With I/O .......................................................................................... 14-23Check Your Progress .......................................................................................................................... 14-24Think Beyond ...................................................................................................................................... 14-25

Networking ............................................................................................................................15-1Course Map ............................................................................................................................................ 15-2Objectives ............................................................................................................................................... 15-3Relevance ................................................................................................................................................ 15-4Networking ............................................................................................................................................ 15-5Networking With Java Technology .................................................................................................... 15-6Java Networking Model ....................................................................................................................... 15-7Minimal TCP/IP Server ....................................................................................................................... 15-8 Minimal TCP/IP Server ................................................................................................................... 15-9Minimal TCP/IP Client ...................................................................................................................... 15-10UDP Sockets ......................................................................................................................................... 15-11The DatagramPacket ........................................................................................................................ 15-12The DatagramSocket ........................................................................................................................... 15-13Minimal UDP Server .......................................................................................................................... 15-14Minimal UDP Client ........................................................................................................................... 15-17Exercise: Using Socket Programming .............................................................................................. 15-19Check Your Progress .......................................................................................................................... 15-20Think Beyond ...................................................................................................................................... 15-21

Page 505: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Sun Educational Services

Java Programming Language xiv of xivCopyright 1999 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services September 1999, Revision C.1

Using the GridBagLayout ..................................................................................................B-1Layout Managers ....................................................................................................................................B-2The GridBagLayout ..............................................................................................................................B-3The GridBagConstraints Class ..........................................................................................................B-7Designing with GridBagLayout .........................................................................................................B-8Example ....................................................................................................................................................B-9RELATIVE and REMAINDER ............................................................................................................B-16Think Beyond ........................................................................................................................................B-17

Page 506: Java Programming Language - index-of.co.ukindex-of.co.uk/Programming/SUN - SL-275 Java Programming Language.pdf · Java Programming Language September 1999 Preface About This Course

Copyright 1999 Sun Microsystems Inc., 901 San Antonio Road, Palo Alto, California 94303, Etats-Unis. Tous droits réservés.

Ce produit ou document est protégé par un copyright et distribué avec des licences qui en restreignent l’utilisation, la copie, la distribution, et la décompilation. Aucune partie de ceproduit ou document ne peut être reproduite sous aucune forme, par quelque moyen que ce soit, sans l’autorisation préalable et écrite de Sun et de ses bailleurs de licence, s’il y en a.

Le logiciel détenu par des tiers, et qui comprend la technologie relative aux polices de caractères, est protégé par un copyright et licencié par des fournisseurs de Sun.Des parties de ce produit pourront être dérivées du systèmes Berkeley 4.3 BSD licenciés par l’Université de Californie. UNIX est une marque déposée aux Etats-Unis et dans d’autrespays et licenciée exclusivement par X/Open Company Ltd.

Sun, Sun Microsystems, le logo Sun, sont des marques de fabrique ou des marques déposées de Sun Microsystems, Inc. aux Etats-Unis et dans d’autres pays.

Toutes les marques SPARC sont utilisées sous licence sont des marques de fabrique ou des marques déposées de SPARC International, Inc. aux Etats-Unis et dans d’autres pays.

Les produits portant les marques SPARC sont basés sur une architecture développée par Sun Microsystems, Inc.

UNIX est une marques déposée aux Etats-Unis et dans d’autres pays et licenciée exclusivement par X/Open Company, Ltd.

L’interfaces d’utilisation graphique OPEN LOOK et Sun™ a été développée par Sun Microsystems, Inc. pour ses utilisateurs et licenciés. Sun reconnaît les efforts de pionniers de Xeroxpour larecherche et le développement du concept des interfaces d’utilisation visuelle ou graphique pour l’industrie de l’informatique. Sun détient une licence non exclusive de Xerox surl’interface d’utilisation graphique Xerox, cette licence couvrant également les licenciés de Sun qui mettent en place l’interface d’utilisation graphique OPEN LOOK et qui en outre seconforment aux licences écrites de Sun.

L’accord du gouvernement américain est requis avant l’exportation du produit.

Le système X Window est un produit de X Consortium, Inc.

LA DOCUMENTATION EST FOURNIE “EN L’ETAT” ET TOUTES AUTRES CONDITIONS, DECLARATIONS ET GARANTIES EXPRESSES OU TACITES SONT FORMELLEMENTEXCLUES, DANS LA MESURE AUTORISEE PAR LA LOI APPLICABLE, Y COMPRIS NOTAMMENT TOUTE GARANTIE IMPLICITE RELATIVE A LA QUALITE MARCHANDE, AL’APTITUDE A UNE UTILISATION PARTICULIERE OU A L’ABSENCE DE CONTREFAÇON.