Victor3D

Занятная заметка про Rhapsody (1997)

Эта статья была найдена нами на персональной web-страничке Джона Норстада, наиболее известного своей программой NewsWatcher и посетившего конференцию разработчиков для платформы Макинтош - WWDC ‘97, прошедшей в мае 1997 года. В этой статье, которую мы - по причине исключительной важности содержащейся в ней информации - решили перевести на русский, Джон рассказывает о планах Apple в отношении будущей версии MacOS под кодовым названием Rhapsody, а также и о самой Rhapsody.

Очень интересная и ценная во всех отношениях статья. Прочитайте ее от начала и до конца - и Вы будете обладать наиболее полной на сегодняшний момент информацией о стратегии Apple в отношении ее новой ОС!

Статья печатается с разрешения Джона Норстада.

Введение

Я был одним из участников конференции Worldwide Developers Conference (WWDC) в Сан-Хосе, Калифорния. Это - отчет о моей поездке.

Я в основном сконцентрировался на Rhapsody. Rhapsody - это операционная система следующего поколения от Apple, которая объединяет технологии Apple и NeXT.

Я пропустил другие четыре темы о Mac OS, Interactive Media, технологиях Internet и Web и аппаратном обеспечении. Так что этот доклад в основном о Rhapsody.

Я начну с некоторых вводных замечаний о стратегии и планах Apple и моего взгляда на проблемы Apple. Потом я дам детальный обзор архитектуры Rhapsody. Затем, я коротко расскажу о межплатформенных планах Apple, которые, я думаю, довольно интересны и важны. И закончу некоторыми итоговыми замечаниями.

Пожалуйста, примите во внимание некоторую важную терминологию, которую я буду использовать в этом докладе. Когда я говорю “Mac OS”, я имею ввиду классическую Mac OS, которую мы сегодня используем и будем использовать в обозримом будущем – System 7 и ее приемника (который скоро выйдет) System 8, под кодовым названием “Tempo”, и будущие версии (Allegro, Sonata, и т. д.). Когда я говорю “Rhapsody”, я имею ввиду будущую, абсолютно другую операционную систему от Apple.

Двойная стратегия ОС и планы выпусков

В ближайшем будущем Apple собирается параллельно разрабатывать Mac OS и Rhapsody. Эта стратегия позволит пользователям переходить на Rhapsody с собственной скоростью.

Mac OS жива и неплохо себя чувствует. К концу эры Copland было только 6 инженеров в команде Mac OS. Теперь их более сотни! Apple планирует насыщенное расписание улучшений Mac OS и новых выпусков. Mac OS будет продолжать улучшать свою стабильность, производительность и функции. Она должна выжить и процветать еще в течение 5-10 лет. Apple имеет непоколебимые планы и расписания на, по крайней мере 4 основных выпуска Mac OS:

  • Tempo = System 8.0. Лето 1997.
  • Allegro. Лето 1998.
  • Sonata. Лето 1999.
  • Без имени. Лето 2000.

Как бы то ни было, Rhapsody представляет будущее, и вот о ней я и хотел бы сейчас поговорить. Расписание для Rhapsody следующее:

  • Разработческий выпуск 1. Лето 1997. Этот выпуск будет предназначаться только для разработчиков, не для пользователей. Это, в основном, будет перевод нынешней ОС OpenStep от NeXT на PowerPC, лишь с несколькими новыми особенностями. Он будет работать только на моделях 8500 и 8600, хотя после значительного числа просьб от разработчиков, Apple заявила, что они попытаются добавить поддержку моделей 9500 и 9600. В любом случае, будут добавочные разработческие выпуски осенью и зимой с поддержкой других моделей Макинтош. Этот выпуск будет поддерживать только файловую систему UFS из BSD 4.4. “Голубая коробка” включаться не будет.
  • Премьерный выпуск. Начало 1998. Этот выпуск будет предназначаться для разработчиков и пионеров среди пользователей. Этот выпуск будет включать в себя финальные API, межплатформенную мультимедиа (QTML), ОС серверы, поддержку приложений “голубой коробки”, поддержку как можно большего количества моделей PowerPC, поддержку PowerBook с управлением потребления энергии и отшлифованный пользовательский интерфейс. Он будет поддерживать файловые системы HFS Plus, NFS и AFP. Также он будет поддерживать следующие семейства устройств: SCSI, блочные накопители, клавиатуры, дисплеи ,аудио, Ethernet, ADB и последовательные. Он будет иметь ограниченную поддержку типов и создателей. Должна присутствовать система помощи, основанная на HTML. Эта версия будет первой, поддерживающей SMP (многопроцессорная обработка).
  • Унифицированный выпуск. Середина 1998. Это будет первый выпуск для конечных пользователей. Он будет включать в себя драйверы для большинства устройств PowerPC с возможностями настройки ввода/вывода и полной поддержкой “голубой коробки”. Он будет поддерживать весь спектр файловых систем. Будет добавлена поддержка USB, видео-захвата и других семейств устройств. Он также будет полностью поддерживать типы и создателей.

Мой взгляд на проблемы Apple

Мы все знаем, что Apple пережила очень тяжелые времена за последние несколько лет. Я бы хотел коротко рассказать о моем взгляде на эти проблемы, в форме истории “хорошие новости, плохие новости, хорошие новости”.

Хорошие новости : Старая Apple мертва.

В своем разговоре у камина Стив Джобс (Steve Jobs) сказал, что проблема Apple была в плохом техническом управлении. Хотя я часто не соглашаюсь с Джобсом, в этом вопросе, я думаю, он прав.

Эта проблема исправлена. Apple - теперь совсем другая компания. У них теперь совсем другое техническое управление. Они теперь сфокусированы на своем основном бизнесе, и они научились говорить “нет”. Инженерные команды Apple и NeXT эффективно сотрудничают, хотя все еще есть несколько “острых углов”. Они далеко продвинулись вперед, несмотря на перестройку. Команды начали работать вместе только 4 февраля, но они уже заставили работать основные компоненты Rhapsody. Мы видели много впечатляющих демонстраций на конференции, о некоторых из них я упомяну позднее.

В первый раз за последние несколько лет я уверен, что Apple выполнит свои обещания, и выполнит их в срок.

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

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

Все все еще очень осторожны, и немногие разработчики на самом деле решили разрабатывать что-либо специально для Rhapsody. Каждый занял позицию “подождем - увидим”.

Apple больше не бросает сотни миллионов долларов на футуристические проекты полностью изменить образ работы с компьютером, проекты, которые заканчивались большими затратами и большими требованиями к аппаратному обеспечению и оказывались полностью несовместимыми со стандартами, используемыми отраслью, медленными, с огромным числом ошибок, невозможными для программирования, трудными для использования, и в результате никогда так и не выходили. Как сказал Джобс в своей беседе, “мы прикладывали пистолет к их голове и пристреливали их”. (Я здесь перефразирую Джобса, но он сказал что-то близкое к этому, это было что-то такое же зверское.) Попрощайтесь с PowerTalk, OpenDoc, Copland и тому подобным. Хороший сброс балласта, я бы сказал.

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

Плохие новости: Apple умирает

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

Apple должна вернуть свою прибыльность как можно скорее. Амелио предсказал прибыль в следующем квартале (заканчивающемся в сентябре). Он также упомянул, что Apple имеет $1.4 миллиардов наличными, так что она сможет пережить еще несколько плохих кварталов, но, очевидно, что Apple не сможет вечно терять деньги. Они должны начать получать прибыли, и должны сделать это быстро.

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

Наконец, Apple должна уделить больше внимания доставке новых продуктов своим клиентам. Есть спрос на Макинтош, но Apple продолжает очень плохо производить и поставлять их. Они должны решить эти проблемы.

Хорошие новости : Есть признаки возрождения

Apple представила несколько новых сильных продуктов в этом году, включая новые быстрые и недорогие модели настольных компьютеров и весьма впечатляющие и популярные новые модели PowerBook. Эти новые продукты получили, в целом, хорошие отзывы в прессе. Реклама Apple улучшилась, по моему мнению, хотя Джобс не согласен.

Некоторые из отчетов о конференции были весьма позитивны. В частности, была очень хорошая статья в San Jose Mercury News, которая обычно очень негативно относится к Apple.

Dataquest предсказала “урожай” для Apple этой осенью. Другой индустриальный аналитик также предсказал лучшее финансовое положение в следующих кварталах.Будем надеяться на лучшее!

Обзор архитектуры Rhapsody

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

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

“Голубая коробка”

“Голубая коробка” - это классическая Mac OS перемещенная на новое ядро ОС Rhapsody. Голубая коробка делает возможной работу с большинством программ Mac OS на Rhapsody.

Apple удалила низкоуровневые компоненты Mac OS и заменила их новым “абстрактным слоем”, который полностью изолирует “голубую коробку” от “желтой коробки”, ядра ОС и аппаратного обеспечения.

Пока команда инженеров по ядру ОС работала над тем, чтобы заставить ядро Mach работать на PowerPC, “голубая” команда работала над тем , чтобы заставить “голубую коробку” работать на ядре из Copland, “NuKernel”. Когда ядровая команда наконец заставила Mach работать, “голубая” команда “вынула” NuKernel и заменила его на Mach.

На конференции была специальная лаборатория совместимости “голубой коробки”, работающая с ядром NuKernel. Версия Mach была закончена незадолго до начала конференции, и она использовалась в демонстрациях, но не была достаточно стабильна для использования в лаборатории. И в лаборатории и на демонстрациях использовалась последняя бета 3 версия Mac OS Tempo.

“Голубая коробка” впечатляет, особенно тот факт, что они заставили ее работать в такой короткий промежуток времени. Она предоставляет отличную совместимость с приложениями и расширениями. Около 400 программ было протестировано на конференции, и только 4 из них отказались работать! Работал даже низкоуровневый отладчик Стива Джэсика (Steve Jasik)!

Я протестировал свое ПО, и счастлив сообщить, что приложение Disinfectant, Disinfectant INIT и несетевые части NewsWatcher работали прекрасно. (У нас не было выхода в Интернет в лаборатории, так что мне не удалось проверить сетевые части NewsWatcher.) Я думаю, было бы не совсем хорошо с моей стороны тестировать вирусы в лаборатории, но я уверен, что весь нынешний набор вирусов, которые работают на System 7 и 8 будет прекрасно продолжать работать в “голубой коробке”. Это, возможно, не такая уж хорошая новость, но это - еще одно доказательство совместимости, предоставляемой “голубой коробкой”.

На демонстрации мы видели Photoshop, Marathon, QuickTime и CodeWarrior работающие в “голубой коробке” на Mach.

“Голубая коробка” предоставляет намного большую совместимость, чем Copland. Например, почти все расширения прекрасно работают в ней.

Copland же отказалась бы работать со всеми расширениями. Играть с “голубой коробкой” в лаборатории было довольно скучным занятием, так как это почти не отличалось от работы на обычном Макинтош с Tempo. Так и должно быть, но все же это скучно!

В терминах совместимости со старым ПО Mac OS, переход с Mac OS на Rhapsody должен быть очень похож на успешный переход с 68К на PowerPC несколько лет назад. Большинство ПО будет “просто работать”. Возникнут несколько проблем и исключений, но они должны быть небольшими.

Единственное старое ПО, которое не будет работать в “голубой коробке” - программы, которые общаются непосредственно с аппаратным обеспечением, обходя Device Manager, некоторые расширения, которые “обходят” “ловушки” File Manager, и перехватывают весь системный файловый ввод/вывод (файловый ввод/вывод “желтой коробки” на разделяемых дисках не будет перехватываться такими расширениями “голубой коробки”), и любое другое ПО, которое модифицирует разделяемые ресурсы системы.

“Голубая коробка” - это не эмулятор какого-либо типа. Это, в основном, точная копия нынешней Mac OS, со всеми ее ошибками и особенностями, просто перенесенная на новое ядро. Большинство программ должны работать также быстро, как они работают в Mac OS, или, возможно, лишь чуть-чуть медленнее. Некоторые операции будут работать даже быстрее, из-за улучшения производительности ядра.

“Голубая коробка” очень похожа на MAE (“Macintosh Application Environment”), продукт Apple, который позволяет вам запускать ПО Макинтош на системах UNIX.

“Голубая коробка” использует образ ROM в оперативной памяти. Нет аппаратной ROM.

В “голубой коробке” нет безопасной многозадачности или защищенной памяти. “Голубое” приложение, которое “накрывается” может “накрыть” всю голубую коробку, также как и “заблудшее” приложение на Mac OS может “повесить” весь Макинтош. “Заблудшее” “голубое” приложение, как бы то ни было, не может повредить ядро ОС или “желтую коробку”. В Rhapsody, если возник завис в “голубой коробке”, вы можете просто и быстро перезагрузить только ее, не нужно перезапускать весь компьютер.

Для Mac OS, работающей в “голубой коробке”, все выглядит так, как будто отключена виртуальная память на Макинтош с 1 Гб памяти! Ядро ОС производит операции с виртуальной памятью за сценой, но это в основном не ведомо “голубой коробке”. Есть два важных преимущества от этой новой схемы:

  1. Не нужно больше волноваться о фрагментации памяти!
  2. Вы можете устанавливать размер раздела памяти очень большим без негативных эффектов для большинства приложений.

“Голубая коробка” также предоставит улучшенную стабильность, с помощью “сторожевых страниц”. Это - специальные страницы виртуальной памяти, которые помечены “только для чтения” и помещаются в начало и конец стека и “кучи” каждой программы. В обычной Mac OS, программы иногда выходили за пределы своих стеков или “куч” при записи в память и засоряли память, используемую системой или другими программами. Это иногда приводит к плачевным последствиям. В “голубой коробке” такая “шаловливая” программа “рухнет”, но не повредит другие программы или всю “голубую коробку”.

Несколько людей спрашивало о следующей очевидной идее: Как насчет того, чтобы иметь несколько “голубых коробок”? Это бы дало несколько преимуществ в многозадачности и защите памяти для программ Mac OS. Ответ Apple таков: есть несколько проблем, которые нужно будет решить. Например, каждая копия “голубой коробки” должна иметь исключительный доступ для записи в файлы баз данных. Также, отпечатки памяти будут весьма запутанными. Хотя, возможно, это будет сделано в будущем, вряд ли эта особенность будет включена в унифицированный выпуск.

Итог: “голубая коробка” предоставляет отличную совместимость для ПО Mac OS, сравнима по производительности с обычной Mac OS, производительность даже лучше в некоторых случаях, и стабильность несколько лучше.

“Желтая коробка”

“Желтая коробка” - это основная компонента новой операционной системы Apple. Она основана на технологии OpenStep от NeXT.

OpenStep - это объектно-ориентированная система второго поколения. Она - “продвинута”, зрела и очень богата. Она состоит из трех компонент:

  • Foundation Kit, коллекция объектных классов, которая предоставляет основные классы, полуавтоматическую систему очистки памяти от мусора, абстрактные интерфейсы для основных функций операционной системы и другие низкоуровневые функции для программистов.
  • Application Kit, коллекция объектных классов, которую программы используют для своих пользовательских интерфейсов, и которые пользователи используют для манипулирования этими интерфейсами.
  • Графическое ядро PostScript.

В качестве примера богатства OpenStep, я сравню пакет Mac OS “styled TextEdit” с текстовым объектом OpenStep. Styled TextEdit используется на Макинтош для отображения и манипулирования с выделенными параграфами текста. Он может работать с шрифтами и стилями, но объем текста ограничен 32К. С помощью WorldScript, его можно заставить работать с не-Английским языком и другим алфавитом. Он был изначально предназначен для небольших текстовых вставок в диалоговых окнах, но был расширен Apple и обруган программистами за сложное управление. Это - ужасный лабиринт для программистов, в котором полно зазубрин. Текстовый объект NeXT намного богаче и намного легче в использовании. Он поддерживает табуляцию, управляющие символы, набор символов Unicode и не имеет ограничений размера текста.

Одной из наиболее впечатляющих демонстраций на конференции была демонстрация расширения текстового объекта (подкласс), которое работает с HTML. Этот новый класс поддержки HTML будет частью “желтой коробки”. Объект использовался для построения полностью функционального сетевого браузера в Interface Builder, в течение всего нескольких минут, без написания хотя бы одной строчки кода! Браузер имел поле для текста, в котором вы могли напечатать URL, прямые и обратные стрелки для навигации и обычное большое поле для отображения сетевой страницы.

У Стива Джобса есть любимая история об OpenStep, которую он повторял в своей беседе у камина. Я перефразирую ее здесь. Разработка ПО становится очень сложной. Мы создаем наше ПО слоями, которые становятся все более и более сложными по мере накопления слоев. Опыт показывает, что мы можем построить только четыре слоя, пока сложность не станет подавляющей, и наши программы не рухнут под собственной тяжестью. Как сказано в хорошо известной книге “The Mythical Man-Month”, добавление большего числа программистов к такому сложному проекту вредит больше, чем помогает. Человеческий мозг не может построить больше 4 слоев сложности. Джобс любит сравнивать это с постройкой здания. С другими системами, фундамент предоставляется системой, так что это похоже на начало строительства прямо с четвертого этажа. Добавив собственные четыре этажа (слоя сложности) вы можете достроить здание до 8 этажа. Из-за того, что OpenStep, язык программирования Objective-C и разработческие инструменты NeXT такие богатые, с OpenStep вы можете начать с 23 этажа, и можете таким образом достроить до 27-этажного небоскреба!

Эта история Джобса - типичная крайность, но в ней есть большая доля правды. OpenStep - на самом деле первая среди конкурентов, и она действительно значительно улучшает продуктивность и “высоту” ПО, которое мы можем создать. Каждый программист, с которым я встречался, и который успел попользоваться OpenStep, подтвердил, что он работает намного продуктивнее, используя OpenStep вместо любой другой среды. Многие из них пользовались другими популярными оболочками, такими как Apple’s MacApp, Metrowerk’s PowerPlant и Microsoft’s MFC. Анонимное мнение - OpenStep намного лучше, чем любая из них. Я с нетерпением жду возможности выяснить это самому!

Вдобавок к своему основанию OpenStep, “желтая коробка” включает следующие технологии от NeXT:

  • Многопользовательская система с безопасностью. Rhapsody может быть использована в качестве однопользовательской системы, также как и Mac OS, или вы можете иметь пользовательские имена UNIX и пароли с файловой безопасностью UNIX.
  • Display Postscript. Настоящее “что видите, то и получаете”. Это очень важно для издательской и графической отраслей.
  • PDO = Portable Distributed Objects. Система для разделенных вычислений. Объекты, работающие в разных процессах на различных компьютерах могут посылать друг другу сообщения почти также легко, как если бы они работали в одной программе. Один из инженеров NeXT, которые разработали и внедрили PDO присутствовал на заседаниях конференции. PDO произвело на меня сильное впечатление.
  • EOF = Enterprise Object Framework. EOF предоставляет объектный интерфейс всем основным коммерческим продуктам работы с базами данных. Это важно для корпоративного рынка.
  • WebObjects. Это - система для быстрой разработки сетевых страниц, CGI каналов, и расширений сетевых серверов.

“Желтая коробка” также будет включать в себя несколько основных технологий от Apple:

  • QuickTime media layer (QTML): QuickTime, QuickDraw/3D и QuickTime/VR.
  • Типографию QuickDraw GX
  • ColorSync.
  • Макросы. Apple еще не решила как будет выглядеть макроязык (как AppleScript или по другому), но обещала включить Apple Events и повсеместную систему макросов в классы OpenStep.
  • Поисковое ядро V-TWIN.

Приложения, работающие в “желтой коробке” смогут пользоваться всеми преимуществами услуг, предоставляемых ядром Mach, включая многозадачность и защищенную память. Мы поговорим об этом позже, когда более детально рассмотрим ядро ОС.

Интеграция “голубой” и “желтой” коробок

Пользователь, работающий с Rhapsody, испытывает такое чувство, как будто он работает на двух отдельных компьютерах. “Голубая” и “желтая” среды четко разделены и делят только несколько определенных ресурсов. Там будет даже два Finder, один для “голубой коробки” (версия Tempo Mac OS Finder), и один для “желтой коробки” (новый Rhapsody Finder)!

“Голубая коробка” может работать в полноэкранном режиме или в “желтом” окне. Вы не сможете смешивать “голубые” и “желтые” окна вместе на одном разделяемом экране также, как вы делаете это, когда работаете в одной операционной системе.

Полноэкранный режим - самый быстрый и предоставляет наибольшую совместимость. Будет присутствовать “горячая клавиша” для переключения между “голубым” и “желтым” режимами. “Желтая коробка” будет невидима в этом режиме, за исключением команды переключения между “коробками” в меню Process. Когда в выбираете эту команду или используете “горячую клавишу”, все “голубые” окна исчезают (включая “голубой” Finder), и появляются все “желтые” окна (включая “желтый” Finder). Ощущение пользователя при этом, такое же, как при переключении между совершенно отдельными системами.

Под термином “полноэкранный” здесь, я понимаю все мониторы вместе (“виртуальный” экран). Так что в полноэкранном режиме “голубая коробка” берет на себя управление всеми мониторами. (Кстати, и “голубая” и “желтая коробки” смогут поддерживать несколько мониторов, также как и Mac OS.)

Drag and drop работает в “голубой коробке” и в “желтой коробке”, но не между “коробками”. Например, когда вы используете “голубую коробку” в “желтом” окне, если вы попытаетесь перетащить что-нибудь из “голубого” окна в “желтую” часть экрана, перетаскиваемый объект застрянет на краю “голубого” окна.

Эта нехватка тесной интеграции между “голубой” и “желтой коробками” очень досадна. Все были недовольны, когда в первый раз услышали об этом. Это было “горячим” вопросом на конференции. По этому поводу шли большие споры в Apple. По моему мнению, это - самый спорный вопрос во всем проекте Rhapsody.

Нет идеального решения этого вопроса. Решение четко разделить две среды было принято из-за проблем с пользовательским интерфейсом, технических проблем и некоторых рыночных проблем.

Курт Пирсал (Kurt Piersal), специалист по пользовательскому интерфейсу в Apple, попытался объяснить это решение детально на своем семинаре “The Rhapsody User Experience”. Я попытаюсь воспроизвести его аргументы здесь. Пирсал также сказал, что все эти вопросы будут рассматриваться и прорабатываться в дальнейшем, на основе пользовательского опыта работы в лаборатории пользовательского интерфейса. Пирсал и другие также упомянули, что интеграция улучшится после того как Rhapsody “созреет” после унифицированного выпуска.

Основная проблема состоит в том, что две среды очень различны. Одним из основных принципов пользовательского интерфейса является избежание скрытых режимов. Если вы не можете предоставить “гладкую” интеграцию двух режимов, сделайте переключение между режимами явным. Другие основные правила: не меняйте режимы неожиданно, не пытайтесь скрыть разницу между режимами, если она есть и не заставляйте пользователя догадываться об изменениях.

Вот некоторые примеры проблем пользовательского интерфейса, которые должны возникнуть если Rhapsody попытается спрятать различия между “голубой” и “желтой коробками”:

Расширения Mac OS не могут влиять на “желтые” приложения. Многие из этих расширений влияют на внешний вид панелей меню, сами меню, окна, контрольные кнопки и т. д. Пользователи будут растеряны, когда они увидят, что изменения, вызванные расширениями, действуют только на некоторые из их программ.

Дело обстоит даже хуже с расширениями Mac OS, которые не только модифицируют внешний вид, но и поведение пользователей в “голубой коробке”.

Если окна выглядят различно в “голубой” и “желтой коробках”, и их смешивать, то это может запутать пользователя.

“Желтая коробка” не имеет оконных слоев, а “голубая” имеет. Когда вы вызываете окно в активный режим в “голубой коробке”, все другие окна, принадлежащие этой же программе, также переходят в активный режим. В “желтой коробке” только одно окно переходит в активный режим. (Пирсал, как бы то ни было, обещал что будет что-нибудь сделано для того, чтобы переводить все окна программы в активный режим в “желтой коробке”.)

Когда “голубое” приложение “накрывается”, оно может “накрыть” все “голубые” приложения вместе с собой, но не “желтые”. Это было бы весьма запутанно, если бы “голубые” и “желтые” окна четко не разделялись.

Представьте удивление пользователя, когда он обнаружит, что может перетаскивать объекты между некоторыми программами, но не между всеми, так как есть различия между “желтой” и “голубой” средами.

Вот несколько примеров технических проблем интеграции: Должен присутствовать “голубой” Finder, так как многие “голубые” приложения, расширения и макросы зависят от Finder (например при посылке Finder Apple Events для манипулирования файловой системой). Но “желтая коробка” также нуждается в Finder, и он должен быть таким, чтобы его нельзя было уничтожить “голубым” приложением. Хотя, в принципе, технически возможно разработать унифицированный Finder, используемый обеими сторонами, но это было бы очень сложно и заняло бы очень много времени, что привело бы к задержке выпуска продукта, и это скорее всего нарушило бы работу приложений Mac OS, работающих в “голубой” коробке. Из-за всех этих проблем, Apple решила сделать два различных Finder, по крайней мере в унифицированном выпуске. В целом, два Finder - это единственный путь добиться совместимости и стабильности одновременно.

Хотя инженеры Apple разрабатывают идеи, как решить проблему drag and drop между “голубой” и “желтой коробками”, эти идеи очень сложны, займут много времени для внедрения и, скорее всего, нарушат работу существующего ПО для Mac OS.

Такие же проблемы встают при попытке смешать “голубые” и “желтые” окна на одном разделяемом экране. Хотя это, возможно, технически осуществимо, это будет очень сложным и ненадежным предприятием. В итоге имеем 4 основных причины не пытаться тесно интегрировать “желтую” и “голубую коробки”:

  1. Проблемы пользовательского интерфейса приведут к путанице, особенно среди новичков.
  2. Тесная интеграция уменьшит совместимость ПО Mac OS, работающего в “голубой коробке”.
  3. Тесная интеграция уменьшит стабильность.
  4. Тесная интеграция существенно отодвинет сроки выхода. А это - основной грех новой Apple!

После того, как Пирсал объяснил все эти проблемы, я неохотно согласился с ним, что слабая интеграция между “голубой” и “желтой коробками” - это необходимое зло. Обдумав это, я не думаю что все это так уж плохо.

Хотя “голубая” и “желтая” части Rhapsody в основном различны, они все же делят некоторые важные ресурсы:

  • Разделяемая файловая система. Мы немного поговорим об этом позже.
  • Буфер обмена. Вы можете копировать объекты между “желтой” и “голубой коробками”.
  • Apple Events.
  • Сетевое соединение. Т. е., “голубая” программа может общаться с “желтой” программой, используя поток TCP.
  • Шрифты. “Голубая” и “желтая коробки” возможно будут пользоваться одной папкой шрифтов, для сохранения места на диске, особенно это касается Японских пользователей, чьи шрифты очень велики.
  • Меню Process. В “голубой коробке” будет команда переключения между “коробками” в меню Process.
  • Системные часы.

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

Новый внешний вид Макинтош и новые ощущения

Пользовательский интерфейс Rhapsody будет основан на интерфейсе Макинтош, с несколькими новыми идеями, взятыми из интерфейса NeXT. Это контрастирует с “внутренностями” Rhapsody, “желтой коробкой” и ядром ОС, где ситуация прямо противоположная: Фундамент - технология NeXT, с добавочными элементами из технологии Apple.

Rhapsody будет иметь знакомую панель меню Макинтош, идущую через верх экрана. Когда мы в первый раз увидели демонстрацию меню на конференции, аудитория издала вздох облегчения - Да, это будет Макинтош!

Rhapsody позволит вам перетаскивать иконки на рабочий стол, также как и в Mac OS. “Порт” NeXT, по этой причине, станет излишним и возможно будет удален.

Rhapsody будет использовать окна и контрольные панели в стиле Макинтош, используя новый внешний вид Tempo.

В Rhapsody будут псевдонимы. Курт Пирсал пообещал полную поддержку plug-and-play в Rhapsody! Apple должна выполнить это обещание.

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

Будет добавлено окно Finder в стиле NeXT. Оно будет включать в себя множество “полок”. Тем, кто знаком с браузером NeXT, это чем-то напомнит Microsoft Windows “Explorer”.

Rhapsody будет использовать большие 32x32 иконки в стиле Макинтош, а не огромные иконки NeXT.

Finder в Rhapsody будет расширяемым и заменяемым. Это будет просто еще одним приложением в “желтой коробке”, а не частью системы, как Mac OS Finder. Он будет поддерживать “подключаемые модули”. Вид иконок, списков и браузера будет стандартным, его смогут использовать другие программы для манипуляции собственными иерархическими множествами данных.

Rhapsody сохранит опыт Mac OS по работе с типами и создателями. Как бы то ни было, некоторые файловые системы этого не поддерживают (например NFS). В этих случаях, будут использоваться расширения имен файлов (.txt, .html, и т. д.).

Система помощи Rhapsody будет основана на HTML. Текст помощи может содержать ссылки на файлы помощи в Интернет и других источниках. Система будет иметь мощную навигацию с возможностями поиска. Apple также планирует расширение задачной помощи. Эта система помощи будет не такой же как система помощи Mac OS и Apple Guide, но будет похожа на них и будет служит тем же целям.

Rhapsody будет поддерживать настольные URL и типы данных Интернет. Текстовый объект будет поддерживать HTML (как я уже упоминал ранее). Rhapsody будет иметь новую систему установки, которая будет включать в себя встроенные возможности деинсталляции и обновления.

Rhapsody можно будет установить, как многопользовательскую систему. В этом случае, каждый пользователь будет иметь свой собственный рабочий стол, свои собственные настройки и т. д., как в Windows NT. Я очень беспокоился по поводу этого “Нового внешнего вида Макинтош и новых ощущений” на системной основе NeXT. Сможет ли Apple спрятать UNIX?

Они должны сделать лучшую работу, чем X-Windows, Be, или даже NeXT. В мире Apple существует некий “тест мамы” (похоже на тест Тьюринга искусственного интеллекта). Основной вопрос: “Смогла бы моя мама использовать этот компьютер? Смогла бы она сама установить его, ПО, научиться работать на нем, решать проблемы и заставлять его работать?”.

Этот тест Apple должна пройти с Rhapsody. Например, многопользовательские функции Rhapsody основаны на UNIX. Как собирается Apple иметь дело со сложностями бестолкового доступа к файлам UNIX? Я не знаю как ваша мама смогла бы справиться с этим, но я знаю, что моя не имела бы ни единого шанса. Я думаю что это – большая проблема, стоящая на пути Rhapsody к успеху. Меня немного успокаивает то, что этой проблемой занимаются подходящие люди (такие как Курт Пирсал). Если кто и может решить ее, так это Apple.

Java

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

Rhapsody будет поддерживать “100% Pure Java” от Sun. Это включает в себя компиляторы, интерпретаторы (включая JIT), абстрактные оконные инструменты (AWT) и все три новых “основных класса”, разрабатываемых в отрасли: Sun’s JFC (Java Foundation Classes), Netscape’s IFC (Internet Foundation Classes) и Microsoft’s AFC (Application Foundation Classes).

Одна из наиболее интересных презентаций на конференции называлась “The Uncommon Object Model - The Rhapsody Runtime”. Оказывается, что среда Java и среда NeXT Objective-C в Rhapsody имеют много общих атрибутов. Они обе используют динамический метод отправки, имеют единое наследование исполнений, множественное наследование абстракций, самоанализ, исключения и “мусорный ящик”. Обе системы используют структуры с коллекциями классов, строками Unicode, абстракциями ОС и разделительной моделью. Эта схожесть не является совпадением, так как Java имеет часть своих корней в технологии NeXT Objective-C, и обе имеют одно и то же наследство из мира SmallTalk.

Из-за этой схожести и из-за стратегической важности Java, Apple решила тесно интегрировать существующую модель NeXT Objective-C и модель Java. Соответствие между моделями не является полным, но оно довольно хорошо подогнано. “Мост” Java/Objective-C управляет сообщениями на границе между двумя средами. “Мост” налагает пакеты Java на структуры Objective-C. Он также налагает классы, скаляры, исключения и объекты.

Этот мост позволяет программистам смешивать код Java с кодом Objective-C. Вы даже можете использовать класс Objective-C в качестве подкласса Java. (Apple работает над тем, чтобы это можно было делать в обратном направлении.)

OpenStep API будут полностью основаны на Java. Программы Java смогут использовать преимущества услуг OpenStep. Если они будут это делать, они не будут больше “100% pure”, но в использовании богатых функций OpenStep вместо AWT и различных xFC есть много преимуществ.

Инструменты разработки NeXT “Project Builder” и “Interface Builder” будут поддерживать Java. Java Bean будут компонентами в этой среде. Например, вы можете поместить Java Bean в ваш объект Interface Builder, потом использовать его в ваших приложениях Objective-C и Java как обычный объект Objective-C.

Мы видели демонстрацию приложения Java, построенного с помощью Interface Builder и Project Builder, при использовании OpenStep’s Application Kit и Foundation Kit. Эта штука на самом деле работает!

Apple и Sun тесно сотрудничают в разработке Java. Они обещают одновременный выпуск новых версий Java от Sun в Rhapsody. Намного проще сделать это в Rhapsody, чем в Mac OS, потому что версии Java от Sun основаны на UNIX, а Rhapsody включает в себя стандартную среду UNIX, что сделает перевод кода такого типа относительно безболезненным.

Ядро ОС

Ядро ОС включает в себя ядро Mach, функции ввода/вывода, файловые системы, и сетевые протоколы.

Mach

Rhapsody использует улучшенное ядро Mach 2.5. Его часто называют “микроядром”, но это технически неправильно. Mach 3.0 - на самом деле “микроядро”, но Mach 2.5 - это “монолитное ядро”. Я буду просто называть его “ядром”.

Mach -это современное, небольшое (30К строк кода), зарекомендовавшее себя ядро, которое используется в нескольких современных коммерческих ОС.

Ави Теванян (Avi Tevanian), главный вице-президент по системному ПО в Apple, был одним из разработчиков в Carnegie-Mellon в 1980-х. Mach 2.5 предоставляет обычный набор функций ядра:

  • Вытесняющая многозадачность.
  • Защита памяти.
  • Потоки.
  • Общение между процессами.
  • Разреженную виртуальную память.
  • Улучшения в Mach 2.5 для Rhapsody включают в себя симметричную многозадачность и функции управления потреблением энергии (для PowerBook).
  • “Голубая коробка” работает, как один процесс Mach в одном адресном пространстве оперативной памяти. В “голубой коробке” традиционный Mac OS Process Manager осуществляет обычную многозадачность между “голубыми” приложениями.

Функции ввода/вывода

Драйверы устройств в ядре ОС работают в адресном пространстве ядра и предоставляют функции ввода/вывода для “голубой” и “желтой коробок”. Они поддерживают plug-and-play, имеют функции управления потреблением энергии, могут быть динамично загружены и выгружены и имеют возможности расширения. Они запрограммированы при использовании объектно-ориентированных технологий Objective-C или C++. Написание драйверов - довольно легкое занятие. Например Мартин Миноу (Martin Minow) из Apple сказал, что у него ушло всего три недели на перенос драйвера Copland SCSI на Rhapsody. Он говорит, что “это проще, чем вы думаете, писать драйверы.”

Файловые системы

Apple работает над улучшением нынешней файловой системы Mac OS “HFS”, которое будет называться “HFS Plus”. Эта новая файловая система будет выпущена, как часть обновления Mac OS позже в этом году (после Tempo), и также будет частью Rhapsody. В HFS Plus исправлены проблемы с назначением размера блока, так что маленькие файлы не будут больше использовать такое большое пространство, как в HFS. В HFS Plus также удалены ограничения на количество файлов в одном томе и на размеры файлов. Она также используют 255-символьные имена файлов в Unicode. HFS Plus будет устанавливаться по умолчанию для “голубой” и “желтой коробок”.

Вдобавок к HFS и HFS Plus, Apple также будет поддерживать по крайней мере следующие файловые системы в Rhapsody: UDF (формат, используемый в новых DVD дисках), UFS (файловая система UNIX) , NFS (сетевая файловая система), AFP (AppleShare), FAT и VFAT/FAT32 (файловая система Wintel) и ISO/9660 (для CD-ROM).

Файловые системы встроены в Rhapsody при использовании абстракции, называемой “виртуальный слой файловой системы” (VFS), стандартной части BSD 4.4 UNIX. VFS включает в себя поддержку “стековых” файловых систем, что может быть использовано при компрессии, кодировке и проверке на вирусы. Этот механизм заменяет старую технологию Mac OS.

В голубой коробке есть три метода монтирования файловых систем: Тома только “голубой коробки”. Этот способ совместим со старым ПО Mac OS.

Файл образа диска “желтой коробки” вмонтированный, как том “голубой коробки”. Это сделано для удобства (вам не нужно разбивать ваш диск на разделы) и для совместимости.

Разделяемые тома “голубой” и “желтой коробок”.

“Желтые” файлы не имеют “вилок”, а “голубые” имеют. Для решения этой проблемы на разделяемом томе Apple решила использовать формат AppleDouble. “Вилка” и данные Finder (тип/создатель, позиция иконки и т. д.) сохраняются в отдельном файле с тильдой в начале имени файла. Эти дополнительные файлы не видимы в “желтой коробке”, и автоматически копируются и перемещаются вместе со своими хозяевами.

Работа с сетью

Rhapsody будет поддерживать по крайней мере протоколы TCP/IP и AppleTalk в “голубой” и “желтой коробках”. “Голубая коробка” будет использовать Open Transport для TCP/IP и AppleTalk. “Желтая коробка” будет использовать сокеты BSD 4.4 для TCP/IP и AIX AppleTalk для AppleTalk. Rhapsody, возможно будет поддерживать Novell и работу с сетью Windows NT, но планы еще не определились, и мы не получили никаких обещаний.

Rhapsody будет поддерживать 10 и 100 мегабит в секунду Ethernet и PPP. Скоро будет добавлена поддержка FDDI. Планируется поддержка LocalTalk, но дата внесения этой поддержки еще не установлена. Еще нет поддержки ATM, и планы о ней еще не определились. Стеки протоколов в “голубой” и “желтой коробках” абсолютно отдельны и работают параллельно. Они встречаются в слое драйверов устройств. Драйвер устройства несет ответственность за рассылку приходящих пакетов данных либо в “голубой” либо в “желтый” стек.

“Голубая” и “желтая коробки” используют один IP адрес, хотя на одной из презентаций показывалось, что есть функция, позволяющая использовать два различных IP адреса. Этот вопрос еще не выяснен. “Желтая коробка” может иметь дополнительные IP адреса.

“Голубая” и “желтая коробки” имеют различные номера узлов AppleTalk. Не ясно пока, будет ли это работать в других средах, и Apple может пересмотреть это решение.

TCP/IP в “желтой коробке” поддерживает процедуры IP, синонимы IP и “сырые” сокеты. “Желтый” AppleTalk высокопроизводителен, эффективен при многозадачности и поддерживает RTMP и AURP.

Сетевые функции включают в себя установку связи и NFS. Netinfo используется для управления сетью (система NeXT, похожая на NIS). Работа с сетью - это та область, где Apple следует хорошо поработать. Было очень много споров по поводу решения отказаться от Open Transport в пользу сокетов BSD 4.4, но, по крайней мере на WWDC, было видно, что Apple придерживается сокетов. Это был один из наиболее часто задаваемых вопросов на конференции, и он был предметом многих споров. Амелио недавно сообщил в интервью, что решение отказаться от Open Transport пересматривается из-за многих просьб потребителей и разработчиков, но на конференции не было никаких признаков этого.

Я скептически отношусь к “священной войне” против сокетов. Меня гораздо больше волнует стабильность и скорость работы сети в Rhapsody и поддержка всех основных протоколов, сетевых файловых систем и сетевых систем печати. Как программиста, меня очень волнует распространение сетевых API, особенно для межплатформенных разработок. OpenStep очевидно нуждается в абстрактном сетевом слое, так, чтобы разработчики могли программировать одно сетевое API для всех платформ. Это по крайне мере нужно сделать для TCP/IP. XTI или похожее API для независимости транспортировок было бы желательно, но не необходимо.

UNIX

Rhapsody выйдет с BSD 4.4 UNIX, как дополнительной компонентой. Она будет включать в себя обычные командные оболочки BSD, утилиты, библиотеки POSIX, инструменты для программистов и другие “прелести” UNIX. Они даже выпустят сетевой сервер Apache! Все основные утилиты UNIX, серверы и приложения уже были переведены на BSD UNIX и будут работать без изменений на Rhapsody. Одна из серьезных проблем - хорошо известные “дыры” безопасности в этих программах, особенно в почтовых серверах.

Будет очень легко переводить другие программы UNIX на Rhapsody. Заметьте, что BSD UNIX не изображен на диаграмме архитектуры Rhapsody! Это, возможно, самое мудрое для рынка решение (мы ведь не хотим пугать пользователей!).

Межплатформенная стратегия Apple

В планы Apple входит межплатформенная стратегия относительно продукта Rhapsody. Хотя некоторая информация была известна еще до начала конференции, мы узнали много нового, так как мы в первый раз увидели полную картину межрлатформенных планов. Я думаю, это довольно интересно.

Пять продуктов Rhapsody

До сих пор мы обсуждали один из продуктов Rhapsody - Rhapsody для платформ Power Macintosh и PowerPC. Это - “Макинтош следующего поколения”, если вы позволите. Теперь пришло время обсудить другие четыре продукта, которые составляют межплатформенные планы. Пожалуйста, посмотрите еще раз на диаграмму архитектуры. Rhapsody. Это - Rhapsody для PowerPC, которую мы обсудили выше.

  • Rhapsody для процессоров Intel. Apple выпустит версию Rhapsody для процессоров Intel. Это будет альтернатива Windows 95/NT, OS/2 и другим ОС, работающим на процессорах Intel. Она такая же, как и Rhapsody для PowerPC, за исключением того, что в ней нет “голубой коробки” (так, что вы не сможете работать со старыми программами Mac OS). Этот продукт использует такое же ядро Mach, что и продукт для PowerPC, и он имеет те же “новый внешний вид Макинтош и новые ощущения”.
  • “Желтая коробка” для Windows. На самом деле это - два продукта: для Windows 95 и для Windows NT (версии для Windows 3.1 не будет). Этот продукт - набор динамичных библиотек (DLL), которые используют OpenStep API на основе Win32 API. Эти библиотеки работают на основе ОС Windows 95 или NT, а не на Mach. Приложения OpenStep, созданные, с использованием этих библиотек выглядят, как обычные приложения Windows. На самом деле, пользователь не заметит разницы. Одной из самых приятных новостей на конференции было сообщение, что для этого продукта не будет никакой лицензионной платы. Разработчики смогут свободно выпускать DLL со своими межплатформенными продуктами OpenStep. Эта новость очень порадовала разработчиков.
  • “Желтая коробка” для Mac OS. Этот продукт похож на “желтую коробку” для Windows, но он предназначен для классической Mac OS. Это - набор разделяемых библиотек, использующих OpenStep API на основе Mac OS API. Эти библиотеки работают на основе классической Mac OS, а не на Mach. Этот продукт может быть полезен только для установки приложений OpenStep на старых NUBus PowerMac. (Apple не упоминала 68К, или если и упоминала, то я пропустил это. Как бы то ни было, я был бы удивлен, услышав о поддержке 68К.) Нити будут проблемой в этом продукте, так как классическая Mac OS (в отличие от Rhapsody и Windows 95/NT) не имеет встроенной поддержки преемственных нитей. Возможно удастся найти решение этой проблемы, но это будет трудно, и похоже этого не произойдет в унифицированном выпуске. Я думаю, что это важный вопрос, так как недостаток нитей расшатывает межплатформенную политику.

Напишите один раз и используйте везде

С межплатформенной стратегией, разработчики ПО, использующие OpenStep и не использующие каких-либо присущих только данной платформе особенностей, могут создавать свои программы один раз и использовать их везде, на 100% современного компьютерного рынка! (Мы используем здесь термин “современный”, для того чтобы исключить Windows 3.1 PC и 68K). Этот рынок для “чистых” приложений OpenStep включает в себя пользователей Windows 95, Windows NT, Mac OS и Rhapsody. Это – очень большой рынок!

Используя метод, который мой друг Леонард Розентол (Leonard Rosenthol) назвал “obese binaries”, возможно даже выпускать один пакет, работающий на всех платформах. В основном, все, что вам придется сделать, это перекомпилировать вашу программу несколько раз.Если же вы используете Java для написания приложений OpenStep, вам даже не придется перекомпилировать!

Сравнение с межплатформенными альтернативами

Я думаю, что OpenStep превосходит все основные альтернативы для межплатформенных разработок, хотя 100% pure Java - серьезный соперник.

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

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

100% pure Java. Java - это еще недозревшая технология, хотя эксперты предсказывают, что пройдет всего лишь год, и она станет по-настоящему полезной для разработки серьезных межплатформенных приложений. Структуры AWT и xFC хороши, но не так хороши как OpenStep. Наконец, так как они интерпретируются, Java программы работают медленнее, чем откомпилированные программы OpenStep. Даже со всеми преимуществами технологии JIT, это всегда будет так (хотя вопрос до какой степени это будет так, является предметом горячих споров).

100% pure Java, несомненно, самый серьезный конкурент OpenStep в межплатформенных разработках. Разработчики для Макинтош сейчас принимают трудное решение, какое из двух направлений выбрать.

Заключение

Rhapsody имеет потенциал стать превосходной системой, которая будет вне конкуренции. Если Apple выполнит свою работу хорошо и в срок, и сумеет решить очень трудные проблемы прохождения “теста мамы”, я думаю, что результат заставит выглядеть Макинтош и Windows PC, как игрушки.

С Rhapsody мы получаем три полных и зрелых ОС в одном пакете: Mac OS, Rhapsody и UNIX. Мы получаем почти 100% совместимость со старыми программами для Макинтош. Мы получаем лучшую платформу для Java на планете. Мы получаем объектно-ориентированную среду для разработки приложений. Мы получаем межплатформенную стратегию.

Я думаю, что Rhapsody будет первоклассной платформой для всех видов компьютерных работ:

  • Обучения любого вида, и в частности обучения программированию (классическому программированию на UNIX, объектно-ориентированному программированию с использованием OpenStep или программированию на Java).
  • Исследования любого типа, включая научные и технические, где могут очень пригодиться инструменты UNIX.
  • Обычные офисные работы с использованием классического ПО для Mac OS и нового ПО для Rhapsody.
  • Серверы. У Rhapsody есть все, что нужно для сервера, включая хороший сетевой ввод/вывод, защиту памяти, многозадачность, и множество ПО UNIX и не-UNIX для серверов (включая Apache).
  • Разработка межплатформенного ПО (используя OpenStep).
  • Разделяемые вычисления. (используя PDO).
  • Коммерческие работы (используя EOF).
  • Разработка ПО для сети (используя WebObjects).

Я очень заинтересован Rhapsody, больше чем каким-либо другим продуктом от Apple за последние несколько лет, и я надеюсь, что вы тоже заинтересуетесь.

©1997 John Norstad, WebShaker D&P