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:20] 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 191: Line 200:
 ===== Adding Application Logic ===== ===== Adding Application Logic =====
  
-  * If we move beyond simple information presentation we end up with fat clients” and start to break simple two tier architectures+  * If we move beyond simple information presentation we end up with "fat clientsand start to break simple two tier architectures
   * Client has knowledge of application   * Client has knowledge of application
   * Difficult to change application, or support a range of applications   * Difficult to change application, or support a range of applications
-  * Object Reuse+{{:at-m42:fat-client.png?591|A fat client architecture.}} 
 + 
 +===== Object Reuse ===== 
   * Object reuse is usually associated with the reuse of source code.   * Object reuse is usually associated with the reuse of source code.
-  * In a client server system you want to exploit the reuse of instances of objects. +  * In a client server system you want to exploit the reuse of //instances of objects//
-  * 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 accountto 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 ===== 
   * Use two tier if you can answer yes to all of the following   * Use two tier if you can answer yes to all of the following
-  * Do you have to develop something quickly? +    * Do you have to develop something quickly? 
-  * Will you be using a single database? +    * Will you be using a single database? 
-  * Is your database engine located on a single host? +    * Is your database engine located on a single host? 
-  * Is your database likely to stay approximately the same size over time? +    * Is your database likely to stay approximately the same size over time? 
-  * Is your user base likely to stay the same size over time? +    * Is your user base likely to stay the same size over time? 
-  * Are your requirements fixed with little or no possibility of change? +    * Are your requirements fixed with little or no possibility of change? 
-  * Do you expect minimal maintenance after delivery?+    * Do you expect minimal maintenance after delivery?
   * If not, then you need to consider three tier.   * If not, then you need to consider three tier.
-  *  
  
-  *  +===== Three Tier ===== 
-  * Three Tier+
   * Isolates data processing in a central location and maximises object reuse.   * Isolates data processing in a central location and maximises object reuse.
-  * Isolated data store connectivity+{{:at-m42:3-tier.png?705.5|Three-tier architecture.}} 
 + 
 +===== Isolated data store connectivity ===== 
   * In two tier any change in the data model means a change in the client. As there are many clients, this may be expensive and difficult to guarantee.   * In two tier any change in the data model means a change in the client. As there are many clients, this may be expensive and difficult to guarantee.
   * In three tier, application objects will need to store their state in a database, but client does not need to be aware of how the storage is achieved or even that a database is being used.   * In three tier, application objects will need to store their state in a database, but client does not need to be aware of how the storage is achieved or even that a database is being used.
   * 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 ===== 
   * Objects on server model the business (business objects)   * Objects on server model the business (business objects)
   * Database interface of business object is hidden. Client and other objects see only the public API.   * Database interface of business object is hidden. Client and other objects see only the public API.
   * 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 ===== 
   * User interfaces change constantly during the development process as users play with them.   * User interfaces change constantly during the development process as users play with them.
   * The final appearance depends on   * The final appearance depends on
-  * The hardware being used +    * The hardware being used 
-  * The applications user base +    * The application's user base 
-  * The purpose of the application in question.+    * The purpose of the application in question.
   * E.g. banking objects presented as:   * E.g. banking objects presented as:
-  * The teller window’s console at the branch +    * The teller window’s console at the branch 
-  * The ATM machine +    * The ATM machine 
-  * 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 ===== 
   * Level of complexity it adds to the system.   * Level of complexity it adds to the system.
   * 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 J2EE and EJB aim to minimise the complexity, they cannot eliminate it. +  * While tools like Java EE, EJB Spring and Grails aim to minimise the complexity, they cannot eliminate it. 
  
 ===== Lecture Content ===== ===== Lecture Content =====
Line 247: 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.1239970816.txt.gz · Last modified: 2011/01/14 12:22 (external edit)