NEW YORK UNIVERSITY
COMPUTER SCIENCE DEPARTMENT
EXTREME
JAVA
Spring 2002 Jean-Claude FRANCHITTI
G22.3033-007 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, JCA),
enterprise web and application enabling (e.g., applets, aglets, connected
devices, Web servers, security, XML, servlets, JSPs, EJBs, EAI, Web services),
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.1 (or 1.4), J2EE 1.3,
and J2ME CLC/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)
Using Java 2 Enterprise Edition
Mark Wutka
QUE, ISBN: 0-7897-2503-7 (5/01)
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)
Using Java 2 Enterprise Edition: Parts V and VII
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)
Handouts posted on the course web site
5. JAVA
CORE TECHNOLOGIES (Part III)
- Threads
- JNI
- Code Generation
READINGS: Using Java 2 Enterprise Edition: Part VII
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)
Using Java 2 Enterprise Edition: Parts I, and V
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)
Using Java 2 Enterprise Edition: Parts I, and III
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)
Using Java 2 Enterprise Edition: Parts I, and III
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: Parts VI and VII
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)
Using Java 2 Enterprise Edition: Parts II and IV
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)
Using Java 2 Enterprise Edition: Parts III, IX, X
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)
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)
Using Java 2 Enterprise Edition: Parts IX,X
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: 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 paper(s) 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 J2SE/J2EE SDKs, IDE, JWS, Apache
Xerces/Xalan development environments
·
Read suggested textbook chapters, and handouts on Java tools
and software engineering techniques
·
Read paper(s) 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 application (supplied) 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 Java-based 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 the Java-based application developed in assignment #2a 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+ and .Net 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 application developed in assignment #2a 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
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
the Java Management Extensions (JMX), and Java Connector Architecture (JCA)
7. Study
JavaMail
SESSION
OUTLINE
·
Review previous session
·
JNDI Naming and Directory services
·
RMI Activation framework
·
JavaBeans activation framework
·
Jini
·
JMS
·
JTA
·
JMX
·
JCA
·
JavaMail
ASSIGNMENT
·
Assignment #3c:
Provide
a modified version of the 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/JWS
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 application to operate as an applet-based secure
application in a web environment.
Extra
credit assignment consists of implementing a modified version of the homework
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 application developed in assignment #3a to
use the XML JAXP 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 application that uses JSPs.
Extra
credit assignment #4b-2 consists of experimenting with Visual XML-like
implementation frameworks for your XML Java-based 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)and Business to Business Integration
(B2Bi) technologies
4. Study
Web Services enabling
SESSION
OUTLINE
·
Describe enterprise application platforms
·
Component modeling with EJBs
·
Serving EJBs
·
Application Servers and EJBs
·
EAI
·
Web Services
ASSIGNMENT
·
Assignment #4c:
Modify
ongoing version of Java-based application to operate as an Enterprise JavaBeans
application. Extra credit assignment consists of implementing a multi-tier
version of the application using Web Services, 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 XML 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 ongoing 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 your 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)and related topics (Java Communications, Jiro,
etc.)
·
The architecture of aglets
·
Aglets and MetaJava
·
Final exam discussion
ASSIGNMENT
· Read suggested textbook chapters, and handouts on Java Operating Systems technologies