Статьи

Java Micro Framework: новая тенденция, которую нельзя игнорировать

Что такое Java-фреймворки и зачем их использовать?

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

Однако не все принимают такое положение вещей, как они. Несколько человек попытались найти способ обойти Java, и все еще сохраняют мощь JVM. Первая волна была вокруг легких Java-фреймворков (некоторые из которых мы писали о: Dropwizard vs. Springboot ). Они предоставили легкие, современные фреймворки для Java и помогли сократить время разработки. Теперь есть вторая волна, которая недавно вышла на сцену. Эта волна — это микро-фреймворки Java.

Новая публикация: Java Micro Framework: новая тенденция, которую нельзя игнорировать http://t.co/l51yQNrzWd pic.twitter.com/v0JAPXfz6Q

— Такипи (@takipid) 10 июня 2015 г.

Что такое микро-фреймворк Java?

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

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

Сегодня я рассматриваю три наиболее популярных из доступных микро-фреймворков Java: Ninja Framework, Spark и Jodd.

Микро-фреймворки Java - статистика Github

Микро-фреймворки Java — статистика Github

Ninja Framework

ниндзя
Ninja — это полнофункциональная платформа Java для создания веб-сервисов и приложений. Он направлен на то, чтобы использовать положительные аспекты Play и Ruby on Rails и предоставлять их в чистом формате Java. Он использует концепцию MVC, чтобы упростить простоту и возможность последовательного написания приложений любого размера.

Как интегрированный программный стек, Ninja поставляется с обширным набором функциональных возможностей (например, анализ JSON, поддержка метрик, рендеринг HTML), что требует некоторых аннотаций и определений для ваших контроллеров. Многие из этих функций основаны на том, чтобы сделать Ninja удобным для DevOps инструментом. Включение этих библиотек делает Ninja простым в использовании. Что касается масштабируемости, то Ninja — это проект без сохранения состояния, который делает горизонтальное масштабирование просто вопросом добавления серверов.

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

Популярность и библиотеки. На Github у Ninja 809 звезд и 288 вилок на момент написания, что сравнимо с Jodd, но значительно уступает Spark по популярности. Если вы хотите внести свой вклад, проверьте страницу Github. Для рендеринга HTML ниндзя использует Freemarker. Для обработки JSON и XML используется Джексон. Многие из основных библиотек написаны Ninja.

Начало работы: Начало работы с ниндзя довольно просто. Он основан на Maven, требуя запуска Java и Maven. Проекты ниндзя работают через архетипы Maven, которые позволяют пользователям создавать новые проекты с помощью одной команды после их создания. Чтобы начать свой первый проект, команда

1
mvn archetype:generate -DarchetypeGroupId=org.ninjaframework -DarchetypeArtifactId=ninja-servlet-archetype-simple

Как только вы введете несколько значений и перейдете в каталог вашего проекта, выполнение следующего запустит Ninja в его «SuperDevMode» (который принимает изменения, которые вы делаете автоматически):

1
2
3
cd MY_INSTALLED_PROJECT
mvn clean install // to generate the compiled classes the first time
mvn ninja:run // to start Ninja's SuperDevMode

Оттуда вы импортируете свой проект в выбранную вами IDE и начинаете кодировать. Для получения дополнительной информации ознакомьтесь с документацией .

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

искра

искра
Чтобы не путать с Apache Spark, цель этого Spark состояла в том, чтобы разработать чистый Java-фреймворк, который можно было бы использовать для простого и простого создания REST API и / или веб-приложений. Spark — это гибкий и компактный фреймворк размером менее 1 МБ, который можно использовать для быстрой и простой разработки приложений. Первоначально вдохновленный Sinatra, Spark превратился в полностью реализованную веб-среду с вовлеченным сообществом разработчиков, которое продолжает поддерживать активный цикл выпуска.

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

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

Начало работы. Начать работу в Spark очень просто. Требуется Java и Maven для запуска. Первый шаг — добавление зависимости Maven:

1
2
3
4
5
<dependency>
  <groupId>com.sparkjava</groupId>
  <artifactId>spark-core</artifactId>
  <version>2.2</version>
</dependency>

Второй шаг — импортировать Spark и начать кодирование:

1
2
3
4
5
6
import static spark.Spark.*;
public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (request, response) -> "Hello World!");
    }
}

Для получения дополнительной информации ознакомьтесь с документацией .

Популярность и библиотеки: На Github у Spark на момент написания статьи было 2398 звезд и 542 вилки, что делает его легко самым популярным из трех фреймворков, которые я сегодня выделяю здесь. Если вы хотите внести свой вклад, проверьте страницу Github. Частью гибкости, предлагаемой Spark, является не блокирование пользователей в определенных библиотеках. Например, для рендеринга HTML вы можете использовать Freemarker, Mustaches, Velocity, Jade, Handlebars, Pebble или Water. Для того, что вы хотите использовать, добавьте зависимость Maven для его настройки.

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

Джодд

Джодд

Jodd — это набор микро-фреймворков, инструментов и утилит для Java, поэтому, возможно, он не сопоставим напрямую с некоторыми другими здесь. Фактически, Spark, вероятно, может быть включен как компонент Jodd, например. Но драйвер для Jodd состоит в том, чтобы уменьшить объем и медлительность многих инструментов и сред Java, а также предоставить выбор сверхлегких платформ и инструментов. Вместо того, чтобы сгруппировать их все вместе в одно монолитное приложение, Джодд разбивает каждую библиотеку на отдельные части, что позволяет пользователю выбирать, какие из них использовать.

Jodd существует уже некоторое время, и за это время они создавали облегченные версии инструментов и утилит всякий раз, когда замечали необходимость. Держа инструменты и структуры отдельно и поставляя их как свободную связку, Jodd может сохранять чрезвычайно сфокусированные области для каждой отдельной части. У них есть платформы для обработки запросов, для DI-контейнеров, для анализа HTML5 и так далее. Может показаться, что подобная коллекция идет вразрез с идеей упорядоченных микро-фреймворков, но весь пакет занимает менее 1,5 МБ, поэтому занимаемая площадь невелика.

Компромисс с Джоддом в том, что это не сделано для вас. Функциональность большинства вещей есть в наборе библиотек, но вы должны испачкать руки и настроить его самостоятельно. Настраиваемость обеспечивает большой контроль и гибкость для пользователя, но это упрощает использование. К счастью, каждый отдельный инструмент прост и крошечен, поэтому погружение в код не требует углубления в море сложности. Документация на сайте Jodd также содержит некоторые рекомендации и лучшие практики.

Начало работы: Jodd построен с использованием Gradle и ориентирован на Java 1.5 и выше. Поскольку Jodd представляет собой набор инструментов, начать работу не так просто, как другие инструменты. Один из вариантов — скачать пакет Jodd, чтобы получить все модули. Другой вариант — собрать Jodd из источника через Git. Для этого
Клонируйте репозиторий Jodd Git:

1
git clone https://github.com/oblac/jodd.git jodd

затем создайте проект с помощью:

1
gradlew build

Вы также можете установить Jodd в Maven. Для этого используйте команду:

1
gradlew install

Для получения более подробной информации о различных модулях и некоторых примерах их использования, ознакомьтесь с документацией Jodd.

Популярность и библиотеки: на Github у Джодда 837 звезд и 243 вилки на момент написания, что делает его сопоставимым по популярности с ниндзя, но значительно уступает Spark. Если вы хотите внести свой вклад, проверьте страницу Github. Jodd — это набор утилит, фреймворков и инструментов, поэтому используемые им библиотеки являются собственными.

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

Вывод

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

Как более новая разработка, определение того, что считается микро-фреймворком Java, может быть вопросом мнения. В зависимости от того, как вы хотите определить термин, есть несколько других, которые вы можете включить и изучить, например, JHipster , Javalite , Ratpack и Vert.x. Если вы работали с микро-фреймворками в прошлом, пожалуйста, сообщите нам свое мнение о них в разделе комментариев ниже.