a strategic comparison of component standards · visual basic, c, c++, c#, java, smalltalk, object...
TRANSCRIPT
![Page 1: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/1.jpg)
Prof. Dr. Wolfgang PreeDepartment of Computer Science
cs.uni-salzburg.at
© Copyright Wolfgang Pree, All Rights Reserved
A Strategic Comparison ofComponent Standards
![Page 2: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/2.jpg)
© 2004, W. Pree 2
Contents
What is a component?
COM :: Java :: Corba
Visions
![Page 3: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/3.jpg)
© 2004, W. Pree 3
What is a component?
![Page 4: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/4.jpg)
© 2004, W. Pree 4
Remember: What is missing in OO?
interoperability
visual/interactive configuration
![Page 5: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/5.jpg)
© 2004, W. Pree 5
What is a component?
Not yet clearly defined
Is everything a component?
macros, mixins, functions, procedures, modules,classes, etc.
Conventional, heavy-weight components:
operating systems database systems
![Page 6: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/6.jpg)
© 2004, W. Pree 6
Our definition of the term (software) component
A piece of software with aprogramming interface
![Page 7: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/7.jpg)
© 2004, W. Pree 7
Wiring standards (I)
Interoperability problem:
=> wiring standards
Java
C++
ST
C
![Page 8: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/8.jpg)
© 2004, W. Pree 8
Wiring standards (II)
Product-driven definition
Microsoft’s Component Object Model (COM) evolutionary / incrementally originally targeted at the desktop
=> had to be extended for Internet/Intranetand Enterprise Computing
carries some legacy de facto standardization through the market
dominance of Microsoft
![Page 9: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/9.jpg)
© 2004, W. Pree 9
Wiring standards (III)
Consortium standardization (OMG)
CORBA slow progress (compared to COM and
SunSoft’s JavaBeans)
JavaBeans based on 100% pure Java standards for integrating other components
are under development(EJB, Æ CORBA
![Page 10: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/10.jpg)
© 2004, W. Pree 10
CORBA model of distributed applications
main-Prg.Proxy
A
ProxyB
IRProxy
(D)SOM, Distributed COMRMIOS
IR Disp.
A BC ...
Impl. Rep.
ORB Core, IBM DSOM ObjMgrRMIOS
Dyn. Inv. Int.(B’sInterface)MOfA(p1)
MOfB(p2)
Client ServerNetz
![Page 11: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/11.jpg)
© 2004, W. Pree 11
Characteristics of components
Information Hiding
interface described in IDL
implementation in anylanguage (Java, ST, C++, C, ...)
components as binary units (machine-independent byte code isalso OK)
components can be made persistent
![Page 12: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/12.jpg)
© 2004, W. Pree 12
Component = Class ?
Usually, a component (large-grained component) comprises acouple of classes (fine-grained components):
client components
![Page 13: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/13.jpg)
© 2004, W. Pree 13
Beyond Wiring
meta-level informationen
components can ask others about offered features dynamic loading and linking
semantic aspects
CORBA: wiringJavaBeans: meta-level (reflection), semantics;
for pure Java wiring becomes irrelevantCOM: all three aspects
![Page 14: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/14.jpg)
© 2004, W. Pree 14
Characteristics of componentstandards
![Page 15: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/15.jpg)
© 2004, W. Pree 15
Component Object Model (I)
COM concepts:
interfaces and components (= COM classes) have aunique (128-Bit) ID
each COM-Objekt can be asked, which features aresupported:
interface IUnknown; method QueryInterface
![Page 16: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/16.jpg)
© 2004, W. Pree 16
Component Object Model (II)
A component can have any number of interfaces:
Extension by adding interfaces; existing interfacesremain untouched.
Int1
Int2
Function1 ptr
FunctionN ptr. . .
Int2 Functions
Function1
FunctionN. . .
![Page 17: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/17.jpg)
© 2004, W. Pree 17
JavaBeans
Properties (→ Setter/Getter methods) aredefined interactively in a Beans environment:
Events form the communication mechanism:
a
Listener
Source Listener
Listener
![Page 18: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/18.jpg)
© 2004, W. Pree 18
Commonalities and differences
![Page 19: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/19.jpg)
© 2004, W. Pree 19
Commonalities
OO (Information Hiding, late Binding, Subtyping) Compound Documents (original meaning of OLE, idea of OpenDoc) component transfer mechanism
eg JAR files, COM Structured Storage coupling based on events meta-information persistence
![Page 20: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/20.jpg)
© 2004, W. Pree 20
Differences
memory management binary standards development environments versioning application domains supported platforms and languages
![Page 21: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/21.jpg)
© 2004, W. Pree 21
Memory management
COM: tedious reference counting; should beautomated in COM+
Java: garbage collection; distributed GC notcompatible to Java-CORBA integration
CORBA: no general solution
![Page 22: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/22.jpg)
© 2004, W. Pree 22
Binary standards
core aspect of COM
in Java: byte code; partially through Java NativeInterface (JNI)
CORBA provides no binary standard (compatibilitybased on language bindings)
![Page 23: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/23.jpg)
© 2004, W. Pree 23
Development environments
COM: solid environments
Java/JavaBeans: have to grow up
CORBA: quite unsatisfying
![Page 24: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/24.jpg)
© 2004, W. Pree 24
Versioning
COM: solved via freezing of interfaces
Java: based on binary compatibility; tedious rules
CORBA: not directly supported; unsatisfying versionnumbers
![Page 25: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/25.jpg)
© 2004, W. Pree 25
Applications
COM: focus on the desktop Java: focus on the Web CORBA: focus on server/Enterprise Computing
DCOM and EJB aim at server/Enterprise Computing ActiveX-components for Windows-Web-Clients
![Page 26: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/26.jpg)
© 2004, W. Pree 26
Languages and platforms (I)
COM: Due to the binary standard, almost anylanguage can be supported efficiently on anyplatform (DCOM):
Visual Basic, C, C++, C#, Java, Smalltalk, ObjectPascal, Lightning Oberon, Object Cobol, ML, etc.
Java: binary standard based on Java byte code+ platform independent (VM per platform)– too much biased towards Javanot well suited for Ada95, REXX, Oberon;impossible for C++
![Page 27: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/27.jpg)
© 2004, W. Pree 27
Languages and platforms (II)
CORBA: ORB developers have to providelanguage bindings for particular languages
Thus, only a few languages are supported: C++,(Smalltalk), Java
![Page 28: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/28.jpg)
© 2004, W. Pree 28
Visions
![Page 29: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/29.jpg)
© 2004, W. Pree 29
Filling the gap
Mega components (SAP, DB systems, operatingsystems)
only a few medium-sized components existso far
very small components(GUI components, etc.)
![Page 30: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/30.jpg)
© 2004, W. Pree 30
Mechanistic view
Currently software components assembly requiresexact matching of interfaces:
![Page 31: A Strategic Comparison of Component Standards · Visual Basic, C, C++, C#, Java, Smalltalk, Object Pascal, Lightning Oberon, Object Cobol, ML, etc. Java: binary standard based on](https://reader033.vdocuments.mx/reader033/viewer/2022060601/60551838a0825373ea480eaa/html5/thumbnails/31.jpg)
© 2004, W. Pree 31
Adaptive architectures
Alternative: components configurethemselves automatically through testing &fitting.
Sources of inspiration: Sun’s Jini, Microsoft‘s .NET agent technology ontologies
?