Открыть сервисСервис

Кроссплатформенность в программировании

Кроссплатформенность — свойство программного обеспечения или аппаратной архитектуры функционировать на нескольких операционных системах и аппаратных платформах без существенной переработки кода. В программировании под кроссплатформенностью обычно понимают возможность компиляции или интерпретации одного и того же исходного кода под различные целевые среды: Windows, Linux, macOS, Android, iOS и другие. Понятие противопоставляется «нативной» разработке, при которой программное обеспечение создаётся строго под одну платформу.

Основные подходы к достижению кроссплатформенности

Интерпретируемые языки и виртуальные машины

Наиболее распространённый подход основан на использовании языков программирования, код которых исполняется не напрямую процессором, а через промежуточный слой — интерпретатор или виртуальную машину. Примером служит Java: исходный код компилируется в байт-код, который выполняется виртуальной машиной Java (JVM), установленной на целевой платформе. Аналогичным образом работает Python, где интерпретатор CPython доступен для десятков операционных систем. Среда .NET и её кроссплатформенная реализация Mono (с 2016 года — открытый проект .NET Core, ныне просто .NET) обеспечивают исполнение кода на C# и F# на Windows, Linux и macOS.

Кроссплатформенные фреймворки и инструменты

Другой подход — использование инструментов, которые из единого исходного кода генерируют нативные приложения для нескольких платформ одновременно. Среди них:

  • Qt — C++-фреймворк с привязками для Python, Java и других языков, поддерживающий Windows, Linux, macOS, Android и iOS.
  • Flutter — фреймворк Google на языке Dart для создания мобильных, веб- и десктопных приложений.
  • Electron — платформа для настольных приложений, сочетающая веб-технологии (HTML, CSS, JavaScript) с движком Chromium и Node.js.
  • Xamarin — инструмент Microsoft для разработки мобильных приложений на C# под Android и iOS.
  • Kotlin Multiplatform — расширение языка Kotlin, позволяющее делить бизнес-логику между платформами.

Кроссплатформенные среды разработки

Отдельную категорию составляют интегрированные среды разработки (IDE), которые работают на разных операционных системах. К ним относятся Visual Studio Code, JetBrains IntelliJ IDEA, Qt Creator, Eclipse и многие другие. Кроссплатформенность инструментов разработки упрощает работу распределённых команд, где разработчики используют разные операционные системы.

Кроссплатформенность в аппаратной архитектуре

Понятие применимо и к области вычислительной техники. Кроссплатформенной называют архитектуру программного обеспечения, которая абстрагирована от конкретного аппаратного обеспечения. Пример — движок Unreal Engine, изначально созданный для Windows, но портированный на Linux, macOS, PlayStation, Xbox, Nintendo Switch и мобильные платформы.

В России разработка кроссплатформенного программного обеспечения получила развитие в контексте импортозамещения. Операционная система «Альт» от компании «Базальт СПО» построена на базе Linux и поддерживает широкий набор приложений, включая кроссплатформенные офисные пакеты. Проект Astra Linux, разработанный компанией «Базальт СПО», также ориентирован на обеспечение программной совместимости с различными аппаратными платформами. Российский фреймворк и экосистема «Роса» (ROSA) и дистрибутивы на его основе продолжают традицию кроссплатформенной разработки в отечественном ПО.

Преимущества и недостатки

К основным достоинствам кроссплатформенного подхода относятся:

  • Сокращение затрат — один код обслуживает несколько платформ, что снижает стоимость разработки и поддержки.
  • Единая кодовая база — упрощается отладка, тестирование и внесение изменений.
  • Быстрый выход на новые платформы — поддержка новой ОС часто сводится к перекомпиляции и адаптации интерфейса.

К ограничениям относятся:

  • Производительность — посреднический слой (виртуальная машина, интерпретатор) добавляет накладные расходы по сравнению с нативным кодом.
  • Доступ к системным функциям — специфические API операционной системы могут быть недоступны или работать с задержками.
  • Ограниченный доступ к аппаратным возможностям — графические ускорители, датчики и периферия требуют дополнительных обёрток.
  • Единый интерфейс — дизайн, оптимальный для одной платформы, может выглядеть неестественно на другой.

Критика

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

См. также

  • Кроссплатформенная среда разработки
  • Виртуальная машина
  • Портирование программного обеспечения
  • Единая кодовая база

Источники

  • Справочник по программной инженерии
  • Документация Qt Group
  • Документация Google Flutter
  • Материалы Microsoft .NET
  • Статьи журнала «Открытые системы» (СУБД)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru