Введение

Оконная система, разработанная Sun Microsystems. Оконная система Sun Microsystems.

NeWS (Network extensible Window System) – это оконная система, разработанная Sun Microsystems в середине 1980-х годов. Изначально известная как "SunDew", её основными разработчиками были Джеймс Гослинг и Дэвид С. Х. Розенталь. Интерпретатор NeWS был основан на PostScript (как и более поздний Display PostScript, хотя эти два проекта в остальном не были связаны), расширяя его для обеспечения взаимодействия и поддержки множественных "контекстов" для окон. Подобно PostScript, NeWS можно было использовать как полноценный язык программирования, но, в отличие от PostScript, NeWS позволял создавать полноценные интерактивные программы с поддержкой мыши и графическим пользовательским интерфейсом.

Дизайн

NeWS начинался с реализации интерпретатора PostScript, работающего в режиме кооперативной многозадачности, поскольку, в отличие от PostScript в принтере, NeWS должен был одновременно отображать несколько программ PostScript на одном экране. Он также добавил полную иерархию представлений, основанную на портах просмотра, известных как холсты, и синхронную систему распространения событий, поддерживающую события, интересы, потоки и мониторы. Как и система представлений в большинстве графических интерфейсов пользователя (GUI), NeWS включала концепцию дерева вложенных представлений, вдоль которого передавались события. Например, щелчок мыши генерировал событие, которое передавалось объекту непосредственно под указателем мыши, например, кнопке. Если этот объект не реагировал на событие, сообщение получал объект «под» кнопкой и так далее. NeWS включал полную модель для этих событий, включая таймеры и другие автоматические события, очереди ввода для устройств, таких как мыши и клавиатуры, и другие функции, необходимые для полноценного взаимодействия. Система обработки ввода была разработана для обеспечения надежных гарантий синхронизации событий, которые были невозможны с асинхронными протоколами, такими как X. Для поддержки виджетов пользовательского интерфейса NeWS расширил оригинальный стековый язык PostScript до полноценного объектно-ориентированного (ОО) стиля программирования с наследованием. Это устранило необходимость во внешнем ОО-языке для создания полноценного приложения. Поскольку все эти дополнения были реализованы как расширения PostScript, можно было написать простой код PostScript, который приводил к запуску интерактивной программы на экране. Две популярные демонстрационные программы — экранные часы, для которых требовалось около двух страниц кода, и программа, которая рисовала пару глаз, следящих за курсором при его перемещении по экрану. Программа с глазными яблоками была показана на SIGGRAPH в 1988 году и послужила вдохновением для более позднего известного приложения X xeyes. NeWS включал несколько библиотек элементов пользовательского интерфейса (виджетов), которые сами были написаны на NeWS. Эти виджеты выполняли все свои действия в интерпретаторе NeWS и требовали связи с внешней программой (или с дополнительным кодом NeWS) только тогда, когда это требовалось виджету. Например, подпрограмма отображения переключателя может запросить состояние кнопки (нажата или нет) и соответствующим образом изменить ее отображение. Код PostScript кнопки также может реагировать на щелчки мыши, изменяя свое состояние с «нажата» на «не нажата» и наоборот. Все это может происходить на сервере окон без взаимодействия с клиентской программой, и только когда мышь будет отпущена на кнопке, событие будет отправлено на обработку. Это было более сложной моделью, чем серверная модель X Window System, которая может только сообщать клиенту о событиях «кнопка мыши нажата здесь», «мышь сейчас здесь», «кнопка мыши отпущена здесь», после чего клиент должен определить, находится ли событие в кнопке, изменить состояние и, наконец, дать указание серверу отобразить новое состояние. Если клиент и сервер находятся не на одной машине, эти взаимодействия должны проходить по сети, что приводит к задержке отклика. Лучшим примером такой библиотеки является TNT (The NeWS Toolkit), выпущенная Sun в 1989 году. Sun также выпустила более ранний набор инструментов «Lite», предназначенный для создания небольших программ и демонстрационных целей.

Приложения

Версия Open Look программы для настольных изданий FrameMaker, разработанная Frame Technology Corp. при финансировании в основном от Sun Microsystems и NSA, была одним из немногих коммерческих продуктов, работавших на NeWS. HyperLook, разработанный Артуром ван Хоффом в Институте Тьюринга, представлял собой интерактивную систему разработки приложений. Дон Хопкинс разработал версию SimCity для NeWS, созданную на основе HyperLook. Для NeWS была выпущена коммерческая программа для рисования Altsys Virtuoso, являвшаяся портом FreeHand с дополнительными функциями, использующими возможности PostScript. К сожалению, Sun объявила о прекращении поддержки NeWS как раз к моменту подготовки Virtuoso к выпуску.

Конкуренция с системой X Window

По сравнению с X, NeWS был значительно мощнее, но и медленнее (особенно при локальных соединениях). C API был очень низкоуровневым и сложным в использовании, поэтому большинство программ для NeWS обычно писались целиком на PostScript. Еще одним фактором популярности было то, что Sun взимала плату за лицензию исходного кода NeWS, в то время как код MIT X11 был бесплатным. Первые версии NeWS эмулировали протокол X10, преобразуя вызовы в NeWS PostScript. Проблемы со скоростью, существование программ, зависящих от точных результатов отрисовки пикселей при вызовах X10, и устаревание X10 вынудили Sun выпустить гибрид X11/NeWS под названием Xnews, который запускал сервер X11 параллельно с интерпретатором PostScript. Это серьезно снизило производительность интерпретатора NeWS, и он также не считался хорошим X11-сервером. Sun также реализовала спецификацию пользовательского интерфейса OPEN LOOK в нескольких инструментариях: NeWS Toolkit (TNT) был инструментарием OPEN LOOK, написанным на PostScript и работающим на сервере NeWS. OLIT был построен на той же базе Xt (X Intrinsics), что и Motif, а XView использовал те же API, что и более ранняя оконная система SunView. После того как стало очевидно, что OPEN LOOK проиграл в популярности Motif, и после того, как Adobe приобрела FrameMaker, Sun прекратила поддержку NeWS. Разработка продуктов на основе NeWS была остановлена.