Što Sunina tužba protiv Microsofta znači za programere Jave?

7. listopada 1997. - Sun je tužbom na Okružnom sudu SAD-a odgovorio na Microsoftovo izdanje Internet Explorera (IE) 4.0 i 2.0 SDK za Javu (SDKJ). Prema Sunovu priopćenju za tisak, "pritužba tereti Microsoft za kršenje zaštitnih znakova, lažno oglašavanje, kršenje ugovora, nelojalnu konkurenciju, ometanje potencijalne ekonomske prednosti i poticanje kršenja ugovora." Točnije, Microsoft je prošlog tjedna odabrao isporuku proizvoda za koje tvrdi da su u potpunosti u skladu s Java 1.1, ali koji nisu uspjeli proći testove kompatibilnosti Java 1.1 koje je tvrtka dobila od tvrtke Sun u veljači. "Microsoft je krenuo s namjernim ponašanjem kako bi fragmentirao Javu", rekao je Alan Baratz, predsjednik JavaSoft-a, tijekom telekonferencije Sun danas u 10:30 PST.

Što to znači iz perspektive programera? Pa, prvo, ako stvorite nešto sa Sunovim 1.1 JDK (ili sa okruženjem certificiranim za Java 1.1 druge tvrtke, poput IBM-a, Borlanda i Symanteca), možda neće raditi pod IE 4.0. Također, ako stvorite nešto s Microsoftovim razvojnim okruženjem, možda se neće pokretati u okruženju koje nije Microsoftovo Java 1.1. Točnije, Microsoft ne podržava Java Native Interfaces (JNI) ili Remote Method Invocation (RMI), a izmijenio je knjižnice klase Core Java s oko 50 metoda i 50 polja koja nisu dio javnih sučelja za programsko programiranje Java ( API-ji) u izdanju Sun.

JNI i RMI: Zašto Microsoftovo odbijanje njih predstavlja problem

JNI je sučelje izvornog koda koje se koristi za pristup mogućnostima specifičnim za platformu poput serijskog porta ili mikrofona - za stvari koje još nisu dostupne putem temeljnog API-ja. Cilj JNI-ja je omogućiti programerima da osiguraju jedinstveni skup izvornih knjižnica za svaku implementaciju Jave na određenoj platformi.

Microsoft je odlučio podržati vlastito sučelje, nazvano RNI, koje pruža iste mogućnosti kao i JNI. Ne podržavajući JNI, Microsoft prisiljava programere da pružaju različite knjižnice za korisnike Microsofta i Java Java (JVM) koji nisu Microsoft. Nema ništa loše u Microsoftovoj podršci RNI ako tvrtka smatra da je njena tehnologija bolja. Međutim, ne podržavajući JNI, Microsoft ne može tvrditi da je IE 4.0 u potpunosti usklađen s Java 1.1.

RMI pruža sredstvo za izvršavanje Java koda na stranim Java virtualnim strojevima. Često se uspoređuje s pozivima udaljenih postupaka (RPC), arhitekturom posrednika uobičajenih zahtjeva za objektima (CORBA) i Distribuiranim komponentnim objektnim modelom (DCOM), ovisno o pozadini osobe koja govori. Microsoft tvrdi da podržava DCOM umjesto RMI jer RMI ne podržava komunikaciju Java-to-non-Java. Specifična svrha korištenja RMI-a je za komunikaciju Java-to-Java sustava. Na primjer, s RMI-jem možete pozivati ​​metode objekata koji postoje u drugim Java virtualnim strojevima, a da ne znate tip klase, istovremeno čuvajući Javinu sigurnost tijekom izvođenja.

Ako se trebate preseliti izvan komunikacije Java-to-Java, CORBA je zapravo prijenosno rješenje, a ne DCOM. Zašto? DCOM je usmjeren prema Microsoftovom svijetu, a tek je nedavno dostupan za Unix svijet s proizvodima poput EntireX tvrtke Software AG. Ako trebate koristiti RMI, Internet Explorer očito nije dostupna opcija. Ako su vam potrebne komunikacije Java-to-ne-Java sustava, radi sučeljavanja s naslijeđenim (ne-Java) sustavima koji se oslanjaju na CORBA, Netscape Communicator 4.0 isporučuje se s Visigenic-ovim VisiBroker ORB-om. (Za RMI podršku s Netscape Communicatorom morate koristiti beta izdanje zakrpe preglednika, jer Communicator ne tvrdi da je Java 1.1 preglednik.)

Rotten to Core Java API: Suština problema

Posljednji utvrđeni problem nekompatibilnosti Java 1.1 zapravo je najstrašniji. Lako je izbjeći RMI i JNI ako to dopušta vaša aplikacija: jednostavno ih ne koristite. Stvar je u tome što je Microsoft zaključio da knjižnice klase Core Java nisu dovoljne za njegove potrebe. Sada nema ništa loše u tome da se stvari proširuju potklasiranjem i postavljanjem novih objekata u paket izvan hijerarhije klase java. *. No odluka o dodavanju oko 50 metoda i 50 polja u klase unutar paketa java.awt, java.lang i java.io, kao što je to učinio Microsoft, izuzetno je problematična. "Microsoft je varljivo izmijenio klase ključeva i ubacio ih u svoj SDK", rekao je Baratz, što rezultira time da programeri misle da pišu Java, dok zapravo pišu nešto što se izvodi samo na Internet Exploreru.

Kako Microsoftovi dodaci klasama utječu na programere Jave? Pa, ako se oslanjate na ove promjene ili ih samo nenamjerno koristite, vaš će program raditi samo unutar Microsoftovog Java sustava. Također, ako kreirate program izvan Microsoftovog razvojnog okruženja, očekivat će određeni temeljni API. Nažalost, taj se Core API razlikuje od onog u Microsoftovom okruženju, pa program tamo možda neće raditi. Test kompatibilnosti koji je označio ovaj problem je ono što se naziva signature test.

Kao primjer, ako metoda foo()treba prihvatiti parametar tipa bar, bolje je dobiti objekt tipa bar. Ako netko želi da bazumjesto njega prenesete objekt tipa , to će raditi samo na onim sustavima koji su promijenili jezgru da ga prihvate. I Microsoft je predstavio tu promjenu. Sada Microsoft možda misli da to predstavlja referentnu implementaciju Jave za Windows. Ali činjenica je da samo Sun može unijeti promjene u Core Java API. Da, bilo koji imatelj licence može tražiti promjene, a mnogi to često čine. No, Microsoft je sam i bez dopuštenja odlučio promijeniti te stvari.

Na kraju je cilj tužbe, Baratzovim riječima, "vratiti Microsoft u sklad", i to što je brže moguće. No dok se pravna pitanja ne riješe, Sun će zadržati od Microsofta sva tekuća poboljšanja Java tehnologije, poput novog virtualnog stroja Java 2.0 nazvanog HotSpot. Ako se Microsoft ne vrati u skladu s Javom, morat će smisliti čistiju primjenu svoje verzije nečega što se neće zvati Java - to jest, ako želi učiniti nešto s ekvivalentom Java bajt kodova. Tko zna što će se dogoditi s IE 4.0, SDK-om za Javu 2.0 i sljedećim Visualom J ++?

Riječi mudrosti: Neka se programer Java čuva

Kao programer morat ćete koračati vrlo pažljivo. Ako se odlučite za Microsoftovo razvojno okruženje i trebate stvoriti rješenja za više platformi, budite dobro upoznati s API-jem Core Java. Morat ćete izbjegavati sve što nije dio javnih specifikacija. Dok se ne objavi cjelovit popis nekompatibilnih elemenata, na pojedinim programerima će se nalaziti što je i što nije, a što nije. Naravno, ako vam nije stalo do "pisanja jednom, pokretanja bilo gdje", možete koristiti Microsoftove mogućnosti specifične za platformu. Međutim, moguće je da će Microsoftova Java licenca biti opozvana. Sun već pokušava opozvati Microsoftovu mogućnost prikazivanja Java kompatibilnog logotipa.

John Zukowski je programski mag s Instituta MageLang, autor Java AWT reference iz O'Reilly & Associates i Borlandova JBuilder: Nije potrebno iskustvo od Sybexa, kao ni za vodič Fokus na Javi u Rudarskoj tvrtki.

Saznajte više o ovoj temi

  • Priopćenje za javnost tvrtke Sun Microsystems

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

  • Microsoftova česta pitanja o tome zašto ne podržava RMI / JNI i tako dalje

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

  • Netscapeova trenutna podrška za Javu u programu Communicator 4.0

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

  • Pogledajte priču Elizabeth Heichler, iz News Servicea, i Boba McMillana, SunWorld

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

  • Naša vlastita Jenni Aloi napisala je priču o bijesu Java Lobija prema Microsoftu

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

  • CNetova priča o suncu protiv Microsofta

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

  • Vijesti iz San Josea Mercury o tužbi

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

  • Treba li Microsoftu dopustiti izmjenu knjižnica ključnih klasa Java? Učestvujte u našoj najnovijoj anketi

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

  • Pregled alata za razvoj Java neutralnih za platformu u NC World , sestrinskoj publikaciji JavaWorld

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

  • Komentar Nicka Petreleyja o tužbi Sun / MS, također u NC World

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

Ova priča "Što Sunčeva tužba protiv Microsofta znači za programere Jave?" izvorno je objavio JavaWorld.