На каких языках программирования разрабатывать мобильное приложение
Мобильное приложение можно сделать на огромном количестве языков программирования, но финальные возможности проекта будут разные в зависимости от выбранных технологий.

Какие языки программирования бывают в мобильной разработке
Для начала, мобильные приложения, в основном, делятся на два типа: нативные и кроссплатформенные.
Нативные приложения делаются на родных для операционной системы языках. Для iOS это Swift, а для Android это Java и Kotlin. Такие приложения не имеют каких-то ограничений, можно реализовать почти все, главное чтобы горизонт познания программиста позволял.
Для iOS есть еще Objective-C, но язык очень старый, поэтому мы его тут не будем рассматривать.
Кроссплатформенные приложения делаются на языках, которые не являются родными для той операционной системы, для которой создается программа. К ним относятся JavaScript, Dart, C#, Kotlin (только для iOS). Такие языки имеют ограничения, все они разные и от языка к языку меняются. Самое главное тут то, что данные языки не позволяют раскрыть полный потенциал устройства.
Нативные приложения
Нативные приложения делаются на родных для операционной системы языках. Поэтому, сейчас мы поговорим про Swift и Kotlin.
Тут все очень прозрачно и просто. Если нужно приложение под iOS пишем на Swift. Если надо Android, то берем Kotlin (или Java). Для каждой операционной системы нужна своя версия приложения. Каких-то подводных камней нет, не считая того что придется делать два приложения: на Swift для iOS и на Kotlin для Android.
Кроссплатформенные приложения
Кроссплатформенные приложения делаются на специальных технологиях, которые позволяют писать одну кодовую базу, запускаемую на разных операционных системах. Чаще всего, сами языки программирования без этих инструментов вообще ничего не могут сделать внутри операционной системы, поэтому им нужна помощь.
Все эти инструменты можно разделить на две группы: транспилируемые и зависимые от заранее заготовленного ядра.
Транспилируемые языки
Транспайлер - это программа, позволяющая менять исходный код одной программы на эквивалентный исходный код на другом языке. Например, C# переписывается на С++.
Давайте сразу пойдем по примерам: Unity (C#), Compose Multiplatform (Kotlin), Flutter (Dart). Для примера рассмотрим экосистему iOS. Все три инструмента переписывают себя либо в Objective-C, либо в С++ и взаимодействуют с Metal (штука для рендеринга графики на iOS/MacOS, аля DirectX в мире Apple).
Если рассматривать с точки зрения Android, то в целом все тоже самое, только “переписываться” будут вышеуказанные языки в Java байт-код и С++. А для взаимодействия с графикой будет использоваться Vulkan и OpenGL.
Кроме Compose Multiplatform (Kotlin), он работает для Android как нативный инструмент, а для iOS уже будет считаться кроссплатформой. Поэтому текст ниже к нему уже не относится.
Используя эти инструменты при разработке, программист может встретиться с рядом незначительных ограничений, например невозможно использовать какие-то удобные системные компоненты из UI-фреймворков операционных систем (Jetpack Compose для Android или UIKit для iOS). Ну или доступ к каким-то внутренним библиотекам невозможно получить через кроссплатформенный язык.
Но это все “незначительные” ограничения в рамках этих платформ, потому что сами они по себе работают на достаточно низком уровне и позволяют работать с графикой через свои внутренние конструкции.
Зависимые от заранее заготовленного ядра
React Native (JavaScript), Cordova/Capacitor (JavaScript), это все инструменты, которые помещают написанный программистом код в заранее заготовленное ядро для исполнения и запускают его в реальном времени.
Ограничений тут, на плечах программиста, огромное количество: от скорости работы программы, до банально “это невозможно сделать, потому что такого функционала нет в ядре”. Но, отметим справедливости ради, само приложение можно сделать довольно быстро.
Что же выбрать для разработки
Точного ответа на этот вопрос нет. Все зависит от цели. Нужно быстрое и отзывчивое приложение? Смотрим в сторону натива или инструментов, которые способны в транcпиляцию. Нужны системные компоненты? Смотрим на натив. Не важно, сколько будет весить приложение и как быстро работать? Смотрим в сторону кроссплатформы с заранее заготовленным ядром.
Все инструменты созданы с определенной целью. React Native и Cordova нужны, чтобы быстро делать приложения. Unity чтобы делать игры. Compose Multiplatform и Flutter чтобы делать похожие на натив приложения, но чуть быстрее чем используя нативные языки. Нативные языки нужны чтобы делать максимально долговечные и безопасные приложения, которые будут запускаться и поддерживаться годами.
Спустя годы дорабатывать кроссплатформенные приложения намного сложнее, потому что приходится танцевать с бубном и вспоминать “как все это собирается и запускается”. Но приложения делаются заметно быстрее, чем на нативе. На нативе можно дорабатывать “древнее зло”, написанное лет 10 назад без особых проблем, просто засунь в IDE для разработки и готово.
Так что, решать только Вам, но если нужно, мы можем проконсультировать и предложить нужные варианты, просто свяжитесь с нами по форме обратной связи ниже.
Оставьте комментарий