Public (Open Enrollment) Training:

Java Programming: A Crash Course

October 6-10 2008, Laurel MD


Extra session August 18-22 2008. The public course was scheduled for October 6-10, but we added a special session August 18-22 at the request of a client. If you are interested in joining the August session, please email Marty at hall@coreservlets.com.

“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

This page describes the public (open enrollment) training course on Java 5 programming to be held October 6-10 at JHU/APL in Laurel, Maryland. The entire course is personally developed and taught by leading Java developer, speaker, and author Marty Hall. No contract instructor teaching someone else's materials! Marty has taught this course onsite for dozens of organizations in the US, Canada, Mexico, Australia, Japan, Puerto Rico, and the Philippines, all to rave reviews.

If you are looking for customized Java enterprise training courses taught on-site at your company, please see this page.

Register Early! Five of Marty's previous public short courses were full, so reserve your spot today. Registrations are taken in the order they are received.


Overview

Marty normally runs on-site training courses at customer locations. This is easier administratively, is better for clients since the topics can be customized, and is more cost effective for students since no travel is required. However, due to demand from those who do not have enough students for an on-site course, Marty will be running a public (open enrollment) Java 5 training course October 6-10 2008.

The course is developed and taught by Marty Hall, and experienced developer, award-winning instructor, popular conference speaker (5 times at JavaOne), and author of several popular Java books.

Venue

The course will be held at the Johns Hopkins Applied Physics Lab in Laurel Maryland (between Baltimore and Washington, 15 minutes from BWI airport). This is a modern, comfortable venue with separate computers for each student, fast internet connections, and several nearby hotels.

Registration

The 5-day course costs $2395 per student and includes an extensive course notebook, a commercial Java textbook, exercises, and exercise solutions. Compare this price to courses from Sun, Learning Tree, GlobalKnowledge, and Oracle University that cost around $2400 for 4-day courses and $3000 for 5-day courses. Besides, those courses use an unknown instructor who did not develop the course materials and often lacks significant real-world Java development experience.

To register, fill out and send in the course registration form. Space is limited: five previous offerings of Marty's courses were full. Bonus: Register by October 15 and get a $50 gift certificate from amazon.com.

Prerequisites

The course consists of an approximately equal mixture of lecture and hands-on lab time. The course assumes that all students are experienced programmers in some language: this is not a course for first-time programmers. Experience with C, C++, or C# is particularly helpful.

More Information


  • Want details on the topics? See the detailed curriculum below.
  • Have questions on the topics even after reading that? Email the instructor at hall@coreservlets.com.
  • Want information on the instructor? See this brief bio. Please note that the instructor personally developed all of the course materials and exercises. You won't get a contract instructor presenting someone else's materials.
  • Want to register? See the course registration form.
  • Registration questions? Email the registrar at registrar@coreservlets.com or phone (410) 429-5535.

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

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
  • Using try/catch blocks
  • Loading and drawing images
  • Controlling image loading

More Java Syntax and Utilities

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

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

Organizing Windows with Layout Managers

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

Drawing with Java 2D

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

GUIs: 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

GUIs: 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: Using Serialization to Send High-Level Data Structures

  • 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