Distribuerte Systemer Viktigere enn vi tror, vanskeligere enn det høres Komponenttorget ‘99 Trondheim Trygve Reenskaug Numerica Taskon Distaribuerte Systemer
Personal Information Environments Content and Communication Digital Map Census Data Police Records House Drawings Aerial Photos Police Dispatcher Distaribuerte Systemer © Trygve Reenskaug 1999
The Connected Organization The Real Challenges The Connected Organization Effective Partitioning of Information Services Effective, Enjoyable and Instructive Tools Business processes Task / Use Case / Tool Information services Distaribuerte Systemer © Trygve Reenskaug 1999
Presentation plan Communication-centered architectures A new system generation The Collaboration Remote Method Invocation (+ CORBA, COM) The Component (+ Java Bean, Java Enterprise Bean) Summary and Conclusion Distaribuerte Systemer
CPU-Centered paradigm Output Input Central Processing Unit FORTRAN Algol 60 Tape Hardware Software Distaribuerte Systemer
Storage-Centered paradigm Shared database App.1 App.2 App.4 App.3 DB Schema language e.g. Entity-Relation e.g. NIAM Output Input Memory Central Processing Unit Disk Tape Hardware Software Distaribuerte Systemer
Communication-Centered paradigm Object 1 Object 2 Object 4 Object 3 Information Bus Central Processing Unit Input Output Disk Communication Bus Memory Tape Composition language e.g. ???? Hardware Software Distaribuerte Systemer
Summary - 1 Unlimited Scaling Distributed Ownership Support people’s Tasks Flexible Consistency Requirements Fideikommiss - 186 hits Distaribuerte Systemer © Trygve Reenskaug 1999
Presentation plan The Collaboration Summary and Conclusion Communication-centered architectures A new system generation The Collaboration Remote Method Invocation (+ CORBA, COM) The Component (+ Java Bean, Java Enterprise Bean) Summary and Conclusion Distaribuerte Systemer
No Main Program! Centralized solutions The designer sees everything knows everything understands everything controls everything The SYSTEM Distributed solutions The object - has responsibility knows its collaborators is robust Nobody knows everything! Distaribuerte Systemer
Network with Default Resource The (toy) sample user interface is a Java Applet that is run from a web browser. The interface interacts with a background service that is also written in Java. The top bars in the bar chart shows the earliest times when the activities can be performed. The bottom bars show when the activities can be done if all use the same resource, and this resource can only serve one activity at the time. Distaribuerte Systemer © Trygve Reenskaug 1999
Network with Gantry Resource An example of specialization: Some activities use a Gantry crane. Our crane has two independent hooks: One can lift a light load and the other can lift any load. Activity B is to lift a light load. It can be performed concurrently with activity C, which is a heavy load. Activities D and E are both heavy loads, they have to be performed in sequence. Activities A and F use the old resource that can serve one at the time. Distaribuerte Systemer © Trygve Reenskaug 1999
The objects and their message paths WEB Browser paint(); Button Code is invisible! Applet ActivityGraph Project BarChart Project activity-B activity-D activity-A Activity-F activity-C activity-E Distaribuerte Systemer
Summary - 2 Move from closed to open systems Distributed solutions The object has responsibility knows its collaborators is robust Nobody knows everything! Move from closed to open systems Move from centralized to distributed control Change focus from build-time to run-time aspects Abstraction: The role the object plays in collaboration context Distaribuerte Systemer
Presentation plan Remote Method Invocation (+ CORBA, COM) Communication-centered architectures A new system generation The Collaboration Remote Method Invocation (+ CORBA, COM) The Component (+ Java Bean, Java Enterprise Bean) Summary and Conclusion Distaribuerte Systemer
Java RMI Remote Method Invocation WEB Browser Client Button Server App ActivityGraph Information Bus BarChart Project activity-B activity-D activity-A Activity-F activity-C activity-E Remote access is slow and error prone. Simplify and clarify!!! Distaribuerte Systemer
RMI middleware (1 second can grow to 3 hours!!) Client Server The BarChart object The ActivityGraph object The Project object (A Server) An Activity object (A server) Project Stub represents the Project Activity skeleton represents sender Activity Stub represents an Activity Information Bus Project skeleton represents sender Java Naming & RMI Services (or CORBA or COM) HTML - web page language TCP/IP - Guaranteed end-to-end data stream Physical communication (ISDN/Ethernet/….) Distaribuerte Systemer
Presentation plan The Component (+ Java Bean, Java Enterprise Bean) Communication-centered architectures A new system generation The Collaboration Remote Method Invocation (+ CORBA, COM) The Component (+ Java Bean, Java Enterprise Bean) Summary and Conclusion Distaribuerte Systemer
Why use components Use componets to Simplify remote communication Avoid coding to save time Avoid coding to increase quality Use tools to increase your productivity Get transactions, security, etc. for free Distaribuerte Systemer
What is a Component Tools are used to compose systems A component is reused by cloning A Component is an object playing standardized roles A Component is a reusable object Technology System user System composer Component creator Tool developer and vendor Component environment standardizer Organization Distaribuerte Systemer
Compose User Interface with Java Beans Distaribuerte Systemer
Bean object plays several roles BeanBox Composer Use Case Run-time display Use Case App Bean Object Distaribuerte Systemer
Component standardization examples Information Bus Java Bean User Interface Properties Events Composition Run time context Enterprise Java Bean Naming Persistence Transactions Security Load sharing Client Server Distaribuerte Systemer
Presentation plan Summary and Conclusion Communication-centered architectures A new system generation The Collaboration Remote Method Invocation (+ CORBA, COM) The Component (+ Java Bean, Java Enterprise Bean) Summary and Conclusion Distaribuerte Systemer
Distributed Systems What you get: Unlimited scaling Distributed ownership Specific task support Information partitioning How you do it: Think in terms of objects, their responsibilities and collaboration. Think in terms of open systems, no main program. Distaribuerte Systemer
Component-based development What you get: Build by composing library objects, avoid coding. Leverage infrastructure mechanisms (transactions, security, persistence,…) How you do it: Think in terms of objects. (Responsibilities, environment, collaboration.) Penetrate vendor fog - find essentials Insist on high product quality Adapt to new layers in value chain Distaribuerte Systemer
The competing technologies CORBA™ Object Management Group (OMG) Public standards Java™ SUN Microsystems Build once, run anywhere COM™ Microsoft Dominating on desktops Distaribuerte Systemer
You can do it! http://www.ifi.uio.no/~trygve Distributed systems Distaribuerte Systemer
Kaffe Distaribuerte Systemer