Skip to content

Java Technology and Development Courseware: Now DonationWare


I am opening up old courseware to the world on a “pay if you like it” or have it free basis.

My fifth offering is Java Technology and Development.

(You will find other offerings in this site tagged with DonationWare.)

This course was started in ~1996 as Java was becoming popular. I stopped hacking it sometime around 2002, so it had a pretty good run. This version is from sometime in 2001 (it was pretty much the first “reasonably up-to-date” copy I found in my archive…actually a big pile of CDs).

This course had a lot of mileage: it went around Australia and the US many times, it went around various bits of Asia a couple of times and it went to NZ a few times.

It was used by a team of presenters, each of whom presented it very differently (interestingly enough), and contributed bits and pieces and bugfixes to it (thanks, guys!). Nonetheless, it retained my somewhat cynical/quirky view of the Java Universe.

It was presented under a few different banners. Never under the transentia banner in Australia.

It was even ‘informally’ licensed (meaning I pretty much got ripped-off!) to a US company for their purposes (whatever they were…I never really found out).

I have also presented Java courseware for a number of other organisations and I still believe that this is the best.

I remember presenting it for the very first time, to a local ISP in Darwin. After discussing Applets, I was talking about how Applets could be used to build a Tsunami-style D.O.S. attack and bring down a whole network. Suddenly one participant jumped up and walked out and I didn’t see him for quite a whle. Turns out that he was the owner of the company. He later explained that he had just spent a day madly reconfiguring his servers and network to be more resistant to the type of attack I had been talking about. I really scared the poor guy!

When the course first burst onto the world, the course participants were all keen and clever “early adopters”: for exercises, it was enough to say “Here is a Java compiler, go build me an ‘X’.” and everyone had fun, and learned lots along the way. By the time I knocked it on its head–no more early adopters were coming through and in some cases we had to deal with people who simply didn’t want to know but were being told to follow the company line–the exercises were having to be specified a lot more completely (it seemed like we had to detail practically every keypress and mouse movement). It wasn’t so much fun at the end, sad to say!

I also recall telling my colleagues about one participant that really did not know how to use her mouse (this makes life really hard for an instructor; to this day, the phrase “No. Use the other mouse button.” has significance to us) and they were scoffing at me, thinking I was exaggerating. Until the time when one poor guy came back from presenting the course for the first time and said: “I was really shocked. I always thought you were laying it on thick, but some of these participants didn’t even know how to type, let along program.” I paraphrase, but you get the idea.

Fun days…

Enough reminiscing! Here’s the ‘blurb’:

Java Technology and Development

A five-day hands-on overview of the Java language and environment


Programmers, Technical IT Managers, World-Wide Web Administrators and Developers, other IT Personnel and Consultants.


The Java programming language attracts enormous interest throughout the on-line community. IT professionals are also recognizing the importance of such technologies. This course will provide an understanding of what Java is, its history, how it works and is used, its application areas, industry support, competing technologies, and so forth.

The course includes a number of practical exercises spread over the five-day period.


The aim of this course is to provide a proper description and overview of Java as a programming language and distributed system technology. At the end of the course the student will have a sufficient understanding of Java to enable him or her to undertake software development using Java in various situations, including the development of executable content for the World-Wide Web and the construction of stand-alone applications.

Note: Java is strongly derived from C so knowledge of C or C++ is needed for this course.

Day One: The Java Language

An Overview of Java

An examination of why Java is the sensation it is; where it came from and what it can do:

  • history
  • comparing Java to other languages
  • buzzwords: simple, object-oriented, distributed, robust, secure, architecture neutral, portable, interpreted, high-performance, multithreaded, and dynamic.

The Basic Java Language

An overview of the more straightforward of Java’s features together with a brief comparison of Java with its ancestors: C/C++:

  • tokens
  • reserved words
  • types and data values
  • operators
  • garbage collection

Java Tools

A look at Sun’s Java Development Toolkit (JDK):

  • why choose the JDK?
  • JDK for Windows95/NT4:
    • appletviewer
    • javac
    • javah
    • java
    • javadoc
    • javap
    • jdb
    • rmic
    • jar
    • javakey

A quick look at some other tools:

  • IBM VisualAge for Java
  • Microsoft Visual J++

Programming Java Applications

Writing standalone applications in Java:

  • program structure and environment
  • application versus applet
  • a whole new phylum: aglets, servlets, beans

More Basic Java

More data types:

  • arrays
  • strings

The flow of control:

  • if, switch, for, while, do
  • labeled statements

Some of the changes Java 1.1 has brought to the language:

  • desktop colors
  • internationalization
  • deprecated features
  • ‘blank’ finals
  • anonymous arrays
  • type wrappers

Day Two: More Java Language/Java Applets

Object-Oriented Programming with Java

An examination of the features that make Java an Object-Oriented language:

  • classes and objects
  • constructors and object finalization
  • methods, overriding and parameter passing
  • initializers
  • inheritance and the IS-A/HAS-A relationships
  • accessing run-time type information
  • encapsulation: packages visibility modifiers and techniques
  • abstract classes
  • interfaces

The New Java 1.1 Object-Oriented Features

Java 1.1 introduced a number of features that substantially increased the power and flexibility of the language:

  • reflection
  • inner classes:
    • nested top-level classes
    • member classes
    • local classes
    • anonymous classes
  • instance initializers

More Java Language

An examination of the ways in which Java promotes creating robust software:

  • exceptions
  • using and understanding threads:
    • the Runnable interface
    • synchronization: mutual exclusion and critical sections
    • conditions

Java Applets

Java and executable content on the World-Wide Web:

  • applet capabilities
  • the <APPLET> tag
  • responsive applets
  • dual-purpose applets and applications

Day Three: User Interfaces & Java’s Abstract Windowing Toolkit

An AWT Overview

A look at the basic concepts underlying Java’s “window on the world”:

  • the Abstract Windowing Toolkit (AWT):
    • aim
    • fundamental organization

Using Java for simple graphics programming:

  • primitive graphics tools
  • sounds in applets

Multimedia and Interactivity

Multimedia is one of the driving forces behind Java:

  • color handling
  • fonts
  • images
  • animation and double buffering

More AWT

The building blocks of a Java User Interface:

  • components:
    • button
    • checkbox
    • scrollbar
    • menu
    • label, text area and text field
    • canvas
  • containers:
    • panel
    • frame
    • window
    • dialog
  • event handling
  • layout managers

AWT Enhancements

The enhancements and changes that Java version 1.1 introduced:

  • a new event model
  • delegation
  • listeners and adapters
  • lightweight components
  • printing
  • data transfer; copy and paste; drag and drop

Java Foundation Classes

  • Java 2D
  • model-view-controller paradigm
  • ‘swing’ components
  • drag & drop

The Stream Zoo

A look at some of the many classes for handling input/output:

  • standard streams
  • “mix & match” capabilities
  • files
  • random access streams
  • tokenizers
  • serialization and externalization
  • writer classes

The Java Utility Classes

An overview of the classes supplied to remove the need for developers to have to “reinvent the wheel”:

  • type wrappers
  • vector
  • enumeration
  • hashtable
  • property
  • random, stack, date, bitset
  • Java Collection Classes

Day Four: Advanced Java Programming

Java Beans

An introduction to the Java-based component software infrastructure:

  • why Java beans?
  • properties:
    • simple
    • indexed
    • bound
    • constrained
  • events
  • methods
  • the BeanInfo class


An examination of why and how Java claims to be a secure programming environment for the World-Wide Web:

  • the sandbox
  • the bytecode verifier
  • the class loader
  • the security manager
  • hostile attacks
  • code signing
  • access control lists

Java Database Connectivity

A look at interfacing Java with SQL-based relational databases:

  • the DriverManager class
  • drivers
  • connections
  • statements
  • SQL Utility classes
  • ResultSet handling
  • metadata

Native Code

A look at the facilities that exist to allow Java to interact with other programming environments:

  • Java Native Interface
  • Java invocation API

Day Five: Distributed Systems Using Java

Java features aimed at making the development of distributed systems easier:

  • URL
  • URLConnection
  • sockets:
    • clients
    • servers
  • Remote Method Invocation
    • naming
    • clients
    • servers
    • stubs & skeletons
    • security
  • Servlets
  • Enterprise Java Beans
  • Java and CORBA

The Future

An overview of some of the exciting developments currently happening in the Java world, such as JDBC, the “100% Java” initiative and the Network Computer.


The course is now well and truly at End of Life.

I figure that it would be such a pity for it to end as a set of bits decaying away on my hard disk so I am opening it up to the world on as “as-is” basis:

(MD5: 197bf97bf6020c2ca2ba440f87b59790; size: 6,615,799 bytes)

Some (unfortunately necessary) legalese:

  • This content is provided “as-is”, with no guarantees.
  • Feel free to use it, but not to abuse it (to give a couple of examples: don’t make hundreds of copies for friends; don’t claim it as your own work).
  • I retain copyright, so “all rights reserved.”


If you like it, or have any questions/comments, send me an email ().

If you find this material useful, please consider paying me a small amount: via PayPal.

Tags: ,

C, Java Enterprise Edition, JEE, J2EE, JBoss, Application Server, Glassfish, JavaServer Pages, JSP, Tag Libraries, Servlets, Enterprise Java Beans, EJB, Java Messaging Service JMS, BEA Weblogic, JBoss, Application Servers, Spring Framework, Groovy, Grails, Griffon, GPars, GAnt, Spock, Gradle, Seam, Open Source, Service Oriented Architectures, SOA, Java 2 Standard Edition, J2SE, Eclipse, Intellij, Oracle Service Bus, OSB