COMPUTER SCIENCE
DEPARTMENT
COURANT INSTITUTE OF
MATHEMATICAL SCIENCES
EXTREME JAVA
G22.3033-006 - Spring
2003
Mon.
Jean-Claude FRANCHITTI
COURSE DESCRIPTION:
This course is designed for programmers already familiar with
the Java language and class libraries. Java-related topics include a broad and
in depth coverage of the following areas:
·
Advanced Java language features (e.g., threads, exception
handling and assertions), and upcoming (“Tiger” 1.5) new features (e.g.,
generics).
·
Java tools (e.g., JPDA, Javadoc, Java Help, ECPerf, JavaCC,
Ant, JUnit, Cactus), Java IDEs (e.g., Eclipse, NetBeans, Sun ONE Studio,
JBuilder, Visual Age for Java, VisualCafé, Codewarrior for Java, WebGain
Studio, ModelJ, J2ME Wireless Toolkit) and mainstream software engineering
techniques (e.g., Model Driven Architectures, Agile Modeling, Extreme
Programming, Aspect-Oriented Programming, Refactoring, CMM and Business Process
Improvement Lifecycles, Team Software Process, Project Management, Environments
Setup, Resources Selection, and
Packaging).
·
J2SE core technologies and optional packages (e.g., JFC,
Swing, Collections Framework, Drag and Drop, JavaBeans, JNI, JMF), and Java
Generative Programming Technology.
·
Distributed enterprise communications via J2EE (e.g., Java
IDL, CORBA, RMI/IIOP, JAF, JNDI, JMS, JTA/JTS, security via JAAS/JCE/JSSE).
·
Enterprise Web and application enabling (e.g., Java Web
Start, servlets, JSPs, Java Server Faces, Jakarta Struts, EJBs, J2EE Connector
Architecture, Java XML Pack, JAXB), Web Services Developer Pack, EAI/B2Bi, J2ME
CLDC and CDC technology, J2EE implementations (e.g., JBOSS, Sun ONE Application
Server, BEA WebLogic, WebSphere), and related blueprints programs.
·
Database technologies (e.g., JDBC, Java Data Objects, SQLJ,
EJB-QL, Jakarta-OJB).
·
Operating systems and networking technologies (e.g., Java
Hotspot VM, Jini, JXTA, Jiro, Java agents, JMI, JavaSpaces, JMX).
Students will experiment with various Java tools and
technologies to create Java programs on various platforms. All instruction and
development will be based on the J2SE 1.4.1, J2EE 1.4, and J2ME CLDC/CDC 1.0.
Through a set of assignments and projects, students will implement the various
components of a sample web-enabled and Java-based enterprise application.
COURSE OBJECTIVES
The objectives of the
course are as follows:
1. Expand the students' understanding and
exposure to the Java programming language and class libraries.
2. Expose the students to the latest Java tools
and software engineering techniques.
3. Expand the students' understanding of Java
advanced core technologies.
4.
Expose the students to the advanced capabilities of the
Java 2 development environment for Enterprise Applications.
5.
Demonstrate the application of Java 2 in distributed
communications enabling, web enabling, and enterprise data enabling.
6.
Expose students to enterprise Applications enabling and enterprise
systems assurance.
7.
Broaden students’ knowledge of applied Java patterns, bug
avoidance, real-time programming, performance enhancements for enterprise Java
applications.
TEXTBOOKS
Mastering
Java 2, J2SE 1.4
John
Zukowski
Sybex,
ISBN: 078214022X,Book and CD-ROM Edition (04/02)
J2EE:
The Complete Reference
James
Keogh, Jim Keogh
McGraw-Hill
Osborne Media, ISBN: 007222472X, 1st Edition (09/02)
Expert
One-on-One: J2EE Design and Development
Rod Johnson
Wrox Press
Inc., ISBN: 1861007841 (10/02)
PREREQUISITES
Students
enrolling in this class are expected to have taken G22.2110, and G22.2250 and
their prerequisites or to have equivalent knowledge.
WEB SITES
Download Java 2 SDKs from http://www.javasoft.com/.
Related
specifications for J2EE, SRV, JSP, and EJB can be found at http://www.javasoft.com/j2ee.
OTHER RECOMMENDATIONS
Students
are encouraged to review the references provided on the course Web site,
subscribe to Java Developers Journal, and join the Java Community to participate in Java technology forums and/or Java chat
discussions, and gain access to community resources. Please become a member of
the Java Developer Connection to download and experiment with pre-released Java
software via the early
access and Java Community Process(JCP) site.
It is also recommended that students become member of a Java user group of
their choice (e.g., http://www.javasig.com, http://65.213.223.116/novajug/index.jsp), attend local events or yearly Java conferences (e.g., http://www.javaonwallstreet.com/, http://servlet.java.sun.com/javaone/sf2003/home/index.en.jsp).
COURSE SESSIONS
1. INTRODUCING EXTREME JAVA
-
Review Java’s programming languages features
- Non features (e.g., behavioral
reflection, etc.)
-
Review upcoming features in “Tiger” 1.5
-
Model Driven Architectures for Java
-
Java enterprise application enabling
-
Agile Modeling & eXtreme Programming (XP) for Java
-
Aspect-Oriented Programming (AspectJ) & Refactoring
-
Java application performance enhancement
Expert
One-on-One: Chap. 5 as a project template
Selected
readings assigned in class
Handouts
posted on the course Web site
2. JAVA TOOLS AND SOFTWARE ENGINEERING TECHNIQUES
-
Java platform architectures review
-
Using Java (open source) development tools
-
Survey/selection of Java IDEs
-
Detailed study of MDA, Agile Modeling/XP, and AspectJ
-
Practical use of design patterns and refactoring
-
Applying SEI’s CMM and TSP to Java projects
-
Java project management approach
-
Practical Java environment setup and application packaging
-
Survey of Java resources
Expert One-on-One: Chapters 2-4 as
applicable
Selected readings assigned in class
Handouts posted on the course Web site
3. JAVA CORE TECHNOLOGIES (Part I)
-
J2SE features, core components, and optional packages
-
Java Foundation Classes
-
Collections framework
-
Assistive Technologies
Expert One-on-One: Chap. 2-4 as
applicable (cont.)
Handouts
posted on the course Web site
4. JAVA CORE TECHNOLOGIES (Part II)
-
AWT Components
-
Swing Components and Pluggable Look and Feel
-
SWT vs. Swing
-
SwingML/XUL v.s. Swing
-
Drag and Drop
-
JavaBeans
Expert One-on-One: Chap. 2-4 as
applicable (cont.)
Selected readings assigned in class
Handouts posted on the course web site
5. JAVA CORE TECHNOLOGIES (Part III) AND GENERATIVE PROGRAMMING
-
Java 2D/3D APIs
-
Java Media APIs and Java Media Framework (JMF)
-
JNI
-
Java Generative Programming Technology
Expert One-on-One: Chap. 2-4 as applicable
(cont.)
Selected
readings assigned in class
Handouts
posted on the course web site
6. JAVA DISTRIBUTED
-
Review of network, and web communications
-
Introduction to distributed enterprise communications
-
Introduction to ORB implementations
-
RMI & RMI/IIOP
-
RMI and the JavaBeans Activation Framework (JAF)
Selected readings assigned in class
Handouts posted on the course web site
7. JAVA DISTRIBUTED
-
CORBA
-
CORBA 3 POA Activation Service
-
Java IDL
-
JNDI Naming and Directory Services
-
Jini (as a “Trading” Service)
Expert One-on-One: Introduction
(cont.)
Selected readings assigned in class
Handouts posted on the course web site
8. JAVA DISTRIBUTED
-
JMS
-
JTA/JTS
- Java security
via JAAS/JCE/JSSE
-
JavaMail
Expert One-on-One: Introduction
(cont.)
Handouts posted on the course web site
9. JAVA
-
Traditional Web programming and Java
-
Web Server technology for Java Web applications
- Java Web Start / Applets
-
J2ME CLDC and CDC technology
- Java XML Pack
and JAXB
Expert One-on-One: Chap. 12, 13
Selected readings assigned in class
Handouts posted on the course web site
10. JAVA
-
Java servlets
-
Servlet filters
-
Java Server Pages (JSPs)
-
Cocoon 2 and XML Server Pages (XSPs)
-
Java Server Faces
-
Expert One-on-One: Chap. 12, 13
(cont.)
Selected readings assigned in class
Handouts posted on the course web site
11. JAVA
-
-
J2EE Connector Architecture
-
Practical survey of mainstream J2EE application servers
-
Web Services Developer Pack
-
-
Business to Business Integration (B2Bi)
-
J2EE blueprint programs
Expert One-on-One: Chap. 1, 6, 10, 11,
14
Handouts posted on the course web site
12. JAVA DATABASE TECHNOLOGIES (PART I)
-
Applications of Java to database technology
-
Database technology review
-
Basic and advanced JDBC features
Expert One-on-One: Chap. 7, 9, 15
Handouts posted on the course web site
13. JAVA DATABASE TECHNOLOGIES (PART II)
-
Applications of Java to database technology
-
Java and ODBMSs
-
Java Data Objects
-
SQLJ
-
EJB-QL
-
Jakarta-OJB
-
Course Review
-
Final Exam (take home project)
Expert One-on-One: Chapter 7, 8, 15
Handouts posted on the course web site
14. JAVA OPERATING SYSTEM AND NETWORKING TECHNOLOGIES
-
Hotspot Virtual Machine
-
Jini
-
JXTA
-
Jiro
-
Java agents
-
JMI
-
JavaSpaces
-
JMX
- Final Exam project due
Selected readings assigned in class
Handouts posted on the course web site
Assigned
readings for the course will be from the textbooks, various Java-related Web sites,
trade magazines, and recommended books listed on the course Web site.
ASSIGNMENTS
Homework
and project assignments completion will be required.
Quizzes
will be administered.
The
final exam will be a take-home exam.
GRADING POLICY
25%
Assignments
35%
Projects
30%
Final Exam
10%
Attendance and Participation
Extra
credit will be granted periodically for particularly clever or creative
solutions.
EXTREME JAVA
Session 1: Introducing Extreme Java
SESSION OBJECTIVES
1.
Understand
course structure and objectives
2.
Convey a
programming language comparison chart
3.
Review Java’s
programming language features
4.
Discuss
Java’s non-features (e.g., behavioral reflection)
5.
Review upcoming features in “Tiger” 1.5
6.
Discuss Model Driven
Architectures for Java
7.
Discuss Java Agile Modeling & eXtreme Programming (XP)
8.
Present Java Aspect-Oriented Programming (AspectJ)
9.
Discuss the refactoring
of Java applications
10.
Discuss Java
application performance enhancements
11.
Describe the
class project
SESSION OUTLINE
·
Course
administration and course structure
·
Course goals
and syllabus
·
Sample programming
language comparison framework
·
Java OO and
component-based software development
·
Java features
and non-features
§
Threads
§
Exception
handling and assertions
§
Behavioral
reflection
§
Java 1.5
generics
·
Application
of Java to distributed computing
·
Application
of Java to web technologies
·
Application
of Java to database technologies
·
Java operating
systems and networking technology
·
Implementations
of Java behavioral reflection
·
Model Driven
Architectures demonstration
§
Executable
UML
§
Mainstream
MDA tools
·
Java Agile
Modeling and XP demonstration
§
Ant, Junit,
and Cactus
·
AspectJ
programming demonstration
·
Java
application refactoring demonstration
·
Java
effective programming
§
Java application
performance enhancement areas
·
Class project
focus
ASSIGNMENT
§
C++/Java/Jython
(http://www.jython.org/) comparison
§
Explore
frameworks implementing behavioral reflection
§
Select and
setup open source Java development tools for XP (e.g., Ant, JUnit, and Cactus)
EXTREME JAVA
Session 2 – Java Tools and Software
Engineering Techniques
SESSION OBJECTIVES
1.
Describe Java
platform architectures
2.
Review Java
resources, packaging, tools, and environment
3.
Describe Java
(open source) development tools
4.
Survey and
evaluate Java IDEs’ selection criteria
5.
Study MDA, Agile Modeling/XP, and AspectJ in detail
6.
Demonstrate the practical use of patterns &
refactoring
7.
Describe how
SEI’s CMM and TSP apply to Java projects
8.
Suggest a
Java project management approach
SESSION OUTLINE
·
Review of previous
session
·
Java platform
architectures
§
J2SE
§
J2EE
§
J2ME
·
Java
resources, packaging, tools, and environments
§
Java class
path
§
Java compiler
§
Java
interpreter
§
JPDA,
Javadoc, Java Help, ECPerf
§
Java archives
§
Code and data
signing
§
Java
Component models (e.g., applet, JavaBean, EJB)
·
Java (open
source) development tools
§
JavaCC
§
Ant, JUnit,
JMeter, HttpUnit, JUnitPerf, Cactus
·
Evaluation
and Selection criteria for various IDEs
§
Eclipse
§
NetBeans
§
Sun ONE
Studio, JBuilder,
Visual Age for Java, VisualCafé, Codewarrior for Java
§
WebGain
Studio
§
ModelJ
§
J2ME
Wireless Toolkit
·
Demonstration of software development techniques
§
MDA
§
Agile Modeling/XP
§
AspectJ
§
Patterns usage and refactoring
§
CMM and TSP
·
Java project
management issues
§
Case studies
using Java technology
§
Converting
existing business systems to Java
§
Building
execution architectures
§
Overcoming
performance challenges
§
Making applications
secure
§
Building
highly available systems
§
Motivating
application developers
ASSIGNMENT
§
Implement a
sample application using open source Java tools for XP
§
Extra Credit:
implement the sample application using XP on top of a JVM that supports
behavioral reflection
EXTREME JAVA
Session 3 – Java Core Technologies
(Part I)
SESSION OBJECTIVES
1.
Describe J2SE
features, core components, and optional packages
2.
Study the
Java Foundation Classes (JFCs)
3.
Study the
collections framework
4.
Study assistive
technologies
SESSION OUTLINE
·
Review of previous
session
·
Presentation
of J2SE core components at a high-level
·
J2SE core
components review
·
Presentation
of J2SE optional packages at a high-level
·
J2SE optional
packages review
·
Collections
framework details
·
Assistive
technologies details
ASSIGNMENT
§
Analyze/reengineer
an existing Java-based application to use it as an ongoing project framework
within an XP development environment. This application creates a presentation
of an XML document. Assignment provides hands on practical experience with the
JFCs, the Java collection framework, and/or assistive technologies.
EXTREME JAVA
Session 4 – Java Core Technologies
(Part II)
SESSION OBJECTIVES
1.
Describe thin
v.s. thick user interfacing technologies
2. Describe SwingML and other XML UI
(XUL) engines
3.
Present
component modeling with JavaBeans
SESSION OUTLINE
·
Review of previous
session
·
Java AWT
components
·
Pluggable
Look and Feel approach
·
Java Swing
components
·
Differences
between SWT and Swing
·
SwingML
·
Other XML UI
(XUL) engines
§
e.g.,
·
Drag and drop
·
JavaBeans
component model
ASSIGNMENT
§
Add
drag-and-drop facilities to the Java framework-based application developed in
assignment #2a.
EXTREME JAVA
Session 5 – Java Core Technologies
(Part III)
SESSION OBJECTIVES
1.
Describe the
Java 2D/3D APIs
2.
Describe the Graphics
and multimedia components (JMF)
3.
Present the
Java Native Interface
4.
Introduce
Java Generative Programming Technology
SESSION OUTLINE
·
Review of previous
session
·
Java 2D API
·
Java 3D API
·
JMF
·
XBeans and
Visual XBeans
·
Java Native
Interface (JNI) details
·
Java
Generative Programming
§
Software
family architectures
§
JavaCC
§
Program
generators development using XML and Java
ASSIGNMENT
§
Design and
implement a version of assignment #2a, and #2b that uses Visual XBean (see
Xbeans documentation at http://www.xbeans.org/).
Visual
XBeans are JavaBeans designed to
display XML documents. They use Swing
components to display XML documents as JTrees, JTables, or other Swing
components.
§
Extra
credit: Use JNI to obtain your XML document from an underlying C or C++ program.
EXTREME JAVA
Session 6 – Java Distributed
SESSION OBJECTIVES
1. Review of network, and
web communications
2.
Introduce to distributed enterprise communications
3.
Survey ORB implementations
4.
Present RMI, RMI/IIOP
5. Present the RMI
activation service
SESSION OUTLINE
·
Review of previous
session
·
Distribution
mechanisms
·
Java network
and socket programming
·
Java Web
communications
·
ORB
implementations
·
RMI & RMI/IIOP
·
RMI and the JavaBeans Activation Framework (JAF)
ASSIGNMENT
§
Modify
ongoing version of the Java-based application developed in assignment #2a to
operate as a distributed (client-server) application using (a) RMI and (b)
RMI-IIOP.
EXTREME JAVA
Session 7 – Java Distributed
SESSION OBJECTIVES
1.
Study CORBA
component modeling and communications
2.
Describe the
CORBA Portable Object Adapter (POA)
3.
Study Java
IDL
4.
Study JNDI
5.
Describe Jini
as a trading service
SESSION OUTLINE
·
Review of previous
session
·
CORBA
·
CORBA 3 POA Activation Service
·
Java IDL
·
JNDI Naming and Directory Services
·
Jini (as a “Trading” Service)
ASSIGNMENT
·
Assignment
#3b: (submit report + implementation archive)
§
Provide a
modified version of the Java-based application developed in assignment #2a to
operate as a client-server application using CORBA. Your program should be
implemented using the Visibroker for Java CORBA framework. You are not required
to use CosNaming in this assignment.
§
Extra credit:
Implement the same assignment using Java IDL, and RMI-IIOP and JNDI.
·
Read
suggested textbook chapters, and handouts on Java distributed enterprise
communications
EXTREME JAVA
Session 8 – Java Distributed
SESSION OBJECTIVES
1.
Study the
Java Messaging Service (JMS)
2.
Study the
Java Transaction Architecture (JTA) and Transaction Service (JTS)
3.
Describe Java security via JAAS/JCE/JSSE
4.
Present
JavaMail
SESSION OUTLINE
·
Review of previous
session
·
JMS
·
JTA/JTS
·
Java
security via JAAS/JCE/JSSE
·
JavaMail
ASSIGNMENT
§
Provide a
modified version of the application developed in assignment #3b. The modified
application should use the RMI activation framework, JMS, JTS, and Java
security.
§
Extra Credit:
Extend your application to use Jini as a trading service.
EXTREME JAVA
Session 9 – Java
SESSION OBJECTIVES
1.
Review traditional
Web programming
2.
Introduce
Java Web programming
3.
Discuss Web
Server technology for Java Web applications
4.
Describe Java
Web Start / Applet technology
5.
Study J2ME
CLDC and DCD technologies
6.
Demonstrate
the use of the Java XML Pack and JAXB technologies
SESSION OUTLINE
·
Review of previous
session
·
Traditional Web programming and Java
·
Web Server technology for Java Web applications
·
Java Web
Start / Applets
·
J2ME
CLDC and CDC technology
·
Java XML
Pack and JAXB
ASSIGNMENT
§
Modify
ongoing version of your Java framework-based application to operate as secure JNLP
application in a web environment.
§
Extra credit:
(a)
Implement the
same assignment using an emulated connected device client.
(b)
Use
generative programming technology to generate a renderer applet for your Visual
XBean.
EXTREME JAVA
Session 10 – Java
SESSION OBJECTIVES
1.
Study Java
servlets
2.
Study JavaServer
Pages (JSPs)
3.
Describe Java
Server Faces
4.
Study
5.
Survey
Java-based application server technology
SESSION OUTLINE
·
Review of
previous session
·
Java servlets
·
Java servlet filters
·
Java Server Pages (JSPs)
·
Cocoon 2 and XML Server Pages (XSPs)
·
Java Server Faces
·
ASSIGNMENT
·
Assignment
#4b: (submit report + implementation archive)
(a) Implement a modified version of the
same application that uses JSPs.
(b) Use Jakarta Struts to develop a similar
application.
(c) Use Cocoon 2 and an XSLT stylesheet
to implement a similar application.
·
Read
suggested textbook chapters, and handouts on Java enterprise web and
application enabling
EXTREME JAVA
Session 11 –Java
SESSION OBJECTIVES
1.
Study
2.
Describe the
J2EE Connector Architecture
3.
Survey
mainstream application servers
4.
Study
Web Services and the associated Web Services Developer Pack
5.
Survey
Enterprise Application Integration (EAI) technology
6.
Survey Business
to Business Integration (B2Bi) technology
7.
Study J2EE
blueprint programs
SESSION OUTLINE
·
Review of previous session
·
·
J2EE
Connector Architecture
·
Practical survey of mainstream J2EE application servers
·
Study
the Web Services protocol stack
·
Demonstrate
the practical use of Web Services
·
·
Business to Business Integration (B2Bi)
·
J2EE blueprint programs
ASSIGNMENT
§
Modify
ongoing version of Java-based application to operate as an Enterprise JavaBeans
application.
§
Extra credit:
Implement a multi-tier version of your framework-based application using Web
Services.
EXTREME JAVA
Session 12 – Java Database Technologies
(Part I)
SESSION OBJECTIVES
1.
Review
database technology
2.
Survey
applications of Java to database technology
3.
Study basic
and advanced JDBC features
SESSION OUTLINE
·
Review of previous
session
·
Applications of Java to database technology
·
Database technology review
·
Basic and advanced JDBC features
ASSIGNMENT
§
Design and
develop a three-tier version of your framework-based application that supports
the storage of XML data in a back-end database via JDBC.
EXTREME JAVA
Session 13 – Java
Database Technologies (Part II)
SESSION OBJECTIVES
1.
Discuss Java
and ODBMSs
2.
Study Java
Data Objects
3.
Describe SQLJ
4.
Describe
EJB-QL
5.
Study
Jakarta-OJB
6.
Review the
course material
7.
Discuss the Final
Exam (take home project)
SESSION OUTLINE
·
Java and
ODBMs
·
Java Data Objects
·
SQLJ
·
EJB
persistence service architecture
·
Persistence
service performance issues
·
EJB-QL
·
Jakarta-OJB
·
Course
material review
·
Final Exam description
ASSIGNMENT
§
Implement a
persistent version of your ongoing framework-based application in a multi-tier web
environment using Session and Entity EJBs.
§
Extra credit:
Implement a version of the same application on top of a JVM that supports
behavioral reflection. Use behavioral reflection to implement seamless
persistence.
EXTREME JAVA
Session 14 – Java
Operating Systems and Networking Technologies
SESSION OBJECTIVES
1.
Discuss the
Hotspot VM
2.
Study Jini
3.
Study JXTA
4.
Study Jiro
5.
Discuss Java
agents technology
6.
Study JMI
7.
Study
JavaSpaces
8.
Study JMX
9.
Discuss Final
Exam project
SESSION OUTLINE
·
Hotspot Virtual Machine
·
Jini
·
JXTA
·
Jiro
·
Java agents
·
JMI
·
JavaSpaces
·
JMX
·
Final exam
discussion
ASSIGNMENT