31
Prof. Dr. Wolfgang Pree Department of Computer Science cs.uni-salzburg.at © Copyright Wolfgang Pree, All Rights Reserved A Strategic Comparison of Component Standards

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

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

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

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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

© 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

?