| Категория | Java | Swift |
|---|---|---|
| Общее позиционирование | Классический строго типизированный язык для 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). |
| Категория | Java | Swift |
|---|---|---|
| Общее позиционирование | Классический строго типизированный язык для 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). |
// Пример кода
function hello(name) {
console.log(`Hi, ${name}!`);
}
hello("Sergey");