Фрагментация платформы
Фрагментация платформы — ситуация, когда у какой-то вычислительной платформы становится настолько много моделей аппаратуры и версий ОС, что становится практически невозможным написать программу, хорошо работающую на всех устройствах, созданных на базе данной вычислительной платформы.[1]
Примеры
Linux
В Linux применяется несколько разных форматов пакетов; многие библиотеки имеют до десятка и более настроек конфигурации, выбираемых при сборке, а ядро — сотни, к коим многие поставщики добавляют также собственные патчи; одновременно используется множество версий ядра и библиотек нескольких поколений на десятках различных аппаратных платформ.
Для ограничения фрагментации в своих нишах поставщики дистрибутивов ограничивают (средствами менеджера пакетов) возможности пользователей по установке поставляемых пакетов в нештатной конфигурации. FSF целенаправленно противодействует фрагментации пакетом Autotools, в числе прочего нивелирующим различия в функциональности разных версий системных библиотек. Стандарт POSIX, поддерживаемый The Open Group, также служит цели давать гарантии разработчикам. Для координации ряда других API, не входящих в POSIX, были созданы независимые группы — например, freedesktop.org для API графических сред.
Sun Java ME
Фрагментация Java ME была по таким статьям:
- Размер экрана: от 96×65 до 240×320.
- Размеры шрифтов.
- Коды кнопок (за исключением кнопок номеронабирателя — за ними закреплены ASCII-коды символов 0…9, «*» и «#»).
- Наличие/отсутствие пера.
- Звуковое API (MMAPI или собственное).
- Прочие ошибки и недостатки: мало памяти, особенности кэша изображений и звуков, ошибки API.
Поэтому разработчикам мобильных игр приходилось выпускать много (тридцать и более) версий одной и той же игры под разные аппараты. Практически во всех играх есть собственные цифровые шрифты для отображения счёта (а зачастую и полные шрифты для всех надписей в игре).
Google Android
Сжатие текстур для трёхмерной графики в Android не стандартизировано и различается от устройства к устройству.[2] Но и без этого у Android есть проблемы: разные размеры экрана и версии ОС. В 2013 году при актуальной версии 4.2 существовали смартфоны с версией 2.1.[1] В 2010 году Балмер и Джобс обвиняли Android во фрагментации, Google отрицала её, но факты говорили сами за себя: Netflix пришлось делать свою версию программы практически для каждого Android-устройства, в то время как на iOS и Windows Phone обошлись одной версией.[3]
Красивую визуализацию фрагментации в 2012 году сделали специалисты из OpenSignal.[1][4] Они получили 3997 разных комбинаций модели устройства и версии Android. В числе необычных устройств — Lemon P1, индийский двух-SIM’очный смартфон, и Concorde Tab, венгерский 10-дюймовый планшет.
В 2012 году фрагментация вынудила Google добавить в пользовательское соглашение к Android Development Kit туманную фразу:[5]
3.4. Вы соглашаетесь не принимать никаких мер, которые бы вызвали фрагментацию Android, в том числе разрабатывать, распространять и пропагандировать производные SDK. |
Также в одном из интервью в 2013 году председатель совета директоров Google Эрик Шмидт на вопрос о фрагментации ответил, что уже не видит в этом проблему[6].
Иногда фрагментацию Android считают достоинством: посмотрите, насколько широко применяется ОС, в отличие от десятка устройств Apple.[1]
Примечания
- ↑ 1 2 3 4 [habrahabr.ru/post/188738/ Фрагментация Android / Хабрахабр]
- ↑ [developer.android.com/guide/topics/graphics/opengl.html#textures OpenGL ES | Android Developers]
- ↑ [www.sotovik.ru/news/google-otricaet-fragmentaciyu-android.html Google отрицает фрагментацию Android - Сотовик]
- ↑ [opensignal.com/reports/fragmentation.php Android Fragmentation Visualized - OpenSignal - OpenSignal]
- ↑ [www.techhive.com/article/2014089/google-targets-android-fragmentation-with-updated-terms-for-sdk.html Google targets Android fragmentation with updated terms for SDK | TechHive]
- ↑ [hi-tech.mail.ru/news/misc/android-more-secure.html Глава Google Эрик Шмидт считает, что «Android безопаснее iPhone»]. Mail.Ru. Проверено 9 октября 2013.