Но главное, что добавилось с приходом мобильных устройств, — это «выход в реальный мир»: доступ к камере, GPS и прочим датчикам и, конечно, возможность иметь устройство с собой постоянно. Это открыло дорогу множеству приложений, которые раньше просто не были возможными.
Несложно пронаблюдать, что каждый из этапов развития происходил с появлением какой-то принципиально новой технологии. Персональные компьютеры и программы для них последовали за появлением и удешевлением микропроцессоров. Веб-приложения появились сразу после того, как быстрый интернет стал нормой. Мобильные приложения появились вместе с доступным мобильным интернетом и смартфонами. И каждый раз открывались новые возможности.
Дальше нас тоже наверняка ждут изменения. Какими они могут быть? Вот несколько предположений, которые можно сделать, исходя из тех изменений, что заметны уже сейчас.
Хранение всего в облаке. Сохранность данных и незаметная синхронизация между устройствами потихоньку становится нормой. iCloud, Google Drive, SkyDrive, Dropbox — эти и другие сервисы будут приспосабливаться для сохранения всё более разнообразной информации. В какой-то момент каждое новое приложение будет уметь синхронизировать всё, что мы в нём оставляем.
Поддержка социального графа и «многопользовательские режимы». Google Docs не последняя программа, в которой над одним документом смогут работать сразу несколько пользователей. Поддержка связей из социальных сетей здесь играет немаловажную роль: многие мобильные приложения уже сейчас просят пользователей подключить аккаунты соцсетей — эта функциональность будет всё более и более востребованной. В новых версиях операционных систем подключение соцсетей происходит уже на системном уровне.
Тотальная кроссплатформенность. Уже сейчас есть множество способов запустить программу, написанную для одной операционной системы, в другой. И речь не только о виртуализации, но и о более красивых и эффективных решениях. С помощью Wine программы для Windows запускаются в Linux и OS X, и скоро появится версия для Android. BlueStacks, наоборот, позволяет запускать приложения для Android в OS X и Windows. Разработчикам же известно бесчисленное количество способов написать один код и сделать из него версии для разных ОС: Java, Flash, Mono и Unity — это лишь несколько наиболее популярных.
Стирание границы между приложением и веб-приложением. Этот процесс идёт одновременно с обеих сторон. В HTML5 немало внимания уделено возможностям работы с датчиками и локальными данными — это позволит уравнять в возможностях веб-приложения с «родными» приложениями. Но некоторые операционные системы и сами делают шаги в ту же сторону — примерами могут служить webOS, новый интерфейс Windows 8 и нововведения в линуксовском Gnome. Но когда поддержки со стороны ОС нет, разработчики всё равно находят способы сделать обычное приложение из вебового — PhoneGap для iOS, Titanium и многие другие средства помогают в этом. Вот ещё занятный пример: фреймворк Cappuccino позволяет, наоборот, разрабатывать приложения для веба способами, максимально приближенными к традиционным.
Миграция функций вместе с данными. Мы нередко сталкиваемся с ситуацией, когда присланный документ нечем не только редактировать, но даже открыть и посмотреть. Мысль передавать по мере необходимости части приложений приходила программистам в голову уже давно, и первопроходцами здесь были создатели Java. Примеры, встречающиеся в реальной жизни, пока что совсем скромные: на ум приходит разве что та самая возможность на лету подгружать код JavaScript в веб-приложениях.
Контекстозависимость. Чем дальше, тем больше технологии встраиваются в повседневную жизнь. С приходом ПК компьютеры перебрались из машинных залов в дома пользователей, КПК и смартфоны обитают уже в карманах. Став нашими спутниками, компьютеры научатся быть и более полезными помощниками. И способность учитывать контекст ситуации окажется здесь как нельзя более полезной. Современный смартфон может напомнить зайти за хлебом, когда мы проходим мимо магазина, но будущие применения контекстов многочисленны и разнообразны (подробнее — в статье «Контекстозависимость: зачем машине понимать мир людей»).