Вопреки обещаниям создателей языка, выполнение аплетов Java зависит от платформы. Для повышения совместимости выпускается новый комплект средств разработчика JDK 1.1 с расширенным набором тестов и классов.

Теоретически девиз Java звучит прекрасно: "Напиши раз, выполняй где угодно". Однако на практике он не реализуется, когда речь идет о приложениях, созданных с помощью этого свежеиспеченного языка программирования. Многие разработчики обнаружили, что их Java-апплеты или приложения выполняются на одних платформах не так, как на других. И что еще хуже, они, например, работают в Web-браузере компании Microsoft и отказываются выполняться в браузере Netscape Communications. Или могут породить тупиковую ситуацию и фатальный сбой системы.

"Утверждение, что достаточно один раз написать программу, а затем выполнять ее на чем угодно, является чистой ложью", - говорит Джон Раймер, вице-президент Giga Information Group. - Можно один раз написать программу, а потом поработать над тем, чтобы она могла выполняться где угодно". Необходимость такой работы связана с различиями в реализации средств разработчика Java Development Kit, но, прежде всего, - в виртуальном Java-процессоре (Java Virtual Machine - JVM), который интерпретирует текст программы на языке Java и позволяет выполнять ее на различных клиентах и серверах.

По сообщениям разработчиков, наибольшие трудности возникли с реализацией JVM в браузерах Netscape для Macintosh и Windows 95. Разработчики столкнулись с разнообразными трудностями, начиная с установки приоритетов обработки сообщений и кончая сменой раскраски экрана.

Прошлой весной компания Instant Sports, занимающаяся разработкой ПО, выбрала язык Java в качестве средства создания собственной спортивной Web-страницы реального времени, пользуясь инструментальными средствами Java Workshop компании Sun, и столкнулась с трудностями, которые возникали при завершении работы браузеров. Как заявил президент Instant Sports Том Форнофф, "Все шло хорошо с браузером Navigator версии 2.0, созданным фирмой Netscape на основе языка Java для Windows 95, однако на Macintosh программа вообще не работала". Аплеты Java практически вообще не обрабатываются браузером Netscape Navigator 3.0 for Macintosh. Компания Netscape признала наличие ряда ошибок и заверила в том, что ведется упорная работа по их устранению, однако отказалась сообщить подробности.

Тем временем корпорация Microsoft вступает в схватку за JVM, объявив о создании собственно виртуального Java-процессора, который работает как элемент управления ActiveX и поставляется в виде встраиваемого модуля для браузера компании Netscape. Беглый опрос разработчиков показал, что при работе с JVM компании Microsoft на деле возникает меньше трудностей. Однако разработчики, привыкшие к Windows, могут не всегда обращать внимание на подробности, связанные с переходом от одной платформы к другой.

"В некотором смысле Microsoft пытается предельно упростить Java-разработки под Windows", - сказал Марк Люссьер, главный разработчик корпорации Sanga International. - Но с другой стороны, когда вы полностью завершите свое творение, оно будет работать только под Windows... Это своего рода отказ от тех целей, ради которых создавался язык Java". Еде одна проблема, по словам Люссьера, заключается в той небрежности, которую склонны проявлять некоторые разработчики, зная, что их приложение будет работать под Windows. Sanga взяла за правило проводить испытания на компьютерах с архитектурой SPARC, поскольку она обнаружила, что если приложение на них выполняется, то оно работает везде.

Microsoft согласилась, что программисты должны писать тексты программ с большой тщательностью. "Разработчикам, заинтересованным в переносе приложений с одной платформы на другую, все еще необходимо испытывать свои приложения, используя разные платформы", - сказал Чарльз Фитцджеральд, менеджер по продуктам компании Microsoft.

Компания Applix, создавшая семейство приложений Java под названием Anywhere, на собственном опыте познала трудности с браузерами. Поскольку в браузерах Microsoft, Netscape и даже Sun используются разные реализации JVM, то Applix решила помещать текст программы в программные продукты, чтобы распознавать применяемый Java-браузер и, тем самым, добиваться наибольшей его эффективности. "В среде Windows браузер Netscape работает не так, как в Unix", - говорит Барри Берк, менеджер Applix по разработке ПО Anywhere. - Это два разных JVM. Так же обстоит дело и с продукцией Microsoft. Ее Explorer имеет два JVM - один для Windows NT и Windows 95, а другой - для Macintosh".

Отделение JavaSoft фирмы Sun признало проблемы совместимости Java, когда объявило о выпуске версии 1.1 комплекта JDK (см. врезку). Однако представители фирмы при этом избегали называть свои имена. "Мне известно, что вокруг совместимости было много недовольства и разочарований", - говорит Дэвид Спенхофф, директор по маркетингу из JavaSoft. Чтобы решить эту проблему, JDK 1.1 предполагается снабдить 5000 тестами на совместимость для JVM, компилятором байт-программ Java и библиотеками классов (JDK 1.0 имел лишь 50 тестов на совместимость).

С точки зрения Sun, компании, получившие лицензию на Java - а их уже 55 - должны постоять за себя сами и доказать, что их продукция пройдет все тесты на совместимость и без процесса внешней апробации. Именно таким путем продолжают развиваться события, заявил Джон Каннегаард, вице-президент JavaSoft по программным продуктам. "У нас есть право провести ревизию, если кто-то поднимет шум, но пока что мы не видели необходимость так поступать", - добавил Каннегаард.

С другой стороны, ряд разработчиков и аналитиков видят необходимость изменений. "Sun действительно должна заняться этим", - сказал Раймер. - Ведь это ее технология. Она ей принадлежит. Она выдает лицензии". Как считает Тед Янг, президент компании Advanced Web Technologies, корпорация Sun должна играть более существенную роль в тестировании на совместимость, поскольку проблемы выходят из-под контроля. "В браузерах люди находят все больше ошибок реализации JVM", - говорит Янг. - С моей точки зрения, это уже ошибка, если аплет выполняется в программе просмотра, то есть в средстве, который поставляется в составе JDK, но не работает в браузере".

Microsoft и Sun ведут переговоры о возможности в будущем выступить с компиляторами Java-программ в "родной" кодировке, что целиком устранило бы потребность в виртуальной машине. Спенхофф заявил, что преимущество компилятора программ в "родной" кодировке для Unix, Windows и других операционных систем состоит в том, что Java-приложения будут выполняться быстрее, чем в случае JVM. Но это превратит байт-программу Java в нечто зависящее от платформы и будет противоречить все еще невыполненному обещанию "написав однажды, выполнять повсеместно".


JavaSoft выпускает бета-версию JDK 1.1

Эллен Мессмер

JavaSoft, отделение корпорации Sun Microsystems, выпустило бета-версию комплекта средств разработчика Java Development Kit (JDK) 1.1. Окончательная версия комплекта начнет поставляться уже в первом квартала текущего года.

Признав, что разработчики насмехались над невыразительностью средств графического дизайна в первой версии продукта, вице-президент JavaSoft по программным продуктам Джон Каннегаард пообещал, что в новой версии инструменты Abstract Windowing Toolkit (AWT) будут намного лучше. С выходом JDK 1.1 разработчики также получат возможность создавать аплеты для иностранных языков, в первую очередь - для азиатских.

Кроме того, в JDK 1.1 будет добавлена поддержка технологии под названием Remote Method Invocation (дистанционный вызов метода), созданной для того, чтобы позволить программным Java-объектам эффективно общаться через сети. JDK 1.1 будет также расширен за счет Java Database Connectivity Standard (стандарт подключения Java к базам данных), что предоставит общий способ доступа к базам данных SQL из Java-программ.

Хотя фирма Sun намеревалась ввести API-интерфейсы шифрования, ей пришлось оставить этот план под давлением правительственного Управления по национальной безопасности, которое указало, что оно заблокирует экспорт любых JDK с мощными криптографическими API. Однако в комплект поставки JDK 1.1 войдет технология цифровой подписи, которая позволит идентифицировать аплеты. Это свойство было затребовано многими компаниями для повышения защиты при распространении Java-программ.

По словам Каннегаарда, компании, получившие лицензии на создание собственных комплектов средств разработки для Java, а также разработчики и любого другого ПО, использующего JVM, например, браузеров или операционных систем, должны будут гарантировать, что их продукты прошли тесты на совместимость, которые входят в состав JDK 1.1. Директор JavaSoft по маркетингу Дэвид Спенхофф признает, что проблемы совместимости Java действительно существуют. Но Sun предпочитает никого не принуждать, давая возможность поставщикам проводить собственное тестирование.

Отдельно JavaSoft будет предоставлять набор средств разработки ПО для электронной коммерции. Этот набор послужит для создания на базе Java "киберкошельков".