|
Общее позиционирование
|
Высокоуровневый, объектно-ориентированный язык, работающий на 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.
|