FJ-91 icone

Java Projects Architecture and Design

Does all those Design Patterns, standards, frameworks and good practices confuses you?

Currently, creating a Java project is a big challenge. There are hundreds of technology options to choose from, besides all different ways you can make your layers communicate. This training's goal is to show the student a lot of this options, from modeling and class design to choosing more suitable technologies to create a robust architecture. This course's exercises are not only theoretical and for argument but also shows code and consider changes and improvements. During this training students take diverse mocked tests for Java Architect Certification (SCEA), as diagram modeling exercises and debate about taken decisions, turning this course into a excelent preparatory for all fases of SCEA test.

FJ::91 - Java Projects Architecture and Desgin (40 lesson hours)


Requirements: FJ::11 training or: Java language, primitive variables and object orientation, error handling, fundamental Java SE knowledge, input and output, collections, basic Java multi-threading, basic knowledge on HTTP and HTML. Knowledge on web development.

Object Orientation concepts as reviewed, from those already famous like inheritance, encapsulament, interface use, to domain driven design, dependencies injection, bad Object Orientation practices and missuse of inheritance and getters and setters. Design Patterns are introduced not in a theoretical case but inside a real application. Also, examples of their use are shown inside Java SE and Java EE. We won't just use GoF or Core Java EE Design Patterns. We'll cover some new patterns and old-ones that already became an anti-pattern. All diverse UML 2.0 diagrams are introduced in a non tiring way, always having relation with topics being covered.


Caelum's Java EE projects Architecture and Design

Main Java technologies, as big open-source frameworks, are discussed using small pieces of code and application, which are shown, read, runned and compared through the training. From Servlets, EJB, JMS to Struts, Spring, Hibernate and much more.Use of remote technologies is widely discussed, as the choice on exchange information protocol is, wether in a web or desktop application.

One covered topic is SOA, on which we compare diverse ways to implement is. From WebServices using WSDL and Soap to Restful model or POX and JSon transference. All acronym are explained and the webservice creation process, from definition and java service creation to WSDL generation and stubs, will be studied.

How to implement a rich interface, manage lots of content and make search easy using Web 2.0 concepts? There are lots os technologies to do it and we'll take a look at some of them, form simple AJAX to JSF components use and Adobe FLex. Last but not least, development practices will be discussed: unit and acceptance tests, agile methodologies, the man-hours estimate problem and waterfall model, application build and it's packaging for deploy.


right corner

Detailed Content


1. Java

  1. Java Platform
  2. The JVM
  3. JVM diverse implementations
  4. Garbage Collector, JIT
  5. Open source effect over JVM
  6. Java EE
  7. JSRs and JCP
  8. Big players their roles: IBM, Oracle, Apache, Google, SAP and others
  9. IDEs
  10. .NET and PHP
  11. Ruby, Javascript and other languages

2. Object Orientation

  1. Objects and Classes
  2. Attributes
  3. Methods
  4. UML: Class diagram
  5. Encapsulation
  6. Design by Contract
  7. Inheritance
  8. Polimorphism
  9. Abstractions
  10. Interfaces
  11. UML: Sequence diagram

3. OO topics

  1. JavaBeans
  2. POJOs
  3. Anemic Domain Model and puppet objects
  4. Model Driven Architecture
  5. Domain Driven Design
  6. Inheritance x Composition
  7. Bad OO practices: static, inheritance, couppling
  8. Imutability, concurrent programming

4. Componente based development

  1. Reflection and annotation use
  2. Bytecode manipulation
  3. Garbage Collector, Weak References and Caching
  4. Components and definitions
  5. Dependencies injection
  6. Control inversion
  7. Low coupling, high cohesion
  8. Coupled classes are the same component
  9. UML: Component diagrams

5. Design Patterns

  1. Intention
  2. Creational Patterns: Factories, Singletons, Lazy initialization and others
  3. Behavior Patterns: Template, Strategy, Command and others
  4. Structure Patterns: Composite, Façade, Proxy and others
  5. Other important patterns: DAO, Fluent Interface
  6. Design Patterns Critics: misuse examples of Singletons and Factories
  7. Antipatterns

6. Architecture

  1. What is architecture?
  2. Client server model
  3. Thin Clients
  4. Remote access services
  5. Layers e Tiers
  6. Architectural Patterns: Model View Controller
  7. MOM: Message Oriented Middleware

7. SOA - Service Oriented Architecture

  1. SOA
  2. Old school SOA: tickets, ftps, sockets and corba
  3. WSDL and SOAP
  4. POX
  5. Restful WebServices
  6. HTML and TXT parsing
  7. SOA and it buzzwords: orquestration, ESB, BPEL and BPM
  8. more: SOA 2.0, advanced SOA and ROA

8. Java technology and specification

  1. Java SE and Java EE
  2. J2EE 1.4, Java EE 5 and 6
  3. Applet
  4. Servlet, JSP and Servlet Containers
  5. JDBC
  6. RMI
  7. JSF
  8. Java EE application servers
  9. EJB
  10. Value Object, Data Transfer Object, Session Façade
  11. VO/DTO misuse
  12. EJB 3.x and revolution
  13. EJB 3.x: the JPA
  14. Application servers and Cluster
  15. JMS

9. Java Frameworks

  1. What is a framework?
  2. Use opensource?
  3. Struts 1.x
  4. Velocity and Freemarker
  5. Hibernate 3
  6. Spring Framework
  7. Frameworks' new generation

10. Web 2.0

  1. Ajax: DWR, GWT and JSF components(RichFaces, IceFaces)
  2. Adobe Flex
  3. OpenLaszlo
  4. Textual search: Lucene
  5. Feeds
  6. Mashups
  7. ECMAScript (old JavaScript)

11. Development and developers

  1. Developers roles
  2. Is expertise separation dead?
  3. DSL: will analists be developers?
  4. The man-hour mith
  5. Agile Methodologies x Waterfall
  6. Unit test and jUnit
  7. Acceptance test and Selenium
  8. Application build: Ant and Maven
  9. Silver bullet?

right corner