Код
#Мнения

Как выбрать фреймворк для бэкенда: мнения разработчиков

Опытные разработчики рассказывают о том, какие фреймворки для бэкенда существуют и для каких задач они подходят.

Иллюстрация: Merry Mary для Skillbox Media

У каждого разработчика — свои любимые фреймворки для построения бэкенда. Разбираемся вместе с опытными программистами, какой из фреймворков лучше впишется в проект.

Выбор фреймворка для бэкенда: общие принципы

Лев Кудряшов


Разработчик в «Точке». Стек — Python, Java, Kotlin. Специализация — бэкенд. Пишет статьи на «Хабре» и для Skillbox Media, участвует в подкастах.


Ссылки


В вебе фреймворки используются для построения и клиентской, и серверной части приложений. Сегодня расскажем, как выбрать фреймворк для серверной части, а в следующий раз поговорим о фронтенде.

В первую очередь выбор веб-фреймворка на сервере зависит от языка программирования. Если у вас в команде питонисты, вряд ли вы будете переводить их на Java — соответственно, вы будете танцевать от людей. А если проект новый и вы определяетесь и с задачами, и с языком, то тут надо отталкиваться от денег, философии, скорости работы, комьюнити и от того, что вам нравится. В общем, вечный вопрос для холиваров :)

Ещё надо смотреть на поставленные задачи. Если вам нужен «тупенький» веб-прокси, который мало что делает — просто отдаёт два-три JSON, — подойдёт любой легковесный фреймворк. Например, тот же Flask.

Есть асинхронные фреймворки — AIOHTTP/FastAPI/Tornado. Асинхронщина нужна, когда у вас большой пул подключаемых клиентов и, соответственно, много запросов от них — они помогают не убить сервер и не тратиться на ресурсы, чтобы выстроить эту махину в синхронных движках.

Каждый из популярных веб-фреймворков всегда рассматривают по канону «готовых плюшек». Например, в Python это Django и AIOHTTP, а в Java — Spring / Spring Boot. Их чаще всего берут за канон, потому что они содержат кучу дополнительных инструментов: авторизацию, cookies, заголовки HTTP, всякие приятные плюшки, гарантии инфобеза, которые не надо писать самостоятельно. Кстати, в Kotlin можно использовать асинхронный и легковесный Ktor — правда, у него есть проблема: отсутствует сильная инфраструктура. Поэтому, в отличие от того же Spring, многое приходится дописывать вручную.

Конечно, есть зависимость и от типа задачек: хотите ли вы в одной системе с вебом использовать БД и кэширование, например. Нужна вам MVC, Rest API, или вы вообще хотите выстраивать коммуникации на JSON-RPC. Нужна ли встроенная админка для веба.

Когда вы выбрали веб-фреймворк, вы фактически выбрали целый стек технологий. Но по своему опыту могу сказать: почти все популярные стеки способны решать более-менее сопоставимый пул задач.

Выбирая фреймворк, обычно смотрят, даёт ли он следующие возможности и нужны ли они вам в проекте:

  • гибко строить Route,
  • работать с REST,
  • работать с cookies и заголовками запросов,
  • работать с телами запросов непосредственно.

Также стоит обратить внимание вот на что:

  • удобно ли организована работа с PATH;
  • что по CSRF-защите;
  • что по защите от SQL injection;
  • на какой серверный движок завязан фреймворк (Tomcat, Gunicorn, Uvicorn);
  • есть ли базовые инструменты для авторизации;
  • есть ли базовые инструменты для ролей и пользователей;
  • есть ли базовые инструменты для кэширования запросов;
  • есть ли возможности редиректов и прочего;
  • насколько быстро фреймворк отрабатывает запросы и какой у него RPS в принципе.

Александр Макеев


Senior Software Engineer в Layermark.


Ссылки


Для бэкенда самыми популярным языками являются JavaScript, Python, Ruby, Java, C#, Go и PHP.

Для простых проектов и задач выбор языка практически не имеет значения. Времена сложных конфигураций с веб-серверами и XML давно прошли, а с текущими MVC-фреймворками написать простое приложение можно на любом языке. Что на Node.js, что на Spring Boot развернуть веб приложение можно всего за несколько минут.

Если же вам нужна автоматическая генерация CRUD веб-страниц, можно использовать Ruby on Rails для Ruby или Grails для Java.

Что касается сложных и объёмных проектов с долгосрочной поддержкой, лучше отдавать предпочтение статически типизированным и компилируемым языкам, таким как C#, Go и Java.

В больших проектах скорость написания кода не очень важна, зато более приоритетной является скорость анализа при чтении кода и возможности недеструктивного рефакторинга, особенно если вы имеете дело со сложной бизнес-логикой.

И наконец, фреймворки ASP.NET для C# и Spring для Java, благодаря большому набору компонентов в DI-экосистеме, предоставляют все возможности для удобного проектирования и точной конфигурации веб-приложения.

Игорь Лопушко


Backend Teamlead в RBI Retail Innovation.


Ссылки


При выборе языка и фреймворка для бэкенда обычно учитывают следующие критерии:

Размер и сложность проекта. Если это небольшой проект или MVP, когда стоят короткие сроки выполнение проекта, то можно выбирать тот язык и фреймворк, в которых есть знание у команды или легко найти специалистов на рынке. Очень часто, особенно на аутсорсе, решение принимается в зависимости от отдела, куда попадает проект. К примеру, один и тот же проект может быть сделан с использованием как Java, так и .NET.

Тип проекта. Разные типы проектов требуют различных технологий. К примеру, приложения с интенсивным использованием данных, системы бронирования, приложения для социальных сетей, потоковые приложения, CMS, IoT, приложения в банковской сфере, торговые площадки и простые MVP, скорее всего, потребуют различных языков программирования и фреймворков.

Стоимость. Многие технологии, фреймворки и среды разработки требуют лицензии, но есть и много бесплатных вариантов. На практике, скорее всего, у вас будет выбор между платными инструментами, но с большей функциональностью и поддержкой, или бесплатные, но с ограниченным набором функций.

В моей практике чаще всего всё зависело от языка программирования, которым владеет команда. Если команда пишет на C#, то и весь стек связан с платформой .NET. Если команда пишет на Java, то и фреймворки, соответственно, Spring, Hibernate и так далее.

Ещё бы я разделил проекты на корпоративные и не корпоративные. Существует мнение, что корпоративные проекты чаще всего пишутся на Java или .NET. Хотя в последнее время такие языки и фреймворки, как Go, Node.js и Python, составляют достойную конкуренцию по многим параметрам.

Вячеслав Шаго


Senior Software Engineer/Technical Lead.


При выборе фреймворка или языка программирования необходимо всегда обращать внимание в первую очередь на его популярность и наличие экспертов в команде (или на рынке). Это позволит в будущем избежать проблем с поиском кадров. Можно выбрать в качестве языка, например, Scala или Clojure, которые, безусловно, имеют свои сильные стороны относительно консервативной Java, но потом столкнуться с серьёзной проблемой поиска специалистов, когда необходимо будет усилить команду или заменить сотрудников, которые решили покинуть проект.

Второй момент — это зрелость продукта. Всегда хочется использовать что-то новое и модное, но стоит быть готовым к тому, что молодой продукт может иметь достаточно серьёзные баги. Существуют примеры, когда необходимые доработки фреймворка ждут исправления месяцы, а то и годы. Не стоит также исключать, что в какой-то момент разработка фреймворка может быть остановлена. На мой взгляд, всегда стоит отдавать предпочтение проверенным временем продуктам. В качестве примера можно привести Java и Spring. Это практически стандарт де-факто в разработке бизнес-сервисов. Огромная накопленная база знаний сводит почти к нулю вероятность столкнуться с неразрешимой проблемой.

Стоить отметить, что в современной архитектуре приложений всё больше используется микросервисный подход. Он позволяет разделить большое приложение на много маленьких сервисов. Это позволяет многократно снизить последствия от неправильно выбранного языка программирования или фреймворка, и позволяет развязать руки в экспериментировании. Так как сервис мал, то в любой момент его можно достаточно быстро переписать.

Всегда стоит сохранять прагматичный подход к решению проблемы. При выборе того или иного продукта взвешивать преимущества и возможные негативные последствия на дальнейшую разработку.

Как выбирать фреймворки и языки программирования для бэкенда с точки зрения карьеры

Антон Губарев


Занимается платформенной разработкой в «Авито». Пишет на Go и Python. Интересуется инфраструктурой, архитектурой распределённых приложений, построением отказоустойчивых сервисов, микросервисной архитектурой, DevOps. Ведёт телеграм-канал «Техлидошная».


Выбор фреймворка, равно как и языка программирования, зависит от множества факторов. Я приведу основные, самые значимые, на которые смотрю сам.

Востребованность технологии. Насколько много вакансий на рынке, какие в среднем зарплаты. Причём лучше посмотреть по разным странам. Например, PHP-фреймворк Laravel очень популярен на Западе и сильно обгоняет своего конкурента Symfony, а значит, работу на нём будет находить значительно проще. А вот Yii имеет некоторую популярность только в России — да и то вакансий немного.

Порог входа. От этого зависит то, насколько быстро можно начать зарабатывать на этой технологии и решать реальные задачи. Например, у языка Java достаточно высокий порог входа, и даже если у вас за плечами несколько лет опыта в кодинге на другом языке программирования, не факт, что получится быстро перепрыгнуть в Java и сохранить уровень дохода.

Требования. Важно понимать, что от вас ждёт работодатель, и обычно это прописывается в вакансиях. Сколько лет опыта должно быть, нужно ли техническое образование и так далее. Например, при разработке хранилищ данных, скорее всего, без математического образования обойтись не получится.

Перспективность. Технологии могут устаревать и терять востребованность. Важно смотреть за динамикой роста популярности языков программирования и фреймворков. Например, Python держит позиции за счёт развивающегося направления машинного обучения, и вкладываться в него точно имеет смысл. Язык Go всё чаще используется для микросервисов в крупных компаниях, но нет гарантий, что этот тренд сохранится надолго.

Интерес. Конечно, нельзя добиться весомых результатов, работая с тем, что не драйвит и не вызывает интереса. Поэтому это очень важный пункт. Но учтите, что интересы со временем могут меняться — и это нормально.

Как выбирают фреймворки на аутсорсе

Сергей Чиннов


Основатель и коммерческий директор компании «Брендпорт».


Мы выбираем фреймворк, задаваясь простым вопросом: «Какие потребности у заказчика?» Если заказчик может указать в техзадании пожелания по языку программирования и фреймворку, то в большинстве случаев мы будем работать с этими пожеланиями. Если же у заказчика нет определённых предпочтений, требований или он предлагает не очень подходящий под задачу, по нашему мнению, фреймворк, мы предложим продукт, на котором специализируется наша команда.

И если до этого мы уже реализовали несколько проектов, например, на связке React + Django (бэкенд на Django и фронтенд на React), то будем предлагать такой вариант заказчику, а также усиливать свою команду в этом направлении.

Фреймворки для бэкенда в экосистеме JavaScript

Максим Хаванских


Backend Developer в Digital-продакшене Escape Tech.


При разработке нового продукта программист решает ряд типовых и архитектурных задач. Суть в том, что они обычно требуют похожих реализаций от проекта к проекту. Чтобы ускорить процесс разработки продукта и не дублировать ненужный код, на помощь программистам приходят фреймворки. Они реализуют низкоуровневые задачи, позволяя приступить к закрытию бизнес-потребности. При выборе инструментов обратите внимание на следующие параметры:

  • скорость работы;
  • масштабируемость;
  • частота обновления;
  • удобство использования и поддержка кода.

Я работаю на Node.js более пяти лет. И за это время выделил три самых удачных инструмента в разработке на этой платформе.

Fastify

Фреймворк, ориентированный на обработку HTTP-запросов. По заявлениям разработчиков, является самым быстрым и способен держать нагрузку порядка 60k RPS в тестах. Поддерживает «из коробки» возможность валидации тела JSON и запросов TypeScript, а также может описывать логику в стиле async/await — делает код более читаемым. Имеет обширный набор пользовательских плагинов, среди которых работа с базами данных и очередями. Большим плюсом являются также частые обновления и поддержка фреймворка разработчиками.

TypeORM

Отличный инструмент для работы с реляционными базами, среди которых на данный момент PostgreSQL, MySQL, Microsoft SQL Server, Oracle Database. Что примечательно, поддерживает MongoDB, но пока в экспериментальном режиме.

Данный фреймворк позволяет описывать структуру базы данных в виде классов (сущностей) и определять между ними отношения, используя TypeScript-декораторы.

Socket.IO

Предназначен для работы с WebSocket-соединениями. Для этого фреймворка необходимы клиентские библиотеки Socket.IO на стороне фронтенда.

Инструмент позволяет выстроить удобную работу с асинхронным обменом данными между сервером и клиентом. Опционально возможно использование таких транспортов для передачи данных, как Pooling или WebSocket. Библиотека позволяет объединять соединения в комнаты и рассылать данные в рамках комнаты либо в конкретное соединение.

Интересной фичей является поддержка горизонтального масштабирования «из коробки» на серверной стороне. Это реализовано через Redis adapter, который объединяет одинаковые комнаты, находящиеся на разных инстансах бэкенда, и позволяет работать с соединениями таким образом, как если бы они были на одной машине.

Дмитрий Крыстек


Fullstack Software Engineer в Mapbox.


Ссылки


Для написания бэкенда на JS сейчас есть три наиболее сильных фреймворка NestJS, Express и Fastify.

Express очень прост, быстр, и почти каждый JS-разработчик так или иначе знаком с ним. Но его функциональность «из коробки» очень скудная и нужен большой опыт для того, чтобы закрыть все свои потребности. Этот фреймворк хорошо подходит в тех случаях, когда необходимо написать сервер для чего-то простого — статические файлы, прокси и тому подобного.

Fastify предоставляет больше функциональности «из коробки», но и порог входа у него выше. Этот фреймворк уже хорош для написания больших приложений. Также он может похвастаться своей скоростью.

Для написания больших и сложных приложений лучше использовать NestJS. Этот фреймворк полностью написан на TypeScript, что помогает в разработке. Также он предлагает грамотную архитектуру с dependency injection.

В Mapbox в большинстве приложений мы используем NestJS и Express. И здесь выбор зависит только от размера и сложности приложения.

Бэкенд-фреймворки на PHP

На чистом PHP уже почти никто не пишет. Вместо этого используют фреймворки — наборы пакетов и библиотек, которые задают каркас проекта. С помощью фреймворка можно быстро создавать шаблонные страницы, блоки сайта или приложения.

Например, чтобы добавить на сайт авторизацию пользователей, на чистом PHP пришлось бы написать десятки строк кода и продумать механизмы безопасности. А с фреймворком нужно лишь прописать несколько методов и указать необходимые параметры в настройках. При этом в шаблоне уже будет встроена система безопасности, стойкая ко взломам.

Ещё фреймворки помогают сохранять данные в сессии, читать параметры из адресной строки браузера, обрабатывать файлы в директории и подключаться к базам данных. У них есть методы для работы с файлами на диске, поэтому программисту не нужно писать функции для поиска и фильтрации. А ещё можно за пару шагов валидировать пользовательские данные (например, имя, email или комментарии в форме обратной связи) и обработать для дальнейшего использования.

Для PHP написано более 20 фреймворков, но чаще всего в энтерпрайзе используют следующие:

  • Laravel — самый популярный фреймворк PHP, создан в 2011 году;
  • Symfony — славится надёжностью и соответствием веб-стандартам;
  • Laminas (потомок Zend Framework) — позволяет подключать много сторонних библиотек, но немного сложнее остальных фреймворков;
  • Yii2 — считается самым быстрым фреймворком PHP;
  • CodeIgniter — один из самых простых в изучении.

Фреймворки различаются реализацией основных модулей, но во многом похожи: строятся по схожей архитектуре и даже содержат одинаковые библиотеки под капотом. На сайтах каждого вы найдёте подробные инструкции и документацию, где написано, как установить и использовать пакеты и библиотеки. Кроме того, у фреймворков в Сети есть огромные комьюнити разработчиков и базы знаний.

Фреймворки для бэкенда в экосистеме C#

Александр Моргунов


.NET-разработчик, после 24 февраля переехал в Ереван вместе с компанией, в которой работает. Ведёт телеграм-канал об IT и программировании.


Сначала нужно понять, что представляет собой проект. Но как по мне, проще и быстрее всего развернуть бэкенд на ASP.NET — к тому же и настраивать его очень несложно. Всё необходимое ставится «из коробки», нужно только указать домен и порты, которые будет прослушивать собранное решение. Необходимые комплекты библиотек тоже будут подключены автоматически.

Идеально работает связка ASP.NET + Entity Framework + PostgreSQL. ASP.NET Core использует DI-контейнеры практически по умолчанию — и это неоспоримое преимущество, потому что созданием классом занимаются специальные фабрики под капотом самого фреймворка.

Entity Framework позволит упростить работу с базами данных и прямо из кода создавать таблицы, а PostgreSQL даст быстрый доступ к данным, к тому же он быстро разворачивается и настраивается. Для публикации такого решения на тестовый или продакшен-серверы можно воспользоваться контейнерами в Docker — правда, в этом случае придётся повозиться с написанием Dockerfile и контейнеризацией полученных библиотек при сборке решения воедино.

Иван Барченков


Коммерческий директор маркетингового агентства MediaNation и руководитель проекта сквозной аналитики StreamMyData.


Когда мы делали бэкенд для своего проекта StreamMyData, то выбрали платформу .NET Core 6.0. Выбор этой платформы частично связан с тем, что в копилке нашего агентства уже было достаточно много коннекторов, написанных на C#, — в предыдущих версиях фреймворка.

При этом ядро проекта было спроектировано таким образом, чтобы в будущем можно было писать коннекторы на любом языке программирования и использовать другие фреймворки. Получилось достаточно гибкое решение, которое позволит диверсифицировать технологических стек.

Бэкенд-фреймворки для Go

Владислав Гукасов


Старший бэкенд-разработчик в space307, основатель influence.su.


Будем честны, на практике почти всегда язык программирования и фреймворк для бэкенда выбираются, исходя из личных предпочтений и умений, а не из требований под конкретную задачу.

Например, в идеальном мире, если нужно написать большую сложную систему, то следовало бы взять Java Spring Framework — просто потому, что практически все необходимые инструменты будут «из коробки». А если необходимо реализовать веб-сокет-сервис, то стоит смотреть в сторону NodeJS (Socket.IO) и Go.

Моё предпочтение на сегодняшний день — это Go, главное преимущество которого — интуитивно-понятное написание асинхронного кода. Но лёгким написанием кода всё не ограничивается. При запуске приложения асинхронный код превращается в горутины («зелёные» потоки), которые позволяют обрабатывать тысячи запросов в секунду, не теряя производительности.

Хоть стандартная библиотека в Go содержит всё необходимое, начать новый проект будет проще, используя готовый микрофреймворк. Один из самых популярных — это Fiber. Фреймворк создавался по подобию Express (популярный за свою простоту фреймворк из мира Node.js), что даёт возможность фокусироваться на бизнес-логике приложения.

Но помимо простоты Fiber является самым производительным микрофреймворком для обработки HTTP-запросов на Go. Дело в том, что для обработки запросов Fiber использует библиотеку fasthttp, которая не аллоцирует память и горутины под каждый новый запрос. Например, компания VertaMedia обрабатывает 200k RPS (запросов в секунду) от более чем 1,5 миллиона keep-alive-соединений в продакшене с помощью fasthttp.

Помимо простоты написания бизнес-логики и высокой производительности, Fiber интегрирован с множеством сторонних библиотек, что позволяет парой строчек кода использовать ограничители запросов, логирование, настраивать CORS, мониторинг и многое другое. Всё это в совокупности даёт базу для быстрой разработки производительного современного бэкенда.

Бэкенд-фреймворки для Java

С. Унан


Java-разработчик в Holyweb. Опыт в коммерческой разработке — три года.


Java лучше всего подходит для крупных проектов, фреймворков, высоконагруженных приложений и сервисов. В первую очередь благодаря таким своим свойствам:

  • Кросс-платформенность. Java-приложение можно запустить на любой платформе, где установлена JVM.
  • Объектно-ориентированный язык, который подходит для крупных приложений/экосистем, которым нужна долгосрочная поддержка после выхода в продакшен.
  • Статическая типизация, которая также поможет при написании сложных, крупных проектов с долгосрочной поддержкой.
  • Поддержка многопоточности. Позволяет реализовать высоконагруженные сервисы и приложения.

Какие основные фреймворки существуют в Java. Джентльменский набор фреймворков для Java — это Spring Framework, Spring Boot, Java Concurrency, Hibernate.

  • Spring Framework — основной фреймворк. Реализует важнейшие паттерны разработки, такие как фабрика и внедрение зависимостей.
  • Spring Boot автоматизирует процедуру настройки и ускоряет процесс создания и развёртывания Spring-приложений.
  • Java Concurrency — набор инструментов по созданию многопоточных приложений.
  • Hibernate — фреймворк, который связывает ООП-сущности из Java-кода с таблицами в реляционных базах данных.

Сам я больше всего работаю со Spring Framework. Он позволяет создавать приложение, правильное с точки зрения паттернов, а также предоставляет функциональность для решения задач, связанных с инициализацией и настройкой объектов, автоматизацией процесса запуска и развёртки приложения.

Очевидный недостаток фреймворка — это сложность. В остальном Spring Framework оставляет приятные впечатления при работе. Главный совет — читайте документацию. Она является полным и достоверным источником информации.

Пример из моего опыта: требовалось получить из родительского класса значение поля из самого младшего объекта во всей иерархии. Каким будет самый младший объект по порядку наследования — неизвестно.

Несколько дней разработки сложной функции закончились её удалением. Из документации выяснилось, что метод @PostConstruct, прописанный в родительском классе, вызывается для всех классов иерархии, которые являются бинами. Поэтому проблема быстро решалась вызовом this, аннотированным @PostConstruct.

При выборе языка программирования отталкивайтесь от целей проекта. Неправильный выбор языка на старте приводит к большим потерям при поддержке и рефакторинге проекта в будущем. Для долгосрочного проекта с большим бюджетом лучше использовать Java или C#. Они регулярно обновляются и имеют большую базу знаний на профильных ресурсах.

В проектах, для которых категорически важна производительность, лучше обратить внимание на Go и C++. Если требуется написать PoC или небольшой стартап, то есть скорость запуска в приоритете, обратите внимание на Python.

Бэкенд-фреймворки для Ruby

Ruby на бэкенде: если вы опытный разработчик, я крайне рекомендую dry-web-roda, который поставляется с замечательной связкой dry-rb + rom-rb + Roda. Для новичков я бы рекомендовал использовать Rails API.

Пользователь ahmad_musaffa, Reddit

Взгляните на Opal — в частности, посмотрите список фреймворков. Разработчики Rails немного поколдовали, и теперь Opal можно использовать с Rails. В свою очередь, разработчики Opal Core также открыты для предложений по упрощению использования их решения вместе с Rails — если кто-то посчитает, что порог входа в него слишком высокий.

Пользователь ylluminate, Reddit

Бэкенд-фреймворки для Haskell

Если вы хотите писать фронтенд на Elm, а бэкенд на Haskell, вы наверняка захотите выбрать REST-like-клиент для бэкенда. Для простых приложений и для новичков в Haskell хорошим выбором будет scotty. Если же выходите работать исключительно с фреймворками под Haskell, что будет более сложно, посмотрите на Yesod Web Framework. Кстати, у него есть хорошее бесплатное руководство — Yesod Web Framework Book.

Пользователь 5outh, Reddit

Бэкенд-фреймворки для Kotlin и Scala

Выдержка из официальной документации Kotlin:

  • Spring использует возможности Kotlin, чтобы предлагать более лаконичные API, начиная с версии 5.0. Онлайн-генератор проектов позволяет быстро сгенерировать новый проект в Kotlin.
  • Vert.x, фреймворк для создания интерактивных веб-приложений на JVM, предлагает специальную поддержку Kotlin, включая полную документацию.
  • Ktor — это фреймворк от JetBrains для создания веб-приложений на Kotlin, использующий корутины для высокой масштабируемости и предлагающий простой в использовании идиоматический API.
  • kotlinx.html — это DSL, который можно использовать для HTML-разметки в веб-приложениях. Он служит альтернативой традиционным системам шаблонов, таким как JSP и FreeMarker.
  • Micronaut — это современный фулстек-фреймворк на базе JVM, который позволяет создавать модульные, легко тестируемые микросервисы и бессерверные приложения. В него встроены множество полезных функций.
  • http4k — это функциональный инструментарий с небольшими возможностями для HTTP-приложений, написанный на чистом Kotlin. Библиотека основана на статье «Your Server as a Function» из Twitter и представляет моделирование как HTTP-серверов, так и клиентов в виде простых функций Kotlin, которые могут быть собраны вместе.
  • Javalin — это очень лёгкий веб-фреймворк для Kotlin и Java, который поддерживает WebSocket, HTTP/2 и асинхронные запросы.
  • Доступные варианты стабильности включают в себя прямой доступ к JDBC, JPA и использование баз данных NoSQL через их Java-драйверы. Для JPA плагин компилятора kotlin-jpa адаптирует классы, скомпилированные на Kotlin, к требованиям фреймворка.

Чтобы узнать о бэкенд-фреймворках для Scala, рекомендуем послушать выпуск подкаста «Люди и код».

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована