Java Programming Fundamentals. Lesson 1: Java Runtime Environment.

Post on 02-Jan-2016

264 views 1 download

transcript

Java Programming Fundamentals

Lesson 1:Java Runtime Environment

Objectives

Identify the differences between stand-alone applications and applets

Describe the role of the Java Virtual Machine

Create a simple Java program

Use Java comments

Compile and execute a Java program

Describe the differences between *.java and *.class files

The Java Virtual Machine

Stand-alone applications

Applets

Classes

Methods

Bytecode

Java Development Cycle

*.java *.classOutput

Window

Text Editor javac java

Java Comments

Single-line comment

Multiline comment

Javadoc comment

Summary

Identify the differences between stand-alone applications and applets

Describe the role of the Java Virtual Machine

Create a simple Java program

Use Java comments

Compile and execute a Java program

Describe the differences between *.java and *.class files

Lesson 2:Data Types,

Variables and Operators

Objectives

Use primitive data types

Declare a variable

Distinguish between local and class variables

Distinguish between implicit and explicit casting

Use the operators for primitive types

Data Types

Primitives

- Integers

- Floating-point numbers

- Character

- Boolean

Declaring Variablesand Variable Scope

Types

- Local

- Instance

- Class

Default variable values

Variable declaration and initialization

Casting

- Implicit

- Explicit

Casting Rules Chart

byte short int long float double

char

Operators

Arithmetic operators

Relational operators

Logical operators

- Short-circuit

Bitwise operators

AutomaticCasting

Java automatically casts

-bytes or shorts ints-floats doubles

Summary

Use primitive data types

Declare a variable

Distinguish between local and class variables

Distinguish between implicit and explicit casting

Use the operators for primitive types

Lesson 3:Control

Statements

Objectives

Explain the block structure of Java

Use Java conditional statements

Use Java iterative statements

Code Blocks

Used to group the contents of a class or a method

Used to designate all conditional and iterative statements

Used for exception handling

Conditional Statements

if statement

switch/case statement

-break statement

Iterative Statements (Loops)

while loop (entry condition loop)

do while loop (exit condition loop)

for loop

Nested loops (break and continue)

Summary

Explain the block structure of Java

Use Java conditional statements

Use Java iterative statements

Lesson 4:Methods

Objectives

Create and use static methods

Return a value from a method

Explain pass by value

Describe overloading methods

Identify the method signature

JavaMethods

The executable part of a class

- Member

Return Statement

Data types

Void

Calling a Method

Parameters

Literals

Pass by Value

A copy of the value of the variable is available to the method; changes to the copy do not affect the original value

Overloading

Method signature

- Name

- Parameter list

Does not include return type

Summary

Create and use static methods

Return a value from a method

Explain pass by value

Describe overloading methods

Identify the method signature

Lesson 5:Arrays

Objectives

Declare and initialize an array

Allocate space for a new array

Describe array indexing

Use the length property

Discuss why arrays are passed by reference

Discuss Java’s garbage collection mechanism

Retrieve command line parameters

What Is an Array?

Collection of same type

Non-primitive data type

Initializing an Array

Allocation

Reference

Index

Objects

Properties

Methods

Using an Array

length property

1

0

3

1

5

2

MyIntArray

tmpIntArray

Passing an Array to a Method

Garbage Collection

Variable name reuse

Memory leak

Command Line Parameters

Always String type data

Summary

Declare and initialize an array

Allocate space for a new array

Describe array indexing

Use the length property

Discuss why arrays are passed by reference

Discuss Java’s garbage collection mechanism

Retrieve command line parameters

Lesson 6:Classes

and Objects

Objectives

Identify the parts of an object

Create and use instance members

Distinguish between instance and class members

Define abstraction

Create object references

Object-Oriented Programming

Refers to the creation of a number of objects that communicate with one another

What Isan Object?

Instantiation

The new keyword

Instance andClass Members

Class members

- The exception in Java

Instance members

- The rule in Java

Accessing instance members

- Dot notation

Accessing class members

Abstraction

What does the object do versus how does it do it?

Functionality versus implementation

Object References

rachael

tmpEmp

name: "Rachael"dept: "Accounting"salary: 52000

tmpEmp variable

Summary

Identify the parts of an object

Create and use instance members

Distinguish between instance and class members

Define abstraction

Create object references

Lesson 7:Inheritance

Objectives

Create a new class using inheritance

Create an overridden method

What Is Inheritance?

Code reuse

Using inheritance

-extends keyword

- subclass

- superclass

- Multiple inheritance

Overriding Methods

Same signature as the superclass

super.method()

Summary

Create a new class using inheritance

Create an overridden method

Lesson 8:Constructors

Objectives

Use the default constructor

Create a constructor to initialize instance variables

Call other constructors from both the same class and the parent class

Create a no-arguments constructor

Discuss String characteristics and define the common methods of String

What Is a Constructor?

new keyword

Similarities to methods

- Initialization of object

- Pass parameters

Differences from methods

- Same name as class

- No return type

Callback

Using Constructors

Default constructor

- No arguments

- Must be explicitly created if there are any other constructors

Overloading constructors

- Unique parameter types

The Keyword this

this() as a constructor

Avoiding namespace conflicts

The super keyword

Constructors and Callbacks

Constructors are a major facilitator in establishing interobject communication

Strings and StringBuffer

String constructors

String characteristics

Methods of String

StringBuffer

Summary

Use the default constructor

Create a constructor to initialize instance variables

Call other constructors from both the same class and the parent class

Create a no-arguments constructor

Discuss String characteristics and define the common methods of String

Lesson 9:Interfaces and

Abstract Classes

Objectives

Define and use interfaces

Define polymorphism

Use abstract classes

Create an abstract method

What Is an Interface?

Contents of an interface

- Abstract methods

- Final variables

Interface functions

- Decoupling objects

- Providing data type

Polymorphism

Using one method name to invoke many different methods

What Is an Abstract Class?

Cannot be instantiated

Can be used for a type

Summary

Define and use interfaces

Define polymorphism

Use abstract classes

Create an abstract method

Lesson 10:Packages and

Access Modifiers

Objectives

Compile and run a class with packages

Identify the packages in the Java 2 API

Identify the various access levels in Java

Describe how access modifiers can be used to set the access level of a variable, method or class

Describe the object-oriented programming principle of encapsulation

Identify accessor and mutator methods

Packages and Access Modifiers

Packages

-import statement

Access modifiers

-public-protected-package-private

Java 2 Application Programming Interface

Organized into packages such as

-java.lang-java.awt-java.io-java.util-java.net

Encapsulation

Accessor

- Method that reads a variable

Mutator

- Wrapping variables and methods together

ObjectEncapsulation

Data 1Data 2Data 3Data 4

Summary

Compile and run a class with packages

Identify the packages in the Java 2 API

Identify the various access levels in Java

Describe how access modifiers can be used to set the access level of a variable, method or class

Describe the object-oriented programming principle of encapsulation

Identify accessor and mutator methods

Lesson 11:Swing

Components

Objectives

Distinguish between the AWT and Swing

Identify the general organization of the Swing class structure

Define and use Swing widgets and containers

What Is the AWT?

Heavyweight components

- Peer components

AWT 1.0

- Container propagation

- Single-method event-handling

AWT 1.1

- New event model

What Is Swing?

Lightweight components

- No peer components

- All Java

Customizable

Model View Controller (MVC) programming paradigm

Included in Java 2 (JDK 1.2)

Basic Swing Components

JComponent

JLabel

JButton

JTextField

JTextArea

JScrollBar

ImageIcon

JScrollPane

JPanel

JFrame

JFileChooser

JApplet

Graphical Widgets

The graphical components with which users interact

-JButton-JLabel-JScrollBar

SwingContainers

Two types

- Top level (includes JFrame, Window)

- Lower level (includes JPanel, JScrollPane)

Summary

Distinguish between the AWT and Swing

Identify the general organization of the Swing class structure

Define and use Swing widgets and containers

Lesson 12:Layout Managers

Objectives

Define a layout manager

Set a layout manager for a Container

Effectively use FlowLayout, GridLayout, BorderLayout and BoxLayout

Nest containers and layout managers to form more complex GUI layouts

Separate a complex design into its component containers and layout managers

What Is a Layout Manager?

FlowLayout

GridLayout

BorderLayout

BoxLayout

CardLayout

GridBagLayout

GridLayout

OverlayLayout

ScrollPaneLayout

ViewportLayout

FlowLayout

Centers components on each line in a flowing manner

GridLayout

Adds components in a gridlike format

BorderLayout

CENTER

EAST

WEST

SOUTH

NORTH

BoxLayout

Allows either a horizontal or a vertical layout of components

CombiningLayouts

Button 1

Button 2

Button 3

Button 4

Summary

Define a layout manager

Set a layout manager for a Container

Effectively use FlowLayout, GridLayout, BorderLayout and BoxLayout

Nest containers and layout managers to form more complex GUI layouts

Separate a complex design into its component containers and layout managers

Lesson 13:Graphicsin Java

Objectives

Identify the AWT class structure for graphics

Gain access to a container’s graphic context by overriding the paint(Graphics g) method

Use methods of the Graphics class via the graphics context

Effectively use the Color and Font classes

Graphics Class

The graphics context is used to access the functionality of the Graphics class (an abstract class)

Graphics Class Methods

draw3DRect()

drawArc()

drawLine()

drawOval()

drawPolygon()

drawPolyline()

drawRect()

drawRoundRect()

fill3DRect()

fillArc()

fillOval()

fillPolygon()

fillRect()

fillRoundRect()

Other Classes

Color setColor()

Font setFont()-FontMetrics

Summary

Identify the AWT class structure for graphics

Gain access to a container’s graphic context by overriding the paint(Graphics g) method

Use methods of the Graphics class via the graphics context

Effectively use the Color and Font classes

Lesson 14:The Event

Delegation Model

Objectives

Describe the event delegation model

Create listener classes that can respond to events

Register listener classes with their Component sources

Capture events and deal with them in meaningful ways

What Is an Event?

What caused the event?

What was the exact nature of the event?

Is additional information available about the event?

JDK 1.0 Event Handling

Tightly coupled with the AWT

Inefficient

General

Unruly

Code and event handling could not be separated

SDK 1.2 Event Handling

Generating the event object

Sending the event object to the listener

Preparing the listener to receive the event

Example: Creating a closeable JFrame

JFrame convenience methods for event handling

Example: Event handling and callbacks

Summary

Describe the event delegation model

Create listener classes that can respond to events

Register listener classes with their Component sources

Capture events and deal with them in meaningful ways

Lesson 15:Inner

Classes

Objectives

Define an inner class

Recognize the advantages of inner classes over package-level classes in relation to event handling

Design and implement inner classes for event handling

What Is an Inner Class?

A class defined within other classes

Introduced with the SDK 1.2

Inner Classes for Event Handling

Member inner classes

Anonymous inner classes

Summary

Define an inner class

Recognize the advantages of inner classes over package-level classes in relation to event handling

Design and implement inner classes for event handling

Lesson 16:Java

Applets

Objectives

Compare and contrast Java applets and applications

Implement the life cycle of an applet through its inherited methods

Embed an applet into an HTML document

Pass parameters from an HTML document to its contained applet

Identify applet security restrictions

Convert an applet into an application

JApplet Class Hierarchy

Object

Component

Applet

Panel

Container

JApplet

Applets and Web Browsers

Applets do not have a main() method

Applets have a life cycle

Applets are started from HTML pages, and receive information from HTML pages

Because they are program code, applets should not be trusted

Converting an Application into an Applet

Use init() method to perform instantiation

Instantiating the applet is unnecessary

Applets must be derived from JApplet

Applet size should be set within the HTML document (the Web browser makes it visible)

Applets must be declared public

Converting an Applet into an Application

By adding an instance of the JApplet to the JFrame and calling its init() and start() methods, the conversion from JApplet to stand-alone JFrame readily takes place

Summary

Compare and contrast Java applets and applications

Implement the life cycle of an applet through its inherited methods

Embed an applet into an HTML document

Pass parameters from an HTML document to its contained applet

Identify applet security restrictions

Convert an applet into an application

Lesson 17:Exceptions

Objectives

Differentiate between errors and exceptions

Differentiate between runtime exceptions and explicit exceptions

Propagate an exception using the throws statement

Handle an exception using the try/catch statement

Create and use a user-defined exception

What Is an Exception?

Exceptions

- Runtime exceptions (unchecked)

- Other exceptions (checked)

Exception Class Hierarchy

HandlingExceptions

Ignore the Exception

Handle the Exception with a try/catch statement

Throw the Exception to the calling method

Handle the Exception and rethrow it to the calling method

Creating User-Defined Exceptions

Creating the exception

Throwing the exception

Exception handling tips

Exception Handling Tips

Use simple tests instead of try/catch

Choose user-defined exceptions wisely

Use one try/catch block for multiple exceptions

Do something meaningful with caught exceptions

Summary

Differentiate between errors and exceptions

Differentiate between runtime exceptions and explicit exceptions

Propagate an exception using the throws statement

Handle an exception using the try/catch statement

Create and use a user-defined exception

Lesson 18:Creating Threads

and Thread Methods

Objectives

Define threads

Create and instantiate threads using two different techniques

Control single-thread flow

Define the four thread states and their relationships to thread methods

What Are Threads?

Multitasking

Multiprocessing

Multithreading

How Operating Systems Handle Multitasking

Pre-emptive multitasking

Cooperative multitasking

Types of Threads in Java

Daemon thread

User thread

- Main thread

- Other user threads

The Main Thread

main thread

user thread user thread

user thread user thread

Creating Threads

Subclassing the Thread class

Implementing the Runnable interface

Which technique?

Thread States

New Thread

Dead

Not RunnableRunnable

stop( )

start( )

stop( )

suspend()

resume( )

yield( )

stop( )

Summary

Define threads

Create and instantiate threads using two different techniques

Control single-thread flow

Define the four thread states and their relationships to thread methods

Lesson 19:Thread

Synchronization

Objectives

Define synchronization in relation to object monitors

Control thread racing using thread synchronization

Convert non-atomic to atomic processes to avoid thread racing

Use sophisticated methods for controlling threads

Stop, suspend and resume threads

Explain thread deadlock

What Is Thread Synchronization?

Controlling threads in a predictable manner

Thread Racing

Two threads trying to access the same data

Synchronized and the Object Monitor

synchronized keyword

Threads waiting in a queue to obtain an objects monitor

All synchronized methods of an object use a single monitor

Thread Race Condition

Competing for resources

Synchronizing the methods

Atomic processes

Sophisticated Thread Synchronization

Consumer/producer scenario

Stopping, Suspending and Resuming Threads

Stopping a thread

Suspending a thread

Resuming a thread

Deadlocks

ObjectA{ synchronized methodA()}

ObjectB{ synchronized methodB()}

Thread1 Thread2

blocked

blocked

Summary

Define synchronization in relation to object monitors

Control thread racing using thread synchronization

Convert non-atomic to atomic processes to avoid thread racing

Use sophisticated methods for controlling threads

Stop, suspend and resume threads

Explain thread deadlock

Lesson 20:Streams and Serialization

Objectives

Define a stream

Differentiate between byte streams and character streams

Recognize the abstraction of byte streams through the InputStream and OutputStream classes

Recognize the abstraction of character streams through the Reader and Writer classes

Create and use file objects

Objectives (cont’d)

Use System.in and System.out to perform stream operations

Nest streams using wrapper classes to enhance basic stream behavior

Perform file I/O

Define object serialization

Use serialization to save an object to a file

Explain the transient keyword

What Is a Stream?

A path of information from a source to a destination

InputStream, OutputStream, Reader and

Writer JDK 1.0 (bytes)

-InputStream-OutputStream

JDK 1.1 (characters)

-Reader-Writer

Files

Instantiating a file object

Working with a file object

- Methods of File- Directories

-FileDialog/FileChooser

Stream Classes of java.io.*

System.in and System.out

Reading bytes from System.in

Converting a byte stream into a character stream

Wrapper streams

File I/O

Serialization

The process of object serialization

- Marking an object for serialization

- Writing the object to file

- Reading the serialized object from a file

Transient variables and security

Summary

Define a stream

Differentiate between byte streams and character streams

Recognize the abstraction of byte streams through the InputStream and OutputStream classes

Recognize the abstraction of character streams through the Reader and Writer classes

Create and use file objects

Summary (cont’d)

Use System.in and System.out to perform stream operations

Nest streams using wrapper classes to enhance basic stream behavior

Perform file I/O

Define object serialization

Use serialization to save an object to a file

Explain the transient keyword

Lesson 21:Networking

in Java

Objectives

Define networking, IP addresses, the Domain Name System, and ports

Discuss the socket model and socket-to-socket communication

Explain the client/server model

Write a single-threaded client/server echo system

Write a multithreaded client/server echo system

What Is Networking?

Computers communicating across distances

Java networking

- TCP/IP

- UDP

Connecting Computers Across the Internet

IP addresses

- Dotted quad

- 32 bits

- IPv6

DNS

Sockets

Well-known ports

Well-Known Ports and Their Protocols

Port Protocol

21 FTP

23 Telnet

25 E-mail

79 Finger

80 HTTP

119 NNTP/Usenet

Networking Classes of java.net.*

Common networking classes

-InetAddress-Socket-ServerSocket

The Java Client/Server Model

Server

- Delivers information

-ServerSocket object

-accept method returns a socket

Client

- Requests information from the server

- Connects to server with socket

Building the EchoServer

The client

- Step 1: getConnection- Step 2: sendMessage- Step 3: receiveMessage

The server

- Step 1: getConnection- Step 2: receiveMessage- Step 3: sendMessage

MultithreadingYour Client/Server Model

Modifications to the server

The Connection class

The Client class

Running the threaded client/server example

Summary

Define networking, IP addresses, the Domain Name System, and ports

Discuss the socket model and socket-to-socket communication

Explain the client/server model

Write a single-threaded client/server echo system

Write a multithreaded client/server echo system

Java Programming Fundamentals

Java Runtime Environment

Data Types, Variables and Operators

Control Statements

Methods

Arrays

Classes and Objects

Inheritance

Constructors

Java Programming Fundamentals (cont’d)

Interfaces and Abstract Classes

Packages and Access Modifiers

Swing Components

Layout Managers

Graphics in Java

The Event Delegation Model

Inner Classes

Java Applets

Exceptions

Creating Threads and Thread Methods

Thread Synchronization

Streams and Serialization

Networking in Java

Java Programming Fundamentals (cont’d)