Om inzicht te krijgen in de materie wordt eerst ingegaan op Java (RMI), Corba en DCOM. Verderop worden de voor en nadelen en de toekomst van Compound Documents behandeld. Hierin worden Java Beans, OpenDoc en OLE/Word bekeken.
Inleiding
1: Java
- geschiedenis
- Wat is Java
- stand van zaken
2: Corba
- geschiedenis
- stand van zaken
3: DCOM
- geschiedenis
- stand van zaken
4: Compound Documents
- OpenDoc
- OLE
- Java Beans
- Compatibiliteit
Conclusie
Referenties
Op dit moment biedt het web nog weinig mogelijkheden voor echte interactiviteit.
De meeste sessies op het web bestaan alleen maar uit het simpel ophalen van een
pagina, dan het ophalen van een volgende pagina van een (andere) server,
..enz.
Soms mag je een formuliertje invullen of een hokje aanklikken, waarna het hele
formulier in een keer terug gestuurd wordt naar de server.
Verder is Internet nog altijd erg traag, en zal dat voorlopig blijven. Hierdoor
is het moeilijk om echte interactieve toepassingen zonder te lange vertragingen
uit te voeren.
Compound Document Frameworks zijn een soort "web"pagina's die multimedia
objecten integreren. Zo kunnen ze tekst, video, spraak, spreadsheets, url's, het
huidige weerbericht en nog veel meer combineren tot een naadloze file. Ook op
je beeldscherm ziet zo'n
Compound Document er uit als een naadloos geheel. Word 97 en sommige andere
"tekst"verwerkers komen al aardig in de richting, maar Word kan bijvoorbeeld
geen video bewerken, alleen maar invoegen als een soort attachment. Het moet dus
echt duidelijk een geheel zijn met een uniform User-Interface. Bovendien kan
Word (nog) niet allerlei bestanden/objecten van over de hele wereld via een
netwerk binnen halen.
Ik denk dat de toekomstige ontwikkelingen van object oriented middleware voor
een heel belangrijk deel binnen een jaar duidelijk worden. Dan is namelijk
Netscape 5 uit en Microsoft IE 5 ook al wat meer ingeburgerd. Als Microsoft er
in slaagt, een groot deel van de browsermarkt te veroveren, zeg 80% dan heeft
DCOM een redelijke kans van slagen. Op het moment is nog niet duidelijk hoe
Netscape er precies gaat uitzien. Afhankelijk daarvan gaat Java z'n marktaandeel
sneller /langzamer uitbreiden. Corba is heel belangrijk geweest voor de
ontwikkeling van object oriented middleware en er zijn veel goede ideeen uit
gekomen. Helaas acht ik de kans niet groot dat Corba in de toekomst echt een
standaard wordt. Ten eerste ondat er nu nog maar weinig goede uitgebreide
werkende implementaties van bestaan. En ten tweede omdat het heel moeilijk is om
tussen het geweld van Microsoft en het zeer snel evolueerende Web (lees: java)
stand te houden.
Deze lijst met links is gemaakt om het informatie (terug)vinden voor m'n OO
paper makkelijker te maken. De lijst is niet volledig en zal dat ook nooit
worden.
Ook van niet alle hier vermelde links zal in m'n paper informatie terug te
vinden zijn.
http://cs.ru.ac.za/func/java/docs/wwwbtb/chap19/
www.cs.iupui.edu/~rraje/html/adcomp/sld001.htm
http://st-www.cs.uiuc.edu/users/droberts/evolve.html
http://www.pfu.edu.ru/TeleSys/Calypso/Docs/CORBA/Tutorial/ap_cf.html
http://www.colorado.edu/infs/jcb/sinewave/integration/corba/history.html
http://www.pandasys.com/html/pandaworks_features.html
http://www.sun.nl/service/education
http://www.cs.wustl.edu/~schmidt/submit/Paper.html
http://www.computerworld.com/home/online9697.nsf/all/970807corba
http://java.sun.com/beans/
http://www.ibm.com/java/academic
http://www.software.ibm.com/ad/techsupt/faq/faqotadx.html
Boek Object Oriented Programming, Anton Eliens.
Artikel "Remote procedure calls and Java Remote Method Invocation"(juni 98) door
Jim Waldo (Sun Microsystems), artikel uitgedeeld tijdens college 2 van
Distributed Systems.
Diverse stukken van Orfali.
Inleiding:
Een mogelijke oplossing om aan deze problemen tegemoet te komen is Java, Java
draait een programma op de locale computer van de server, hierdoor lijkt het
alsof men echt interacteerd met de server. Java in combinatie met CGI scripts
kan redelijk interactief overkomen. Door lokaal te draaien vang je namenlijk ook
het snelheidsprobleem voor een groot deel op.
1: Java
geschiedenis:
Java begon rond 1990 in het kader van het 'Green' project van Sun. Men wilde
software ontwikkelen voor consumenten-electronica. In eerste instantie werd
daarbij gemikt op set-top boxen voor interactieve televisie en video-on-demand.
Hiervoor ontwikkelde men de taal 'Oak'. In deze taal werd al rekening gehouden
met allerlei netwerk-issues omdat men intelligente apparaten met elkaar wilde
kunnen laten praten. Toen het World Wide Web in 1994 een enorme vlucht begon te
nemen realiseerde Sun zich plotseling dat ze met 'Oak' een taal in handen had
die zich uitstekend leende om Web-pagina's tot leven te brengen. Maar omdat de
naam 'Oak' niet kon worden geregistreerd als handelsnaam moest men een andere
naam kiezen. Sun introduceerde het concept daarom in mei 1995 als 'Java', naar
de koffie waarop de programmeurs van Sun menige zenuwslopende nacht wakker
bleven.
Wat is Java:
Van de buitenkant is Java een gewone programmeertaal net als pascal en C++. Waar
C++ echter wordt gecompileerd tot een executable, wordt java omgezet in een
bytecode, deze bytecode wordt vervolgens door een interpreter uitgevoerd. Dit
scheelt een hoop in performance, maar heeft ook veel voordelen. Zo kan de zelfde
bytecode op alle soorten en maten computers met de meest veschillende operating
systems toch gedraaid worden. Iedere computer/os combinatie heeft namenlijk z'n
eigen interpreter, Java Virtual Machine (JVM) genoemd. Hierdoor is het mogelijk
om programmaatjes te schrijven voor op web-pagina's die op iedere computer met
een webbrowser draaien. Dit scheelt de programmeur een hele hoop tijd, hij hoeft
nu immers nog maar een programma te schrijven voor alle computer i.p.v. voor
alle platforms een apparte. Helaas gaat dit verhaal alleen nog maar op voor
kleine programma's en niet voor grotere zoals Plug-ins.
Stand van zaken:
Java is op dit moment de "hot" language. Door de enorme expansie van het
Internet en met name het www wordt java veel gebruikt, ook omdat het veel op
c/c++ lijkt en omdat het compact is. Ik denk dat er in de toekomst veel nieuwe
API uit zullen komen die Java tot een krachtige veelzijdige taal zullen maken
die java nog wel eens de balangrijkste taal in OO zou kunnen maken.
2: Corba
geschiedenis:
Corba staat voor Common Object Request Broker Architecture. Corba is ontwikkeld
door OMG (Object Management Group). Dit is een consortium van ongeveer 750
software bedrijven, hardware bedrijven, ontwikkelaars en gebruikers. OMG is
opgericht om Object oriented technology toe te passen op distributed client
server computing in theorie en praktijk. OMG is opgericht in 1989 en produceerde
in 1991 de specificatie van Corba 1.0. Een goede beschrijving van wat Corba is
is de volgende zin: "It is a set of specifications for providing
interoperability and portability to distributed object oriented applications"
Wat is Corba:
Corba is een standaard voor een stuk middleware dat client object met server
object laat communiceren, ongeacht op welk platform ze draaien en ongeacht in
welke taal ze geschreven zijn of waar te wereld ze zich bevinden. Een client
object kan dus met behulp van methodes gegevens opvragen of veranderen van een
server object. Gecommuniceerd wordt door middel van een ORB(Object Request
Broker). De ORB zoek het gewenste object op, geeft de parameters door en bezorgt
het antwoord terug. Eigenlijk is een ORB een soort pipe die communicatie tussen
objecten mogelijk maakt.
3: DCOM
geschiedenis:
DCOM (Distributed Component Object Model) is het antwoord van Microsoft op Corba
en Java, het bestaat pas veel korter (sinds 1996). DCOM is weer onwikkeld vanuit
COM(de niet gedistribueerde voorloper van DCOM). Ook DCE-RPC van de Open
Software Foundation heeft aan de basis gestaan van het gedeelte van DCOM dat
gedistribueerde services op zich nam. DCOM is de basis geweest voor het door
Microsoft onwikkelde ActiveX.
Wat is DCOM:
DCOM lijkt qua specificaties heel erg op corba, alleen corba is voor een groot
deel nog slechts specificatie en dcom is al werkende. Verder is omdat DCOM door
een bedrijf geimplementeerd wordt de kans groter dat alle onderdelen
uiteindelijk compatibel met elkaar zijn. Van Corba zijn al veschillende ORB's
van verschillende makelij geraporteerd die niet geheel compatibel zijn. Aan de
andere kant is DCOM nog een stuk minder bekend dan Corba en bestaat pas veel
korter, voor een groot deel is dcom ook gebaseerd op de ideeen van corba.
Microsoft wil echter zoals altijd de gehele markt op software-gebied bezitten en
in bezit houden, dus zullen ze van alles wat in de toekonmst wel een succesvol
zou kunnen zijn een eigen versie ontwikkelen. Compound Documents
Een factor die mogelijk roet in het eten kan gooien is Internet. Om een Compound
Document soepel weer te geven is er namelijk een redelijk snelle verbinding
nodig. Echter als die redelijk snelle verbinding er is gaat men alleen maar
grotere objecten zoals life-video invoegen, waardoor Internet altijd te langzaam
blijft. De enige plaats waar een redelijk geavanceerd Compound Document
acceptabel gedistribueerd kan draaien is op een lokaal netwerk. Wat dat betreft
zit Word dus al een flink eind in de richting.
Ook voor Compound Documents zijn er verschillende concurrenten:OpenDoc:
OpenDoc is een standaard van onder andere IBM en Apple uit 1993. OMG heeft
OpenDoc vervolgens overgenomen als de standaard voor compound Documents in
CORBA. De uiteindelijke "file" waarin het Compound Document wordt geplaatst heet
Bento. Bento is een een platform onafhankelijk container. OSA (Open Scripting
Architecture) wordt gebruikt om te beschrijven hoe en wanneer de verschillende
objecten met elkaar interacteren, en waar ze in het Compound Document staan.
OLE:
OLE(Object Linking and Embedding) is de Windows 95 standaard om documenten uit
te wisselen. Er zijn grofweg twee manieren om bijvoorbeeld een plaatje op te
nemen in een tekstbestand. De eerste manier is om in het tekstbestand keihard
een pointer te geven naar de lokatie waar het plaatje te vinden is (op de
harddisk of op een server). De tweede manier is om het hele plaatje (dus de
volledige file) op te nemen in het tekstbestand. De eerste manier heet Linking
de tweede Embedding. De container waarin OLE documenten worden opgeslagen heet
Compound File. OLE bestond echter al lang voordat men zo'n beetje had
gehoord van video op een computer en www, dus Microsoft heeft OLE aangepast aan
de eisen van de tijd/gebruiker. Dat levert natuurlijk altijd een minder product
op dan een nieuw ontworpen systeem.
Java Beans
JavaBeans is het jongste, het is een API voor Java. Een Bean is een plaatje,
geluidje, url, of stuk tekst in een Compound Document. Het voordeel van Java
Beans boven OLE is dat het platform- onafhankelijker is. Een bean kan je in
ieder Compound Document opnemen. Je zou zeggen dat beans op zich niet veel kans
ip overleven in de computerwereld hebben, omdat er geen duidelijke plaats is
waar ze toegepast kunnen worden, met andere woorden er is geen standaard waarin
ze opgenomen zijn. Als op het WWW een plaatje wilt zetten, maak je er toch
gewoon een jpg'tje van. Java Beans zijn echter heel sterk als gedistribueerde
objecten. Omdat Beans veel gebruik maken van RMI en andere Java API's is er
gedistribueerd, meer mogelijk dan bijvoorbeeld met OpenDoc.
compatibiliteit
Novell heeft met Component Glue een "programma" dat OLE en OpenDoc met elkaar
compatible zou kunnen maken. Java Beans is iets waaraan beide zich compatible
moeten maken, willen ze hun Compound Documents als Webpagina's kunnen
neerzetten. Op zich lijkt dat goed dat alle producten compatible met elkaar
zouden zijn. Helaas gaat het in de praktijk anders. Zeker van Microsoft valt
niet redelijkerwijs te verwachten dat ze zich aan andere standaarden houden dan
hun eigen, ongeacht een kwaliteitsverschil tussen de marktstandaard en hun eigen
standaard. Ook andere comercieele bedrijven zullen proberen hun eigen standaard
hoog te houden. Als er al een gezamelijke standaard is zullen door toevoegingen
van verschillende Software Houses, er toch weer verschillen ontstaan. De
Consument is uiteindelijk de dupe. Het is op zich toe te juichen dat groepen als
OMG proberen een standaard te zetten, het is alleen jammer dat bepaalde
bedrijven daar geen bodschap aan hebben. Misschien moet worden geprobeerd om in
de toekomst nog krachtiger groepen te vormen die standaarden ontwerpen.
Conclusie
Wat betreft Compound Document denk ik dat Microsoft aan het langste eind gaat
trekken. Ze hebben met Word namenlijk al iets wat op een Compound Document
lijkt. Nog veel belangrijker is dat Word een enorm marktaandeel heeft. Door
toekomstige versies van Word goed en nauw samen te laten werken met Internet
Explorer, creeer je een strategische positie die bijna niet omver te krijgen
is.
Aan de andere kant kan je je gaan afvragen wat nu het verschil is tussen de
Compound Document en een programma. Als je in een Compound document aan iedere
muis/toetsenbord actie een multimedia reactie kan koppelen, dan kan je dus hele
programma's schrijven als een Compound document. Er zijn dan twee verschillen
tussen een programma en een Compound Document. Het ene is dat een Compound
Document geinterpreteerd worden i.p.v. geexecuteerd. Dit heeft een hoop
snelheidsverlies tot gevolg, maar het voordeel is dat er betere mogelijkheden
zijn tot distributie ( van losse "beans"). Het andere grote verschil is dat een
Compound Document Open Source is, dit betekent dat programmamakers zullen
proberen om toch onder de doorzichtigheid van Compound Documents uit te komen en
te zorgen dat bepaalde delen niet meer van elkaar te scheiden zijn en ook niet
te veranderen. Nu ben je op een punt waar in een klap een heel groot deel van de
voordelen van Compound Documents is verdwenen. Laten we hopen dat de
geschiedenis (of toekomst) een andere loop neemt.
Refereties:
Veel tekst over CORBA, DCOM, e.d. een hoofdstuk uit boek over www, de volgende
hoofdstukken zijn ook interessant
(tekst hoofdstuk)
Distributed-Object Computing- An Overview of Java-RMI and Corba Frameworks
(powerpoint slides in html)
Evolving Frameworks
(paper)
Veel tekst over Corba
("html" slides)
Goed gestructureerd verhaal over Corba.
Application Frameworks for Developing CORBA Compliant Java Applications
(Commercieel product, uitleg)
SUN: Veel Info / cources over o.a. Java.
(Commercieele product training)
Technische vergelijking tussen DCOM en Corba (layer by Layer)
Artikel: Corba no match for DCOM (08-97)
kort stukje over JavaBeans.
IBM
(Veel info over IBM Java producten)
Frequently Asked Questions about IBM's Strategy on Object Technologies and
Application Development
(FAQ list)