Programmering

Hva betyr Suns søksmål mot Microsoft for Java-utviklere?

7. oktober 1997 - Sun har svart på Microsofts utgivelse av Internet Explorer (IE) 4.0, og 2.0-utgivelsen av SDK for Java (SDKJ) med en søksmål i U.S. District Court. I følge Suns pressemelding, "anklager klagen Microsoft for brudd på varemerker, falsk annonsering, kontraktsbrudd, urettferdig konkurranse, innblanding i potensiell økonomisk fordel og indusering av kontraktsbrudd." Spesielt tok Microsoft valget i forrige uke å sende produkter som de hevder er fullt Java 1.1-kompatible, men som ikke klarte Java 1.1-kompatibilitetstestene selskapet mottok fra Sun i februar. "Microsoft startet en bevisst oppførsel for å fragmentere Java," sa Alan Baratz, president for JavaSoft, under en Sun-telefonkonferanse i dag klokken 10.30 PST.

Fra en utviklers perspektiv, hva betyr dette? Hvis du oppretter noe med Suns 1.1 JDK (eller med Java 1.1-sertifiserte omgivelser fra et annet selskap, som IBM, Borland og Symantec), kan det hende at det ikke kjører under IE 4.0. Også, hvis du lager noe med Microsofts utviklingsmiljø, kan det hende det ikke kjører under et ikke-Microsoft Java 1.1-miljø. Spesielt støtter ikke Microsoft Java Native Interfaces (JNI) eller Remote Method Invocation (RMI), og det har endret Core Java-klassebibliotekene med omtrent 50 metoder og 50 felt som ikke er en del av de offentlige Java Application Programming Interfaces ( APIer) publisert av Sun.

JNI og RMI: Hvorfor Microsofts avvisning av disse utgjør et problem

JNI er det opprinnelige kodegrensesnittet som brukes til å få tilgang til plattformsspesifikke funksjoner som en seriell port eller en mikrofon - for ting som ennå ikke er tilgjengelige via kjernen API. Målet med JNI er å tillate utviklere å tilby en enkelt sett av innfødte biblioteker for hver Java-implementering på en bestemt plattform.

Microsoft har bestemt seg for å støtte sitt eget grensesnitt, kalt RNI, som gir de samme mulighetene som JNI. Ved ikke å støtte JNI, tvinger Microsoft utviklere til å tilby forskjellige biblioteker for brukere av Microsoft og ikke Java Microsoft Virtual Machine (JVM). Det er ikke noe galt med Microsofts støtte til RNI hvis selskapet mener at teknologien er bedre. Imidlertid ved ikke å støtte JNI, Microsoft kan ikke hevder IE 4.0 er fullt Java 1.1-kompatibel.

RMI gir et middel for å utføre Java-kode på utenlandske virtuelle Java-maskiner. Det sammenlignes ofte med Remote Procedure Calls (RPC), Common Object Request Broker Architecture (CORBA) og Distribuert komponentobjektmodell (DCOM), avhengig av bakgrunnen til personen som snakker. Microsoft hevder at det støtter DCOM i stedet for RMI fordi RMI ikke støtter Java-til-ikke-Java-kommunikasjon. Det spesifikke formålet for bruk av RMI er for Java-til-Java systemkommunikasjon. For eksempel, med RMI, kan du påkalle metoder for objekter som finnes i andre virtuelle Java-maskiner, uten å vite klassetypen, mens du bevarer Java's kjøretidssikkerhet.

Hvis du trenger å bevege deg utenfor Java-til-Java-kommunikasjon, er CORBA faktisk den bærbare løsningen, ikke DCOM. Hvorfor? DCOM er rettet mot Microsoft-verdenen, og ble nylig tilgjengelig for Unix-verdenen med produkter som EntireX fra Software AG. Hvis du trenger å bruke RMI, er åpenbart Internet Explorer ikke et tilgjengelig alternativ. Hvis du trenger Java-til-ikke-Java-systemkommunikasjon, for å grensesnitt med eldre (ikke-Java) systemer som er avhengige av CORBA, leveres Netscape Communicator 4.0 med Visigenics VisiBroker ORB. (For RMI-støtte med Netscape Communicator, må du bruke en betaversjon av en nettleseroppdatering, siden Communicator ikke hevder å være en Java 1.1-nettleser.)

Råtten til Core Java API: Kjernen i problemet

Det siste identifiserte Java 1.1-inkompatibilitetsproblemet er faktisk det skumleste. Det er lett å unngå RMI og JNI hvis søknaden din tillater det: Du bruker dem bare ikke. Det stikkende punktet er at Microsoft bestemte at Core Java-klassebibliotekene var utilstrekkelige for sine behov. Nå er det ingenting galt med å utvide ting ved å underklasse og plassere de nye objektene i en pakke utenfor Java. * Klassehierarki. Men å bestemme seg for å legge til rundt 50 metoder og 50 felt i klassene i java.awt-, java.lang- og java.io-pakkene, som Microsoft gjorde, er ekstremt problematisk. "Microsoft endret nøkkelklasser villedende og satte dem inn i SDK-en," sa Baratz, noe som resulterer i at utviklere tenker at de skriver Java, når de faktisk skriver noe som bare kjører på Internet Explorer.

Hvordan påvirker Microsofts tillegg til klassene Java-utviklere? Vel, hvis du stoler på disse endringene, eller bare bruker dem utilsiktet, vil programmet ditt bare fungere innenfor Microsofts Java-system. Hvis du oppretter et program utenfor Microsofts utviklingsmiljø, vil det også forvente et bestemt kjerne-API. Dessverre er at Core API er forskjellig fra den i Microsofts miljø, så programmet kan ikke fungere der. Kompatibilitetspakketesten som markerte dette problemet er det som kalles a signatur test.

Som et eksempel, hvis metoden foo () antas å godta en parameter av typen bar, det er bedre å få et objekt av typen bar. Hvis noen vil at du skal gi inn et objekt av typen baz i stedet vil det bare fungere på de systemene som endret kjernen for å akseptere det. Og Microsoft introduserte den endringen. Nå kan Microsoft tro at det står som referanseimplementering av Java for Windows. Men faktum er at bare Sun kan introdusere endringer i Core Java API. Ja, enhver rettighetshaver kan spørre for endringer, og mange gjør ofte. Men Microsoft bestemte seg selv, og uten tillatelse, for å endre disse tingene.

Til slutt er målet med søksmålet, med Baratzs ord, "å få Microsoft tilbake i samsvar", og så raskt som mulig. Men inntil lovlighetene er løst, vil Sun holde tilbake alle pågående forbedringer av Java-teknologi, for eksempel den nye virtuelle Java 2.0-maskinen kalt HotSpot. Hvis Microsoft ikke kommer tilbake i samsvar med Java, må det komme med en renrom-implementering av sin versjon av noe som ikke vil bli kalt Java - det vil si hvis det vil gjøre noe med tilsvarende av Java bytecodes. Hvem vet hva som vil skje med IE 4.0, SDK for Java 2.0 og neste Visual J ++?

Visdomsord: La Java-utvikleren være på vakt

Som utvikler må du trå veldig forsiktig. Hvis du bestemmer deg for å bruke Microsofts utviklingsmiljøer og trenger å lage løsninger på tvers av plattformer, må du være veldig kjent med Core Java API-ene. Du må unngå alt som ikke er en del av de offentlige spesifikasjonene. Inntil en komplett liste over inkompatible elementer er publisert, påhviler det enkelte utviklere å vite hva som er og ikke er kompatibelt. Hvis du ikke bryr deg om "skriv en gang, løp hvor som helst", kan du selvfølgelig bruke Microsofts plattformspesifikke evner. Det er imidlertid mulig at Microsofts Java-lisens blir tilbakekalt. Sun prøver allerede å tilbakekalle Microsofts evne til å vise den Java-kompatible logoen.

John Zukowski er en Software Mage med MageLang Institute, forfatter av Java AWT Reference fra O'Reilly & Associates og Borlands JBuilder: Ingen erfaring kreves fra Sybex, samt Focus on Java guide hos Mining Company.

Lær mer om dette emnet

  • Sun Microsystems pressemelding

    //java.sun.com/announcement/index.html

  • Microsofts vanlige spørsmål om hvorfor det ikke støtter RMI / JNI, og så videre

    //www.microsoft.com/java/issues/techsupfaq.htm

  • Netscapes nåværende støtte for Java i Communicator 4.0

    //developer.netscape.com/library/documentation/communicator/javajdk.html

  • Se historien av Elizabeth Heichler, fra News Service, og Bob McMillan, SunWorld

    //www.javaworld.com/jw-10-1997/jw-10-sunsuit.html

  • Vår egen Jenni Aloi skrev en historie om Java-lobbyens sinne mot Microsoft

    //www.javaworld.com/jw-10-1997/jw-10-javalobby.html

  • CNets historie om Sun-saken mot Microsoft

    //www.news.com/News/Item/0,4,14986,00.html

  • San Jose Mercury News om søksmålet

    //www.sjmercury.com/business/sunsuit100797.htm

  • Bør Microsoft få lov til å endre nøkkelklassebibliotekene til Java? Ta den siste avstemningen vår

    //nigeria.wpi.com/cgi-bin/gwpoll/gwpoll/ballot.html

  • En gjennomgang av plattformnøytrale Java-utviklingsverktøy i NC World, JavaWorlds søsterpublikasjon

    //www.ncworldmag.com/ncw-10-1997/ncw-10-jvtools.html

  • Nick Petreleys kommentar om Sun / MS-søksmålet, også i NC World

    //www.ncworldmag.com/ncw-10-1997/ncw-10-straypackets.html

Denne historien, "Hva betyr Suns søksmål mot Microsoft for Java-utviklere?" ble opprinnelig utgitt av JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found