Programmering

Hvad betyder Suns retssag mod Microsoft for Java-udviklere?

7. oktober 1997 - Sun har reageret på Microsofts frigivelse af Internet Explorer (IE) 4.0 og dets 2.0-frigivelse af SDK til Java (SDKJ) med en retssag i US District Court. Ifølge Suns pressemeddelelse "anklager klagen Microsoft for varemærkeovertrædelse, falsk reklame, kontraktbrud, illoyal konkurrence, indblanding i potentiel økonomisk fordel og fremkaldelse af kontraktbrud." Specifikt valgte Microsoft i sidste uge at sende produkter, som de hævder, er fuldt ud kompatible med Java 1.1, men som ikke bestod de Java 1.1-kompatibilitetstest, som virksomheden modtog fra Sun i februar. "Microsoft begyndte en bevidst adfærd for at fragmentere Java," sagde Alan Baratz, præsident for JavaSoft, under en Sun-telekonference i dag kl. 10.30 PST.

Set fra en udviklers perspektiv, hvad betyder dette? Hvis du opretter noget med Suns 1.1 JDK (eller med Java 1.1-certificeret miljø fra et andet firma, såsom IBM, Borland og Symantec), kører det muligvis ikke under IE 4.0. Også, hvis du opretter noget med Microsofts udviklingsmiljø, kører det muligvis ikke under et ikke-Microsoft Java 1.1-miljø. Specifikt understøtter Microsoft ikke Java Native Interfaces (JNI) eller Remote Method Invocation (RMI), og det har ændret Core Java-klassebibliotekerne med ca. 50 metoder og 50 felter, der ikke er en del af de offentlige Java Application Programming Interfaces ( API'er) udgivet af Sun.

JNI og RMI: Hvorfor Microsofts afvisning af disse udgør et problem

JNI er den oprindelige kodeinterface, der bruges til at få adgang til platformsspecifikke funktioner som en seriel port eller en mikrofon - til ting, der endnu ikke er tilgængelige gennem kernen API. Målet med JNI er at tillade udviklere at levere en enkelt sæt af indfødte biblioteker til hver Java-implementering på en bestemt platform.

Microsoft har besluttet at støtte sin egen grænseflade, kaldet RNI, som giver de samme muligheder som JNI. Ved ikke at støtte JNI tvinger Microsoft udviklere til at tilbyde forskellige biblioteker til brugere af Microsoft og ikke-Microsoft Java Virtual Machine (JVM). Der er ikke noget galt med Microsofts støtte til RNI, hvis virksomheden mener, at dens teknologi er bedre. Men ved ikke at støtte JNI, Microsoft kan ikke hævder, at IE 4.0 er fuldt Java 1.1-kompatibel.

RMI giver et middel til at udføre Java-kode på udenlandske virtuelle Java-maskiner. Det sammenlignes ofte med RPC (Remote Procedure Calls), Common Object Request Broker Architecture (CORBA) og Distribueret Component Object Model (DCOM), afhængigt af baggrunden for den person, der taler. Microsoft hævder, at det understøtter DCOM i stedet for RMI, fordi RMI ikke understøtter Java-til-ikke-Java-kommunikation. Det specifikke formål med at bruge RMI er Java-til-Java systemkommunikation. For eksempel kan du med RMI påberåbe dig metoder til objekter, der findes i andre Java-virtuelle maskiner uden at kende klassetypen, mens Java opretholdes sikkerhed.

Hvis du har brug for at bevæge dig uden for Java-til-Java-kommunikation, er CORBA faktisk den bærbare løsning, ikke DCOM. Hvorfor? DCOM er rettet mod Microsoft-verdenen og er først for nylig blevet tilgængelig for Unix-verdenen med produkter som EntireX fra Software AG. Hvis du har brug for RMI, er Internet Explorer naturligvis ikke en tilgængelig mulighed. Hvis du har brug for Java-til-ikke-Java-systemkommunikation, for at grænseflade med ældre (ikke-Java) -systemer, der er afhængige af CORBA, leveres Netscape Communicator 4.0 med Visigenics VisiBroker ORB. (For RMI-understøttelse med Netscape Communicator skal du bruge en betaudgivelse af en browseropdatering, da Communicator ikke hævder at være en Java 1.1-browser.)

Rottet til Core Java API: Kernen i problemet

Det sidste Java 1.1-inkompatibilitetsproblem, der blev identificeret, er faktisk det mest skræmmende. Det er let at undgå RMI og JNI, hvis din applikation tillader det: Du bruger dem bare ikke. Det vedhængende punkt er, at Microsoft besluttede, at Core Java-klassebibliotekerne ikke var tilstrækkelige til dets behov. Nu er der intet galt med at udvide ting ved at underklasse og placere de nye objekter i en pakke uden for Java. * Klassehierarkiet. Men det er yderst problematisk at beslutte at tilføje ca. 50 metoder og 50 felter til klasser inden for pakkerne java.awt, java.lang og java.io, som Microsoft gjorde. "Microsoft ændrede vildledende nøgleklasser og indsatte dem i deres SDK," sagde Baratz, hvilket resulterer i, at udviklere tror, ​​at de skriver Java, når de faktisk skriver noget, der kun kører på Internet Explorer.

Hvordan påvirker Microsofts tilføjelser til klasserne Java-udviklere? Hvis du stoler på disse ændringer eller bare bruger dem utilsigtet, fungerer dit program kun inden for Microsofts Java-system. Også, hvis du opretter et program uden for Microsofts udviklingsmiljø, forventer det en bestemt core API. Desværre er Core API forskellig fra den inden for Microsofts miljø, så programmet fungerer muligvis ikke der. Kompatibilitetspakketesten, der markerede dette problem, er det, der kaldes en signatur test.

Som et eksempel, hvis metoden foo () formodes at acceptere en parameter af typen bar, det er bedre at få et objekt af typen bar. Hvis nogen vil have dig til at videregive et objekt af typen baz i stedet fungerer det kun på de systemer, der ændrede kernen for at acceptere det. Og Microsoft introducerede den ændring. Nu kan Microsoft måske tro, at det står som referenceimplementering af Java til Windows. Men faktum er, at kun Sun kan introducere ændringer i Core Java API. Ja, enhver licenshaver kan spørge for ændringer, og mange gør ofte. Men Microsoft besluttede alene og uden tilladelse at ændre disse ting.

I sidste ende er målet med retssagen med Baratzs ord "at få Microsoft tilbage i overensstemmelse" og så hurtigt som muligt. Men indtil lovlighederne er løst, vil Sun tilbageholde Microsoft fra alle igangværende forbedringer af Java-teknologi, såsom den nye virtuelle Java 2.0-maskine kaldet HotSpot. Hvis Microsoft ikke kommer tilbage i overensstemmelse med Java, skal det komme med en renrumsimplementering af sin version af noget, der ikke kaldes Java - det vil sige, hvis det vil gøre noget med det tilsvarende af Java-bytecodes. Hvem ved hvad der vil ske med IE 4.0, SDK til Java 2.0 og den næste Visual J ++?

Visdomsord: Lad Java-udvikleren være opmærksom

Som udvikler skal du træde meget forsigtigt. Hvis du beslutter dig for at bruge Microsofts udviklingsmiljøer og har brug for at skabe løsninger på tværs af platforme, skal du være meget fortrolig med Core Java API'erne. Du bliver nødt til at undgå alt, hvad der ikke er en del af de offentlige specifikationer. Indtil en komplet liste over inkompatible elementer er offentliggjort, påhviler det individuelle udviklere at vide, hvad der er og ikke er kompatibelt. Selvfølgelig, hvis du ikke er ligeglad med "skriv en gang, kør hvor som helst", kan du bruge Microsofts platformsspecifikke muligheder. Det er dog muligt, at Microsofts Java-licens tilbagekaldes. Sun forsøger allerede at tilbagekalde Microsofts evne til at vise det Java-kompatible logo.

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

Lær mere om dette emne

  • Sun Microsystems 'pressemeddelelse

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

  • Microsofts ofte stillede spørgsmål om, hvorfor det ikke understøtter RMI / JNI osv

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

  • Netscapes nuværende support til Java i Communicator 4.0

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

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

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

  • Vores egen Jenni Aloi skrev en historie om Java Lobby's vrede over Microsoft

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

  • CNets historie om Sun-sagen mod Microsoft

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

  • San Jose Mercury News om retssagen

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

  • Bør Microsoft få lov til at ændre Java-nøgleklassebibliotekerne? Tag vores seneste afstemning

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

  • En gennemgang af platformneutrale Java-udviklingsværktøjer i NC World, JavaWorlds søsterpublikation

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

  • Nick Petreleys kommentar om Sun / MS-retssagen, også i NC World

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

Denne historie, "Hvad betyder Suns retssag mod Microsoft for Java-udviklere?" blev oprindeligt udgivet af JavaWorld.