User Tools

Site Tools


at-m42:lecture12

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
at-m42:lecture12 [2009/04/17 12:28] eechrisat-m42:lecture12 [2011/01/14 12:45] (current) – external edit 127.0.0.1
Line 17: Line 17:
  
 ===== What is an Enterprise? ===== ===== What is an Enterprise? =====
-  * Enterprise:” marketing hype for any product aimed at a business customer!+  * "Enterprise:marketing hype for any product aimed at a business customer!
   * However, hidden in the name, is the idea of a business taken “holistically”   * However, hidden in the name, is the idea of a business taken “holistically”
   * Enterprise solution   * Enterprise solution
Line 101: Line 101:
   * //Java Mobile Edition// -- for cellular phones, and toasters. Offers a subset of Java Core.   * //Java Mobile Edition// -- for cellular phones, and toasters. Offers a subset of Java Core.
   * //Java Management// -- allows an application to perform network administration   * //Java Management// -- allows an application to perform network administration
 +
 ===== Some of the important Java APIs (2) ===== ===== Some of the important Java APIs (2) =====
   * //Java Database Connectivity// (JDBC) -- Provides database-independent database access. One application can be written, compiled once, and run against any database engine supported by a JDBC driver.   * //Java Database Connectivity// (JDBC) -- Provides database-independent database access. One application can be written, compiled once, and run against any database engine supported by a JDBC driver.
   * //Interface Definition Language// (IDL) -- Enables Java applications to provide a language-neutral interface between Java objects and objects located across the network. It follows the Object Management Group (OMG) IDL specification.   * //Interface Definition Language// (IDL) -- Enables Java applications to provide a language-neutral interface between Java objects and objects located across the network. It follows the Object Management Group (OMG) IDL specification.
   * //Remote Method Invocation// (RMI) -- A Java specific API that lets objects call methods in objects located across the network.    * //Remote Method Invocation// (RMI) -- A Java specific API that lets objects call methods in objects located across the network. 
 +
 ===== Some of the important Java APIs (3) ===== ===== Some of the important Java APIs (3) =====
   * //Java Media// -- a single API that enables developers to write rich multimedia applications interfacing with a variety of multimedia hardware devices.    * //Java Media// -- a single API that enables developers to write rich multimedia applications interfacing with a variety of multimedia hardware devices. 
Line 111: Line 113:
     * The Animation API enables applications to perform transformations on 2D images.      * The Animation API enables applications to perform transformations on 2D images. 
     * Telephony provides an application with a single API for accessing a range of telephone devices.     * Telephony provides an application with a single API for accessing a range of telephone devices.
 +
 ===== Some of the important Java APIs (4) ===== ===== Some of the important Java APIs (4) =====
   * //Java Security// -- provides developers with a simple API for enhancing applet or application security, including the ability to add cryptography, encryption, and authentication.   * //Java Security// -- provides developers with a simple API for enhancing applet or application security, including the ability to add cryptography, encryption, and authentication.
Line 117: Line 120:
   * //Enterprise Java Beans// -- Set of standards that allow distributed objects (using RMI) to operate in an environment in which resource management, data integrity and security can be managed by the provision of suitable container services.   * //Enterprise Java Beans// -- Set of standards that allow distributed objects (using RMI) to operate in an environment in which resource management, data integrity and security can be managed by the provision of suitable container services.
   * //Java Web Services// -- Set of APIs allowing Java to use SOAP and related standards for distributed computing.   * //Java Web Services// -- Set of APIs allowing Java to use SOAP and related standards for distributed computing.
 +
 ===== Some of the most Important Third Party APIs ===== ===== Some of the most Important Third Party APIs =====
  
Line 135: Line 139:
   * Java provides applications direct access to the locale information to provide the proper display of locale-sensitive strings such as date, currency, and numbers.   * Java provides applications direct access to the locale information to provide the proper display of locale-sensitive strings such as date, currency, and numbers.
   * Accessibility is even simpler, (in Swing) you just need to follow the user interface guidelines, Java does the rest.   * Accessibility is even simpler, (in Swing) you just need to follow the user interface guidelines, Java does the rest.
 +
 ===== Sharing Business Concepts ===== ===== Sharing Business Concepts =====
  
Line 157: Line 162:
     * //Architectural questions that should be asked//     * //Architectural questions that should be asked//
     * //Common architectures that are used//     * //Common architectures that are used//
 +
 ===== Strategic Versus Tactical Thought ===== ===== Strategic Versus Tactical Thought =====
  
Line 165: Line 171:
     * Designing for //products// supports growth when you make other things in the future.     * Designing for //products// supports growth when you make other things in the future.
   * A good systems architect will be a strong strategic thinker.   * A good systems architect will be a strong strategic thinker.
 +
 ===== Architectural Questions ===== ===== Architectural Questions =====
  
Line 176: Line 183:
     * What standards should the design and development teams adhere to?     * What standards should the design and development teams adhere to?
     * What tools best meet these needs?     * What tools best meet these needs?
 +
 ===== Common Architectures ===== ===== Common Architectures =====
  
Line 182: Line 190:
   * //Client-server// is a generic term for any application architecture that divides processing among two or more processes, often on two or more machines.   * //Client-server// is a generic term for any application architecture that divides processing among two or more processes, often on two or more machines.
   * Any database application is client-server if it handles data storage and retrieval in the database process and data manipulation & presentation somewhere else. //Server// is the database engine, //client// is the process that gets or creates the data. Client-server is used so that all clients see the same data.   * Any database application is client-server if it handles data storage and retrieval in the database process and data manipulation & presentation somewhere else. //Server// is the database engine, //client// is the process that gets or creates the data. Client-server is used so that all clients see the same data.
 +
 ===== Two-tier client/server ===== ===== Two-tier client/server =====
  
Line 195: Line 204:
   * Difficult to change application, or support a range of applications   * Difficult to change application, or support a range of applications
 {{:at-m42:fat-client.png?591|A fat client architecture.}} {{:at-m42:fat-client.png?591|A fat client architecture.}}
 +
 ===== Object Reuse ===== ===== Object Reuse =====
  
Line 201: Line 211:
   * For example for a bank application you want the same business object "my account" to be seen by an ATM application, bank teller application or internet banking client.   * For example for a bank application you want the same business object "my account" to be seen by an ATM application, bank teller application or internet banking client.
   * If I am about to make a purchase and my wife withdraws my last £100, I want to see that change!   * If I am about to make a purchase and my wife withdraws my last £100, I want to see that change!
 +
 ===== When to use a two-tier design ===== ===== When to use a two-tier design =====
  
Line 217: Line 228:
   * Isolates data processing in a central location and maximises object reuse.   * Isolates data processing in a central location and maximises object reuse.
 {{:at-m42:3-tier.png?705.5|Three-tier architecture.}} {{:at-m42:3-tier.png?705.5|Three-tier architecture.}}
 +
 ===== Isolated data store connectivity ===== ===== Isolated data store connectivity =====
  
Line 223: Line 235:
   * If data model changes, only business objects will see the change.   * If data model changes, only business objects will see the change.
   * Client only talks to the objects on the server.   * Client only talks to the objects on the server.
 +
 ===== Centralized Business Processing ===== ===== Centralized Business Processing =====
  
Line 229: Line 242:
   * If client wants to change an object, it does it through the API. The server is responsible for ensuring change is recorded in database.   * If client wants to change an object, it does it through the API. The server is responsible for ensuring change is recorded in database.
   * Rules for processing data are called business rules and are recorded in central location. All objects then obey the rules   * Rules for processing data are called business rules and are recorded in central location. All objects then obey the rules
 +
 ===== Business Object Presentation ===== ===== Business Object Presentation =====
  
Line 241: Line 255:
     * The internet banking application in the web browser     * The internet banking application in the web browser
     * Mobile phone or interactive TV access to accounts     * Mobile phone or interactive TV access to accounts
 +
 ===== Drawbacks to the three-tier architecture ===== ===== Drawbacks to the three-tier architecture =====
  
Line 246: Line 261:
   * You will have more distinct components and therefore more to manage.   * You will have more distinct components and therefore more to manage.
   * You’ll need software engineers who are competent in three-tier programming skills such as transaction management and computing.   * You’ll need software engineers who are competent in three-tier programming skills such as transaction management and computing.
-  * While tools like Java EE and EJB aim to minimise the complexity, they cannot eliminate it. +  * While tools like Java EEEJB Spring and Grails aim to minimise the complexity, they cannot eliminate it. 
  
 ===== Lecture Content ===== ===== Lecture Content =====
Line 253: Line 268:
   * [[#Enterprise Development on the Java Platform]]    * [[#Enterprise Development on the Java Platform]] 
   * [[#Architecture]]   * [[#Architecture]]
-  * [[#Distributed Application Architecture]]+  * **[[#Distributed Application Architecture]]**
   * [[#Software Design Patterns]]   * [[#Software Design Patterns]]
 +
 ===== Distributed Application Architecture ==== ===== Distributed Application Architecture ====
-  * Presentation Tier + 
-  Web Container +{{:at-m42:daa.png?693|Distributed Application Architecture}} 
-  Business Tier + 
-  Integration Tier +===== Presentation Tier ===== 
-  Implementation Technologies + 
-  Implementation Technologies +{{:at-m42:daa-presentation-tier..png?693|Presentation tier.}} 
-  Implementation Technologies + 
-  * Content  +===== Web Container ===== 
-  * The Enterprise +{{:at-m42:web-container.png?693|Web container.}} 
-  * Java as a Tool for Enterprise Development + 
-  * Architecture +===== Business Tier ===== 
-  * Distributed Application Architecture + 
-  * Software Design Patterns+{{:at-m42:business-tier.png?733.5|Business Tier.}} 
 + 
 +===== Integration Tier ===== 
 + 
 +{{:at-m42:integration-tier.png?708|Integration tier.}} 
 + 
 +===== Implementation technologies: presentation tier ===== 
 +{{:at-m42:presentation-tier.png?438|Choices at the presentation tier.}} 
 + 
 +===== Implementation technologies: business tier ===== 
 +{{:at-m42:business-tier-choices.png?592|Business-tier choices.}} 
 + 
 +===== Implementation technologies: integration tier ===== 
 +{{:at-m42:integration-tier-choices.png?722|Integration-tier choices.}} 
 + 
 +===== Lecture Contents ===== 
 + 
 +  * [[#What is an Enterprise?|The Enterprise]] 
 +  * [[#Enterprise Development on the Java Platform]]  
 +  * [[#Architecture]] 
 +  * [[#Distributed Application Architecture]] 
 +  * **[[#Software Design Patterns]]**
  
 ===== Software Design Patterns ===== ===== Software Design Patterns =====
-  * Popularised by the book: Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Addison Wesley) [Gang of Four or GoF]. +  * Popularised by the book: //Design Patterns// by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Addison Wesley) [Gang of Four or GoF]. 
-  * The are recurring forms of software development that you can capture at a low level and reuse across dissimilar applications.+  * They are recurring forms of software development that you can capture at a low level and reuse across dissimilar applications.
   * Within any application scope there are problems that you have encountered: patterns are the result of your recognising those problems and creating (and documenting) a common solution.   * Within any application scope there are problems that you have encountered: patterns are the result of your recognising those problems and creating (and documenting) a common solution.
-  * Recognising Patterns+ 
 +===== Recognising Patterns ===== 
   * First identify problems in generic terms   * First identify problems in generic terms
   * Need to relate GUI widgets on the client to business objects in the application server   * Need to relate GUI widgets on the client to business objects in the application server
-  * GUI widgets should observe changes in the centralised business objects +    * GUI widgets should observe changes in the centralised business objects 
-  * Need to make business objects persistent by saving them to a database+    * Need to make business objects persistent by saving them to a database
   * We will describe some patterns that help us to achieve these goals as we develop our theme.   * We will describe some patterns that help us to achieve these goals as we develop our theme.
-  * Many more are to be found in Core J2EE Patterns and on the Web http://java.sun.com/blueprints/corej2eepatterns/ +  * Many more((Some of which are now thought to be //anti-patterns//)) are to be found in Core J2EE Patterns and on the [[http://java.sun.com/blueprints/corej2eepatterns/Web]]
-  * Lecture Summary +
-  * The Enterprise +
-  * Java as a Tool for Enterprise Development +
-  * Architecture +
-  * Distributed Application Architecture +
-  * Software Design Patterns +
-  * +
  
-  * The slides and notes in this presentation are adapted from //Groovy Programming// (See [[lecture0#Reading|Recommended Reading]]). +===== Lecture Summary =====
-  *  +
-  * An index to the source code for all the examples in this lecture is [[/~eechris/at-m42/Examples/lecture02|available]]. +
-  *  +
-===== Heading 1 ===== +
-  *  +
-  * <code groovy 1 | Example 1: Everything is an object (at-m42/Examples/lecture02/example1.groovy)> +
-  * extern> http://www.cpjobling.org.uk/~eechris/at-m42/Examples/lecture02/example1.groovy +
-  * </code> +
-  * ---- +
-  *  +
-  * Notes ... +
-  *  +
-===== Heading 2 ===== +
-  *  +
-  * [[#Sub head 1]] +
-  * [[#Sub head 2]] +
-  * +
  
-===== Summary of this Lecture ==== +  * [[#What is an Enterprise?|The Enterprise]] 
-  *   +  * [[#Enterprise Development on the Java Platform]]  
-  * The .... +  * [[#Architecture]] 
-  * +  * [[#Distributed Application Architecture]] 
 +  * [[#Software Design Patterns]]
  
-  * [[#Heading 1]] + 
-  * [[#Heading 2]] +---- 
-  * [[#heading 3]] +[[Home]] | [[part3|Previous Lecture]] | [[Lectures]] | [[lecture13|Next Lecture]] 
-  *  +
-===== Lab Exercises ===== +
-  *  +
-  * [[eg-m42:labs:lab1|Lab 1]] exercises 1-7. +
-  *  +
-  * ---- +
-  *  +
-  [[Home]] | [[lecture1|Previous Lecture]] | [[Lectures]] | [[lecture3|Next Lecture]] +
  
at-m42/lecture12.1239971305.txt.gz · Last modified: 2011/01/14 12:22 (external edit)