Chiefly, learn to program effectively in the Java language
Understand the Java software architecture, and the design decisions which make Java software portable, efficient, secure and robust
Learn how to configure a simple Java development environment
Know the grammar, data types and flow control constructs of the Java language
Understand Java as a purely object-oriented language
Learn how to program GUIs using Java, including using event handling to connect the GUI to an underlying data model
Understand the structure of streams in Java, and learn how to use streams to manage file I/O
This course description should be used to determine whether the course is appropriate for you based on your current skill and technical training needs. Technical information is provided on the intended audience, course prerequisites, and covered topics. Course content, prices, and availability are subject to change without notice.
Course Audience
This course is intended for programmers with experience in languages other than Java, who may or may not have any previous Java experience.
Course Description
The course includes a detailed study of the object oriented aspects of Java, with a case study that is carried from analysis and design (presented in UML) to implementation in Java. The course incorporates treatment of the major Java tools including javac, java, jar and javadoc. There are numerous example programs and lab exercises, all of which are fully documented using javadoc. The course is entirely platform independent and targets the Java 2ä platform. (Almost all the material applies well to Java 1.1, and differences between the platform versions are highlighted.) The course consists of five modules, which are also available independently.
The first module introduces the Java software architecture, including the Java Virtual Machine, Java Runtime Environment, Core API, and the Java Developer’s Kit. Students learn to configure a Java development and runtime environment and to use the JDK command-line tools, and learn the basic software development process for Java.
The second module covers the fundamentals of the Java language, focusing on its grammar, data types, and procedural aspects such as flow control (including exception handling) and threads. By the end of the module students are building simple, practical Java classes and applications.
The third module covers Java as an object-oriented language. The module includes an optional primer on object-oriented methodology and concepts, and then looks at Java as an object-oriented implementation language, including classes, construction, visibility, inheritance, polymorphism, interfaces, abstract classes, and type identification. Lab work moves from analysis and design of a case study to implementation as a Java package of several classes including an application class that implements a command-line interface.
The fourth module introduces GUIprogramming in Java, starting with the Abstract Windowing Toolkit and moving through chapters on layout management, event handling, and Java Applets. The case study introduced in the previous module is expanded considerably, as a GUI interface is connected to the model, custom events and handlers are added to the model, and the resulting application-driven GUI is rewrapped and delivered via JAR file as an applet.
The fifth module introduces the Java Streams model. First the delegation-based stream model itself is covered, and successive chapters look at use of this model in raw file I/O operations and finally at Java Serialization. The case study is again expanded, finally to include dump and load of the entire application dataset through serialization.
Course Objectives
At course completion the student will be able to perform the following tasks:
Chiefly, learn to program effectively in the Java language
Understand the Java software architecture, and the design decisions which make Java software portable, efficient, secure and robust
Learn how to configure a simple Java development environment
Know the grammar, data types and flow control constructs of the Java language
Understand Java as a purely object-oriented language
Learn how to program GUIs using Java, including using event handling to connect the GUI to an underlying data model
Understand the structure of streams in Java, and learn how to use streams to manage file I/O
Prerequisites
Experience with some programming language other than Java, on any current operating system for which a JVM is available (including all Windows flavors and most Unix flavors). No Java programming experience or reading is required. C and C++ programmers will probably find that their natural pace through the course is a little faster.
TOPICS COVERED IN LECTURE & LAB
Module 1: The Java Software Architecture
The Java Virtual Machine
Overview of Architecture
Java Virtual Machine
Java Runtime Environment
The Core API
Java Developer’s Kit
Portability and Efficiency
Security
Robustness – Language Features
Building Java Software
Packages
Tools
JARs
Security Model
Module 2: The Java Language
Fundamentals
Source File Format
Intro to Classes
Fields and Methods
Code Grammar and Expressions
Identifiers
Operators
System Class
Data Types
Primitive Types
Type Conversion
Object References
Comparing and Assigning References
Garbage Collection
Strings
Arrays
Flow Control
Call and return
Conditional Constructs
Looping Constructs
Exceptions
Threads
Java Thread Model
Creating and Running Threads
Manipulating Thread State
Creating Thread Classes
Thread Synchronization
Module 3: Object-Oriented Programming in Java
Object-Oriented Analysis and Design
Complex Systems
Abstraction
Classes
Responsibilities and Collaborators
Relationships
Visibility
Simple UML
Polymorphis
Encapsulation in Java
Java Classes
Member Visibility
Static Members
Constructors and Finalizers
Overloading Methods
Collection Classes
Inheritance and Polymorphism in Java
Extending Classes
Superclass Reference
Overriding Methods and Polymorphism
Defining and Implementing Interfaces
Abstract Classes
Type Identification
Inner Classes
Motivation
Named Inner Classes
Outer Object Reference
Anonymous Inner Classes
Module 4. Java Graphical User Interfaces
The Abstract Windowing Toolkit
Components
Containers
Frames
Controls
Menus
Dialogs
Layout Management
LayoutManager Interface
Implicit Use of LayoutManager
Standard Layout Managers
Custom Layout Manager
Events
Java Event Model
Event Types
Listeners
Sources
Connections
Custom Event Types
Applets
Applet Class
Applet Context
Applet Security
Distribution Using JARs
Module 5. Java Streams
The Java Streams Model
InputStream and OutputStream
Delegation-Based Stream Model
Media-Based Streams
Filtering Stream
Working with File Systems
File Class
Modeling Files and Directories
Chaining Streams to Files
Input and Output
Java Serialization
Serializable Interface
ObjectInputStream and ObjectOutputStream
Introduction to Reflection
The Serialization Engine
Transients and Initialization Hooks
Appendices
Appendix A. References
Appendix B. Using javadoc
Doc Comments
Tags
Cross-References
Package Documentation
Docfiles and Sample Code
Appendix C. The Car Dealership Case Study - Summary