Enterprise Java Development@TOPIC@

Chapter 1. Course Description

1.1. Meeting Times/Location
1.2. Description
1.3. Student Background
1.4. Student Commitment
1.5. Course Text(s)
1.6. Required Software
1.7. References
1.8. Grading
1.9. Grading Policy
1.10. Academic Integrity
1.11. Instructor Availability

This comprehensive course explores a variety of modern Java frameworks and technologies that can be used for developing mission-critical complex enterprise applications. The emphasis is on use of the latest Java EE platform, its set of underlying specifications, designing and developing server-side application components. Students will learn thru having hands-on experience in building multi-tier distributed enterprise applications, comparing and using variety of Java EE design patterns, rich set of server-side components and technologies, and web-enabled by modern design practices and communication protocols. Students will learn to:

Other critical Java SE/EE infrastructure services will be discussed, including the Java Database Connectivity (JDBC) API, Java Naming and Directory Interface (JNDI), the Java Message Service (JMS), the Java Transaction (JTA) API, and Java EE security. Using modern development tools, commercial persistence providers, and application servers, students will design and implement several significant programming projects using the above-mentioned technologies and deploy them to a Java EE environment that they will manage.

The course is being actively updated to JavaEE 8 (JPA 2.2, EJB 3.2, JAX-RS 2.1, and JMS 2.0) and JDK 11 but a few order APIs and legacy examples remain for demonstration purposes. The development environment used in class is based on the Wildfly application server and is JDK 11 and JavaEE 8-compliant.

The course uses no mandatory texts. The course examples and notes for this course and free Internet resources are plentiful.

This course will make heavy use of development tools (JDK 11, Git, Maven 3, JUnit, SLF/Log4j, and Eclipse), a database (H2 Database Engine), JPA persistence provider (Hibernate), and application server (JBoss/Wildfly 17). Students are required to establish a local development environment. Detailed instructions for setup are part of the first exercise (Development Environment Setup).

Documentation will be provided through course slides, examples, and tutorials. Each lecture will supply a list of links for that technical area.


  • Projects will be done individually and graded 100 though 0 based on posted project grading criteria.

  • Class/newsgroup participation will be based on instructor judgment whether the student has made a contribution to class to either the classroom or newsgroup on a consistent weekly basis. A newsgroup contribution may be a well-formed technical observation/lesson learned, a well formed question that leads to a well formed follow up from another student, or a well formed answer/follow-up to another student's question. Well formed submissions are those that clearly summarize the topic in the subject, and clearly describe the objective, environment, and conditions in the body. The instructor will be the judge of whether a newsgroup contribution meets the minimum requirements for the week. The intent of this requirment is to promote public collaboration between class members.

  • There will be one required "project startup/sanity check" submission and will be primarily graded on a done/not-done basis. The intent of this requirement is to promote early, more-focused productivity and exchange of artifacts between the student and instructor.

Collaboration of ideas and approaches are strongly encouraged. You may use partial solutions provided by others as a part of your project submission. However, the bulk usage of another students implementation or project will result in a 0 for the project. There is a difference between sharing ideas/code snippets and turning in someone else's work as your own. When in doubt, document your sources.

Do not host your course project in a *public* Internet repository.

I am available at least 20min before class, breaks, and most times after class for extra discussion. I provide detailed answers to project and technical questions through the course newsgroup. You can get individual, non-technical questions answered via e-mail. It is very common for me to ask for a copy of your broken project so that I can provide more analysis and precise feedback. This is commonly transmitted either as an attachment to the e-mail or a link to an archive in GoogleDocs. Students needing further assistance are also welcome make other arrangements during the week or schedule a web meeting using Zoom Conferencing.