Стек технологий, используемый в работе с Java Virtual Machine
Подборка технологий, инструментов, фреймворков и библиотек для создания утилит и интеграционных решений на Java/Scala.
5К открытий6К показов
Подборку подготовил Дмитрий Плужников, директор департамента прикладных разработок Arenadata
Мы — IT-вендор, разрабатывающий собственные продукты на базе Open Source проектов (Greenplum, Hadoop, Apache Kafka, Apache NiFi, ClickHouse и др.). В этом кратком обзоре речь пойдёт об инструментах и технологиях, которые используются в нашей компании для создания утилит и интеграционных решений на Java/Scala.
Технологический ландшафт
- Apache ZooKeeper — сервер для высоконадёжной распределённой координации приложений;
- Apache Spark — фреймворк с открытым исходным кодом для реализации распределённой обработки неструктурированных и слабоструктурированных данных, входящий в экосистему проектов Hadoop;
- Apache Kafka — распределённый программный брокер сообщений;
- Apache NiFi — ETL-инструмент с открытым исходным кодом;
- ClickHouse — колоночная аналитическая СУБД (Яндекс);
- Tarantool — система управления in-memory БД (база данных) с неблокирующим сервером (Mail.ru Group);
- Greenplum — массивно-параллельная СУБД для хранилищ данных на основе PostgreSQL.
Инструменты
- YourKit Java Profiler — для профилирования процессора и памяти Java;
- SonarQube — для анализа качества программного кода;
- Git — система управления версиями;
- SBT — система автоматической сборки для Java и Scala;
- Apache Maven и Gradle — для автоматизации сборки проектов;
- Jenkins — для обеспечения процесса непрерывной интеграции программного обеспечения;
- Portainer — для управления Docker-контейнерами;
- Docker — программа для автоматизации развёртывания и управления приложениями и контейнеризации приложений;
- Docker Compose — для запуска и управления Docker-контейнерами.
Библиотеки и фреймворки
- Spring Framework — универсальный фреймворк как основа для наших Java-приложений;
- Lombok — проект по добавлению дополнительной функциональности в Java c помощью изменения исходного кода перед компиляцией;
- Vert.x — фреймворк для реализаций реактивных сервисов;
- Apache Calcite — фреймворк для синтаксического анализа и построения SQL-выражений, а также для планирования запросов;
- JUnit — фреймворк для написания юнит-тестов;
- Akka, Akka HTTP, Akka Streams — набор инструментов для создания параллельных, распределённых и отказоустойчивых приложений для Java и Scala;
- Finagle — расширяемая RPC-система от компании Twitter для построения высоконагруженных систем;
- ScalikeJDBC — библиотека для доступа к БД с помощью JDBC;
- ScalaTest, TestContainers — для написания unit и интеграционных тестов;
- Spark (Core, Streaming, SQL) — для реализации коннекторов к различным источникам данных.
Для работы с фреймворком Spring также может быть полезен Spring Boot. Это проект, который упрощает создание приложений на основе Spring.
У нас есть статья, которая знакомит со Spring Boot на примере разработки простого веб-приложения.
5К открытий6К показов