Contents [0/29] |
Are You In The Right Room? [1/29] |
Overview of Today's Class [2/29] |
A Brief Introduction [3/29] |
Contact Information [4/29] |
Course Homepage [5/29] |
Tell Me About Yourself [6/29] |
Attendance [7/29] |
Assessment [8/29] |
Academic Integrity Policy [9/29] |
Textbooks [10/29] |
Prerequisites [11/29] |
Expectations [12/29] |
Tools [13/29] |
IDEs [14/29] |
Recommended Setup [15/29] |
Course Overview [16/29] |
Course Objectives [17/29] |
The Position of SE452 in the Curriculum [18/29] |
Java Features/History [19/29] |
J2EE overview [20/29] |
Java and XML [21/29] |
J2EE Deployment [22/29] |
Enterprise Application Architecture [23/29] |
J2EE in n-Tier Architectures [24/29] |
Web Applications [25/29] |
Servers [26/29] |
HTTP [27/29] |
Web Application Technologies [28/29] |
Homework [29/29] |
Are You In The Right Room? [1/29] |
Course: SE452 (Enterprise Application Development)
Instructor: Matthew Wright
Overview of Today's Class [2/29] |
Adminstrative information.
Overview of the course.
J2EE overview
First Assignment
A Brief Introduction [3/29] |
What is this course about?
Contact Information [4/29] |
Instructor: | Matthew Wright |
Home Page: | http://www.depaul.edu/~mwright1 |
Email: | mwright@cs.depaul.edu |
Phone: | 1-773-399-7882 |
Address: | CTI, DePaul University |
3166 South River Road, 2nd Floor | |
Des Plaines, IL 60018 | |
Office: | Faculty Offices (See front desk for location) |
Office Hours: | Tuesday 5:15-6:15pm in Faculty Offices (See front desk for location) |
Tuesday 9:30-10:00pm in Faculty Offices (See front desk for location) | |
Class Page: | http://www.depaul.edu/~mwright1/se452 |
Class Hours: | Tuesday 6:15pm-9:30pm in O'Hare [Section 702] |
I prefer communication via email.
I check voicemail several times a day (if I'm in the office)
I check email several times a day, as well as in the evenings.
Please check that the email address on your CampusConnect record is correct. I will send email to the class in the event of last minute changes or announcements.
Course Homepage [5/29] |
Course homepage: http://www.depaul.edu/~mwright1/se452
Please check it frequently and before coming to class.
Lecture slides are available in two HTML formats: one slide per page and all slides on one page.
Lecture slides are available if a check is shown (click on the check).
Lecture slides may not be available before the class (but I'll try).
Lecture slides may change after class (but only to update changes from class).
Tell Me About Yourself [6/29] |
What do you do, and what are you looking for in this course?
Attendance [7/29] |
You must attend the two quizzes and final project presentations.
The midterm (Quiz I) will be held 2003/10/21, in class. The final (Quiz II) will be on 2003/11/18. Final project presentations will be the following week by appointment, or the day after. You will need to allocate 15 minutes between 4:00pm and 10:00pm. Further details will be given in the coming weeks.
A medical note will be required for an absence to either the final or the midterm. Business trips or vacations are not valid reasons for missing the exam and final project.
Block out these dates now!
Class attendance is strongly encouraged, but not mandatory. However, if you are absent from class you are responsible for understanding the material and for finding out about any announcements made in that class. In addition, much of the discussion will be based upon diagrams drawn on the board. They may not appear in the slides and may not be captured well by COL.
Assessment [8/29] |
Your final grade will be based on:
Homework will be given (almost) weekly. Some of the homework assignments will be useful as you work on the final project. Note that there is a much higher focus on homework assignments in this class due to the need for you to use the tools and APIs that we are studying. There is less of a focus on "book" knowledge than in some classes.
Program submissions will be assessed on whether they achieve the set task and the quality of the code.
Unless otherwise stated, homework assignments are due by 5:00 PM on the Tuesday after the class in which they are assigned. I will review the assignment in class, so you are encouraged to ask questions at that time. If you wait until the night before to do the homework and need help, I can't guarantee that I will be available, so start it early.
You are expected to complete all of the homework assignments by the deadline. Late homework submissions will not be accepted, and all homework assignments will count towards the final grade (i.e. no free homework assignments)
Homework assignments must be submitted through the online system. Email submissions will not be accepted. Grades will also be posted to the COL site, along with comments if needed.
There will be no extra credit homework and/or projects.
You must achieve a passing grade on both the exam and final project to pass the course.
Grading Scale:
A : | total >= 93 |
A-: | 93 > total >= 90 |
B+: | 90 > total >= 87 |
B : | 87 > total >= 83 |
B-: | 83 > total >= 80 |
C+: | 80 > total >= 77 |
C : | 77 > total >= 73 |
C- : | 73 > total >= 70 |
D+: | 70 > total >= 67 |
D : | 67 > total >= 63 |
D-: | 63 > total >= 60 |
F : | 60 > total |
Academic Integrity Policy [9/29] |
The academic integrity policy will be strictly enforced. Please make yourself familiar with it.
Textbooks [10/29] |
Required (?):
Prerequisites [11/29] |
You must have the following:
SE 450 or CSC 416 (in Java)
This course is not an introduction to Java. You will be expected to be proficient enough in Java to complete the first homework assignment with little to no difficulty.
Expectations [12/29] |
Unfortunately, as is usually the case, developing software requires you to setup and understand a confusing development environment. This includes learning to administer Tomcat and use the Java tools. I'll try to cover this in class, but you will need to spend time outside of class learning the tools on your own as well.
We will also be covering some APIs that are very extensive. We will not cover all the functionality in class, so you will have to spend time outside of class learning the material. The three hours of lecture are not enough time for you to completely learn the material.
Learn to use the tools talked about in class. They will save you a lot of time.
Tools [13/29] |
The class homework, project, and examples should all be developed, compiled and run using the 1.4.2 Java Development Kit from Sun. It is available on Win32, Linux, and Solaris. If you are using HP or another *nix OS, 1.4 is probably still available for you as well, but I may not be able to support environmental issues you may have.
We will use the latest version of Tomcat 5
We will need to use a java JDBC database, and this will most likely be hsqldb, an open source pure java database.
We will use Ant for doing builds and deployment of code. I'll supply build files to help you along, but Ant is a good tool to learn.
IDEs [14/29] |
IDEs
For this class, you should think twice about using an IDE. An IDE (Integrated Development Environment) would include (but is not limited to) the following:
I define an IDE as a tool that generates code, compiles it, and runs the debugger in one environment. While these tools are not a bad idea, and in fact can make you very productive, I still do not want you to use them. This is not because I want to make your life harder, but for these reasons:
Recommended Setup [15/29] |
I would recommend the following setup:
Some editors you might want to use are:
I would not recommend Notepad or Wordpad.
Please set your tab stops to a reasonable number (say 4) and properly indent your code.
Ant will be discussed later
Course Overview [16/29] |
We will study Enterprise Application Development. Among the topics of the course are:
Java and the UML will be used for source code examples, homework assignments, and the exams.
Course Objectives [17/29] |
By the end of this course you should:
The Position of SE452 in the Curriculum [18/29] |
How is this course related to others?
Java Features/History [19/29] |
Features:
delete
(no memory worries... right?)History:
J2EE overview [20/29] |
Overview of J2EE
Enterprise APIs were packaged together as Java 2, Enterprise Edition The standard JDK (javac, java, etc.) was called Java 2, Standard Edition J2EE includes the entire set of APIs, but may be used in smaller pieces. In order to be J2EE certified, a server must pass Sun's Compatibility Test Suite
Goals of J2EE
Sun provides the standard (Platform), the Compatibility Test Suite, a Reference Implementation (RI), and the J2EE BluePrints, a set of best practices
J2EE components are also provided by a wide variety of vendors, including IBM, BEA, Sun, Novell, Oracle, Macromedia, and others.
APIs
The J2EE architecture:
(From Sun's J2EE specification v 1.4)
Java and XML [21/29] |
Java and XML are integrated
J2EE Deployment [22/29] |
The goal of J2EE is to divide J2EE Development/Deployment up among several groups. These are defined as:
For this class, you will be all three (but I will be just the deployer when I grade your homework), but how does this work in real life? What is nice about doing things this way?
Enterprise Application Architecture [23/29] |
1-Tier Architecture
2-Tier Architecture
3-Tier Architecture (a.k.a. n-Tier)
J2EE in n-Tier Architectures [24/29] |
J2EE APIs usually used in the middle tiers or between the tiers
The J2EE interoperability
(From Sun's J2EE specification v 1.4)
Web Applications [25/29] |
An application that is invoked via a web browser and whose functions are performed on a web server or application server
N-Tier
Servers [26/29] |
What do we mean by a server?
There are different types of servers
Web servers are designed to serve static content quickly and efficiently.
Examples: Apache, iPlanet iWS, IIS
Forward requests for dynamic content to an Application server
Application servers are designed to create dynamic content contains business logic and data manages persistence and transcation ensures data integrity and security
Database servers host the database application that persists the data to permanent storage
HTTP [27/29] |
What is HTTP?
HTTP follows the Request-Response model
HTTP 1.1 (RFC 2616) http://www.w3.org/Protocols/
HTTPS - HTTP over SSL (Secure Socket Layer)
HTTP Requests
Request-method Request-URI HTTP-version ( Request- header ) * blank line [ Message-body ]
Request methods: GET POST PUT DELETE TRACE OPTIONS CONNECT HEAD
Request headers: key : value
GET and POST are the most common requests GET means 'get whatever information the URI points to' POST is used to tell the server to perform some action using supplied data by the request In reality, they can do the same thing, but GET query data is encoded in the URL, POST data is sent in the body of the request GET is usually used when all data can be encoded in a query string and is not part of a form POST is usually used to submit form information. We will see the difference when we look into the Servlet specification and see some examples.
HTTP Request Example
GET /index.html HTTP/1.1 Host: se.cs.depaul.edu User-Agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:0.9.2.1) Gecko/20010901 Accept: text/xml, application/xml Accept-Language: en-us Accept-Encoding: gzip,deflate,compress,identity Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66 Keep-Alive: 300 Connection: keep-alive
HTTP Response
HTTP-version Status-code Reason-phrase ( Response-header ) * blank line [ Message-body ]
Response headers: key : value
Content-Type: MIME Types type / subtype
HTTP Response Example
HTTP/1.1 200 OK Date: Mon, 24 Dec 2001 14:55:07 GMT Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) Last-Modified: Thu, 29 Mar 2001 17:53:01 GMT Accept-Ranges: bytes Content-Length: 2890 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html
HTTP Response Example 2
HTTP/1.1 404 Not Found Date: Mon, 24 Dec 2001 14:55:20 GMT Server: Apache/1.3.19 (Unix) (Red-Hat/Linux) Keep-Alive: timeout=15, max=98 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1
Web Application Technologies [28/29] |
CGI - Common Gateway Interface http://www.w3.org/CGI
Proprietary APIs
Server Side Java-Script (iWS)
ASP (Microsoft)
Java Servlets
Servlets vs. CGI
Servlets vs. ASP
Homework [29/29] |
Revised: 2003/9/15