|
Общее позиционирование
|
Классический строго типизированный язык для JVM и Android. Универсальный выбор для корпоративных и мобильных решений.
|
Современный компилируемый язык от Apple для iOS, macOS, watchOS, tvOS и серверной разработки. Быстрый, безопасный, лаконичный.
|
|
Разработчик / дата создания
|
Sun Microsystems (ныне Oracle), 1995.
|
Apple Inc., 2014.
|
|
Парадигма
|
Объектно-ориентированный + функциональный.
|
Объектно-ориентированный + функциональный, безопасный и декларативный.
|
|
Пример “Hello World”
|
public class App { public static void main(String[] args){ System.out.println("Hello, World"); } }
|
print("Hello, World")
|
|
Компиляция / выполнение
|
Компиляция в байткод JVM → JIT/AOT.
|
Компиляция в нативный бинарник (LLVM).
|
|
Среда выполнения
|
JVM (Java Virtual Machine).
|
Apple LLVM runtime, Swift runtime (ARC).
|
|
Типизация
|
Статическая, строгая.
|
Статическая, строгая, с выводом типов (let x = 10).
|
|
Null-безопасность
|
Есть null, возможен NullPointerException.
|
Полностью null-safe через Optional<T> (?, !, guard let).
|
|
Сборка мусора (GC)
|
Да, автоматический.
|
Нет GC — используется ARC (Automatic Reference Counting), как в Objective-C.
|
|
Память / владение
|
Автоматическая через GC.
|
Счётчики ссылок (ARC) + строгие правила владения объектами.
|
|
Пример Optional
|
—
|
var name: String? = nil; print(name ?? "Guest")
|
|
Переменные / константы
|
int x = 10; final int y = 5;
|
var x = 10 (изменяемая), let y = 5 (константа).
|
|
Типы данных
|
int, double, boolean, char, String, Object.
|
Int, Double, Float, Bool, Character, String, Any, Optional<T>.
|
|
Строки
|
Объекты String.
|
String — Unicode-безопасный, value type (struct).
|
|
Интерполяция строк
|
String.format("Hi %s", name)
|
"Hi \(name)"
|
|
ООП-модель
|
Классы, интерфейсы, абстрактные классы.
|
Классы, структуры (struct), протоколы (аналог интерфейсов), расширения.
|
|
Наследование
|
Один родительский класс, множественные интерфейсы.
|
Один базовый класс, множественные протоколы.
|
|
Интерфейсы
|
interface + implements.
|
protocol + extension — расширяемая модель.
|
|
Абстрактные классы
|
Есть (abstract class).
|
Нет, но заменяются комбинацией protocol + extension.
|
|
Пример протокола
|
—
|
protocol Drawable { func draw() }
|
|
Инкапсуляция
|
public, private, protected, default.
|
public, private, internal, fileprivate, open (тонкий контроль видимости).
|
|
Перегрузка методов
|
Да, по типам и аргументам.
|
Да, по типам и аргументам.
|
|
Генерики / шаблоны
|
List<T>, Map<K,V>.
|
<T>, <K,V> — аналогично, но без стирания типов.
|
|
Пример generics
|
class Box<T> { T value; }
|
struct Box<T> { var value: T }
|
|
Data-классы / структуры
|
Только классы (record в Java 16+).
|
struct — value type, автоматические инициализаторы, сравнения и копирование.
|
|
Record / data class
|
record Point(int x, int y)
|
struct Point { var x: Int; var y: Int }
|
|
Функции / синтаксис
|
int add(int a, int b){ return a + b; }
|
func add(_ a: Int, _ b: Int) -> Int { a + b }
|
|
Функции как значения
|
С Java 8 — через лямбды (x -> x + 1).
|
Полноценные функции высшего порядка (map, filter), замыкания ({ x in x + 1 }).
|
|
Пример замыкания
|
list.stream().map(x -> x + 1)
|
numbers.map { $0 + 1 }
|
|
Функциональный стиль
|
Есть (Stream API).
|
Встроен: map, filter, reduce, compactMap, flatMap.
|
|
Расширения
|
Только через наследование.
|
extension — можно добавлять методы к любому типу (даже системному).
|
|
Пример extension
|
—
|
extension String { var reversed: String { String(self.reversed()) } }
|
|
Паттерн matching
|
switch-case (ограниченный).
|
switch с pattern matching и where-условиями.
|
|
Пример switch
|
switch(x){ case 1: ... }
|
switch x { case 1...5: print("Range") default: break }
|
|
Коллекции
|
List, Set, Map.
|
Array, Set, Dictionary, Range, Tuple.
|
|
Асинхронность
|
Потоки, CompletableFuture, @Async.
|
async/await встроен в язык (Swift 5.5+).
|
|
Пример async
|
CompletableFuture.supplyAsync(() -> task());
|
async func load() async throws { let data = try await fetch() }
|
|
Исключения / ошибки
|
Checked и unchecked (try/catch).
|
Только throws (аналог checked), do { try ... } catch {}.
|
|
Пример ошибок
|
try { ... } catch(Exception e){}
|
do { try risky() } catch { print(error) }
|
|
Многопоточность
|
Потоки, Executor, ForkJoin.
|
Structured Concurrency: Task, TaskGroup, actor.
|
|
Параллелизм
|
Настоящие OS-потоки.
|
Lightweight cooperative tasks (actor и async runtime).
|
|
Корутины / lightweight tasks
|
CompletableFuture, Project Loom (в будущем).
|
Есть (actors, async tasks, await).
|
|
Память и производительность
|
Автоматическое управление, GC-паузы.
|
ARC — нативное управление без пауз, быстрее при локальных объектах.
|
|
Сборка и зависимости
|
Maven, Gradle.
|
Swift Package Manager (SPM), CocoaPods, Carthage.
|
|
Сборка и запуск
|
javac, java -jar.
|
swift build, swift run.
|
|
Фреймворки (backend)
|
Spring Boot, Micronaut, Quarkus.
|
Vapor, Kitura, Perfect, Hummingbird (Server-side Swift).
|
|
Фреймворки (UI / mobile)
|
JavaFX, Android SDK.
|
SwiftUI, UIKit, AppKit — декларативные UI-фреймворки.
|
|
ORM / базы данных
|
Hibernate, JPA, Spring Data.
|
Fluent ORM (Vapor), Core Data, GRDB, SQLite.swift.
|
|
Тестирование
|
JUnit, Mockito.
|
XCTest (встроен), Quick, Nimble.
|
|
Документация
|
Javadoc.
|
DocC (/// комментарии, Markdown документация).
|
|
Инструменты / IDE
|
IntelliJ IDEA, Eclipse.
|
Xcode, VS Code (через Swift extension), JetBrains AppCode.
|
|
DevTools / CI
|
Jenkins, GitLab CI, Maven.
|
Xcode Cloud, GitHub Actions, Fastlane.
|
|
Пакетирование / деплой
|
WAR/JAR, Docker, Kubernetes.
|
SwiftPM binary, App Store, Docker (server-side Swift).
|
|
Производительность
|
Высокая, но зависит от GC и JVM overhead.
|
Очень высокая (LLVM AOT-компиляция, без GC).
|
|
Кроссплатформенность
|
JVM, Android, серверы.
|
macOS, iOS, Linux, Windows (частично).
|
|
Безопасность типов
|
Строгая, но допускает NPE.
|
Полная (null safety, типы Optionals, runtime-проверки).
|
|
Параллельность (актеры)
|
Только через synchronized / lock.
|
actor — безопасный параллелизм без гонок данных.
|
|
Рефлексия
|
Class.forName(), Reflection API.
|
Ограниченная (через Mirror API).
|
|
Функциональные фишки
|
Stream API, Optional, lambda.
|
Full FP: map, filter, reduce, Optional, guard, defer, Result.
|
|
Архитектура приложений (mobile)
|
MVC, MVP, MVVM (Android).
|
MVVM, MVI (SwiftUI), Combine, declarative UI.
|
|
Backend-возможности
|
Spring Boot, Quarkus, Micronaut.
|
Vapor, Kitura, Hummingbird (SwiftNIO).
|
|
Типичные области применения
|
Android, корпоративные backend-сервисы, микросервисы.
|
iOS, macOS, серверные API, cross-platform Swift (включая Linux).
|
|
Преимущества
|
Надёжность, зрелость, зрелая экосистема.
|
Быстрота, лаконичность, безопасная память, современность, декларативный стиль.
|
|
Недостатки
|
Многословие, зависимость от JVM, GC overhead.
|
Молода серверная экосистема, зависимость от Apple-инфраструктуры.
|
|
Философия языка
|
“Write once, run anywhere.”
|
“Safe, Fast, Expressive.”
|
|
Крупные проекты
|
Netflix, LinkedIn, Android, Hadoop, Spring.
|
iOS, macOS, Xcode, Swift Playgrounds, Lyft, Airbnb, Discord (iOS).
|