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

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

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

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

Особенности рынка встроенных систем

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

Основой встроенных систем являются микропроцессоры и микроконтроллеры - компьютеры, выполненные на одной микросхеме и включающие в свой состав ПЗУ, ОЗУ, каналы ввода/вывода и другие специализированные устройства. Хотя сегодня на рынке еще довольно часто можно встретить 4-разрядные микроконтроллеры, доля 8-, 16- и 32-разрядных контроллеров непрерывно увеличивается. Встроенные системы, предназначенные для выполнения наиболее сложных задач, таких как управление лазерным принтером или синхронизация работы датчиков и контроллеров современных станков, обычно строятся на базе RISC-процессоров. На этом рынке широко представлены процессоры Intel семейства i960, а также специальные версии процессоров SPARC, разработанные компанией Sun.

Оценить масштабы применения технологии Java очень сложно. Практически каждый специалист согласится с тем, что число приложений Java на рынке встроенных систем растет экспоненциально, но при этом назвать точные цифры вряд ли кто-либо отважится. Поэтому нет ничего удивительного в том, что количественные оценки распространения встроенных программных средств, представленные различными компаниями, расходятся очень сильно. Аналитики исследовательской фирмы International Data Corp. (IDC) утверждают, что в 1995 году общий объем продаж встроенных систем в мире составил 700 млн. долл., а в 2000 году эта сумма возрастет до 1,6 млрд. долл. Согласно расчетам компании Wessels, Arnold & Henderson, в 1996 году оборот рынка был равен 2,5 млрд. долл., а к 2001 г. он достигнет 5,2 млрд. долл. Частично такой большой разброс оценок можно объяснить различным толкованием самого понятия программного обеспечения встроенных систем. Четко очертить границы рынка, охватывающего практически все стороны нашей жизни, очень трудно. Тем не менее все сходятся в одном: потенциал Java в данной области очень высок, и доля программных систем, созданных на базе Java, в ближайшие несколько лет существенно возрастет.

Одна из причин подобного роста - все более широкое применение во встроенных системах 32- и 64-разрядных процессоров. По мнению сотрудников IDC, к 2000 году количество таких систем составит 250 млн. Другие аналитики указывают на то, что самыми быстрыми темпами увеличивается процент именно 32- и 64-разрядных устройств. Безусловно, эти процессоры в наибольшей степени удовлетворяют потребностям Java и играют немаловажную роль в дальнейшем распространении этого языка.

В последнем обзоре журнала Electronic Engineering Times отмечается, что почти половина компаний применяют в своей работе 32-разрядные процессоры. В этом же обзоре говорится о росте интереса к современным языкам (в частности, к Java). В настоящее время этот язык уступает по популярности только языку Ассемблера, C и C++. Однако сторонникам Java не стоит сильно обольщаться. По-прежнему с большим отрывом лидирует язык Ассемблера. Этот язык используют две трети опрошенных. Системы, написанные на C и C++, применяются приблизительно в два раза реже, а Java значительно отстает и от этого показателя. С другой стороны, большинство участников опроса до сих пор работают с 8- и 16-разрядными микропроцессорами (которые не обладают достаточной поддержкой современных языков), но даже и в этих условиях Java сумел опередить многие традиционные для встроенных систем языки, например Forth.

Локальная сеть в вашем автомобиле?

Еще одна довольно широкая область применения встроенных систем - это сети. Сегодня многие устройства еще работают в автономном режиме. Но с течением времени все чаще и чаще возникает необходимость взаимодействия с другими системами. Если вы считаете автомобиль неподходящим местом для размещения локальной сети, обратите внимание: уже сейчас в каждом новом автомобиле устанавливается в среднем 16 микропроцессоров и микроконтроллеров, а лидирующая на мировом рынке компания Motorola предсказывает, что типичный автомобиль 2000 года будет оснащен 35 микропроцессорами и микроконтроллерами. Некоторые из них (например, отвечающие за управление двигателем и трансмиссией) должны работать в тесном взаимодействии друг с другом. В результате уже в ближайшем будущем владельцы машин могут превратиться в пользователей автомобильных локальных сетей.

Наибольшее распространение локальные сети получили при создании и внедрении автоматизированных систем. Последнее десятилетие прошло под знаком объединения в сети так называемых "островков автоматизации". Предприятия автоматизировались по частям, при этом приоритет отдавался системам, которые позволяли получить наиболее быструю и эффективную отдачу. Теперь перед компаниями встала необходимость объединить отдельные комплексы в единую автоматизированную систему масштаба предприятия - весьма непростая задача, если учесть, что составные части будущей единой системы разрабатывались в разное время, а оборудование приобреталось у различных поставщиков.

Одна из важнейших особенностей сетевых встроенных систем - это возможность установки распространяемых по сети обновленных и исправленных версий ПО. Ранее ПО размещалось в ПЗУ. Для его обновления требовалось заменить микросхему. Сегодня во многие продукты (в частности, в модемы компании U.S. Robotics) устанавливается ПЗУ с возможностью перезаписи (микросхемы флэш-памяти), а обновленное ПО пользователи получают по телефонным линиям.

Роль встроенного ПО

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

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

Java и операционные системы реального времени

Некоторые разработчики ОС реального времени (real-time operating systems, RTOS), в частности компании Wind River Systems, Microware, Integrated Solutions и Microtec, встраивают в свои продукты поддержку Java. Из-за присущих технологии Java ограничений ОС реального времени не могут быть полностью написаны на Java. Тем не менее в RTOS встраивается виртуальная машина Java (JVM), позволяющая выполнять апплеты. Компания Microware включила в состав своей операционной системы OS-9 лицензированный у фирмы Spyglass пакет Web Technology Kit (WTK), который дает возможность писать встроенные приложения. В результате на свет появилась встроенная ОС с JVM и очень компактным Web-браузером, способным работать как в режиме сервера, так и в режиме клиента.

Выпущены и другие средства управления, в основе которых лежит технология Java. Компания ObjectAutomation, специализирующаяся на производстве ПО управления различным оборудованием, анонсировала созданный на базе Java управляющий механизм реального времени для ОС Microsoft Windows NT и Windows CE. Продукт будет использовать ОС реального времени RTX 4.1, разработанную компанией VenturCom, и виртуальную машину PERC фирмы NewMonics. Некоторые производители ПО (в том числе Software Research и создавшая систему Tornado компания Wind River Systems) встроили поддержку Java в свои отладчики.

Появляются и новые приложения, частично или полностью написанные на Java. Например, разработанное компанией Forge Software ПО Java Manufacturing Interface обеспечивает взаимодействие со старыми приложениями и системами клиент-сервер, а программные средства фирмы HMS Software объединяют в единую систему отдельные компоненты, управляющие работой промышленного предприятия. Другие представляют собой уже заслужившие признание пользователей продукты, в которые добавлена поддержка технологии Java. К примеру, компания SoftPLC, выпускающая контроллеры на базе ПК, включила в свое ПО возможность создания компонентов, написанных на Java.

Использование Java в приложениях

Технология Java, вероятнее всего, будет применяться для создания высококлассных встроенных систем, выполняющих роль пользовательского интерфейса или обеспечивающих взаимодействие через сеть различных программных компонентов. Это объясняется тем, что разработка подобных средств уже давно ведется для гораздо более крупного рынка настольных компьютеров. К примеру, почти все современные браузеры способны интерпретировать код Java, упрощая тем самым работу с приложениями Java, доступными через Internet. Технология Java подходит для создания встроенных систем высокого уровня, поскольку присущие Java недостатки (повышенные требования к ресурсам и сложность обработки информации в режиме реального времени) в такого рода системах не имеют большого значения.

Технология Java не ставит пользователей перед выбором "все или ничего", в этом одно из ее основных преимуществ. Если вы хотите, чтобы ваша встроенная система использовала преимущества Java, вовсе не обязательно переписывать на этом языке абсолютно все программные компоненты. Достаточно обеспечить поддержку JVM и применять апплеты Java, скажем, для организации взаимодействия.

Java может стать лучшим помощником и в случае необходимости использования средств Internet или intranet. На этой технологии базируется большинство Web-приложений. Встроенные приложения Java находят широкое применение в масштабных проектах, таких как Hubble Space Telescope. Часть пользовательского интерфейса информационной системы Центра управления NASA написана на Java. В результате пользователи всего мира имеют возможность получать через Internet телеметрические и технические данные, поступающие из системы Hubble. Корпорация Sun совместно с NASA принимает участие в реализации проекта Web Interface for Telescience (WITS), который позволит пользователям Internet, загрузив апплет на свой компьютер, имитировать полет космической станции Mars Rover. Во время следующего полета на Марс, который должен состояться в 2001 году, WITS поможет проследить за полетом Rover.

Особое внимание технологии Java уделяется на рынке промышленных систем управления. Одна из наиболее интересных особенностей рынка систем управления 1990-х в его схожести с компьютерным рынком 1970-х. Оригинальные решения дополняют оригинальную архитектуру. "Почти все технологии и языки программирования общего назначения сегодня ориентированы на пользователя (ранее производители поддерживали только свои собственные продукты), - отметил Скотт Лундстрем, руководитель исследовательского центра компании Advanced Manufacturing Research, выпускающей системы автоматизации производства. - Наблюдается смещение акцентов в сторону открытых систем, а это в свою очередь влечет за собой усиление конкуренции и снижение цен. Однако производители систем хорошо понимают возможные последствия такой политики и с большой опаской выходят на рынок открытых решений".

Повестка дня

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

Производство смарт-карт, в которых размещается микроконтроллер и небольшой объем памяти, к началу XXI столетия обещает превратиться в очень бурно развивающуюся отрасль. По оценкам компании Siemens Semiconductors (входящей в состав гиганта электронной промышленности Германии Siemens AG), которая известна как мировой лидер в данной области, оборот возрастет с 13 млн. долл. в текущем году до почти 3 млрд. долл. в 2001 году и в дальнейшем будет увеличиваться столь же быстрыми темпами.

Корпорация Sun объявила о создании специального диалекта Java, который получил название JavaCard и предназначен для разработки приложений, обрабатываемых микроконтроллером в условиях ограниченного объема памяти (256 байт для виртуальной машины фирмы Integrity Arts). Компания Schlumberger, в числе первых лицензировавшая технологию Java для смарт-карт, уже сегодня продает карты Cyberflex Java и программные пакеты для разработчиков. Компания Gemplus, занимающая ведущие позиции в индустрии производства смарт-карт, также объявила о переходе на выпуск продуктов на базе Java. В июле Siemens Semiconductors сообщила о лицензировании технологии Java, которая будет применяться в новом поколении смарт-карт.

В апреле корпорация Sun анонсировала два новых диалекта: PersonalJava и EmbeddedJava, предназначенных для разработки встроенных приложений. Диалект PersonalJava оптимизирован для создания продуктов бытового назначения, подключаемых к сети (в качестве примера можно привести телеприставки). Предполагается, что в данных продуктах имеется дисплей, но могут отсутствовать клавиатура и мышь. Диалект EmbeddedJava разрабатывался для устройств, возможности дисплея которых ограниченны, в том числе для разного рода инструментов, промышленного оборудования, пейджеров и телефонов. Выпуск первых продуктов на базе PersonalJava и EmbeddedJava, а также новой версии JavaCard начался в конце 1997 года.

Препятствие #1: Низкая производительность и повышенные требования к ресурсам

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

Большой расход ресурсов является общим недостатком любого диалекта Java. "Java требует дополнительной памяти для виртуальной машины и декодирования программ 'на лету', - говорит старший инженер компании Microtec Владимир Иванович. - Кроме того, необходимо зарезервировать ресурсы, которые требуются для работы интерпретатора. Если вы попытаетесь ускорить выполнение приложений с помощью JIT-компилятора, расход памяти еще больше увеличится. Для нормального функционирования PersonalJava нужно выделить по крайней мере 1 мегабайт ОЗУ для JVM и классов. Для встроенных систем 32-разрядный процессор и 1 Мбайт ОЗУ - это поистине огромные ресурсы. В то же время сегодня подобная конфигурация кажется не столь уж экзотичной. Системы на базе 32-разрядных процессоров являются сейчас оптимальной средой для выполнения программ Java. 32-разрядные приложения все чаще разрабатываются в сетевом варианте, а функциональные возможности их постоянно совершенствуются".

Другой недостаток Java - низкая скорость выполнения программ. Это является серьезным ограничением, если разрабатывается система, для которой скорость обработки информации является критичным параметром. Конечно, такое ограничение нельзя назвать непреодолимым. Усовершенствованные интерпретаторы Java, компиляторы JIT, скомпилированный код и Java-процессоры значительно повышают скорость выполнения приложений. Все эти направления развиваются сегодня очень быстро, особенно на рынке встроенных систем.

Каждый из подходов, используемых для повышения скорости выполнения программ, имеет свои достоинства и недостатки, что и является причиной их достаточно мирного сосуществования. К примеру, применение скомпилированного кода Java вместо JVM ускоряет выполнение программ, но при этом вы лишаетесь возможности загружать апплеты. Одним из производителей, делающих ставку на использование скомпилированного кода, является компания Microtek. В дополнение к JVM Microtek предлагает компилятор Java, преобразующий исходные тексты в объектный код конкретного процессора. "Если пользователю изредка потребуется загрузить какой-либо апплет, он может проделать это с помощью JVM, - говорит Иванович. - В то же время скомпилированный код существенно повышает производительность".

Но если вы собираетесь компилировать код Java, теряется одно из главных преимуществ технологии. Тем самым отвергается принцип "написано однажды - работает везде". Кроме того, придется отказаться от загрузки модулей по мере необходимости. Чтобы понять, что же вы выигрываете, по мнению Ивановича, нужно обратиться к самой природе Java. Будучи значительно более простым по сравнению с C++ языком, Java тем не менее обладает всеми объектно-ориентированными возможностями, а также конструкциями, необходимыми для написания встроенных систем, от которых не требуется работа в режиме реального времени.

Аналитики корпорации Sun утверждают, что программисты Java способны достичь существенно большей производительности по сравнению с программистами, выбравшими в качестве инструмента C++. Немаловажную роль играют и апплеты, которые "пишутся один раз". Многие клиенты Sun вполне согласны с этим утверждением, ведь оно подтверждается их собственным опытом общения с Java. (Приведем один пример. Технический директор журнала Time недавно сообщил, что для создания новой динамической версии Web-узла Money Magazine (Money.com Plus) на базе Java специалистам его компании понадобилось в три раза меньше времени, чем на выполнение той же задачи с использованием C++.)

Другим способом уменьшения размеров кода и повышения скорости выполнения приложений Java является использование микропроцессоров с аппаратной поддержкой виртуальной машины Java. Другими словами, в качестве инструкций процессора в данном случае выступает код Java. Первый из таких процессоров был выпущен в августе 1997 года компанией Rockwell Collins. Корпорация Sun объявила о начале разработки подобных устройств еще в 1996 году, но окончательная дата выпуска не названа до сих пор. Компания Patriot Scientific создала Java-процессор, выполненный на базе 32-разрядного процессора PSC1000, на котором функционирует JavaOS. В отличие от продукции Rockwell Collins эти процессоры стоят очень дешево. Цена одного устройства в крупнооптовой партии не превышает 10 долл. Процессор PSC1000 работает на частоте 100 МГц и выпускается в двух вариантах, имеющих напряжение питания 3 и 5 вольт.

Процессор JEM1, разработанный компанией Rockwell, работает на частоте 50 МГц, потребляет всего 60 милливатт и обладает всеми стандартными возможностями встроенных микроконтроллеров. Размеры, мощность и относительно высокая скорость обработки информации позволяют создавать на базе этого процессора достаточно эффективные управляющие системы среднего класса. По своим характеристикам процессор Rockwell вполне сравним с процессорами, встраиваемыми в персональные цифровые помощники и другие портативные устройства.

JEM1 можно рассматривать как типичный пример проникновения технологии Java на рынок встроенных систем и управляющих устройств. Компания Rockwell Collins не специализируется на производстве микросхем (этим занимается ее учредитель - корпорация Rockwell, а также еще одна дочерняя фирма - Rockwell Semiconductor). Rockwell Collins выпускает авиационное электронное оборудование, а процессор JEM1 создавался не для продажи, а в интересах развития авиационных систем. Следует отметить, что компания не использует ядро picoJava, разработанное корпорацией Sun. Поскольку JVM базируется на стековой архитектуре, она хорошо подходит для многих традиционных микроконтроллеров, в том числе и для выпущенного компанией Rockwell микроконтроллера AAMP. В основе JEM1 лежит именно архитектура AAMP, а не picoJava.

"В своих продуктах мы используем собственную конструкцию микроконтроллера [AAMP], - подчеркнул руководитель подразделения перспективных микропроцессоров компании Rockwell Collins Ник Майкрис. - Не так просто создавать и поддерживать собственные средства разработки. Это требует значительных усилий. Но поскольку данная область не относится к сфере основной деятельности компании, наши средства всегда уступали продукции специализированных фирм. Тем не менее Rockwell Collins имеет богатый опыт в области создания микропроцессоров, базирующихся на стековой архитектуре, одним из которых является процессор Java. Когда пару лет назад впервые были опубликованы спецификации JVM, мы с удивлением обнаружили, что виртуальная машина нами уже создана. Следовательно, мы можем воспользоваться уже имеющимся в наличии продуктом, а при необходимости легко перейти к работе с коммерческими версиями процессоров, ничего при этом не перекомпилируя".

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

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

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

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

Безусловно, Java не может стать панацеей от всех бед, но есть по меньшей мере две особенности, которые облегчают жизнь создателям новых систем. Одним из этих свойств является объектная ориентация, позволяющая проектировать функции как отдельные модули расширения. Обновлять такие модули значительно легче, для этого требуется всего лишь заменить небольшую часть программных или аппаратных компонентов. Другим преимуществом является парадигма "написано однажды - работает везде". Она позволяет избежать неприятностей, связанных с тем, что код, вполне нормально выполнявшийся под управлением эмулятора, отказывается работать в реальной системе.

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

В ближайшее время Rockwell Collins не планирует поставлять процессоры JEM1 сторонним фирмам, но в будущем это вполне может случиться. Модель JEM1 - это только первая ласточка в семействе микропроцессоров Java. Очередная версия, разработка которой ведется сегодня, будет приблизительно в два раза мощнее.

Сегодня микропроцессоры Java выпущены только компаниями Rockwell Collins и Patriot. В начале 1996 года корпорация Sun объявила о своих планах создания семейства JavaChip, состоящего из ядра picoJava, а также микропроцессоров microJava и ultraJava. По оценкам Sun, серийное производство первого Java-процессора, получившего название microJava 701, должно начаться в первой половине 1998 года. Процессор microJava 701 будет базироваться на версии 2.0 архитектуры picoJava.

PicoJava не является микросхемой. Это - интеллектуальная собственность Sun, микропроцессорное ядро, оптимизированное для выполнения кода Java. Именно на основе этого ядра ведутся разработки новейшей микросхемы microJava 701 и ее более высокопроизводительной родственницы ultraJava (появление которой ожидается в конце 1998 г.).

Корейская компания LG Semicon (известная ранее как Goldstar Electron) в первом квартале 1998 г. планирует начать поставки собственной версии процессора на базе технологии picoJava. Вероятной областью применения данного процессора могут стать системы управления памятью и графические контроллеры компьютеров. LG Semicon будет поставлять микросхемы корпорации Sun, которая в свою очередь станет продавать их третьим фирмам.

Компания NEC, также лицензировавшая архитектуру picoJava, пока не раскрывает своих планов. В настоящее время интенсивные разработки микросхем на базе picoJava ведут такие известные производители, как Fujitsu Microelectronics, Mitsubishi Electronics, Thomson Sun Interactive и Toshiba Systems Group. Между тем, корпорация Sun считает, что в перспективе Java-процессоры могли бы найти применение в "тонких" клиентах JavaStation, созданных на основе настольного компьютера (часто их называют сетевыми компьютерами).

Препятствие #2: Невозможность работы в режиме реального времени

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

Люди, имеющие смутное представление о требованиях к ПО реального времени, определяющим условием обычно считают высокую скорость выполнения приложения. Конечно, скорость является одним из важнейших параметров ПО реального времени, но главным фактором все же остается детерминированность или предсказуемость. Система реального времени обязана выполнять операции в рамках заданного интервала времени и должна делать это устойчиво. (Стоит отметить, что ни одна из коммерческих распределенных ОС не может по-настоящему считаться системой реального времени. Если вы собираетесь использовать распределенную архитектуру, следует оценивать "ближайшее реальное время" - этот не вполне понятный термин часто используется, когда речь идет о выполнении распределенными ОС реального времени задач, требующих очень интенсивной обработки.)

К сожалению, система освобождения памяти языка Java не позволяет гарантировать детерминированность. Автоматическая "сборка мусора" упрощает задачу программиста. Ему не приходится заботиться об освобождении памяти по окончании использования объекта. Однако во время "сборки мусора" программист теряет полный контроль над системой (ситуация контролируется до тех пор, пока JVM не решит, что памяти ей больше не хватает, и не приступит к ее освобождению) и не в состоянии управлять длительностью этого процесса. В этом и состоит фундаментальная неопределенность Java. Программисты вынуждены с этим мириться, а производителям приходится искать обходные пути.

Стандартным выходом из данной ситуации является встраивание виртуальной машины Java в ОС реального времени и разработка той части кода, которая должна работать в режиме реального времени, на языке C или на ассемблере. Таким образом поступает большинство компаний, выпускающих RTOS с поддержкой Java. Более сложный подход предлагается в технологии PERC, разработанной компанией NewMonics. Традиционная JVM заменяется на виртуальную машину, в архитектуру которой встроены некоторые новые конструкции. ОС посылает запрос приложению, а уже приложение определяет, какое решение принять в той или иной ситуации. Некоторые производители, занимающиеся разработкой ОС реального времени (в том числе компания VenturCom) лицензировали технологию PERC у NewMonics и используют ее в своих системах.

Ни один из рассмотренных подходов не позволяет разработать приложение от начала до конца на "чистом" Java. Комбинированные ОС включают в свой состав функции, написанные на других языках. Технология PERC даже больше похожа на Java, чем сама Java, но возлагает всю ответственность на приложения, которые определяют пути выходы из состояния неопределенности.

Корпорация Sun разрабатывает собственную стратегию. Недавнее приобретение компании Chorus Systems позволило Sun стать владельцем гибкой, модульной, распределенной, базирующейся на микроядре встроенной ОС, способной работать даже при наличии всего 16 Кбайт ОЗУ. Технология Chorus вполне может послужить прототипом версии Java, по-настоящему являющейся системой реального времени (возможно даже без "сборки мусора").

Перспективы Java

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


Рик Кук (Rick Cook) более десяти лет специализируется на автоматизированных системах управления. В бытность свою редактором журнала Managing Automation ("Автоматизация управления") он опубликовал множество статей, посвященных компьютерам, технологии и автоматизации управления. Связаться с Риком можно по адресу rick.cook@javaworld.com.

Сравнение языков, предназначенных для создания ПО встроенных систем

Java

Преимущества

  • Переносимый
  • Объектно-ориентированный
  • Код легко читается в сравнении с кодом конкурирующих языков
  • Обладает развитыми сетевыми средствами
  • Тесно интегрирован с Internet
  • Поддерживается большинством Web-браузеров

    Недостатки

  • Не позволяет создавать программное обеспечение, работающее в режиме реального времени
  • Недостаточное количество имеющихся средств разработки (впрочем, в настоящее время ситуация меняется)
  • Этот язык еще слишком молодой и незрелый по сравнению с альтернативными вариантами
  • Принцип "написано однажды - работает везде" реализован не полностью

    Ассемблер

    Преимущества

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

    Недостатки

  • Написание и отладка кода чересчур сложны
  • Длительный цикл разработки
  • ПО не переносится на другие платформы
  • Занимает второе место с конца по количеству инструментальных средств разработки
  • Код читать очень трудно, особенно если он оптимизирован по скорости или объему памяти
  • Самые слабые коммуникационные возможности.

    C

    Преимущества

  • Является стандартным высокоуровневым языком программирования
  • Большое количество средств разработки
  • Переносим на большинство платформ
  • Хорошие коммуникационные средства

    Недостатки

  • Почти так же сложен в понимании, как и ассемблер
  • Переносим не на все платформы

    C++

    Преимущества

  • Использование объектно-ориентированных конструкций возможно, но не является обязательным
  • Позволяет создавать переносимый код
  • Развитые коммуникационные возможности
  • Большой набор средств разработки программного обеспечения

    Недостатки

  • Является только частично объектно-ориентированным в том смысле, что на C++ можно писать и не объектно-ориентированный код
  • Переносим не на все платформы
  • Анализ кода может оказаться даже более сложной задачей, чем чтение кода C

    Ресурсы

  • Первые спецификации PersonalJava
    http://java.sun.com/products/personaljava/spec-1-0-0/PersonalJavaSpec.html
  • "Embedding Java" ("Встроенный Java") - обсуждаются возможности применения Java для управления встроенными сетевыми устройствами. Очень интересный материал для программистов.
    http://www.vic.auug.org.au/auugvic/av_paper_java.html
  • Официальные документы - список основных документов, посвященных встроенному Java, перечень обнаруженных ошибок, а также другие материалы с Web-узла Sun. Много полезной технической информации. Краткая аннотация литературы.
    http://www.eg3.com/smartv/smarjava.htm
  • Web-страница EmbeddedJava (разработки корпорации Sun)
    http://www.javasoft.com/products/embeddedjava
  • Web-страница PersonalJava (разработки корпорации Sun)
    http://www.javasoft.com/products/personaljava/
  • Соглашения picoJava, разработанные компаниями MetaWare и Sun
    http://www.metaware.com/hotstuff/picojava.html
  • В руководстве, посвященном picoJava, приводится технический обзор архитектуры процессора picoJava processor и порядка выполнения кода Java.
    http://www.ee.siue.edu/~kgovind/ee580_1.html
  • Внутреннее устройство процессора Java, Sun Microelectronics
    http://www.sun.com/sparc/java/
  • "Real-Time Operating System Industry Standardizes on PersonalJava, EmbeddedJava" ("Стандарты ОС реального времени, создаваемых на базе PersonalJava и EmbeddedJava") - Краткое введение в технологию PersonalJava и EmbeddedJava
    http://java.sun.com/pr/1997/sept/pr970924.html
  • "Java(TM) Processors Supercharge the Next Generation of Java-Powered Networked Consumer Electronics" ("Процессоры для нового поколения сетевых электронных устройств, создаваемых на базе технологии Java" - Обзор материалов Sun, посвященных вторжению Java-процессоров на рынок бытовой электроники
    http://www.sun.com/970722/cover/javace.html
  • Решения Cygnus
    http://www.cygnus.com
  • Wind River Systems
    http://www.wrs.com
  • Patriot Scientific Corp.
    http://www.ptsc.com
  • SoftPLC
    http://www.softplc.com
  • Forge Software Corp.
    http://www.forgesoft.com
  • VenturCom Inc.
    http://www.vci.com
  • ObjectAutomation Inc.
    http://www.objectautomation.com
  • Microtec Inc. (San Jose, CA)
    http://www.mri.com
  • Microware Systems Corp. (Des Moines, IA)
    http://www.wicroware.com
  • HMS Software (Обзор приложений Java, разработанных компанией HMS)
    http://www.hmssoftware.com/news/news_jav.html

    Разработчики встроенных систем переходят на Java

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

    Компания Wind River Systems предлагает свою версию среды разработки приложений Java, названную Tornado. Кроме того эта компания интегрировала Java в ОС реального времени VxWorks. Теперь VxWorks поддерживает среду разработки приложений Java Application Environment (JAE), которая была лицензирована у корпорации Sun. Эта среда включает в себя JVM и полный набор классов Java. Таким образом на устройстве, работающем под управлением VxWorks, теперь может выполняться любое приложение Java.

    Фирма Microtec, являющаяся подразделением компании Mentor Graphics, объявила о создании набора средств разработки приложений на Java, в состав которого входит компилятор Java, а также расширение среды разработки X-Ray, поддерживающей Java. Эти продукты должны появиться на рынке в начале 1998 г.

    Новая разработка компании Cygnus базируется на популярных инструментальных средствах GNU, созданных в свое время для C и C++. Наряду с компилятором gcc исходный код теперь может обрабатываться компилятором jcl (который разделяет часть программных компонентов с другими средствами). Основным преимуществом такого подхода, позволяющего существенно сэкономить время, является возможность применения новых средств на большинстве процессоров и контроллеров, что предоставляет разработчикам программ на Java очень широкий выбор.

    Компания Integrated Systems Inc. (ISI) объединила свои усилия с фирмой NewMonics и теперь ее средства разработки и технология PERC используются совместно. Помимо PERC в начале 1998 г. компания NewMonics планирует представить на рынке набор инструментальных средств, включающий JIT-компилятор, анализатор времени исполнения, позволяющий настраивать приложение в соответствии с потребностями конкретной системы, а также транслятор Percolator, преобразующий код PERC в код Java.