У меня возникло сомнение: правильно ли я называю "инновациями" радикальные (революционные, не 7 ноября будь сказано) улучшения, внесенные в различные технологии. Перечитывая в сотый раз список "302" на страничке "http://www.apple.com/macosx/features/300.html", убеждаюсь в правильности своего подхода. Отойдя в сторону, начинаю сомневаться.
Я специально спрашивал людей, которых знаю и уважаю, о том, как они понимают слово "инновация". Похоже, это еще один из терминов, затертых почти до потери смысла. В любом случае, знак равенства между словами "новация", "улучшение", "прогресс в какой-то области техники" и "инновация" поставили практически все. Даже если я не прав, я в этом не одинок.
Но даже после моего опроса общественного мнения, я не совсем уверен, является ли инновацией изменение политики... снижение значения одних направлений, и подчеркнутое превращение других в самые-самые важные. Еще в "Тигре" Cocoa и Carbon считались равными. "Леопард" отдает явное предпочтение Cocoa.
Это проявляется не только в том, что программам, написанным в Carbon практически закрыт путь в 64-битное пространство. Некоторые технологии, которые еще совсем недавно были почти безраздельным владением Carbon, превращаются в классовые библиотеки на Objective-C... то есть, в библиотеки, которые удобнее всего и естественнее всего использовать в программах, написанных в Cocoa.
В рамках "смещения фокуса", недавние компаньоны гигантских традиционных библиотек с многолетними наслоениями архаичного кода начинают играть все большую роль. Это сопровождается явлениями, которые мы уже определили как "инновации".
Например...
5. QuickTime Kit
Как и Core Data, QTKit (обычно его название пишется именно так) впервые появился на публике в апреле 2005 года, в составе Mac OS 10.4. До его появления, в Cocoa уже были классы для работы с типами данных QuickTime - NSMovie и NSMovieView. Их функциональность была более чем ограниченной, тем не менее, с их помощью, вполне можно было произвести впечатление на людей, незнакомых с особенностями Mac OS X, и Cocoa в частности.
Организовать просмотр "мувиков" QuickTime было несложно. Для большего... надо было обращаться к старым добрым вызовам QuickTime. Ничего страшного. Учебник (огромный) этой технологии, составленный в давние времена (когда, кажется, у людей было намного больше времени для чтения), написан понятным языком и достаточно подробен.
Со дня первого появления QuickTime на Маках, в начале 90-х годов прошлого века, существует два варианта лицензии на эту технологию. Бесплатная, и PRO. Обладатели лицензии PRO получают доступ к дополнительным функциям стандартного QuickTime Viewer'а. Они могут выбрать фрагмент фильма (или отдельного его "трэка"), скопировать его, и вставить в другом месте. Эти возможности, на мой взгляд, несколько преувеличивая, назвали "редактированием".
Появление первой же версии QuickTime Kit разрушило эту стройную систему. С помощью QTKit, любой человек, не боящийся запачкать руки об инструменты разработчика, мог без особых усилий построить для себя просмотрщик фильмов QuickTime, умеющий "редактировать". В первой версии QTKit было уже пять классов, предоставлявшие высокоуровневому программисту доступ к некоторым подробностям архитектуры QuickTime.
Но такие операции, как запись видео и/или звука, все еще требовали обращения к "основам", и написания десятков (а то и сотен - если все делать правильно) строк кода. Отважившегося на это ждали на пути интересные встречи... например, с некоторыми отжившими, и не слишком хорошо поддерживаемыми в Mac OS X, типами данных.
В 10.5 в набор добавилось 15 новых классов (15 инноваций?), а у "старых" пяти добавилось возможностей. Новые классы QTKit предназначены для превращение "в детскую игру" совсем недетского по своей сути дела, такого как "захват" видео, аудио или аудиовизуальных сигналов, и сохранение результатов записи в виде фильмов QuickTime.
Набор увеличился в 4 раза, и теперь это уже действительно что-то очень серьезное.
Как всегда, описание новых классов этого увлекательного направления программирования сопровождается яркой и впечталяющей демонстрацией мощи и компактности Objective-C, Cocoa и QuickTime 7, работающих в общей связке. Основная работа, как и следовало ожидать, выполняется в Interface Builder, а код программы, который приходится (не обойтись...) написать вручную, не превышает 40 строк. Это самый настоящий, пусть и простенький (без затей) "перехватчик изображения" с встроенной в компьютер видеокамеры iSight.
Собственно, можно было использовать и какой-нибудь другой источник. Например, микрофон. В классической системе была встроенная звукозаписывающая утилита. В Mac OS X ее, по непонятным причинам, нет. Теперь ее нетрудно написать, хотя бы для себя. И сохранить в одном из форматов, поддерживаемый QTKit...
И чуть не забыл самое главное: впервые за всю историю совместного существования QuickTime и Cocoa, есть кое-что в QuickTime, доступное только из Cocoa. Это 64-битный QuickTime. В случае с мультимедиа, разрядность имеет значение!
Изменения более чем значительные... но не ищите упоминания о них среди 302 официальных чудес новой системы.
6. Еще один "кит"
С английского слово "kit" можно перевести как "набор", "комплект". Как это случается сплошь и рядом, из-за частого употребления границы значений этого слова расширились. Но Image Kit - именно набор классов, полезных при разработке программ, имеющих дело с файлами графических форматов.
Открытие таких файлов и сохранение их на диск, обрезание концов картинки (или вырезание из нее фрагмента), обработка изображений CI-фильтрами, поворот изображений на произвольный угол, просмотр картинок по одной, или оптом - в виде слайдшоу или "решетки"... Все эти операции давно перестали быть чем-то особенным и уникальным. Именно их и упрощают классы Image Kit.
Банальные места в графических программах утратят свою оригинальность. Мне кажется, что жалеть об этом не стоит. Оригинальничание в банальностях поглощает недешевые трудочасы квалифицированных специалистов, ничего не принося взамен. Кроме (и то не всегда) головной боли.
В набор входит экранный элемент (типа View, для тех, кто понимает о чем идет речь), частично дублирующий то, что с самой первой версии Mac OS X делает другой экранный элемент, входящий в состав общей библиотеки AppKit. Специализированный вариант умеет отображать большее число "внутренних" представлений изображения (например, CGImage - из супербиблиотеки Core Graphics, "в миру" именуемой Quartz). Кроме того, в него "вмонтирована" инфраструктура для типичных действий над картинками. Есть еще одно отличие: по умолчанию, двойной щелчок мышкой внутри картинки открывает окно редактора.
Редактор этот, увы, не позволит вам изменить значение конкретной точки, дорисовать или перерисовать картинку - но зато с его помощью можно выбрать какой-нибудь CI-фильтр, просмотреть метрику графического файла (разрешение и т.п., или EXIF-данные), и сделать много чего еще.
Apple рекомендует использовать для открытия и сохранения файлов графических форматов Image I/O, вместо упрощенных и ограниченных средств общей библиотеки AppKit. При том, что Image I/O сложнее в использовании, эта библиотека умеет работать со всеми графическими форматами, поддерживаемыми в данной установке Mac OS X (в том числе с теми, поддержка которых была добавлена пользователем, и которые могут быть заранее неизвестны разработчику программы), а из файлов с числом изображений больше одного (например, такие сюрпризы могут встретиться в TIFF или GIF файлах) она может извлечь их все.
Видимо, в 10.6 "встроенные" в общую библиотеку классы, исполняющие часть работы аналогичных классов в Image Kit, будут почены как "устаревшие" - подобно классам, обслуживавшим в AppKit работу с аудиовизуальным контентом, вместо которых в 10.5 настоятельно рекомендуется использовать классы QTKit.
Кроме "фасада", "отображателя" и "редактора", работающих в тесной связке, в наборе есть класс для выбора и настройки одного из множества CI-фильтров, доступных в ситсеме (в том числе и тех, о которых разработчик программы не знал при ее создании). У пользователя есть возможность выбрать фильтр (или фильтры), и в окошке предварительного просмотра наблюдать за результатом "фильтрации" - меняя параметры, переставляя фильтры, и т.п. В любой программе должен быть кусочек "Фотошопа", правда?
А еще в наборе есть несколько классов для создания и просмотра коллекций картинок - либо в одном экранном элементе (View), который можно встроить в любое окно, в виде одинаковых по размеру уменьшенных копий, либо в организовывать из них полноэкранное слайдшоу.
Как и следовало ожидать, Image Kit ни разу не упоминается в официальном списке инноваций.