NEW YORK UNIVERSITY
COMPUTER SCIENCE DEPARTMENT
EXTREME
JAVA
Spring 2001 Jean-Claude FRANCHITTI
G22.3033 Wed. 7:00 - 9:00 p.m.
=================================================================
COURSE DESCRIPTION:
This course is designed for programmers
already familiar with the Java language and class libraries. Topics include a
broad and in depth coverage of Java tools and software engineering techniques
(e.g., Project Lifecycle, Environment, Resources, Packaging), Java core
technologies (e.g., Collections Framework, Drag and Drop, Swing, JavaBeans,
threads, JNI), and the application of Java in distributed enterprise
communications (e.g., Java IDL, CORBA, RMI/IIOP, JNDI, Jini, JMS, JTS),
enterprise web and application enabling (e.g., applets, aglets, connected
devices, Web servers, security, XML, servlets, JSPs, EJBs, EAI), database
technologies (e.g., JDBC), and operating systems (e.g., JavaOS). Students will
experiment with various Java-enabled toolkits to create Java programs using
Java’s core libraries, and more advanced packages. All instruction and
development will be based on the J2SE 1.3, J2EE 1.2.1, and J2ME CLDC 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
This 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 advanced 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, enterprise systems assurance, web enabling, and enterprise data enabling.
6. Expose students to Enterprise Applications enabling.
7. Broaden students’ knowledge in performance enhancements for enterprise Java applications.
TEXTBOOKS
Building Java Enterprise Systems with
J2EE
Paul J. Perrone and Venkata S.R.
“Krishna” R. Chaganti
SAMS, ISBN: 0-672-31795-8 (6/00)
Advanced Techniques for Java Developers, Rev.Ed.
Daniel J. Berg and J. Steven Fritzinger
Wiley Computer Publishing, ISBN: 0-471-32718-2 (2/99)
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.
COURSE SESSIONS
1. INTRODUCING
EXTREME JAVA
- Review Java’s programming languages features
- Introduction to enterprise application enabling
- Introduction to application performance enhancement
READINGS: Building Java Enterprise Systems: Part I (1-3)
Advanced Techniques: Chapter 1
Handouts posted on the course web site
2. JAVA
TOOLS AND SOFTWARE ENGINEERING TECHNIQUES
- Java platform architecture, files, and tools
- Java virtual machine
- Java project management approach
READINGS: Building Java Enterprise Systems: Part I (4)
Handouts posted on the course web site
3. JAVA
CORE TECHNOLOGIES (Part I)
- Java platforms, features and core APIs
- Collections framework
- Input method framework
READINGS: Building Java Enterprise Systems: Part I(4-5)
Handouts posted on the course web site
4. JAVA
CORE TECHNOLOGIES (Part II)
- AWT Components
- Swing Components
- Drag and drop
- JavaBeans
- Java Media
READINGS: Building Java Enterprise Systems: Part I (6-7)
Advanced Techniques: Chapters 2, 3, and 5
Handouts posted on the course web site
5. JAVA
CORE TECHNOLOGIES (Part III)
- Threads
- JNI
READINGS: Advanced Techniques: Chapters 11, and 13
Handouts posted on the course web site
6. JAVA
DISTRIBUTED ENTERPRISE COMMUNICATIONS (PART I)
- Review of network, and web communications
- Introduction to distributed enterprise communications
READINGS: Building Java Enterprise Systems: Part III (11-13)
Advanced Techniques: Chapter 4, and 6
Handouts posted on the course web site
7. JAVA
DISTRIBUTED ENTERPRISE COMMUNICATIONS (PART II)
- RMI
- Java IDL
- CORBA
- COM/DCOM
READINGS: Building Java Enterprise Systems: Part III (14-18)
Advanced Techniques: Chapter 7
Handouts posted on the course web site
8. JAVA
DISTRIBUTED ENTERPRISE COMMUNICATIONS (PART III)
- JNDI Naming and Directory Services
- RMI and JavaBeans Activation Frameworks
- Jini Trading Service
- JMS
- JTA
- JavaMail
READINGS: Building Java Enterprise Systems: Part IV (19-23)
Handouts posted on the course web site
9. JAVA
ENTERPRISE WEB AND APPLICATION ENABLING (Part I)
- Applets
- Connected devices
- Java Security
READINGS: Building Java Enterprise Systems: Part V (24-28)
Advanced Techniques: Chapter 12
Handouts posted on the course web site
10. JAVA
ENTERPRISE WEB AND APPLICATION ENABLING (PART II)
- Traditional web programming and Java
- Web Servers
- Java and XML
- Java servlets
- JavaServer Pages
READINGS: Building Java Enterprise Systems: Part VI (29-33)
Advanced Techniques: Chapter 9
Handouts posted on the course web site
11. JAVA
ENTERPRISE WEB AND APPLICATION ENABLING (PART III)
- Enterprise JavaBeans
- Java and application server technology
- Enterprise Application Integration (EAI)
READINGS: Building Java Enterprise Systems: Part VII (34-38)
Advanced Techniques: Chapter 10
Handouts posted on the course web site
12. JAVA
DATABASE TECHNOLOGIES (PART I)
- Applications of Java to database technology
- Review database technology
- Basic and advanced JDBC
READINGS: Building Java Enterprise Systems: Part II(8-10)
Advanced Techniques: Chapter 8
Handouts posted on the course web site
13. JAVA
DATABASE TECHNOLOGIES (PART II)
- Applications of Java to database technology
- Java and ODBMSs
- Persistence support in J2EE frameworks
- Review
- Final Exam (take home project)
READINGS: Building Java Enterprise Systems: Part I(8-10)
Advanced Techniques: Chapter 8
Handouts posted on the course web site
14. JAVA
OPERATING SYSTEM TECHNOLOGIES
- Applications of Java to operating systems technology
- JavaOS, Aglets, behavioral reflection
- Final Exam project due
READINGS: Advanced Techniques: Chapters 14-16
Handouts posted on the course web site
READINGS
Assigned readings for the course will be from the textbook, the JavaSoft site documentation, and from 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. Review
Java’s programming language features
2. Understand
course structure and objectives
3. Convey
a programming language comparison chart
4. Discuss
enterprise application enabling
5. Describe
Java’s enterprise application enabling capabilities
6. Discuss
Java application performance enhancements
7. Discuss
behavioral reflection and Java
8. Describe
the class project
SESSION
OUTLINE
·
Review course administration and course structure
·
Review course goals and syllabus
·
Introduce a programming language comparison framework
·
Discuss OO development and component-based software
development in Java
·
Describe the application of Java to distributed computing
·
Describe the application of Java to web technologies
·
Describe the application of Java to database technologies
·
Describe Java and operating systems' related technology
·
MetaJava and behavioral reflection
·
Describe class project focus
ASSIGNMENT
·
Assignment #1a:
§
C++/Java comparison
§
MetaJava virtual machine installation/exploration
·
Read suggested introductory textbook chapters, and handouts
·
Read papers on behavioral reflection
EXTREME JAVA
Session
2 – Java Tools and Software Engineering Techniques
SESSION
OBJECTIVES
1. Describe
Java platform architectures, and tools
2. Review
traditional Java tools and environment
3. Suggest
a Java project management approach
SESSION
OUTLINE
·
Review previous session
·
Introduce Java tools and software engineering techniques
·
Discuss platform architectures
·
Discuss the Java project lifecyle
·
Discuss the Java Virtual Machine (JVM)
·
Java resources, packaging, tools, and environment
§
Java interpreter
§
Java class path
§
Java compiler
§
Applet tag
§
Packaging: Java archive (JAR) files
§
Code and data signing
·
Java project management
§
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
·
Assignment #1b (continued):
§
MetaJava installation/exploration
·
Installation of IBM Alphaworks' xml4j development environment
·
Read suggested textbook chapters, and handouts on Java tools
and software engineering techniques
·
Read papers on behavioral reflection
EXTREME JAVA
Session
3 – Java Core Technologies (Part I)
SESSION
OBJECTIVES
1. Describe
Java platforms, features and core APIs
2. Study
the collections framework
3. Study
the input method framework
SESSION
OUTLINE
·
Review previous session
·
Describe Java core technologies at a high-level
·
Review Java API core packages
·
Collections framework
·
Input method framework
ASSIGNMENT
·
Assignment #2a:
Modify
a Java-based XML Tree Viewer application to add a query facility. Assignment
provides hands on practical experience with the Java collection framework and
JFC Swing.
·
Read suggested textbook chapters, and handouts on Java core
technologies
EXTREME JAVA
Session
4 – Java Core Technologies (Part II)
SESSION
OBJECTIVES
1. Describe
user interfacing
2. Study
component modeling with JavaBeans
SESSION
OUTLINE
·
Review previous session
·
Java AWT components
·
Java Swing components
·
Drag and drop
·
Graphics and multimedia components (JavaMedia)
·
Javabeans
ASSIGNMENT
·
Assignment #2b:
Add
drag-and-drop facilities to the Tree Viewer application developed in assignment
#2a.
·
Read suggested textbook chapters, and handouts on Java core
technologies
EXTREME JAVA
Session
5 – Java Core Technologies (Part III)
SESSION
OBJECTIVES
1. Study
Java Threads
2. Study
the Java Native Interface
SESSION
OUTLINE
·
Review previous session
·
Java threads
·
JNI
ASSIGNMENT
·
Assignment #2c:
Design
and implement a simplified applet version of assignment #2a, and #2b that uses
Javabeans graphical components, threads for animation, and accesses a C or C++
program via JNI.
·
Read suggested textbook chapters, and handouts on Java core
technologies
EXTREME JAVA
Session
6 – Java Distributed Enterprise Communications (Part I)
SESSION
OBJECTIVES
1. Review of network, and web communications
2. Introduction to distributed enterprise communications
SESSION
OUTLINE
·
Review previous session
·
Distribution mechanisms
·
Network and Socket programming
·
Web communications
ASSIGNMENT
·
Assignment #3a:
Modify
ongoing version of Java-based XML Tree Viewer application to operate as a
client-server application using sockets. The modified application should use a
servlet, and both a “rich” Java client and an applet should be provided on the
client side.
·
Read suggested textbook chapters, and handouts on Java
distributed enterprise communications
EXTREME JAVA
Session
7 – Java Distributed Enterprise Communications (Part II)
SESSION
OBJECTIVES
1. Study
RMI Communications
2. Study
CORBA component modeling and communications
3. Study
Java IDL
4. Survey
the COM+ distributed computing architecture and framework
SESSION
OUTLINE
·
Review previous session
·
RMI
·
CORBA
·
Java IDL
·
COM+
ASSIGNMENT
·
Assignment #3b:
Provide
a modified version of the Java-based XML Tree Viewer application to operate as
a client-server application using RMI-IIOP and CORBA. A “rich” RMI-based Java
client and an applet should be provided on the client side. The server
component should be implemented using the Visibroker for Java CORBA framework.
Extra
credit assignment consists of implementing a multi-tier version of the Tree
Viewer application using Java IDL.
·
Read suggested textbook chapters, and handouts on Java
distributed enterprise communications
EXTREME JAVA
Session
8 – Java Distributed Enterprise Communications (Part III)
SESSION
OBJECTIVES
1. Study
the JNDI Naming and Directory service
2. Study
the RMI and Javabeans activation frameworks
3. Study
the Jini Trading service
4. Study
the Java Messaging Service (JMS)
5. Study
the Java Transaction Architecture (JTA)
6. Study
JavaMail
SESSION
OUTLINE
·
Review previous session
·
JNDI Naming and Directory services
·
RMI Activation framework
·
JavaBeans activation framework
·
Jini
·
JMS
·
JTA
·
JavaMail
ASSIGNMENT
·
Assignment #3c:
Provide
a modified version of the Java-based XML Tree Viewer application developed in
assignment #3b. The modified application should use the RMI activation
framework, JNDI, and Jini (Jini support is for extra credit).
·
Read suggested textbook chapters, and handouts on Java distributed
enterprise communications
EXTREME JAVA
Session 9 – Java Enterprise Web &
Application Enabling (Part I)
SESSION
OBJECTIVES
1. Review
applets
2. Study
connected device technology
3. Study
Java security
SESSION
OUTLINE
·
Review previous session
·
Java applets
·
Java connected devices
·
Java security
ASSIGNMENT
·
Assignment #4a:
Modify
ongoing version of Java-based XML Tree Viewer application to operate as an
applet-based secure application in a web environment.
Extra
credit assignment consists of implementing a modified version of the Tree
Viewer application using an emulated connected device client.
·
Read suggested textbook chapters, and handouts on Java
enterprise web and application enabling
EXTREME JAVA
Session 10 – Java Enterprise Web &
Application Enabling (Part II)
SESSION
OBJECTIVES
1. Review
traditional web programming and Java
2. Review
web servers
3. Study
Java and XML
4. Study
Java servlets and JavaServer Pages
5. Survey
Java-based application server technology
SESSION
OUTLINE
·
HTML, CGI, and JavaScript
·
Web browsers and web servers
·
XML’s SAX and DOM APIs
·
J2EE and XML
·
Java servlets and JSPs
ASSIGNMENT
·
Assignment #4b:
Modify
ongoing version of the Java-based XML Tree Viewer application developed in
assignment #3a to use the SAX API and
implement
data exchange on the servlet side into an arbitrary file format.
Extra
credit assignment #4b-1 consists of implementing a modified version of the same
Tree Viewer application that uses JSPs.
Extra
credit assignment #4b-2 consists of experimenting with Visual XML as an implementation
framework for the Tree Viewer application.
·
Read suggested textbook chapters, and handouts on Java
enterprise web and application enabling
EXTREME JAVA
Session 11 –Java Enterprise Web &
Application Enabling (Part III)
SESSION
OBJECTIVES
1. Study
Enterprise JavaBeans
2. Survey
Java-based application Server technology
3. Survey
Enterprise Application Integration (EAI) technologies
SESSION
OUTLINE
·
Describe enterprise application platforms
·
Component modeling with EJBs
·
Serving EJBs
·
Application Servers and EJBs
·
EAI
ASSIGNMENT
·
Assignment #4c:
Modify
ongoing version of Java-based XML Tree Viewer application to operate as an
Enterprise JavaBeans application. Extra credit assignment consists of
implementing a multi-tier version of the Tree Viewer application using Java 2
Enterprise Edition and JTS.
·
Read suggested textbook chapters, and handouts on Java
enterprise web and application enabling
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 previous session
·
Database technology
·
Enterprise data modeling
·
JDBC
ASSIGNMENT
·
Assignment #5a:
Design
and develop a three-tier application to support the storage of Tree Viewer data
in a back-end database via JDBC.
·
Read suggested textbook chapters, and handouts on Java
database technologies
EXTREME JAVA
Session 13 – Java Database Technologies
(Part II)
SESSION
OBJECTIVES
1. Discuss
Java and ODBMSs
2. Persistence
support in J2EE frameworks
3. Course
material review
4. Final
Exam (take home project)
SESSION
OUTLINE
·
Java and ODBMs
·
EJB persistence service architecture
·
Persistence service performance issues
·
Session and Entity beans
·
Course material review
·
Final project description
ASSIGNMENT
·
Final Exam (take home project):
Implement
a persistent version of the XML Tree Viewer application in a web or multi-tier
environment using Session and Entity EJBs.
Extra
credit problem consists of experimenting with a MetaJava-like virtual machine
to implement seamless persistence of the Tree Viewer application.
·
Read suggested textbook chapters, and handouts on Java
database technologies
EXTREME JAVA
SESSION
OBJECTIVES
1.
Discuss JavaOS
2.
Study Aglets
3.
Discuss Final Exam project
SESSION
OUTLINE
·
JavaOS (Kona)
·
The architecture of aglets
·
Aglets and MetaJava
·
Final exam discussion
ASSIGNMENT
· Read suggested textbook chapters, and handouts on Java Operating Systems technologies