| Категория | Java | Rust |
|---|---|---|
| Общее позиционирование | Высокоуровневый, объектно-ориентированный язык, работающий на JVM. Безопасность и переносимость важнее производительности. | Системный язык нового поколения: низкоуровневый контроль без утечек памяти, без сборщика мусора, с безопасностью на уровне типов. |
| Парадигма | Объектно-ориентированный + функциональный. | Системный, функционально-императивный, ориентированный на безопасность и zero-cost абстракции. |
| Пример “Hello World” |
public class App { public static void main(String[] args){ System.out.println("Hello, World"); } }
|
fn main() { println!("Hello, World"); }
|
| Компиляция и исполнение | Байткод → JVM → JIT/AOT. |
AOT-компиляция в нативный бинарник (rustc main.rs -o main).
|
| Среда выполнения | JVM, байткод и JIT. | Нет виртуальной машины, нативный машинный код. |
| Типизация | Статическая, строгая, с автоматическим boxing/unboxing. |
Статическая, строгая, с выводом типов (let x = 10;) и системой заимствований.
|
| Память и управление | Автоматический GC. | Без GC — система владения (ownership), заимствований (borrowing) и времени жизни (lifetimes). Безопасность гарантируется на этапе компиляции. |
| Пример памяти |
String s = "abc"; — объект в куче, GC потом очистит.
|
let s = String::from("abc"); — удалится автоматически при выходе из области видимости.
|
| ООП-модель | Классы, интерфейсы, наследование, полиморфизм. |
Структуры (struct), трейты (trait), композиция вместо наследования.
|
| Инкапсуляция |
private, public, protected.
|
Модули и pub для экспорта, приватность по умолчанию.
|
| Наследование | Только одиночное наследование. |
Отсутствует; реализуется через trait (интерфейсы поведения).
|
| Полиморфизм | Через интерфейсы и виртуальные методы. |
Через обобщённые типы и трейты (impl Trait / trait bounds).
|
| Функции / методы | Методы внутри классов, перегрузка возможна. |
Свободные функции и методы через impl. Нет перегрузки по типу.
|
| Пример метода |
int add(int a, int b){return a+b;}
|
fn add(a: i32, b: i32) -> i32 { a + b }
|
| Дженерики / шаблоны | Generics с type erasure. | Generics с мономорфизацией — создаётся специализированный код. |
| Ошибки и исключения | Checked и unchecked exceptions. |
Нет исключений; вместо них Result<T, E> и Option<T> — всё проверяется компилятором.
|
| Пример обработки ошибок |
try { readFile(); } catch (IOException e) {}
|
match read_file() { Ok(data) => println!("{}", data), Err(e) => println!("Ошибка: {}", e), }
|
| Асинхронность / потоки |
Многопоточность через Thread, Executor, CompletableFuture.
|
Асинхронность через async/await и runtime (Tokio, async-std); zero-cost futures.
|
| Пример async |
CompletableFuture.runAsync(() -> doWork());
|
async fn run() { do_work().await; }
|
| Параллелизм | Реальные OS-потоки, synchronized, volatile. |
Безопасные потоки: std::thread, Arc<Mutex<T>>, без data race благодаря borrow checker.
|
| Коллекции |
List, Map, Set, Queue (java.util).
|
Vec<T>, HashMap<K,V>, HashSet<T>, Option<T>, Result<T,E>.
|
| Итераторы и функциональность |
Stream API (map, filter, collect).
|
Iterator API (map, filter, collect), zero-cost — без аллокаций.
|
| Работа с файлами / I/O |
Files.readAllLines().
|
std::fs::read_to_string("file.txt")?;
|
| Работа с сетью |
HttpClient, Spring WebClient.
|
reqwest, hyper, warp, axum, actix-web.
|
| Фреймворки (backend) | Spring Boot, Micronaut, Quarkus. | Actix Web, Axum, Rocket, Warp, Poem. |
| Фреймворки (CLI / desktop) | JavaFX, Swing. | Tauri, Dioxus, Iced, egui, gtk-rs. |
| ORM и БД | Hibernate, JPA, MyBatis. | Diesel, SeaORM, SQLx (асинхронный). |
| Тестирование | JUnit, Mockito, TestNG. |
Встроенные юнит-тесты (#[cfg(test)]), crates: proptest, mockall.
|
| Документация |
Javadoc (/** ... */).
|
Встроенная документация через ///, генерируется cargo doc.
|
| Сборка и зависимости | Maven, Gradle. | Cargo — универсальный менеджер сборки и зависимостей. |
| Пример сборки |
mvn package / gradle build.
|
cargo build / cargo run / cargo test.
|
| Логирование | SLF4J, Logback, Log4j. |
log, env_logger, tracing.
|
| Пакетирование / деплой | JAR, WAR, Docker. | Один бинарник без зависимостей, либо контейнеризация через Docker. |
| CI/CD | Jenkins, GitLab CI. | GitHub Actions, GitLab CI, Cargo pipelines. |
| Производительность | Быстро, но есть GC и JIT. | Очень высокая, сопоставима с C/C++; без оверхеда GC. |
| Использование памяти | Автоматическое управление, GC. | RAII, move semantics, borrow checker, zero-cost abstractions. |
| Безопасность | Исключения, проверка типов, sandbox JVM. | Безопасность на уровне компилятора, предотвращение data race, use-after-free и null-pointer. |
| Null и Option |
null и Optional<T>.
|
Нет null — только Option<T>.
|
| Макросы / метапрограммирование | Аннотации и рефлексия. |
Макросы и процедурные макросы (#[derive], macro_rules!).
|
| Функциональные элементы | Stream API, Optional, lambda. |
Полноценная функциональность: map, filter, fold, pattern matching.
|
| Паттерн-матчинг |
Через instanceof и switch.
|
match, if let, while let — очень выразительный.
|
| Пакетный менеджер | Maven Central / Gradle. | crates.io (Cargo). |
| Документирование API | Javadoc. |
cargo doc, Markdown в комментариях.
|
| Философия сборки | JVM = write once, run anywhere. | Zero-cost abstractions, no runtime, no GC, safety & speed. |
| Архитектура async runtime | Потоки, планировщики. | Event loop (epoll, io_uring) — async-await на уровне ядра. |
| Многопоточность и безопасность | Возможны race conditions, нужно synchronized. | Borrow checker гарантирует безопасность на этапе компиляции. |
| Инструменты / IDE | IntelliJ IDEA, Eclipse. | VS Code (rust-analyzer), CLion, IntelliJ Rust plugin. |
| Профилирование и анализ | VisualVM, Flight Recorder. | perf, valgrind, flamegraph, cargo-profiler. |
| Области применения | Корпоративные backend-системы, Android, микросервисы. | Системное ПО, backend (API, web-сервисы), игры, CLI, embedded, OS, блокчейн. |
| Крупные проекты | Minecraft, Kafka, Hadoop. | Firefox, Dropbox, Deno, Discord backend, Solana, Cloudflare Workers. |
| Преимущества | Простота, зрелость, обширная экосистема, переносимость. | Максимальная производительность и безопасность без GC, современный синтаксис, компиляция в один бинарник. |
| Недостатки | JVM зависимость, GC паузы, verbosity. | Более крутая кривая обучения, долгие компиляции, сложные концепции владения. |
| Философия языка | Безопасность через виртуальную машину и GC. | Безопасность через компилятор и строгую модель владения. |
| Типичные паттерны | DI (Spring), MVC, DAO, Singleton. | Композиция, trait-based polymorphism, dependency injection вручную. |
| Цель и философия | Упростить промышленное программирование без ошибок памяти. | Дать производительность C с безопасностью Java. |
| Категория | Java | Rust |
|---|---|---|
| Общее позиционирование | Высокоуровневый, объектно-ориентированный язык, работающий на JVM. Безопасность и переносимость важнее производительности. | Системный язык нового поколения: низкоуровневый контроль без утечек памяти, без сборщика мусора, с безопасностью на уровне типов. |
| Парадигма | Объектно-ориентированный + функциональный. | Системный, функционально-императивный, ориентированный на безопасность и zero-cost абстракции. |
| Пример “Hello World” |
public class App { public static void main(String[] args){ System.out.println("Hello, World"); } }
|
fn main() { println!("Hello, World"); }
|
| Компиляция и исполнение | Байткод → JVM → JIT/AOT. |
AOT-компиляция в нативный бинарник (rustc main.rs -o main).
|
| Среда выполнения | JVM, байткод и JIT. | Нет виртуальной машины, нативный машинный код. |
| Типизация | Статическая, строгая, с автоматическим boxing/unboxing. |
Статическая, строгая, с выводом типов (let x = 10;) и системой заимствований.
|
| Память и управление | Автоматический GC. | Без GC — система владения (ownership), заимствований (borrowing) и времени жизни (lifetimes). Безопасность гарантируется на этапе компиляции. |
| Пример памяти |
String s = "abc"; — объект в куче, GC потом очистит.
|
let s = String::from("abc"); — удалится автоматически при выходе из области видимости.
|
| ООП-модель | Классы, интерфейсы, наследование, полиморфизм. |
Структуры (struct), трейты (trait), композиция вместо наследования.
|
| Инкапсуляция |
private, public, protected.
|
Модули и pub для экспорта, приватность по умолчанию.
|
| Наследование | Только одиночное наследование. |
Отсутствует; реализуется через trait (интерфейсы поведения).
|
| Полиморфизм | Через интерфейсы и виртуальные методы. |
Через обобщённые типы и трейты (impl Trait / trait bounds).
|
| Функции / методы | Методы внутри классов, перегрузка возможна. |
Свободные функции и методы через impl. Нет перегрузки по типу.
|
| Пример метода |
int add(int a, int b){return a+b;}
|
fn add(a: i32, b: i32) -> i32 { a + b }
|
| Дженерики / шаблоны | Generics с type erasure. | Generics с мономорфизацией — создаётся специализированный код. |
| Ошибки и исключения | Checked и unchecked exceptions. |
Нет исключений; вместо них Result<T, E> и Option<T> — всё проверяется компилятором.
|
| Пример обработки ошибок |
try { readFile(); } catch (IOException e) {}
|
match read_file() { Ok(data) => println!("{}", data), Err(e) => println!("Ошибка: {}", e), }
|
| Асинхронность / потоки |
Многопоточность через Thread, Executor, CompletableFuture.
|
Асинхронность через async/await и runtime (Tokio, async-std); zero-cost futures.
|
| Пример async |
CompletableFuture.runAsync(() -> doWork());
|
async fn run() { do_work().await; }
|
| Параллелизм | Реальные OS-потоки, synchronized, volatile. |
Безопасные потоки: std::thread, Arc<Mutex<T>>, без data race благодаря borrow checker.
|
| Коллекции |
List, Map, Set, Queue (java.util).
|
Vec<T>, HashMap<K,V>, HashSet<T>, Option<T>, Result<T,E>.
|
| Итераторы и функциональность |
Stream API (map, filter, collect).
|
Iterator API (map, filter, collect), zero-cost — без аллокаций.
|
| Работа с файлами / I/O |
Files.readAllLines().
|
std::fs::read_to_string("file.txt")?;
|
| Работа с сетью |
HttpClient, Spring WebClient.
|
reqwest, hyper, warp, axum, actix-web.
|
| Фреймворки (backend) | Spring Boot, Micronaut, Quarkus. | Actix Web, Axum, Rocket, Warp, Poem. |
| Фреймворки (CLI / desktop) | JavaFX, Swing. | Tauri, Dioxus, Iced, egui, gtk-rs. |
| ORM и БД | Hibernate, JPA, MyBatis. | Diesel, SeaORM, SQLx (асинхронный). |
| Тестирование | JUnit, Mockito, TestNG. |
Встроенные юнит-тесты (#[cfg(test)]), crates: proptest, mockall.
|
| Документация |
Javadoc (/** ... */).
|
Встроенная документация через ///, генерируется cargo doc.
|
| Сборка и зависимости | Maven, Gradle. | Cargo — универсальный менеджер сборки и зависимостей. |
| Пример сборки |
mvn package / gradle build.
|
cargo build / cargo run / cargo test.
|
| Логирование | SLF4J, Logback, Log4j. |
log, env_logger, tracing.
|
| Пакетирование / деплой | JAR, WAR, Docker. | Один бинарник без зависимостей, либо контейнеризация через Docker. |
| CI/CD | Jenkins, GitLab CI. | GitHub Actions, GitLab CI, Cargo pipelines. |
| Производительность | Быстро, но есть GC и JIT. | Очень высокая, сопоставима с C/C++; без оверхеда GC. |
| Использование памяти | Автоматическое управление, GC. | RAII, move semantics, borrow checker, zero-cost abstractions. |
| Безопасность | Исключения, проверка типов, sandbox JVM. | Безопасность на уровне компилятора, предотвращение data race, use-after-free и null-pointer. |
| Null и Option |
null и Optional<T>.
|
Нет null — только Option<T>.
|
| Макросы / метапрограммирование | Аннотации и рефлексия. |
Макросы и процедурные макросы (#[derive], macro_rules!).
|
| Функциональные элементы | Stream API, Optional, lambda. |
Полноценная функциональность: map, filter, fold, pattern matching.
|
| Паттерн-матчинг |
Через instanceof и switch.
|
match, if let, while let — очень выразительный.
|
| Пакетный менеджер | Maven Central / Gradle. | crates.io (Cargo). |
| Документирование API | Javadoc. |
cargo doc, Markdown в комментариях.
|
| Философия сборки | JVM = write once, run anywhere. | Zero-cost abstractions, no runtime, no GC, safety & speed. |
| Архитектура async runtime | Потоки, планировщики. | Event loop (epoll, io_uring) — async-await на уровне ядра. |
| Многопоточность и безопасность | Возможны race conditions, нужно synchronized. | Borrow checker гарантирует безопасность на этапе компиляции. |
| Инструменты / IDE | IntelliJ IDEA, Eclipse. | VS Code (rust-analyzer), CLion, IntelliJ Rust plugin. |
| Профилирование и анализ | VisualVM, Flight Recorder. | perf, valgrind, flamegraph, cargo-profiler. |
| Области применения | Корпоративные backend-системы, Android, микросервисы. | Системное ПО, backend (API, web-сервисы), игры, CLI, embedded, OS, блокчейн. |
| Крупные проекты | Minecraft, Kafka, Hadoop. | Firefox, Dropbox, Deno, Discord backend, Solana, Cloudflare Workers. |
| Преимущества | Простота, зрелость, обширная экосистема, переносимость. | Максимальная производительность и безопасность без GC, современный синтаксис, компиляция в один бинарник. |
| Недостатки | JVM зависимость, GC паузы, verbosity. | Более крутая кривая обучения, долгие компиляции, сложные концепции владения. |
| Философия языка | Безопасность через виртуальную машину и GC. | Безопасность через компилятор и строгую модель владения. |
| Типичные паттерны | DI (Spring), MVC, DAO, Singleton. | Композиция, trait-based polymorphism, dependency injection вручную. |
| Цель и философия | Упростить промышленное программирование без ошибок памяти. | Дать производительность C с безопасностью Java. |
// Пример кода
function hello(name) {
console.log(`Hi, ${name}!`);
}
hello("Sergey");