|
Общее позиционирование
|
Статически типизированный компилируемый в байткод язык для JVM, ориентирован на крупные корпоративные системы, Android, серверы, микросервисы.
|
Интерпретируемый динамически типизированный язык общего назначения, удобен для быстрой разработки, аналитики, автоматизации, ML и web-backend.
|
|
Парадигма
|
Объектно-ориентированная + императивная + функциональные элементы (lambda, stream).
|
Мультипарадигменный: процедурный, объектный, функциональный, скриптовый.
|
|
Пример «Hello World»
|
public class App { public static void main(String[] args){ System.out.println("Hello, World"); } }
|
print("Hello, World")
|
|
Структура проекта
|
Жёсткая структура пакетов и классов; entry-point через public static void main.
|
Любой файл .py — исполняемый модуль; входная точка обычно if __name__ == "__main__": main().
|
|
Компиляция и запуск
|
javac → байткод → JVM; JIT-компиляция.
|
Одноступенчатое выполнение интерпретатором (python script.py); возможна JIT-компиляция через PyPy.
|
|
Типизация
|
Статическая и строгая; типы указываются явно.
|
Динамическая и нестрогая; типы определяются в runtime; с 3.5 + возможна аннотация (typing).
|
|
Переменные и константы
|
int x = 10; final double PI = 3.14;
|
x = 10; константы по соглашению (PI = 3.14) — компилятор их не защищает.
|
|
Классы и объекты
|
Классы, наследование (extends), интерфейсы (implements), абстрактные классы.
|
Всё — объект; классы и множественное наследование, mixin-ы; нет интерфейсов, но есть ABC-модули (Abstract Base Classes).
|
|
ООП и композиция
|
Строгое ООП с инкапсуляцией и модификаторами доступа.
|
Гибкое ООП: атрибуты и методы можно добавлять динамически; приватность условная (по соглашению _var).
|
|
Функции
|
Только в классах (методы) или статические — через static.
|
Функции первого класса; можно объявлять в любом месте, вложенные и лямбда-функции.
|
|
Обработка ошибок
|
Исключения (try/catch/finally), checked и unchecked.
|
Исключения (try/except/finally), один тип — все runtime.
|
|
Коллекции
|
List, Map, Set, Queue; Stream API для функциональной обработки.
|
list, dict, set, tuple; встроенные comprehensions и итераторы.
|
|
Условные и циклы
|
if, for, while, do while, switch.
|
if/elif/else, for in range(), while; нет switch; есть тернарный a if cond else b.
|
|
Асинхронность и многопоточность
|
Потоки (Thread, Executor, CompletableFuture), parallel stream.
|
async/await, asyncio, многопроцессность (multiprocessing), потоки с GIL (параллельность ограничена).
|
|
Работа с файлами
|
FileReader, BufferedReader, Files.
|
Контекстные менеджеры — with open("file") as f: — удобная безопасная модель.
|
|
Модули и зависимости
|
Maven/Gradle; декларации в pom.xml/build.gradle.
|
Встроенный pip, виртуальные окружения venv, poetry; зависимости в requirements.txt или pyproject.toml.
|
|
Тестирование
|
JUnit, TestNG, Mockito.
|
unittest, pytest, doctest.
|
|
Документация
|
Javadoc, комментарии /** ... */.
|
docstring в теле функций (""" описание """), генерация через sphinx.
|
|
Логирование
|
SLF4J, Log4j, Logback.
|
logging (встроенный модуль), или loguru.
|
|
Фреймворки / Web
|
Spring Boot, Jakarta EE, Micronaut, Quarkus.
|
Django, Flask, FastAPI, Tornado, aiohttp.
|
|
ORM и БД
|
Hibernate, JPA, MyBatis.
|
Django ORM, SQLAlchemy, Tortoise-ORM.
|
|
Безопасность / JWT
|
Spring Security, Keycloak, Shiro.
|
PyJWT, Authlib, FastAPI OAuth2.
|
|
Документирование API
|
Springdoc / OpenAPI.
|
FastAPI — автоматический OpenAPI и Swagger UI.
|
|
CLI и утилиты
|
Maven, Gradle, JAR-плагины.
|
pip, poetry, click, typer.
|
|
Память и управление
|
GC JVM, нет указателей.
|
Автоматический GC (референс-счётчик + сборщик циклов), всё через ссылки.
|
|
Производительность
|
Быстрая JIT-компиляция; высокая скорость и многопоточность.
|
Медленнее (JIT нет в CPython); ускоряется через NumPy (С-расширения) или PyPy.
|
|
Инструменты DevOps
|
Jenkins, Maven, Docker, Gradle, Kubernetes.
|
Ansible, Fabric, Airflow, Celery, Jupyter, Docker.
|
|
ML и аналитика
|
Используется через обёртки (JVM Spark, DL4J).
|
Основной язык Data Science: NumPy, Pandas, Scikit-Learn, TensorFlow, PyTorch.
|
|
Сборка и деплой
|
Компиляция → JAR/WAR → запуск на JVM.
|
Скрипты или Docker-контейнер; можно собирать в exe через PyInstaller.
|
|
Кроссплатформенность
|
Полная (где есть JVM).
|
Полная (Windows/Linux/macOS, интерпретатор).
|
|
Пример REST сервиса
|
@RestController @GetMapping("/api") public String hi(){return "ok";}
|
from flask import Flask app=Flask(__name__) @app.route('/api') def hi(): return "ok"
|
|
Асинхронный REST
|
Spring WebFlux (Reactor).
|
FastAPI / aiohttp с async def.
|
|
Преимущества
|
Строгая типизация, скорость, масштабируемость, богатая экосистема.
|
Простота, короткий код, огромное число библиотек (ML, web, скрипты), высокая скорость разработки.
|
|
Недостатки
|
Вербозность, долгая компиляция, большой рантайм.
|
Медленное выполнение, отсутствие строгих типов, GIL ограничивает многопоточность.
|
|
Типичные области применения
|
Корпоративные и финансовые системы, Android, микросервисы, бэк-офис.
|
Аналитика и ML, веб-backend (Django/Flask), DevOps скрипты, автоматизация, прототипирование.
|
|
Крупные проекты
|
Kafka, Elasticsearch, Hadoop, Jenkins.
|
YouTube, Instagram, Reddit, Dropbox, OpenAI, TensorFlow.
|
|
Философия
|
«Напиши строго, но надежно». Максимум контроля, минимум сюрпризов.
|
«Readability counts». Простота и скорость разработки важнее формальностей.
|