NEW YORK UNIVERSITY

COMPUTER SCIENCE DEPARTMENT

COURANT INSTITUTE OF MATHEMATICAL SCIENCES

 

  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 14 – Java Operating Systems Technologies

 

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