2. «Леденец», 64-битовость, премиум-сегмент – Рубикон перейден, что дальше? А также мелкие полезности

20 октябрь, 2014 - 18:06Андрей Зубинский

Чтобы позволить себе любую экстраполяцию (она была обещана в первой части записи), надо хорошо разобраться с действительностью. В первую очередь, с тем, что нового приносит Android 5.0 Lollipop.

Если кратко, и не обращая внимание на море всяких мелочей, которые никто пока не в силах перечислить:

  • большое расширение API (более 5 тысяч новых вызовов);
  • начальное изменение модели мультизадачности (переход от переключения активных приложений к переключению «документов») и сохранение состояния переключателя между задачами после выключения-включения устройства;
  • «кросс-экранный» дизайн (Material design на деле не только и не столько соглашение о цветах и формах, сколько подлежащие механизмы, обеспечивающие единство интерфейсных элементов для устройств с принципиально отличающимися диагоналями экранов);
  • уточнение компонентной модели системы с вынесением ключевых компонентов в отдельно поставляемые традиционными для Android механизмами распространения ПО (например, компонент WebView, отвечающий за рендеринг html со всем сопутствующим, с приходом Lollipop становится приложением Play);
  • усовершенствование системы безопасности (на системном уровне – SELinux, двухфакторная авторизация при инсталляции, пользовательский механизм блокировки сброса и очистки устройства до заводских установок, режим «только одно приложение» – для безопасной передачи устройства другим лицам во временное пользование);
  • замена Java-машины Dalvik (и «срабатывающего» каждый раз при запуске приложения JIT-компилятора, соответственно) на ART (фактически – компилятора в «нативный код» конкретной платформы, срабатывающего один раз, во время инсталляции), что даёт в среднем 2х-кратный прирост производительности (за счёт некоторого увеличения расхода долговременной памяти, конечно), введение дополнительных (и очень рациональных) режимов энергосбережения.

Добавим к этому «набору» уже всем известное – заявленную поддержку Chrome OS приложений Android, расширение возможностей использования этих приложений за пределами Chrome OS, везде, где есть браузер Chrome, а также серьёзное расширение экосистемы Android за счёт традиционно бытовой техники (Chromecast, Nest, etc).

Теперь всё «тактическое» как на ладони (больше деталей будет, когда появятся овеществления Lollipop, пользователей Nexus 7 II WiFi по слухам «империя добра» осчастливит совсем скоро, 3 ноября).

Но стратегическое… Оно интереснее. С ростом диагонали экранов планшетов и фаблетов, с появлением де-факто стандартных, на уровне «комплекта поставки», клавиатур-чехлов к ним, с расширением возможностей мультизадачности, появляется некий новый класс устройств. Хотим мы того, или нет. Это уже не совсем «то, что было» (в смысле – уже не те планшеты, с которых всё начиналось), и ещё не совсем «то, что было» (не «полноценные» лаптопы, например). Что это – никто пока толком не знает, потому что контуры этого только определяются (и хорошо, что экспериментов никто, похоже, не боится).

Не исключено (начинается экстраполяция, дальше всё крайне субъективно), что мы наблюдаем очень интересное «движение из пункта А в пункт Б».

Традиционно «пунктом А» были «большие машины», «пунктом Б» - малые. Так двигалась ОС Unix (от «малых ЭВМ», через рабочие станции к embedded-вычислителям и смартфонам), точно такое же движение прошла ОС NeXTStep (её модификации называются Mac OS X и iOS). Даже ОС Windows в каком-то смысле проходила этот путь (для интересующихся стариной – проект Pegasus, «усечение» только появившейся Win32 до возможностей носимых устройств того времени). Почему так было – понять несложно: компонентная база тех времён не позволяла создавать компактные, с батарейным питанием, носимые вычислители сколь-нибудь пристойной для пользовательских применений производительности. Массовый вычислитель из-за ограничений технологической базы был сначала напольным, потом – настольным. Его массовость определяла и приток разработчиков ПО во всём диапазоне, от системного до прикладного. «Настольный» рынок рос с огромной скоростью, в нём было движение денег и сил. Следствие этого периода – доступная вычислительная мощь (например, мой далеко не новый Core i5 показывает 67 GFLOPS, это примерно половина вычислительной мощности единичных суперкомпьютеров середины 90х годов) и громадная база ПО. Но есть и латентное следствие. Крайне неприятное. Это разросшееся до большой проблемы правило 80/20. В контексте допускающее много вариаций, например – востребованные восьмьюдесятью процентами пользователей задачи не требуют и 20% доступной вычислительной мощности. Или, если его реверсировать, «что бы придумать такое, чтобы оно было востребовано 80% пользователей и использовало 60% невостребованной мощности?». С ответом на этот вопрос дело обстоит далеко не так хорошо, как кажется. И уже очень давно, это вовсе не новый вопрос. Он становится неприятнее с каждым годом, потому что дальнейшее повышение вычислительной мощности даётся с каждой технологической итерацией всё труднее и дороже. И тут одновременно появляются и элементная база, и компании новой волны, и переориентировавшиеся старые, выбравшие «пункт Б» отправным. И цикл развития технологий повторяется – в «мобильное» бросились все. И теперь всё «мобильное» с завидным упорством повторяет в точности то, что происходило с «настольным»: производительность и инфраструктура ПО растут как грибы, вместе с программистской массой.

Только вот в какой «пункт С» идут компании новой волны? В первую очередь, Google, потому что теперь она (нравится ли это кому-то, или нет) является системообразующей в мобильном мире. Вроде как в сторону wearable. Но это процесс, как оказалось, очень небыстрый. А вдруг… они замыкают путь в цикл? Почему нет? Длительное затишье в «настольном» мире, неспособность Linux занять достойную нишу полноценной альтернативной системы, многолетнее отсутствие новых игроков, мягко говоря странное поведение признанных авторитетов. Речь идёт не о материализации концепции Sun – «сетевых компьютеров», это как раз уже сделано, Chrome OS уже вполне работоспособна и, с появившейся поддержкой локального исполнения приложений Android, ещё и «оснащена killing feature». Речь о вполне полноценной «десктопной системе». Когда-то та же Sun пыталась её создать, причём на той же технологической основе, это называлось Java Desktop.

Android уже работает на ключевых 64-битовых платформах – x86 и ARM? Работает, это факт. Верхний предел диапазона экранных разрешений Android-устройств уже соответствует экранным разрешениям «десктопов»? Соответствует, это тоже факт. Архитектурно система во многом превосходит «настольные» – во-первых, она существенно «моложе», и потому построена с учётом предыдущего опыта (не сомневайтесь в этом, системой занимаются крайне неглупые и очень опытные люди) и с использованием приёмов, недоступных в системах с долгой историей (полная виртуализацию userspace, например). Это спорное утверждение, конечно, но всё же что-то в нём есть, чтобы полностью его не отметать. Развивается система с реактивной скоростью, что безусловно доставляет неудобства прикладным программистам, но и свидетельствует о пригодности её архитектуры к такому развитию (разве это не факт?). Параллельно с этим развитием идёт развитие периферии – она становится куда более умной и даже часто с «облачной» поддержкой, что фактически «выносит» из архитектуры системы громадные зависимые от множества факторов и участников IT-рынка фрагменты (одна подсистема печати чего стоит, а ещё есть персональные файловые накопители, которые были HDD и USB-устройствами, а стали тонкими серверами, и вместо громадного дополнительного стека в ОС для них требуется тот же сетевой стек, что и для всего прочего).

Так вот я это всё к чему. И оно касается не только Android, похоже, и Apple движется в том же направлении с iOS. Оснащённые устройствами точно позиционирования курсора все эти планшеты-фаблеты при подключении к экрану с большой физической диагональю вполне могут стать… да, именно что рабочей станцией. Кто и что запрещает? Больше того. При виртуализации пользовательского уровня и соответствующем развитии среды исполнения (ART это будет называться или нет, не важно), никто ведь не запрещает мгновенной «миграции» приложений из мобильного устройства в «большой вычислитель», ведь правда нет никакой разницы где и для какой целевой платформы один раз компилировать «на лету» приложение при его инсталляции? Да, есть нюансы с пользовательским интерфейсом, но пока никто не решился называть их «нерешаемыми проблемами».

Что-то мне подсказывает, что рывок в 64-битовость сразу двумя крупнейшими игроками «в пункте Б» означает именно это устремление в таинственный «пункт С», который на деле – тот же «пункт А», то есть, те же классические предназначенные «для работы» компьютеры, причём мало что с собственной большой вычислительной мощностью, так ещё и расширяемые «на лету» за счёт облачно-контейнерных технологий, которые сейчас обкатываются как раз в области «серверов приложений».

Здесь же ещё надо учесть кто и с каким «багажом» чем занимается в той же Google. Создатели ОС Plan 9 и Inferno, например. ОС, сильно обогнавших своё время и возможности UI своего времени, системы  сетевых рабочих станций, по сути способные «объединять» гетерогенные аппаратные ресурсы в единое целое с помощью простейших абстракций – пространства имён и файловой системы. ОС Inferno вообще удивительно похожа архитектурно на… Android. В ней та же виртуализация userspace (и виртуальная машина Dis – она тоже регистровая, как и Dalvik), например, и где сейчас её «отцы»? Кен Томпсон – заслуженный инженер Google, Роб Пайк – в Google, Шин Дорвард – в Google, Девид Пресотто – в Google, практически весь состав знаменитой Bell Labs, который работал над Inferno, – в Google. И в 2005 году Google выбрала в качестве покупки именно Android Inc, располагавшую тогда чем-то секретным, но удивительно похожим на «ОС Inferno, не обгоняющую время и более потребительскую на уровне UI». То есть, с одной стороны внутренние в Google симпатии к определённым архитектурным идеям – они не тайна, с другой стороны – эти архитектурные идеи никак не ограничивают область своего применения. И, наконец, с третьей стороны, «империя добра» более чем агрессивна и амбициозна.

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

Ко всему вышесказанному, есть ещё один очень интересный и очень плохо видимый (но не латентный) фактор. IoT, Internet of Things. Почему-то все с завидным упорством забывают, что появление колоссального количества датчиков и актуаторов в единой, пусть даже совершенной и идеальной, среде межмашинных коммуникаций (M2M) на базе самых замечательных единых протоколов, означает и взрывной рост требований к… тем же рабочим станциям. Колоссальные потоки данных нужны не только машинам, вот в чём проблема. И для их анализа и работы с ними, скорее всего, нужны рабочие станции нового поколения. Такие, которых ещё нет. Возможно, как раз такие, которые были задуманы создателями Plan 9 и Inferno (ну, разве что с другим, современным уровнем UI). Более чем возможно, потому что ничего более вразумительного даже на уровне идей нам никто пока не показывал. Если это предположение верно (явных опровержений его не вижу), то мы увидим настоящую Битву.

В общем, любителям конспиративных теорий точно скучно не будет. Явно происходит «нечто», а вот что именно – можно только догадываться.

Теперь о пользе.

Активное использование фаблета, смартфона или планшета непременно порождает «свалку» в каталогах, предназначенных для хранения загруженного. Всё ещё хуже, потому что носимое часто используется эпизодически, и слишком часты эпизоды, в которых что-то интересное загружаешь, потом отвлекаешься, забываешь, а копошиться в сотне мегабайтов (хорошо ещё, если не в гигабайтах) завалов «всего чего попало», очень утомительно. Но.

Тут и рассказывать особо нечего. Просто маленький синергетический эффект, но с отличными результатами.

Основа  процесса - утилиты Auto Move и Sync (бывшая Bittorent Sync, естественно, в комплекте с её аналогом на «большом компьютере»). Первая утилита очень логичного назначения – она предназначена для перемещения файлов на основании заданных пользователем правил из каталога в другой каталог. У неё немного странный интерфейс (множество созданных правил отображается выплывающей панелью по нажатию кнопки с иконкой программы), но в остальном она делает что должна. Правила строятся на основе расширений имён файлов (или полных имён, что нужно много реже). Например, можно создать такое правило для разных файлов растровых изображений:

2. «Леденец», 64-битовость, премиум-сегмент – Рубикон перейден, что дальше? А также мелкие полезности


Таких правил у меня пять (это не принципиально) – для изображений, .pdf и .djvu файлов, архивов, электронных книг в формате epub, медиафайлов. Auto Move «раскладывает завалы» из каталога Downloads по соответствующим подкаталогам, скажем, традиционно названного каталога 0day. А вот этот каталог синхронизирован с «большой» машиной с помощью Bittorent Sync. В итоге - всё на своих местах, и со всем можно обстоятельно разобраться что на планшете, что на «большом» компьютере. Это вроде как мелочь. Но на удивление удобная и полезная, особенно тем, кто, как и я, не понимает зачем в носимых устройствах много долговременной памяти (я действительно этого не понимаю) и не любит раздувающихся «мусорных свалок».

Откланиваюсь