Дом на острове Java

Производители вычислительных систем долгие годы стремились к объединению всех компьютеров в единую сеть, но несовместимость платформ замедляла этот процесс. Пользователи, замкнутые в своих сетях, с трудом преодолевали эти барьеры. Переносимость программ с одной платформы на другую очень важна для предприятий, вложивших достаточно крупные суммы в вычислительную технику. Естественно, что они не хотят просто так отказываться от этих вложений. Именно поэтому технология Java, которая базируется на идее полной открытости и независимости систем и платформ, завладела умами многих руководителей.

О технологии Java сейчас говорят достаточно много, но не все правильно понимают ее суть. Миф о том, что Java - игрушка для оживления Web-страниц, не позволяет правильно оценить перспективы ее развития. Эта статья написана для того, чтобы изменить сложившееся мнение о легковесности Java.

Фундамент

История Java интересна и поучительна, как старая добрая сказка. Развитие технологий происходит по одним и тем же законам, и знание истории может иногда подсказать будущее. Вначале Java предназначалась вовсе не для компьютеров, и именно благодаря идее сделать бытовую электронику интеллектуальной появилась на свет эта уникальная технология.

"А что сделал бы ты?"

Что может Java?
Java может все. Вот только несколько программ, которые используют Java-технологию:
  • Corel Office for Java (Corel)
    Пакет офисного программного обеспечения, написанный на языке Java. Он включает текстовый процессор, аналогичный WordPerfect, электронную таблицу на основе Quattro и другие необходимые компоненты. Чтобы избежать ошибок в ранних вариантах исполнения Java, Corel Office использует свои собственные классы и механизмы управления памятью.
  • Anyware (Applix)
    Набор офисных программ, предлагаемый фирмой Applix, совместим с продуктами других производителей. Например, электронная таблица Anyware WebSheet "понимает" формат Microsoft Excel и Lotus 1-2-3.
  • NetResults (Innotech Multimedia)
    Пакет инструментов NetResults предназначен для обслуживания Web-серверов и intranet. В его состав входит новая многозадачная программа поиска, которая может выполнять поиск требуемых данных в гетерогенных сетях.
  • OrbixWeb 2.0 (Iona Technologies)
    Инструмент, связывающий Java-апплеты с объектами CORBA. Это позволяет строить на базе Web-навигаторов сложные клиент-серверные программы.
  • Layout Mill (Ignite Technologies)
    Новый инструмент разработки Java-программ, полностью написанный на этом языке. Он позволит программистам работать на любой платформе и создавать продукты для какой угодно платформы. "Переключатель" графических интерфейсов дает им возможность увидеть работу их программ в различных операционных системах Windows, Macintosh и Unix (Motif).
Подготовлено по материалам журнала "Byte", который можно найти по адресу http://www.byte.com/art/9701/sec6/art5.htm.
Первый камень в фундамент Java был заложен в 1990 г., когда на рынке персональных компьютеров господствовали IBM PC, и многие считали, что компания Sun Microsystems упустила свой шанс в этой сфере бизнеса. Поэтому, когда пользующийся уважением в фирме программист Питер Ноутон заявил президенту Sun Скоту Мак-Нили о своем уходе в NeXT, это не оказалось большой неожиданностью для последнего. "В NeXT все делается как надо", - сказал тогда Ноутон. Но Мак-Нили попросил его объяснить, "что неправильно делает Sun, и что сделал бы ты?". На следующее утро Ноутон отправил Мак-Нили письмо, в котором высказал свое мнение о перспективах компании Sun. Помимо прочего, Ноутон предлагал нанять дизайнера для переработки пользовательских интерфейсов, выбрать одну программную библиотеку, сосредоточиться на какой-либо оконной технологии и, наконец, уволить группу разработчиков MS-Windows. "Это подразделение больше не понадобится, когда компания пойдет верным путем", - писал Ноутон.

В Sun было созвано совещание, на котором Джон Гейдж, директор по науке, задал Ноутону сакраментальный вопрос: "Что же ты хочешь сделать?" Совещание затянулось до утра, но в результате на нем были сформулированы основные принципы нового проекта, ориентированного на массовый рынок. К его реализации приступила команда талантливых инженеров, настолько небольшая, чтобы уместиться за столиком в китайском ресторане. Разрабатываемая среда предназначалась для "послезавтрашней" техники, и главным условием была простота в обращении. Проект засекретили и постарались, чтобы инженеры оставались максимально независимыми от центрального офиса.

В тени зеленая краска не выгорает

Новая группа инженеров, в которую вошли Ноутон, Джеймс Гослинг и Марк Шеридан, получила название "Green". В апреле 1991 года эта команда переехала из городка Sun в офисное помещение в Менло-Парке, отрезав себя от внутренней компьютерной сети Sun. Шеридан вспоминает: "Если бы мы остались в Sun, то превратились бы еще в одну рабочую станцию. Я был просто помешан на том, чтобы к нам никто не совался". Забив холодильник мороженым и кока-колой, они стали проводить часы за игрой в "Нинтендо", пытаясь понять секрет ее завораживающе привлекательных графических интерфейсов. Вопросы бизнеса до поры до времени оказались отложенными в сторону, чтобы дать техническим идеям возможность созреть. Задача проекта была сформулирована в бизнес-плане: "Разработать и лицензировать операционную среду для устройств бытовой электроники, позволяющую предоставлять услуги и информацию с помощью существующей компьютерной инфраструктуры".

С++ для пылесоса

Через некоторое время стало понятно, что нужен новый язык программирования, так как все существующие языки не годились для бытовой электроники. Поэтому Гослинг начал работу над языком "C++ для домашнего хозяйства". Весь процесс от начальных беспомощных ругательств и до проекта разумной степени значимости занял, по его утверждению, всего несколько месяцев. Тем временем Ноутон трудился над графической анимацией, которая должна была послужить интерфейсом для будущего устройства. В августе 1991 г. у Гослинга уже была графика, основанная на языке, который он назвал Oak (дуб) в честь дерева, видневшегося из окна его офиса. Этот язык впоследствии был переименован в Java.

Команду проекта Green захватила идея построить устройство, которое служило бы интерфейсом для киберпространства. Например, чтобы с помощью него можно было, находясь вне дома, управлять своим видеомагнитофоном как виртуальным видео в виртуальном мире. Этот виртуальный мир - цветной и трехмерный - был написан Ноутоном на языке Oak и стилизован художниками.

Президенту Sun показали демо-версию устройства в августе 1992 г. Это была помещавшаяся в руке коробочка с маленьким экраном без кнопок. Коснулся экрана - и оно включилось. Класс! На экране появлялась мультипликационная картинка - без меню! Персонаж по имени Дьюк - бесенок с заячьими зубами и красным носом - вел пользователя по комнатам мультипликационного дома. Проводя пальцем по экрану, можно было, лежа на диване, вызвать виртуального гида, выбрать программу, перетащить ее в рисунок, изображающий видеомагнитофон, и запрограммировать его на запись телепрограммы. Реальность оказалась еще изящней, чем планировалось вначале. В клавиатуре или мыши не было необходимости - просто подхватываешь пальцем объекты на экране и с характерным звуком отпускаешь их в нужном месте.

Но команда Green разработала не просто прототип универсального интерфейса, а Oak позволял программировать не только мультики. Это был промышленный объектно-ориентированный язык с возможностью распределенных вычислений, который к тому же содержал в своем ядре специальные механизмы защиты, шифрования и аутентификации. Они обеспечивали надежность и безопасность вычислительных процессов, выполнявшихся на различных устройствах.

Вычислительная система под управлением Oak, по замыслу разработчиков, должна была работать следующим образом. Небольшие пакеты кода (объекты) свободно перемещаются по сети и могут независимо выполняться на любых устройствах (будь то компьютер, телефон или тостер). Сложные же программы, такие как почтовый сервис, разделяются на отдельные блоки, и каждый элемент программы выполняет свою определенную задачу. При этом не обязательно, чтобы все объекты находились в одном месте.

Internetовские дрожжи

Однако первые попытки воплотить технологию, созданную группой Green, в законченном продукте потерпели поражение. Компьютерный мир еще не был готов к Oak. Все переменилось, когда стремительно выросла популярность Web. Компания Sun поняла наконец, что Internet может стать наилучшим применением Oak. Причем для захвата своей доли рынка Sun выбрала тактику бесприбыльных действий. Также в свое время поступила фирма Netscape, отдавшая в бесплатное пользование свой Web-навигатор.

В январе 1995 г. новая версия Oak получила более привлекательное название Java. А чуть раньше, в декабре 1994 г., Java (тогда еще под старым именем) и HotJava (Web-навигатор, поддерживающий технологию Java, который был написан Ноутоном всего за несколько дней) были помещены в глубины Internet. Только немногим избранным указали путь к этим файлам и попросили опробовать новую технологию. Через три месяца копию данного продукта получил Марк Андресен (создатель Netscape), который в интервью газете "Сан-Хосе Меркьюри Ньюс" дал такую оценку работе инженеров: "То, что делают эти ребята, абсолютно и неопровержимо ново. Это классная штука". Так команда Java узнала, что проект удался.

Правильно выбранный исторический момент - не единственное достоинство Java-технологии. Может быть, куда более существенным является ее техническое совершенство.

Стены

В основе технологии лежит клиент-серверная модель. Элементы Java-программы находятся на сервере и загружаются в компьютер (или сетевое устройство) клиента только при необходимости. Для ускорения работы наиболее часто используемые блоки сохраняются в оперативной памяти или на жестком диске клиента. Поскольку программы содержатся на сервере, то управлять такой системой (в том числе и компьютером клиента) можно централизованно. При подобном подходе исключено появление проблем, знакомых многим пользователям, когда, например, из-за существования разных версий продукта возникают трудности с правильной интерпретацией данных. Благодаря Java пользователь может о них забыть: у него всегда исполняется самая последняя версия программы.

Основной компонент технологии - виртуальная Java-машина. Она должна быть создана для каждой компьютерной платформы, на которой будут выполняться Java-программы: IBM PC, Macintosh, AS-400 или мэйнфрейм. Можно считать, что вам предоставлен компьютер, понимающий команды Java, но смоделированный на языке реального ПК. Виртуальная машина контролирует все возможные нарушения целостности программ: от проверки версий Java-блоков до блокирования опасных действий программы. Поэтому Java-программы безопасны и надежны в работе.

Технология создавалась в расчете на серьезные ограничения по ресурсам (в частности памяти), и в отличие от разработчиков "толстых" операционных сред типа Windows NT инженеры Green были вынуждены писать небольшие и изящные программы. В результате средняя длина Java-команды получилась всего 1,8 байт, в то время как команды классических RISC-процессоров занимают около четырех байтов.

Кроме виртуальной машины, Java-технология включает в себя и необязательный элемент - объектно-ориентированный язык программирования. Сегодняшний Oak - это C++, из которого убрали все лишнее и добавили новые механизмы, обеспечивающие безопасность и распределенные вычисления. Однако его можно с успехом заменить на любой другой язык высокого уровня, добавив в него все необходимые элементы. Например, уже существует компилятор языка Ада, генерирующий программы в байт-коде Java.

Язык Java дает возможность не просто разрабатывать программы, но и использовать элементы уже написанных и отлаженных программ. Такой модульный принцип позволяет быстро создавать новые программные продукты и эффективно модернизировать старые. Кроме того, в стандарт языка входит множество полезных библиотек, на основе которых можно строить вычислительные системы любой сложности. Причем этот набор постоянно дополняется новыми функциями.

Крыша

Основное преимущество Java -возможность легко адаптироваться к новой платформе. Чтобы сделать все Java-программы доступными для нее, достаточно разработать соответствующую виртуальную Java-машину. Учитывая перспективность технологии, желающих это сделать хоть отбавляй, начиная от гигантов типа Sun или Microsoft и заканчивая небольшими коллективами программистов, пытающимися занять свое место в строящемся доме. Есть все основания рассчитывать на то, что через некоторое время появится множество прикладных программ, которые всегда, в конечном итоге, определяют успех той или иной технологии.

Среди достоинств Java следует отметить и то, что она наилучшим образом подходит для надежного выполнения распределенных вычислений и позволяет использовать существующие компьютеры, придавая им вторую молодость.

На Java можно переходить постепенно и с гораздо меньшими расходами, чем на другие технологии. Разработчики программного обеспечения могут создать одну версию своего продукта и разворачивать его на самых разных компьютерах - от ПК до мэйнфреймов. Возможность "написать один раз, а выполнять где угодно" экономит труд и время, связанные с адаптацией каждой программы под определенную платформу. Это также означает, что становится реальным создание гетерогенных вычислительных систем, в которых допускается объединение IBM PC-совместимых компьютеров, Macintosh, компьютеров под OS/2, Unix-систем и AS/400.

Недостатки - продолжение достоинств

Но, как это часто бывает с новыми технологиями, Java имеет и много недостатков. Вполне вероятно, что она окажется не столь популярной среди разработчиков программ. Несмотря на ее несомненные достоинства, есть несколько причин, по которым они могут отказаться от нее. Основной, видимо, является универсальность технологии. Именно из-за этого Java-программы не способны эффективно использовать особенности каждой конкретной платформы. Например, интерпретация Java-кода, которая и обеспечивает переносимость программ, замедляет их выполнение. Поэтому злоупотреблять ею не следует и применять стоит только там, где нет более совершенной технологии (скажем, для распределенных вычислений).

Заметим, что Java имеет смысл использовать лишь тогда, когда скорость обмена данными с другим компьютером примерно равна скорости доступа к локальному диску. В этом случае пользователю все равно, где хранить и откуда загружать данные и программы. Однако у тех, кто работает с компьютером дома, обычно нет достаточно скоростных линий связи с внешним миром. И хотя технология Java задумывалась для применения в быту, на современном этапе она больше подходит для корпоративных клиентов.

Интерьер

Первоначально Java использовалась в Web-навигаторах для оживления страниц статического текста. Видимо поэтому многие пользователи воспринимают ее как инструмент, который можно применять только вместе с Web. Но это миф. Java годится и для серьезной работы. Многие производители программного обеспечения уже имеют или разрабатывают свои Java-продукты. В декабре Sun выпустила первую Java-станцию. В ней отсутствует жесткий диск, а все элементы (кроме процессора) построены по технологии персональных компьютеров. Стоит она не дороже персоналки. Но управлять Java-станцией значительно проще, чем персональным компьютером. Все программное обеспечение хранится на сервере, и поэтому его можно легко изменить и настроить. На новое оборудование допускается постепенный переход: вначале устанавливается программное обеспечение Java на уже работающие компьютеры, а затем при желании они заменяются Java-станциями. Причем заново настраивать программное обеспечение не нужно.

В домашнем же хозяйстве, для которого она была задумана, использовать Java пока невозможно. Аналог Java-устройства, которое предложили президенту Sun Мак-Нили инженеры группы Green, к сожалению, еще не продается. Причина очевидна - нет достаточно дешевой бытовой техники, которая "понимала" бы язык Java, и не существует надежных и удобных линий связи для передачи данных в пределах квартиры. Но разработка таких устройств и технологий уже ведется. Например, компания Sun выпустила процессор PicoJava, предназначенный для небольших устройств и "понимающий" байт-коды Java. Кроме того, некоторые фирмы пытаются приспособить для передачи данных обычную электросеть. Поэтому, если года через два ваш утюг пожурит вас за то, что не может найти Java-сервера, пожалуйста, не обижайтесь на него.

Валерий Коржов
oskar@jet.msk.su