|
Общее позиционирование
|
Статически типизированный язык, работающий на JVM. Основной выбор для корпоративных и серверных приложений.
|
Статически типизированное надмножество JavaScript, компилируемое в JS. Применяется в веб-разработке, backend (Node.js), SPA, микросервисах.
|
|
Парадигма
|
Объектно-ориентированная (ООП) + функциональная (Stream API, lambda).
|
Мультипарадигменная: объектная, функциональная, реактивная. Добавляет строгую типизацию в JS, делая его ближе к Java.
|
|
Пример “Hello World”
|
public class App { public static void main(String[] args){ System.out.println("Hello, World"); } }
|
function main(): void { console.log("Hello, World"); } main();
|
|
Типизация
|
Статическая, строгая, проверка на этапе компиляции.
|
Статическая, но опциональная; типы проверяются при компиляции, не в runtime.
|
|
Компиляция / запуск
|
javac → байткод → JVM.
|
tsc → JavaScript → Node.js / браузер.
|
|
Среда выполнения
|
JVM (Java Virtual Machine).
|
Node.js (V8) или браузер.
|
|
Синтаксис переменных
|
int x = 10; final String s = "Hi";
|
let x: number = 10; const s: string = "Hi";
|
|
Типы данных
|
Примитивы (int, double, boolean, char) и ссылочные (String, Object).
|
number, string, boolean, any, unknown, never, void, object, null, undefined, symbol, bigint, enum, tuple.
|
|
Классы и объекты
|
Классы, интерфейсы, наследование extends, implements.
|
Классы и интерфейсы (идентичная модель); поддерживаются модификаторы public, private, protected, readonly.
|
|
Интерфейсы
|
Контракты поведения между классами.
|
Аналогично Java: интерфейсы описывают структуру объекта, без реализации.
|
|
Пример интерфейса
|
interface Service { void run(); }
|
interface Service { run(): void; }
|
|
Абстрактные классы
|
abstract class Vehicle { abstract void move(); }
|
abstract class Vehicle { abstract move(): void; }
|
|
Инкапсуляция
|
Полная — через модификаторы доступа.
|
Поддерживается аналогично (public, private, protected).
|
|
Наследование
|
extends + super().
|
extends + super().
|
|
Полиморфизм
|
Через интерфейсы и наследование.
|
Через интерфейсы, классы и duck typing.
|
|
Дженерики / шаблоны
|
List<T>, Map<K,V>.
|
<T>, <K,V> — аналогично Java Generics, но без стирания типов.
|
|
Перегрузка методов
|
По типам и количеству аргументов.
|
Имитация перегрузки через объединение сигнатур (overload signatures).
|
|
Лямбды / функции
|
x -> x * 2
|
(x: number) => x * 2
|
|
Обработка ошибок
|
try/catch/finally, checked и unchecked.
|
try/catch/finally, только runtime ошибки (unchecked).
|
|
Коллекции
|
List, Set, Map, Stream API.
|
Array<T>, Map<K,V>, Set<T>; методы .map(), .filter(), .reduce().
|
|
Асинхронность
|
Thread, CompletableFuture, @Async.
|
Promise, async/await, Event Loop (однотредовый, неблокирующий).
|
|
Пример async
|
CompletableFuture.runAsync(() -> work());
|
async function load(){ const data = await fetch('/api'); }
|
|
Многопоточность
|
Реальные потоки ОС (Thread API).
|
Event loop, неблокирующая архитектура; worker threads по желанию.
|
|
Работа с файлами
|
Files.readAllBytes(), FileReader.
|
В Node.js — fs.readFileSync(), fs.promises.readFile().
|
|
Работа с сетью
|
HttpClient, Spring WebClient.
|
fetch, axios, http / https модули.
|
|
Модули и импорты
|
import java.util.*;
|
import { readFile } from 'fs'; (ESM) или require('fs').
|
|
Зависимости
|
Maven, Gradle.
|
npm, yarn, pnpm.
|
|
Тестирование
|
JUnit, Mockito, TestNG.
|
Jest, Mocha, Jasmine, Vitest.
|
|
Документация
|
Javadoc (/** ... */).
|
TypeDoc / JSDoc (/** ... */).
|
|
Логирование
|
SLF4J, Log4j, Logback.
|
Winston, Pino, console.log.
|
|
Фреймворки backend
|
Spring Boot, Micronaut, Quarkus.
|
NestJS (аналог Spring Boot: DI, модули, контроллеры, сервисы), Express.js, Fastify.
|
|
Фреймворки frontend
|
JavaFX, Swing.
|
Angular, React, Vue (все поддерживают TypeScript).
|
|
ORM и БД
|
Hibernate, JPA, Spring Data.
|
TypeORM, Prisma, Sequelize.
|
|
Безопасность / JWT
|
Spring Security, Keycloak.
|
Passport.js, jsonwebtoken, NestJS Guards.
|
|
Документирование API
|
springdoc, Swagger/OpenAPI.
|
NestJS Swagger, tsoa, openapi-typescript.
|
|
CI/CD
|
Jenkins, GitLab CI, Maven.
|
GitHub Actions, npm scripts, Docker, Nx.
|
|
Пакетирование и деплой
|
JAR/WAR, Docker, Kubernetes.
|
npm build → JS bundle, Docker, serverless, PM2.
|
|
Работа с JSON
|
Jackson, Gson.
|
Встроенный JSON.parse(), JSON.stringify().
|
|
Статический анализ
|
SonarQube, PMD, Checkstyle.
|
ESLint, TSLint (устарел), TypeScript compiler checks.
|
|
Сборка и транспиляция
|
Maven/Gradle.
|
tsc, Webpack, Vite, esbuild, Babel.
|
|
DevTools / IDE
|
IntelliJ IDEA, Eclipse.
|
VS Code, WebStorm, JetBrains Fleet.
|
|
Профилирование
|
VisualVM, Flight Recorder.
|
Chrome DevTools, Node.js Inspector.
|
|
Производительность
|
Быстрая JIT-компиляция JVM, многопоточность.
|
Быстрее JS, но чуть медленнее Java; зависит от V8 и архитектуры.
|
|
Типичные области применения
|
Корпоративные backend-системы, Android, микросервисы.
|
Веб-frontend, Node.js backend, SPA, REST API, микросервисы.
|
|
Крупные проекты
|
Kafka, Minecraft, Jenkins.
|
Angular, VS Code, Slack, NestJS, Deno.
|
|
Преимущества
|
Безопасность типов, производительность, зрелая экосистема.
|
Простота, гибкость JS с безопасностью типов, отличная интеграция с веб-миром.
|
|
Недостатки
|
Вербозность, зависимость от JVM.
|
Компиляция в JS, неполная типовая строгость, runtime-ошибки JS возможны.
|
|
Философия
|
«Строгость и надежность через типизацию и классы».
|
«Гибкость JavaScript с безопасностью и структурой Java».
|