Какво означава съдебният иск на Sun срещу Microsoft за разработчиците на Java?

7 октомври 1997 г. - Sun отговори на освобождаването на Microsoft Internet Explorer (IE) 4.0 и 2.0 на SDK за Java (SDKJ) с иск в Окръжния съд на САЩ. Според прессъобщението на Sun, "жалбата обвинява Microsoft за нарушаване на търговска марка, фалшива реклама, нарушаване на договора, нелоялна конкуренция, намеса в бъдещо икономическо предимство и предизвикване на нарушение на договора." По-конкретно, Microsoft направи избора миналата седмица да достави продукти, за които твърди, че са напълно съвместими с Java 1.1, но които не успяха да преминат тестовете за съвместимост с Java 1.1, които компанията получи от Sun през февруари. "Microsoft започна умишлено поведение, за да фрагментира Java", каза Алън Барац, президент на JavaSoft, по време на телеконференция Sun днес в 10:30 ч. PST.

Какво означава това от гледна точка на разработчика? Е, първо, ако създадете нещо с 1.1 JDK на Sun (или със сертифицирана за Java 1.1 среда от друга компания, като IBM, Borland и Symantec), то може да не работи под IE 4.0. Освен това, ако създадете нещо с среда за разработка на Microsoft, то може да не работи под среда, която не е от Microsoft Java 1.1. По-конкретно, Microsoft не поддържа Java Native Interfaces (JNI) или Remote Method Invocation (RMI) и е променила библиотеките на класовете Core Java с около 50 метода и 50 полета, които не са част от публичните интерфейси за програмиране на Java Java ( API), публикувано от Sun.

JNI и RMI: Защо отхвърлянето на Microsoft от тях създава проблем

JNI е интерфейсът на родния код, използван за достъп до специфични за платформата възможности като сериен порт или микрофон - за неща, които все още не са достъпни чрез основния API. Целта на JNI е да позволи на разработчиците да предоставят един набор от собствени библиотеки за всяко изпълнение на Java на определена платформа.

Microsoft реши да поддържа свой собствен интерфейс, наречен RNI, който предоставя същите възможности като JNI. Като не поддържа JNI, Microsoft принуждава разработчиците да предоставят различни библиотеки за потребители на Java и JVM, които не са от Microsoft Java. Няма нищо лошо в подкрепата на Microsoft за RNI, ако компанията смята, че нейната технология е по-добра. Въпреки това, като не поддържа JNI, Microsoft не може да твърди, че IE 4.0 е напълно съвместим с Java 1.1.

RMI предоставя средство за изпълнение на Java код на чужди Java виртуални машини. Често се сравнява с повиквания за отдалечени процедури (RPC), архитектура на посредника на общите заявки за обекти (CORBA) и обектен модел на разпределени компоненти (DCOM), в зависимост от фона на говорещия. Microsoft твърди, че поддържа DCOM вместо RMI, тъй като RMI не поддържа комуникации между Java и не-Java. Специфичната цел за използване на RMI е за системна комуникация между Java. Например с RMI можете да извиквате методи на обекти, съществуващи в други Java виртуални машини, без да знаете типа на класа, като същевременно запазвате безопасността по време на работа на Java.

Ако трябва да се преместите извън комуникациите между Java, CORBA всъщност е преносимото решение, а не DCOM. Защо? DCOM е насочена към света на Microsoft, едва наскоро стана достъпна за света на Unix с продукти като EntireX от Software AG. Ако трябва да използвате RMI, очевидно Internet Explorer не е налична опция. Ако имате нужда от системни комуникации от Java към не-Java, за да взаимодействате със стари (не-Java) системи, които разчитат на CORBA, Netscape Communicator 4.0 се доставя с VisiBroker ORB на Visigenic. (За поддръжка на RMI с Netscape Communicator трябва да използвате бета версия на кръпка на браузъра, тъй като Communicator не твърди, че е браузър Java 1.1.)

Rotten to the Core Java API: Същността на проблема

Последният идентифициран проблем с несъвместимостта на Java 1.1 всъщност е най-страшният. Лесно е да избегнете RMI и JNI, ако приложението ви го позволява: Просто не ги използвате. Проблемът е, че Microsoft реши, че библиотеките на клас Java Core са недостатъчни за нуждите му. Сега няма нищо лошо в разширяването на нещата чрез подкласиране и поставяне на новите обекти в пакет извън йерархията на класа на java. *. Но решението за добавяне на около 50 метода и 50 полета в класовете в пакетите java.awt, java.lang и java.io, както направи Microsoft, е изключително проблематично. "Microsoft измамно променя класове ключове и ги вмъква в своя SDK", каза Барац, което води до това, че разработчиците мислят, че пишат Java, когато всъщност пишат нещо, което работи само в Internet Explorer.

Как добавките на Microsoft към класовете засягат разработчиците на Java? Е, ако разчитате на тези промени или просто неволно ги използвате, вашата програма ще работи само в Java системата на Microsoft. Освен това, ако създадете програма извън средата за разработка на Microsoft, тя ще очаква определен основен API. За съжаление този Core API е различен от този в средата на Microsoft, така че програмата може да не работи там. Тестът за съвместимост, който отбеляза този проблем, се нарича a signature test.

Като пример, ако методът foo()трябва да приеме параметър от тип bar, по-добре вземете обект от тип bar. Ако някой иска bazвместо това да предадете обект от тип , той ще работи само на онези системи, които са променили ядрото, за да го приемат. И Microsoft представи тази промяна. Сега Microsoft може да мисли, че това е референтната реализация на Java за Windows. Но факт е, че само Sun може да внесе промени в Core Java API. Да, всеки лицензополучател може да поиска промени и много често го правят. Но Microsoft еднолично и без разрешение реши да промени тези неща.

В крайна сметка целта на делото е, по думите на Барац, „да върне Microsoft обратно в съответствие“ и то възможно най-бързо. Но докато законността не бъде разрешена, Sun ще задържи на Microsoft всички текущи подобрения на Java технологията, като новата виртуална машина Java 2.0, наречена HotSpot. Ако Microsoft не се върне в съответствие с Java, ще трябва да предложи чиста стая за изпълнение на своята версия на нещо, което няма да се нарича Java - тоест, ако иска да направи нещо с еквивалента на байт кодове на Java. Кой знае какво ще се случи с IE 4.0, SDK за Java 2.0 и следващия Visual J ++?

Думи на мъдрост: Нека разработчикът на Java се пази

Като разработчик ще трябва да стъпвате много внимателно. Ако решите да използвате среди за разработка на Microsoft и трябва да създадете крос-платформени решения, бъдете много запознати с API на Core Java. Ще трябва да избягвате всичко, което не е част от публичните спецификации. Докато не бъде публикуван пълен списък на несъвместимите елементи, тежестта на отделните разработчици е да знаят какво е и какво не е съвместимо. Разбира се, ако не ви интересува „еднократно писане, бягане навсякъде“, можете да използвате специфичните за платформата възможности на Microsoft. Възможно е обаче лицензът за Java на Microsoft да бъде отнет. Sun вече се опитва да отмени възможността на Microsoft да показва съвместимото с Java лого.

Джон Зуковски е магьосник на софтуера в института MageLang, автор на справка за Java AWT от O'Reilly & Associates и JBuilder на Borland: Не се изисква опит от Sybex, както и ръководството за фокусиране върху Java в минната компания.

Научете повече за тази тема

  • Съобщение за пресата на Sun Microsystems

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

  • Често задавани въпроси за Microsoft защо не поддържа RMI / JNI и т.н.

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

  • Текущата поддръжка на Netscape за Java в Communicator 4.0

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

  • Вижте историята на Елизабет Хайхлер от News Service и Боб Макмилън, SunWorld

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

  • Нашата собствена Джени Алой написа история за гнева на лобито на Java към Microsoft

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

  • Историята на CNet за дело Sun срещу Microsoft

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

  • San Jose Mercury News по делото

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

  • Трябва ли да бъде разрешено на Microsoft да променя библиотеките на ключови класове на Java? Вземете последната ни анкета

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

  • Преглед на неутралните за платформа инструменти за разработка на Java в NC World , сестринска публикация на JavaWorld

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

  • Коментарът на Ник Петрели за съдебния процес Sun / MS, също в NC World

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

Тази история „Какво означава съдебният иск на Sun срещу Microsoft за разработчиците на Java?“ е първоначално публикуван от JavaWorld.