Object Orientation in WWW

Oop Paper,
Sjouke Brunia, i96
studnr. 0997145

Samenvating

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.

Inhoud:

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

Inleiding:

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.
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

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.
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

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.
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:

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/
Veel tekst over CORBA, DCOM, e.d. een hoofdstuk uit boek over www, de volgende hoofdstukken zijn ook interessant
(tekst hoofdstuk)

www.cs.iupui.edu/~rraje/html/adcomp/sld001.htm
Distributed-Object Computing- An Overview of Java-RMI and Corba Frameworks
(powerpoint slides in html)

http://st-www.cs.uiuc.edu/users/droberts/evolve.html
Evolving Frameworks
(paper)

http://www.pfu.edu.ru/TeleSys/Calypso/Docs/CORBA/Tutorial/ap_cf.html
Veel tekst over Corba
("html" slides)

http://www.colorado.edu/infs/jcb/sinewave/integration/corba/history.html
Goed gestructureerd verhaal over Corba.

http://www.pandasys.com/html/pandaworks_features.html
Application Frameworks for Developing CORBA Compliant Java Applications
(Commercieel product, uitleg)

http://www.sun.nl/service/education
SUN: Veel Info / cources over o.a. Java.
(Commercieele product training)

http://www.cs.wustl.edu/~schmidt/submit/Paper.html
Technische vergelijking tussen DCOM en Corba (layer by Layer)

http://www.computerworld.com/home/online9697.nsf/all/970807corba
Artikel: Corba no match for DCOM (08-97)

http://java.sun.com/beans/
kort stukje over JavaBeans.

http://www.ibm.com/java/academic
IBM
(Veel info over IBM Java producten)

http://www.software.ibm.com/ad/techsupt/faq/faqotadx.html
Frequently Asked Questions about IBM's Strategy on Object Technologies and Application Development
(FAQ list)

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.