Swift не только для Apple: кроссплатформенная разработка в 2025

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Swift вырвался за пределы экосистемы Apple

Долгое время язык Swift ассоциировался исключительно с iOS, macOS и watchOS. Если вы хотели написать приложение для Android или веб-сервер, вы брали Java, Kotlin или Python. Но времена изменились. Сегодня кроссплатформенная разработка на Swift — это не эксперимент энтузиастов, а зрелая индустрия с поддержкой на уровне ядра Linux, официальными инструментами от Apple и активным сообществом.

В этой статье мы разберём, как писать на Swift под Windows, Linux, Android и даже для веба. Вы увидите реальные примеры кода, узнаете о фреймворках Vapor и SwiftUI, а также получите дорожную карту для старта. Поехали!

Почему Swift? Три причины выйти за рамки Apple

1. Производительность и безопасность памяти

Swift — компилируемый язык с автоматическим подсчётом ссылок (ARC). Он даёт скорость, близкую к C++, но при этом защищает от утечек памяти и null-pointer ошибок на уровне компиляции. Для серверных и десктопных приложений это критично.

2. Современный синтаксис

Протоколы, расширения, дженерики, опциональные типы — Swift впитал лучшее из функционального и объектно-ориентированного программирования. Код получается лаконичным и читаемым.

3. Единая кодовая база

Написав логику один раз на Swift, вы можете запустить её на iOS, Android (через Swift Android Toolchain), Linux, Windows и даже в браузере (через WebAssembly). Это снижает стоимость поддержки и ускоряет выход на новые платформы.

Инструментарий для кроссплатформенной разработки на Swift

Прежде чем писать код, давайте разберёмся, какие инструменты нам понадобятся. Вот основной стек для кроссплатформенной разработки на Swift в 2025 году:

  • Swift Package Manager (SPM) — стандартный менеджер пакетов, работает на всех платформах.
  • Vapor — самый популярный веб-фреймворк на Swift. Серверная логика, REST API, WebSockets.
  • SwiftUI — декларативный UI-фреймворк. На macOS и iOS работает нативно, на других платформах — через SwiftUI-Web или Tokamak.
  • Swift for TensorFlow / NumPy — машинное обучение и научные вычисления.
  • Android NDK + Swift Android Toolchain — компиляция Swift-кода под Android.
  • WebAssembly (WASI) — запуск Swift в браузере.

Пишем сервер на Swift с Vapor (Linux / macOS / Windows)

Начнём с самого простого и полезного — веб-сервера. Vapor — это зрелый аналог Express.js или Flask, но на Swift. Код работает на Linux, macOS и Windows (через Swift 6).

Установка Vapor

brew install vapor  # macOS
curl -sL https://apt.vapor.codes/install.sh | bash  # Linux
# Windows: установите Swift 6, затем vapor через SPM

Простой REST API на Vapor

Создадим проект и напишем эндпоинт для работы с задачами (ToDo):

// Sources/App/routes.swift
import Vapor

func routes(_ app: Application) throws {
    // GET /hello
    app.get("hello") { req -> String in
        return "Hello, кроссплатформенный Swift!"
    }

    // GET /tasks
    app.get("tasks") { req -> [String] in
        return ["Изучить Swift", "Написать статью", "Запустить на Android"]
    }

    // POST /task
    app.post("task") { req -> String in
        let task = try req.content.decode(Task.self)
        return "Добавлена задача: \(task.title)"
    }
}

struct Task: Content {
    let title: String
    let isCompleted: Bool
}

Запустите сервер командой vapor run и откройте http://localhost:8080/hello. Вы увидите приветствие. Этот же код без изменений работает на Ubuntu, Windows Server и macOS.

Swift под Android: пишем нативную библиотеку

Многие считают, что Swift для Android — это миф. На самом деле, с помощью Swift Android Toolchain (официальный проект от Apple) вы можете компилировать Swift-код в нативные .so библиотеки, которые вызываются из Java/Kotlin через JNI.

Пример: математическая библиотека на Swift для Android

Создадим простой модуль, который будет считать факториал:

// Sources/Calc/Calc.swift
import Foundation

@_cdecl("calculateFactorial")
public func calculateFactorial(_ n: Int) -> Int {
    guard n > 0 else { return 1 }
    return (1...n).reduce(1, *)
}

Компилируем под Android:

swift build \
  --destination /path/to/android-toolchain.json \
  -Xswiftc -target -Xswiftc armv7-unknown-linux-androideabi

Полученный файл .so можно подключить в Android-проект через System.loadLibrary(). Вызов из Kotlin будет выглядеть так:

// MainActivity.kt
external fun calculateFactorial(n: Int): Int

fun main() {
    val result = calculateFactorial(5)
    println("Факториал 5 = $result") // 120
}

Таким образом, вы можете переиспользовать бизнес-логику, написанную на Swift, в Android-приложениях без переписывания на Kotlin.

SwiftUI на Windows и Linux: Tokamak и SwiftUI-Web

Если вы хотите писать UI на Swift не только для Apple, обратите внимание на Tokamak — реализацию SwiftUI, работающую через DOM (браузер) и GTK (Linux).

Пример: простое приложение с кнопкой на Tokamak

// main.swift
import TokamakShim

struct CounterApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {
    @State private var count = 0

    var body: some View {
        VStack {
            Text("Счётчик: \(count)")
                .font(.title)
            Button("Нажми меня") {
                count += 1
            }
            .padding()
            .background(Color.blue)
            .foregroundColor(.white)
            .cornerRadius(8)
        }
        .padding()
    }
}

Запустите через swift run — приложение откроется в браузере (через WebAssembly) или в нативном окне (на Linux через GTK). Это идеальный инструмент для прототипирования кроссплатформенных интерфейсов на Swift.

Swift на Windows: официальная поддержка и WSL

Начиная с Swift 5.7, Microsoft и Apple совместно поддерживают официальные билды для Windows. Вы можете:

  • Установить Swift через winget install Swift
  • Писать консольные ути

Блоги

Рекомендаций по книгам