|
Общее позиционирование
|
Высокоуровневый объектно-ориентированный язык, работающий на JVM. «Пиши один раз — запускай везде». Корпоративный, безопасный, GC, развитая экосистема.
|
Универсальный системный язык, компилируемый в машинный код. Максимальный контроль над памятью и производительностью. Используется от микроконтроллеров до ядра ОС.
|
|
Парадигма
|
Объектно-ориентированный, частично функциональный (Streams, lambda).
|
Мультипарадигменный: процедурный, ООП, шаблонный (template), функциональный.
|
|
Пример “Hello World”
|
public class App { public static void main(String[] args){ System.out.println("Hello, World"); } }
|
#include <iostream> using namespace std; int main(){ cout << "Hello, World"; }
|
|
Компиляция и запуск
|
javac → байткод → JVM → JIT
|
g++ main.cpp -o main && ./main (AOT-компиляция в машинный код)
|
|
Типизация
|
Статическая и строгая, с автоматической упаковкой/распаковкой примитивов.
|
Статическая, строгая, с возможностью вывода типа (auto с C++11).
|
|
Исполняемая среда
|
Требуется JVM.
|
Нативный бинарник без виртуальной машины.
|
|
Память и управление
|
Автоматический GC; нет указателей, только ссылки.
|
Ручное управление памятью (new/delete) + RAII + умные указатели (unique_ptr, shared_ptr).
|
|
Производительность
|
Высокая, но ниже, чем у нативного кода (из-за JVM и GC).
|
Максимальная, ближе всего к C и ассемблеру; управление на уровне железа.
|
|
Переменные и типы
|
int x = 10; double y = 3.14;
|
int x = 10; double y = 3.14; auto z = x + y;
|
|
Классы и объекты
|
Только ссылочные типы; всё создаётся через new; всё наследует Object.
|
Классы и структуры; могут быть на стеке или в куче; множественное наследование; нет общего базового класса.
|
|
Интерфейсы и абстракция
|
Интерфейсы (interface) и абстрактные классы; реализация через implements / extends.
|
Абстрактные классы и виртуальные функции (virtual), чисто виртуальные методы (=0). Нет отдельного ключевого слова “interface”.
|
|
ООП и наследование
|
Одно наследование классов, множественная реализация интерфейсов.
|
Полное множественное наследование, включая реализацию; разрешение конфликтов через виртуальные базы.
|
|
Инкапсуляция
|
Модификаторы доступа: public, private, protected, package-private.
|
Такие же уровни (public, private, protected), без пакетной области.
|
|
Полиморфизм
|
Виртуальные методы по умолчанию (через интерфейсы).
|
Виртуальные методы явные; можно отключать (final) или включать вручную.
|
|
Конструкторы / деструкторы
|
Конструкторы, финализаторы (finalize() — устарел), управление памятью через GC.
|
Конструкторы и деструкторы с детерминированным временем вызова (RAII).
|
|
Шаблоны / Дженерики
|
Generics — стираются при компиляции (type erasure).
|
Templates — создают реальные версии кода на этапе компиляции (code generation).
|
|
Функции и лямбды
|
Лямбды и Stream API (с Java 8).
|
Лямбды, функторы, std::function (C++11+).
|
|
Исключения
|
Checked и unchecked исключения, try/catch/finally.
|
Исключения (throw, catch), но checked отсутствуют. Можно полностью отключить (-fno-exceptions).
|
|
Коллекции
|
List, Map, Set, Queue (java.util.*) + Stream API.
|
STL (vector, map, set, queue, list, unordered_map, и т.д.).
|
|
Работа с файлами / I/O
|
java.io, java.nio, Files.readAllLines()
|
fstream, ifstream, ofstream, std::filesystem.
|
|
Параллелизм и многопоточность
|
Потоки (Thread, Executor, CompletableFuture), синхронизация synchronized.
|
Потоки (std::thread), мьютексы (std::mutex), атомики, std::async, future.
|
|
Асинхронность
|
CompletableFuture, Reactive Streams (WebFlux).
|
std::future, std::async, корутины (C++20 co_await).
|
|
Работа с сетью
|
java.net, HttpClient, NIO Channels, Spring WebClient.
|
Boost.Asio, cpprestsdk, cpr, libcurl.
|
|
Модули и зависимости
|
Maven / Gradle; JAR, WAR; Java Modules (JPMS).
|
CMake, Makefile, Conan, vcpkg; #include + линковка библиотек.
|
|
Тестирование
|
JUnit, TestNG, Mockito.
|
GoogleTest (gtest), Catch2, doctest.
|
|
Документация
|
Javadoc.
|
Doxygen, комментарии ///.
|
|
Логирование
|
SLF4J, Log4j, Logback.
|
spdlog, loguru, Boost.Log.
|
|
Фреймворки / Web
|
Spring Boot, Jakarta EE, Micronaut, Quarkus.
|
Crow, Pistache, CppRest, Drogon, oatpp.
|
|
ORM и БД
|
Hibernate, JPA, MyBatis, Spring Data.
|
SOCI, ODB ORM, sqlitecpp, pqxx, nanodbc.
|
|
GUI
|
JavaFX, Swing, AWT.
|
Qt, wxWidgets, ImGui, FLTK.
|
|
Игровые движки
|
jMonkeyEngine, LibGDX.
|
Unreal Engine, Unity (через C#), Godot (C++ core).
|
|
Безопасность / шифрование
|
Java Cryptography API, BouncyCastle.
|
OpenSSL, libsodium, Botan.
|
|
Документирование API
|
OpenAPI через springdoc.
|
Doxygen + OpenAPI bindings.
|
|
Инструменты сборки / CI
|
Maven, Gradle, Jenkins, GitLab CI.
|
CMake, Make, Bazel, Ninja, Conan, GitHub Actions.
|
|
Пакетирование / деплой
|
JAR/WAR под JVM, Docker, Kubernetes.
|
Нативные бинарники (.exe, ELF), статическая или динамическая линковка.
|
|
Производительность
|
Высокая, но JIT и GC добавляют оверхед.
|
Выше, чем у Java; ближе к аппаратному уровню.
|
|
Размер приложения
|
JAR + JVM (~20–100 МБ).
|
Один бинарник (~1–10 МБ), без рантайма.
|
|
Кроссплатформенность
|
JVM обеспечивает независимость от ОС.
|
Кроссплатформенность достигается перекомпиляцией (Windows/Linux/macOS).
|
|
Сборка мусора
|
Автоматическая (GC).
|
Нет GC; управление вручную или через RAII.
|
|
Многопоточность и синхронизация
|
Встроенная модель Thread, synchronized, volatile.
|
std::thread, std::mutex, std::atomic, std::lock_guard, condition_variable.
|
|
Функциональные возможности
|
Лямбды, Streams, Optional, pattern matching (в новых версиях).
|
Лямбды, ranges (C++20), std::optional, variant, concepts.
|
|
Современные стандарты
|
Java 17+ (LTS), Java 21 (в 2024).
|
C++17, C++20, C++23 (развитие STL, ranges, modules).
|
|
Преимущества
|
Простота и безопасность, кроссплатформенность, автоматическая память, огромная экосистема.
|
Максимальный контроль, скорость, возможности low-level, гибкость и zero-cost абстракции.
|
|
Недостатки
|
Медленнее C++; требует JVM; verbose синтаксис.
|
Сложный язык, ручное управление памятью, возможны утечки.
|
|
Типичные области применения
|
Корпоративные системы, Android, микросервисы, FinTech, backend.
|
Системное ПО, игры, high-performance, embedded, компиляторы, движки, графика.
|
|
Крупные проекты
|
Minecraft, Kafka, Jenkins, Hadoop.
|
Chrome, Unreal Engine, Windows, Blender, MySQL.
|
|
Философия
|
Безопасность и переносимость важнее скорости.
|
Контроль и производительность важнее простоты.
|