Java overalt
Java er Suns bud til hele computerverdenen. Hvordan vil Sun binde den globale Java-verden sammen, så det ikke kun er enkeltstående maskiner, der hver for sig kører stand-alone-programmer? Vi præsenterer her tre svar med RMI, Jini og nævner Brazil til slut.
Internet er computersystemet i verden, der er samlet af netværk og fordelt på millioner af millioner af cmptuere. Fra meget store servere til ganske små indbyggede processorer i apparater. Sun har en meget ambitiøs strategi, hvor Java skal være platformen for det hele. Med sloganet "write once - run everywhere" lover de verdens programmører, at når først programmet er skrevet i Java, så vil det kunne køre på alle computere.
Ambitionerne er store i Java-miljøet, og aktiviteterne er mange. Men problemerne er der også. I denne artikel om Java som platform, starter vi med et overblik over de elementer, der indgår i denne store vision.
En del af Java-teknologien fra Sun bygger på generelle softwaremodeller. Du kan for eksempel godt skrive JavaBeans i Visual Basic programmeringssproget. Nok er Java det samlende element, men insisterer du på at anvende C++, så har Sun givet plads til det i platformen. Hvordan kan Java være det samlede led i alle disse systemer?
Run everywhere
Java-platformen
Java som platform er ensbetydende med, at alle computere i netværket kan køre Java-programmer. Java-programmer er den fælles platform, for du kan skrive et Java-program, som alle maskiner kan køre.
Det kan Windows-pc'er også. Læser du denne artikel i en nyere browser, kan den køre Java-programmer. Internet explorer 5.5 har Java JIT-compiler (Just in Time compiler) indbygget, som den bruger til at køre programmerne. Java-programmer kan distribueres over Internet og køres af Windows-maskiner.
Denne afvikling i browsere er en af metoderne, hvormed Java er blevet meget udbredt. Men denne udbredelse har også kostet meget ydelse. Java bliver afviklet af en compiler, der er indlejret i en browser, som igen kører på Windows. Windows er styresystemet, der kontrollerer hele forløbet. Alt i systemet kontrolleres af Windows, afviklingen af Java-programmer sker på styresystemets præmisser. Principielt kan det siges på den måde, at Java-programmer kan anvende de funktioner i styresystemet, som Windows stiller til rådighed.
Men ideen i Java-platformen, som vi finder den i RMI, Remote Method Invokation, og i Jini går imod sådanne centrale styresystemer, der kontrollerer computeren og kun har en minimal kommunikation via netværk. Ideen i RMI er, at programmerne selv kan samarbejde direkte uden anden kontrol.
RMI
Java Remote Method Invocation - RMI
Med Java Remote Method Invocation (RMI) kan du skrive distribuerede objekter i Java. RMI er ligesom CORBA en komponentmodel, der specificerer kommunikationen mellem programkomponenter. Vi beskrev CORBA i artiklen: Systemintegration med CORBA.
Modsætningen til remote kommunikation mellem programmer finder vi ved produktion af små programmer, der compileres og sammenbygges i en proces med alle funktioner, objekter og klasser. Alle objekterne, som compileren skal behandle, og al interaktion med styresystemet er kendt, når det endelig program skal lænkes sammen til en helhed. I modsat fald standser compileren.
Med RMI og CORBA får udviklerne nogle generelle modeller, hvor der anvendes programobjekter i andre systemer. Udviklerne kan anvende programobjekter på helt andre systemer, hvor de kun kender grænsefladen. RMI beskriver den model, som er påkrævet for at udviklerne kan lave programmer, som i kørselssituationen senere hen er i stand til at kommunikere sammen.
RMI anvender Remote Procedure Call (RPC), der er en protokol, som programmer anvender til at arbejde direkte sammen. Det kan kort kaldes procedurekald eller funktionskald. Der findes flere modeller for disse kald af funktioner på tværs af programmer. I Java RMI er funktionskaldene tilpasset, så Java programmører lettere kan arbejde med det. Med Javas såkaldte native methods, JNI, kan man skrive programmer i C++ til RMI-systemer.
RMI tilbyder udviklerne at bygge softwareobjekter med komplekse datatyper, som altså kan udveksles direkte mellem de kørende programmer.
RMI-CORBA
RMI overfor CORBA
Sat i relation til Suns konflikter med Microsoft, kunne man tro, at CORBA og RMI var allierede. Det er dog en sandhed med modifikationer. CORBA er sprogneutral, hvor Sun prioriterer Java frem for andre programmeringssprog i RMI.
Men Sun leverer en kobling til CORBA med en protokol kaldet Internet Inter-ORB Protocol, IIOP. RMI over IIOP kombinerer CORBA med RMI, således at overgangen for udviklerne mellem RMI og CORBA bliver flydende. Med IIOP er det muligt at integrere programkomponenter skrevet i C++, Smalltalk eller et andet sprog under CORBA. Disse programkomponenter kan køre og kommunikere med Java platformen.
Udviklere, der har anvendt CORBA med andre programmeringssprog kan bruge RMI-IIOP til at koble de to komponentplatforme sammen. Sun har såvel dokumentation som compilere til dette på deres web-side.
Der findes yderligere materiale om Java og RMI hos Sun på web-adressen. http://www.sun.com/ samt på Java-web-stedet: http://java.sun.com/.
Jini
Jini
Ideen med Jini kan beskrives som plug-and-play for opkoblede netværksenheder. Computerenheder forsynes med software, der ikke fylder meget mere end en 1.44MB diskette, så der tænkes på små enheder.
Denne ide, som også kaldes for et spontant netværkssystem betyder, at når enheder tilsluttes netværket, bliver de identificeret af netværket og tilgængelig for anvendelser. Der er ingen enheder, som kontrollerer andre enheder. Det er som at sætte en lampe til et stik i væggen, som derefter lyser. Det kræver ikke drivere og installation i elmåleren, for at få lampen til at lyse. Der er intet centralt styresystem i Jini, som først skal have identificeret enheden og kontrollere den. For så vidt kan Jini betegnes som et styresystem, der er distribueret decentralt ud i netværket. De enkelte enheder er selvstyrende, og fungere via kommunikation og ikke kontrol.
Jini fokuserer endnu mere på netværk og kommunikation end Java-sproget og RMI. Ideen i Jini er, at det er netværket, som styrer systemet og ikke styresystemet. Jini bygger videre på RMI, der varetager kommunikationen mellem komponenterne.
Derudover har Jini protokoller til såkaldte boot, join og discover protokoller, som gør det muligt for enhederne at melde sig ind på netværket. Endvidere har Jini funktioner til at håndtere fejl.
Da Jini blev kendt i 1999, blev det modtaget som en god og meget lovende ide. Der findes i dag produkter og anvendelser, men den praktiske succes er til at overse indtil videre. I diskussionen af Jini nævnes trådløse anvendelser, hvor små enheder kan melde sig ind på det trådløse netværk. Men hvis industrien og brugerne er tilfredse med web-baserede løsninger som WAP og i-Mode, hvad skal de så med Jini? Jini bliver da nævnt ved de helt små enheder, som kobles sammen med Bluetooth.
Softwaredesigneren Dave Sag har februar 2001 publiseret en artikel på O'Reilly's web-sted for java ON Java: http://www.onjava.com/, hvor han beskriver Jini-tilhængeres kritik af XML som et "Microsoft-plot". I sin artikel argumenterer han for, at Jini-folkene istedet skulle samarbejdede med XML, så ville Jini stå mere centralt som simpel og ideal ide.
Sun har dokumentation samt udviklingsværktøjer til Jini liggende på adressen: http://www.sun.com/jini/.
Brazil
Brazil
Sun har yderligere en platform på vej, der kaldes Brazil. Også her er det målet, at programmerne skal køre på tværs af platforme som genbrugelige softwarekomponenter, der afvikles og fungerer over netværk. I forhold til det ovenstående er Brazil web-baseret og koblet til XML-sproget.
ZDnet bemærker, at med Brazil lægger Sun kursen mod to protokoller, som andre softwarefirmaer anvender. Det gælder IBM og Microsoft, hvor sidstnævnte bygger .Net på samme ide. De to protokoller er SOAP (Simple Object Access Protocol), som er web-baseret og anvender XML, samt UDDI (Universal Description, Discovery and Integration), der bygger ovenpå SOAP for at lave en informationstjeneste, der kan minde om en telefonbog.
Vi omtalte Brazil kort i artiklen: Sun lancerer konkurrent til .NET. Flere oplysninger fra Sun findes på web-adressen: http://www.sun.com/research/brazil/.