Intensive Java Programming


     Prepared by     doug@mscs.mu.edu Douglas Harris   

Notes       Homework Assignments       ClassList      

Our purpose in these 6 weeks will be to cover some of the topics in Java programming that are beyond the standard ones that should be well-known to most of you. We will especially look in to the way in which the structure of the Java platform itself provides security, and into features such as persistence that are now a very integral part of that platform. We will also go through an overview of the platform and its latest JDK1.1 implementation, and consider some of the many directions in which that platform is moving during the next few Java-years (about 6 months!).

You should notice at first that I am not talking about Java as a language, but as a platform. This is because from the beginning it was intended that all aspects of the use of Java programs be taken in to account, and the language was developed with very specific ideas in mind of how its programs would be designed, compiled, transported, installed, and run, and a truly distributed architecture was considered from the beginning.

We look architecturally at organizing our Java code into packages, which fit more generally into a system of isolated namespaces that are an integral part of the security of the platform. Every Java compiler knows about these namespaces, and they are reflected in the way Java code is stored in and transported to systems. There is a system of access permissions to methods and variables that relates closely to these namespaces.

There is a very good tutorial which we will be referring to on occasion, and it is also useful for your reference on details of Java that we do not cover in class. There are a number of other reference materials that you can peruse as we get to the topics involved.

There are a number of issues regarding the need for cross-platform transportability of code, that we will also be considering during the course.

Day by day notes are being provided, and there is also a set by our Teaching Assistant, Jie Chen.

Lectures

Week One

Overview: Java and the Java APIs
First we need to understand layered structure
User/Provider/Agent
Application Provider Interface
Service Provider Interface
The Core APIs
The Standard Extension APIs
Idioms
Observable/Observer
Model/View/Controller
Publish/Subscribe
EventSource/Event/EventListener
Containment: in the AWT and the Event model
java.awt.Component
java.awt.Container
handleEvent()
Delegation: Event Model
java.awt.AWTEvent
java.awt.XXXListener
addXXXListener()

Week Two

java.applet
We look at Applets here primarily to understand the issues that transportable executable programs present, and how the Java platform model addresses those issues.
Java Virtual Machines
java.lang.ClassLoader
java.lang.SecurityManager

Week Three

SlideShow
A system that uses the ideas we have discussed so far: Observable/Observer:Interface/Callback:Applet
Layout: LayoutManager
Image/ImageProducer/ImageConsumer/ImageObserver

Week Four

Dictionary/Hashtable/Properties
Persistence/Serialization
Locale

Week Five

Public/Private Keys
Signing:
Sealing:
Certifying:

Week Six

Internet Foundation Classes:

Assignments


There will be a problem assignment given at the end of each of the first five weeks, due at the end of the following week, and you should maintain a Web site on which you collect materials relative to the course. Each of the assignments will be worth 15% of your grade, and the Web site will count for 25%. Everything will be graded first on accuracy and completeness, then on originality and ingenuity.


Created June 29, 1997