Customized Java 5 and Java 6 Training Courses

“Wonderful.  In 20 years,
this is the best organized,
most pragmatic and
enjoyable course I've taken.”

“The best instructor-led
course I have attended, by far.”

“Best short course ever!”

more student reviews

Here are the potential topics covered in the Java 5 and Java 6 programming courses taught by Marty Hall. If you have a group of at least eight interested developers (10 for courses outside the US or Canada), contact Marty to arrange a course at your location.

Please note that topics can be added or removed to fit the interest and experience of your developers, and topics from this course can be combined with topics from other related J2EE courses. For example, some organizations want coverage of basic Java 5 or Java 6 programming combined with basic servlet and and JSP topics. Others want to cover only the most fundamental Java and servlet/JSP topics and then move on to Ajax and GWT, JSF, or Struts. However, the syllabus below gives an idea of the most popular Java-only option.


Syllabus

Introduction to and Overview of Java

  • Truths / Myths About Java
    • Java is Web-Enabled?
    • Java is Safe?
    • Java is Cross-Platform?
    • Java is Simple?
    • Java is Powerful?
  • Common Java Protocols and Packages
  • Getting Started
    • Applications
    • Applets

Basic Java Syntax

  • Creating, compiling, and executing simple Java programs
  • Accessing arrays
  • Looping
  • Indenting code
  • Using if statements
  • Comparing strings
  • Building arrays
    • One-step process
    • Two-step process
    • Multidimensional arrays
  • Performing basic mathematical operations
  • Reading command-line input

Basic Object-Oriented Programming in Java

  • Similarities and differences between Java and C++
  • Object-oriented nomenclature and conventions
  • Instance variables (data members, fields)
  • Methods (member functions)
  • Constructors
  • Destructors (not!)

Object-Oriented Programming in Java: More Capabilities

  • Overloading
  • Designing "real" classes
  • Inheritance
  • Quick intro to advanced topics
    • Abstract classes
    • Interfaces
    • Understanding polymorphism
    • Setting CLASSPATH and using packages
    • Visibility modifiers
    • Creating on-line documentation using JavaDoc

More Java Syntax and Utilities

  • Mutating vs. returning results
  • Data structures
    • ArrayList
    • LinkedList
    • HashMap
  • Generics
  • printf
  • varargs
  • String vs. StringBuilder

Applets and Basic Graphics

  • Applet restrictions
  • Basic applet and HTML template
  • The applet life-cycle
  • Customizing applets through HTML parameters
  • Methods available for graphical operations
  • Loading and drawing images
  • Controlling image loading

Java Deployment Options

  • Individual .class files
  • JAR files
  • OS wrapper around class files or JAR files
  • Applets
  • Java Web Start
  • Server-based Alternatives
  • Details: Java Web Start

Asynchronous Event Handling

  • General event-handling strategy
  • Handling events with separate listeners
  • Handling events by implementing interfaces
  • Handling events with named inner classes
  • Handling events with anonymous inner classes
  • The standard AWT listener types
  • Subtleties with mouse events

AWT Components

  • Basic AWT windows
  • Creating lightweight components
  • Closing frames
  • Using object serialization to save components to disk
  • Basic AWT user interface controls
  • Processing events in GUI controls

Layout Managers

  • How layout managers simplify interface design
  • Standard layout managers
  • Positioning components manually
  • Strategies for using layout managers effectively

Java 2D

  • Drawing Shapes
  • Paint Styles
  • Transparency
  • Using Local Fonts
  • Stroke Styles
  • Coordinate Transformations
  • Requesting Drawing Accuracy

Basic Swing

  • New features
  • Basic approach
  • Starting points
    • JApplet, JFrame
  • Swing equivalent of AWT components
    • JLabel, JButton, JPanel, JSlider
  • New Swing components
    • JColorChooser, JInternalFrame, JOptionPane, JToolBar, JEditorPane
  • Other simple components
    • JCheckBox, JRadioButton, JTextField, JTextArea, JFileChooser

Advanced Swing and MVC

  • Building a simple static JList
  • Adding and removing entries from a JList at runtime
  • Making a custom data model
  • Making a custom cell renderer

Multithreaded Programming

  • Why threads?
  • Approaches for starting threads
    • Separate class approach
    • Callback approach
  • Solving common thread problems
  • Synchronizing access to shared resources
  • Thread life cycle
  • Stopping threads

Multithreaded Graphics and Animation

  • Approaches for multithreaded graphics
    • Redraw everything in paint
    • Have routines other than paint draw directly on window
    • Override update and have paint do incremental updating
    • Double buffering
  • Reducing flicker in animations
  • Implementing double buffering
  • Animating images
  • Controlling timers

Network Programming - Clients

  • Creating sockets
  • Implementing a generic network client
  • Parsing data
    • StringTokenizer
    • String.split and regular expressions
  • Retrieving files from an HTTP server
  • Retrieving Web documents by using the URL class

Network Programming - Servers

  • Steps for creating a server
  • A generic network server
  • Accepting connections from browsers
  • Creating an HTTP server
  • Adding multithreading to an HTTP server

Network Programming - Serialization

  • Idea
  • Requirements
  • Steps for sending data
  • Steps for receiving data

XML Parsing and DOM

  • Options for input files
  • XML overview
    • Comparing XML with HTML
  • Parsing an XML document
    • Creating a DocumentFactory and Document
  • Extracting data from parsed Document
    • Known structure, attribute values only
    • Known structure, attribute values and body content
    • Unknown structure

Invoking OS-Specific Programs and Native Methods

  • Integration options
  • Invoking native programs
  • Calling native functions