at-m42:lecture12
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
at-m42:lecture12 [2009/04/17 12:25] – eechris | at-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:" |
* 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// | * //Java Management// | ||
+ | |||
===== Some of the important Java APIs (2) ===== | ===== Some of the important Java APIs (2) ===== | ||
* //Java Database Connectivity// | * //Java Database Connectivity// | ||
* //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// | * //Remote Method Invocation// | ||
+ | |||
===== 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, | * //Java Security// -- provides developers with a simple API for enhancing applet or application security, including the ability to add cryptography, | ||
Line 117: | Line 120: | ||
* // | * // | ||
* //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: | ||
* // | * // | ||
* //Common architectures that are used// | * //Common architectures that are used// | ||
+ | |||
===== Strategic Versus Tactical Thought ===== | ===== Strategic Versus Tactical Thought ===== | ||
Line 165: | Line 171: | ||
* Designing for // | * Designing for // | ||
* 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: | ||
* // | * // | ||
* 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/ | ===== Two-tier client/ | ||
Line 195: | Line 204: | ||
* Difficult to change application, | * Difficult to change application, | ||
{{: | {{: | ||
+ | |||
===== Object Reuse ===== | ===== Object Reuse ===== | ||
Line 201: | Line 211: | ||
* For example for a bank application you want the same business object "my account" | * For example for a bank application you want the same business object "my account" | ||
* 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. | ||
{{: | {{: | ||
+ | |||
===== 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 | ||
* 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 application’s 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 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 |
* 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 |
===== Lecture Content ===== | ===== Lecture Content ===== | ||
Line 251: | Line 268: | ||
* [[# | * [[# | ||
* [[# | * [[# | ||
- | * [[# | + | |
* [[#Software Design Patterns]] | * [[#Software Design Patterns]] | ||
+ | |||
===== Distributed Application Architecture ==== | ===== Distributed Application Architecture ==== | ||
- | * Presentation Tier | + | |
- | | + | {{: |
- | | + | |
- | | + | ===== Presentation Tier ===== |
- | | + | |
- | | + | {{: |
- | | + | |
- | * Content | + | ===== Web Container |
- | * The Enterprise | + | {{: |
- | * Java as a Tool for Enterprise Development | + | |
- | * Architecture | + | ===== Business Tier ===== |
- | * Distributed Application Architecture | + | |
- | * Software Design Patterns | + | {{: |
+ | |||
+ | ===== Integration Tier ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== Implementation | ||
+ | {{: | ||
+ | |||
+ | ===== Implementation | ||
+ | {{: | ||
+ | |||
+ | ===== Implementation | ||
+ | {{: | ||
+ | |||
+ | ===== Lecture Contents ===== | ||
+ | |||
+ | * [[#What is an Enterprise? | ||
+ | * [[#Enterprise Development | ||
+ | * [[#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: | * Within any application scope there are problems that you have encountered: | ||
- | * 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 | ||
- | | + | |
- | * 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:// | + | * Many more((Some of which are now thought to be // |
- | * 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// | + | ===== Lecture Summary |
- | * | + | |
- | * An index to the source code for all the examples in this lecture is [[/ | + | |
- | * | + | |
- | ===== Heading 1 ===== | + | |
- | * | + | |
- | * <code groovy 1 | Example 1: Everything is an object (at-m42/ | + | |
- | * extern> http:// | + | |
- | * </ | + | |
- | * ---- | + | |
- | * | + | |
- | * Notes ... | + | |
- | * | + | |
- | ===== Heading 2 ===== | + | |
- | * | + | |
- | * [[#Sub head 1]] | + | |
- | * [[#Sub head 2]] | + | |
- | * | + | |
- | ===== Summary of this Lecture ==== | + | * [[#What is an Enterprise? |
- | * | + | * [[# |
- | * The .... | + | * [[# |
- | * | + | * [[# |
+ | * [[#Software Design Patterns]] | ||
- | * [[#Heading 1]] | + | |
- | * [[#Heading 2]] | + | ---- |
- | * [[#heading 3]] | + | [[Home]] | [[part3|Previous Lecture]] | [[Lectures]] | [[lecture13|Next Lecture]] |
- | * | + | |
- | ===== Lab Exercises ===== | + | |
- | * | + | |
- | * [[eg-m42: | + | |
- | * | + | |
- | * ---- | + | |
- | * | + | |
- | | + | |
at-m42/lecture12.1239971152.txt.gz · Last modified: 2011/01/14 12:22 (external edit)