Skip to content

Latest commit

 

History

History
154 lines (121 loc) · 10.8 KB

video2.1.md

File metadata and controls

154 lines (121 loc) · 10.8 KB

Обзор наиболее востребованных технологий, которые будут изучаться на курсе TopJava. Инфраструктура

В курсе TopJava предпочтение отдается наиболее востребованным технологиям, используемым Java Enterprise разработчиками.
В этом уроке мы приведем результаты некоторых популярных опросов, после чего у вас появится общая картина того, инструменты каких типов используются в Java-мире и какие из них наиболее востребованы.


Ссылки на отчеты, которые будут использоваться в этом уроке:


Языки программирования

1. Java

Java по-прежнему является абсолютным лидером как среди языков, работающих на Java Virtual Machine, так и в целом среди строго типизированных backend-языков, что показывают нам все рейтинги.

2. Kotlin

Kotlin показывает впечатляющий рост, но Java по-прежнему существенно опережает его. JVM ecosystem report за 2021 показывает, что 91% опрошенных разработчиков используют Java и 17.7% используют Kotlin.

3. Groovy

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

4. Scala

Scala - это статически типизированный язык с поддержкой функционального программирования, разработанный с целью решить ряд проблем, за который Java подвергается критике. Однако на сегодняшний день Scala сильно отстает от Java и занимает всего 10%.
Очевидно, что для максимизации шансов на трудоустройство мы учим Java.

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

Кстати, у нас готовится курс TopKotlin, который будет являться продолжением курса TopJava.

Scala существенно сложнее Java, для ее полного освоения требуется 2-3 года, и ей на замену идет Kotlin.

Среда разработки

IntelliJ Idea является абсолютным лидером среди IDE и используется более, чем в 70% случаев. При этом более 50% опрошенных используют платную версию IntelliJ IDEA Ultimate.
Безусловно, полезно познакомиться с функциями, которые предоставляет платная версия. Например, в платной версии есть встроенный модуль для того, чтобы вручную взаимодействовать с базой данных.
Однако бесплатная (Community) версия также используется компаниями. На ней можно полноценно работать со Spring и другими фреймворками, но некоторые полезные интеграции (например, клиент для баз данных) приходится заменять отдельными программами (например, можно использовать DBeaver).

Инструменты для сборки (building tools)

Для того, чтобы быстро и эффективно работать с библиотеками и фреймворками, которые мы используем в проекте (а это часто десятки или даже сотни java-архивов, которые нужно скачать из интернета и подключить к проекту), используются средства сборки (building tools). Они позволяют быстро собрать все используемые нами файлы в один java-архив (jar-файл) или веб-архив (war-файл), готовый для запуска.

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

Несмотря на то, что Gradle является более гибким инструментом, Maven по-прежнему опережает его почти вдвое, занимая 76%.
В курсе мы отдаем предпочтение ему.

Для общего понимания. Различия между Maven и Gradle заключаются в том, что в Maven используются XML-файлы, в которых прописывается вся конфигурация для сборки.
XML - это структурированный документ, в котором мы можем писать элементы в соответствии с ранее заданной схемой. Существует проект Maven Polyglot, где конфигурация сборки прописывается в формате json, но на продакшене мы его не встречали, видимо, проект "не взлетел". Поэтому в случае с Maven обычно используется традиционный XML-формат.

В случае с Gradle вместо XML-файлов используются скрипты для сборки, написанные на языках программирования Groovy DSL или Kotlin DSL. Это позволяет писать более сложные и гибкие алгоритмы сборки.

На наш взгляд, Maven более понятен и последователен, чем Gradle, IntelliJ IDEA с ним лучше интегрирована, и он подходит для подавляющего большинства проектов.

Application server

Мы переходим к секции с наиболее популярными серверами приложений (application server) и видим, что первое место занимает Tomcat.
Технически Tomcat - это не сервер приложений, а контейнер сервлетов - Java-программа, реализующая Java Servlet API и обеспечивающая взаимодействие с внешним миром с помощью протокола HTTP.

Контейнер сервлетов принимает HTTP-запросы, возвращает ответы. Работает непрерывно, за исключением каких-то технических работ, что дает возможность обращаться к приложению через сеть в любое время. Application server расширяет функциональность контейнера сервлетов.

Tomcat имеет наибольший вес среди контейнеров сервлетов (TomEE - application server на его основе). Он может быть установлен на компьютер, после чего в нем может быть развернут (или задеплоен) файл web archive с вашим приложением. Также Spring Boot предоставляет Tomcat в качестве встроенного (embedded) сервера, что позволяет запускать приложение как обычный java-процесс - локально, на сервере или в облаке.

Обзор пройденных тем

Давайте подведем промежуточные итоги по результатам этого урока.

В этом уроке мы:

  • познакомились с текущими позициями Java и других языков программирования - Java уверенно сохраняет лидерство;
  • поговорили о средах разработки, где IntelliJ Idea занимает лидирующие позиции;
  • обсудили, что такое средства для сборки (Build tools), и подтвердили статистикой популярности наш выбор в пользу Maven;
  • поговорили о серверах приложений и контейнерах сервлетов, среди которых Tomcat выглядит как очевидный выбор.