Каждый год в прошлом появлялся все больше и больше фреймворков Java. Как и Javascript, все думают, что знают, какова должна быть функциональность хорошей структуры. Даже моя старая бабушка теперь использует структуру, о которой я никогда не слышал, и, вероятно, никогда не будет использовать. Рынок раздутого фреймворка насыщен раздутой рамки, которая может сделать почти что угодно, но как это судить? Эта статья направлена на то, чтобы предоставить лучшие Java Restful Frameworks, доступные в настоящее время. Я представляю только легкие продукты, пропуская эти раздутые завышенные рамки. В то же время я просто хочу, чтобы они были стабильными и зрелыми, обеспечивая простые, легкие функции. Я нарушал это правило только при введении игровых рамках, причина дана позже. Какой Java Restful Framework для использования в будущих проектах полностью зависит от ваших текущих потребностей. Чтобы упростить ваш выбор, я перечислю самые выдающиеся функции фреймворта, надеясь, что это сэкономит вам некоторое время.
Dropwizard
Время рождения: 2011
Рейтинг: 4,5/5
Dropwizard предоставляет стабильную и зрелую библиотеку Java и инкапсулирует ее в простой и легкий пакет.
Dropwizard находится где -то между структурой и библиотекой. Он обеспечивает все необходимые потребности для разработки веб -приложения. Благодаря встроенной модульности, приложение может оставаться небольшим и бережливым, сокращая время разработки и технического обслуживания и уменьшая бремя.
Dropwizard использует существующую библиотеку причала HTTP, чтобы внедрить ваш проект без необходимости во внешнем сервере. Все проекты Dropwizard имеют основной метод управления встроенным HTTP-сервером.
Ссылка <br /> официальная документация GitHub GitHub
преимущество
Быстрая строительство проекта и стартап
Модульный
Невероятный пост (по крайней мере, на основе результатов, измеренных по встроенной метрике)
Причал для HTTP, Джерси для отдыха и Джексона для JSON
Он также поддерживает другие библиотеки, такие как усы, резерв, JDBI, Hibernate Validator, Guava,…
Мониторинг поддержки с метриками
Основной метод запускает придурок, который можно легко отлаживать и поддерживать
Сильная сила сообщества
недостаток
Документация Dropwizard является основным источником знаний, но это не превосходно. Вам может потребоваться поиск и обнаружить документы для сторонних библиотек.
По какой -то причине ошибка рассматривается как простой текст, если вы хотите, чтобы результат ответа был всегда JSON, это может быть проблематично
Обязательно используйте новейший Dropwizard, некоторые старые версии используют заброшенные сторонние библиотеки. И было трудно обновить ранний Dropwizzard
пример
пакет com.example.helloworld; Импорт io.dropwizard.application; импорт io.dropwizard.setup.bootstrap; импорт io.dropwizard.setup.Environment; импорт com.example.helloworld.resources.helloworldresource; импорт com.example.helloworld.Health.TemplateHealthCheck; открытый класс helloworldApplication Extends Application <HelloworldConfiguration> {public static void main (string [] args) выбрасывает исключение {new helloworldApplication (). run (args); } @Override public String getName () {return "hello-world"; } @Override public void инициализация (Bootstrap <HelloworldConfiguration> Bootstrap) {// Пока не ничего не делать} @Override public void run (конфигурация HelloworldConfiguration, среда среды) {// Пока не до сих пор}}}}}}}}}}}}}}}}}}}}}} Примечание <br /> Я лично не хочу рекомендовать эту структуру для крупных проектов. Но если вы хотите попробовать, вы не будете разочарованы. В основном эта структура использует лучшие современные веб-компоненты Java и собираются в простую и простую в использовании структуру.
К сожалению, это также вызывает свои проблемы. Объединение этих библиотек может привести к непредвиденным проблемам. Вот почему я потерял 0,5 звезды за это, не оценивая его как полный счет 5 звезд.
Джерси
Время рождения: 2012 (Джерси 2.x)
Рейтинг: 5/5
Framework Jersey Restful-это структура Restful с открытым исходным кодом, которая реализует спецификацию JAX-RS (JSR 311 & JSR 339). Он расширяет реализацию JAX-RS и предоставляет больше функций и инструментов, которые могут еще больше упростить разработку сервисов и клиента RESTFUL. Несмотря на то, что это относительно новичок в Xinyi, это уже представленная услуга в области продукта Restful и клиентская структура.
Ссылка <br /> официальная документация GitHub GitHub
преимущество
Отличная документация и примеры
быстрый
Супер легкая маршрутизация
Гладкая интеграция JUNIT
Лично при разработке обслуживания REST-REST реализация JAX-RS лучше, чем фреймворки MVC.
Он может быть интегрирован в другие библиотеки/рамки (Grizzly, Netty). Это также может быть причиной того, что многие продукты используют его.
Поддержка асинхронного связывания
Не нравятся контейнеры для сервлетов? Вы можете использовать их при использовании Джерси.
WADL, XML/JSON Support
Включено в стеклянную рыбу
недостаток
Джерси 2.0+ использует некоторую сложную реализацию впрыска в зависимости
Наверное, неплохо. Джерси 1.x реализует с использованием старых JAX-RS
Большое количество сторонних библиотек поддерживает только Jersey 1.x, и не доступно в Jersey 2.x
пример
пакет org.glassfish.jersey.examples.helloworld; Импорт javax.ws.rs.get; импортировать javax.ws.rs.path; импорт javax.ws.rs.produces; @Path ("Helloworld") открытый класс helloworldresource {public static final String cliched_message = "Hello World!" ; @Get@Products ("text/plain") public String gethello () {return cliched_message; }} аннотация
Джерси - мой выбор, 5 звезд.
Ninja Web Framework
Время рождения: 2012
Рейтинг: 3,5/5
Ninja Web Framework-это веб-фреймворк Java с полным стеком. Стабильный, быстрый, надежный, продукт.
Он обеспечивает все, что разрабатывает, теста, публикует и поддерживает Restful Web Applications (сервлеты, Guice, JPA, миграции левши, мавен и т. Д.).
Как Dropwizzard, Ninja Web Framework - это интегрированный программный стек. Вам не нужно создавать свой собственный, просто используйте архетип Maven, чтобы создать новый проект, импортировать его в IDE и начать кодирование.
Ссылка <br /> официальная документация GitHub GitHub
преимущество
быстрый
Быстрая строительство проекта и стартап
Модульный
Xml, html, json рендеринг
Также поддерживаются другие библиотеки (такие как Guice, Research, Guava и т. Д.)
Хорошая стойкость и кэширование
Не любите контейнер сервлета? Вы можете выбрать такой контейнер, который вам нравится
Если вам вообще не нравятся контейнеры, вы можете использовать автономный режим и использовать причал в качестве самоотверженной банки
недостаток
Точно так же, как и Dropwizzard, документация имеет, но недостаточно хороша. Мне потребовалось много времени, чтобы узнать это. Эта структура также опирается на многие другие библиотеки, и иногда трудно получить необходимую информацию.
Не очень известное, маленькое сообщество. Ходят слухи, что эта структура была создана пользователями Play 2.x, которые перешли на Scala
пример
контроллеры пакетов; открытый класс ApplicationController {public Result Index () {Person Person = new Person (); Person.name = "Джон Джонсон"; вернуть результаты.json (). рендеринг (человек); }}Примечание <br /> это выглядит хорошо, но я просто отбрось в сторону, прежде чем он созревает.
Играть в рамки
Время рождения: 2011
Рейтинг: 4/5
Используйте Flay Framework для создания, создания и публикации веб -приложений с помощью поддержки Java & Scala. Он использует Akka, основываясь на легкой архитектуре без сохранения состояния. Его следует использовать для приложений с низким процессором и потреблением памяти в больших масштабах.
Ссылка <br /> официальная документация GitHub GitHub
преимущество
Легко развить
Быстро, но не так быстро, как другие рамки
Основываясь на Netty, он поддерживает неблокирующий ввод-вывод. Это превосходно при обработке удаленных звонков параллельно.
Сообщество большое
Быстрая строительство проекта и стартап
Модульный
MVC
REST, JSON/XML, Веб-розетки, не блокирующий ввод-вывод
Просто обновите браузер, чтобы увидеть последние изменения
Поддержка асинхронна
Есть опубликованные книги
недостаток
Версия 2.0 - самая противоречивая Java Framework. Переключение на Scala сделала некоторых разработчиков Java Optraved.
Не обратно совместимо; Играть 2.x переписано
Он известен как легкий, но немного раздутый
SBT Build Tool. Известный как убийца Maven, но никогда не превосходит, чтобы заменить его. Трудно изучать и настраивать
Несервлет
Нарушение изменений в релизах
пример
Контролеры пакетов Import Play.api._import play.api.mvc._ Class Application Extends Controller {def Hello (name: string) = action {ok ("hello" + name + "!")}}Примечание <br /> Независимо от того, как сильно я жалуюсь, мне все еще нравится и сначала выбираю эту структуру. К сожалению, я могу дать ему только 4 звезды. Я твердо верю, что структура, основанная на JAX-RS, более подходит для Restful Web Services.
Restexpress
Время рождения: 2009
Рейтинг: 3/5
Restexpress-это легкая обертка Netty HTTP, не содержавшая, чтобы облегчить создание Java Restful Services.
Цель Restexpress - поддержать лучшие практики Restful.
Связь
GitHub
преимущество
Настоящая микропрофликта
Максимальная производительность, быстрая и надежная
XML/JSON
Одна из самых старых и стабильных Restful Frameworks
недостаток
Нет документации
Почти нет поддержки
Очень маленькое сообщество
пример
пакет com.example; импортировать java.io.ioexception; импорт io.netty.handler.codec.http.httpmethod; импорт org.restexpress.restexpress; открытый класс main {public static restexpress Startererver (String [] args) бросает ioException {restexpress server = new RestexPress (); Myresource r = new Myresource (); server.uri ("/myapp/myresource", r) .method (httpmethod.get) .noserialization (); server.uri ("/myapp/myresource", r) .method (httpmethod.post); Server.Bind (8080); вернуть сервер; } public static void main (string [] args) бросает исключение {restexpress server = starterver (args); System.out.println («Нажмите Enter, чтобы остановить это ...»); System.in.read (); server.shutdown (); }}Примечание <br /> Хотя эта структура очень быстрая, я не хочу рекомендовать его. Отсутствие документации и отсутствие поддержки делают его недоразвитой рамки. Дайте ему 3 звезды для скорости.
Рестретлет
Время рождения: 2005
Рейтинг: 4,5/5
Restlet помогает программистам Java создавать крупномасштабные, быстрые веб-API, которые соответствуют узорам для спокойной архитектуры.
Он обеспечивает мощные системы маршрутизации и фильтрации. Unified Client/Server Java API соответствует всем основным платформам (Java SE/EE, Google Appengine, OSGI, GWT, Android) и предоставляет бесчисленные расширения для удовлетворения потребностей программистов.
Насколько я могу судить, это первая веб -структура Java Restful. Многие компании используют его, но вы, возможно, никогда не слышали об этом, как будто это больше не видно.
Ссылка <br /> официальная документация GitHub GitHub
преимущество
мощный
Структура на уровне предприятия
Многоплатформенный Java SE, Java EE, Google Web Toolkit, Google Appengine, Android, Osgi Environments
Поддержите JAX-RS (как и Джерси)
Самая продвинутая поддержка RESTFUL
Модульный
Поддерживать другие библиотеки
Развитие было активным
Smart URL-адрес, полнофункциональная маршрутизация URI
Есть связанные книги
недостаток
Очень крутая кривая обучения
Закрытое сообщество, открытое даже на Stackoverflow
Больше не популярен, больше из -за игровой рамки и Джерси
пример
Public Class Part03 Extends ServerResource {public Static void Main (String [] args) выбрасывает Exception {// Создание HTTP -сервера и прослушивает на новом сервере порта 8182 (Protocol.http, 8182, part03. Class) .start (); } @Get ("txt") public String toString () {return "hello, world"; }}Примечание <br /> Хотя эта структура была популярна все время, я не могу дать ему 5 звезд для его и текущего завершения.
RESTX
Время рождения: 2013
Рейтинг: 3,5/5
RESTX-это легкая, модульная, многофункциональная, супер быстрое я быстрое с открытым исходным кодом.
Ссылка <br /> официальная документация GitHub GitHub
преимущество
Быстрый, легкий
Легко построить
Настоящая микропрофликта
Модульный
Поддерживать другие библиотеки
Поддержка MongoDB
недостаток
Недружелюбная запутанная документация. Я ожидаю лучшей документации для такого типа структуры
Слишком молод
Асинхронное асинхрон еще не поддерживается
пример
@Get ("/message/{id}") public message sayshello (идентификатор строки, // path param string who // Query param) {return new message (). Setmessage (string.format ("hello %s, это %s", кто, dateTime.now (). ToString ("hh: mm: ss")); } @Post ("/message/{id}") public message sayshello (идентификатор строки, // part param messe msg // param body) {return msg.setmessage (string.format (" %s @ %s", msg.getmessage (), dateTime.now (). }Примечание <br />, честно говоря, я не тратил много времени на эту структуру. Не стоит тратить слишком много усилий на другую рамку, я имею в виду, что рынок рамок Java становится все более и более фрагментированным, как и на рынке JavaScript, эта тенденция должна быть остановлена.
Spark Framework
Время рождения: 2011
Рейтинг: 3,5/5
Не путайтесь с Spark Sparkse Apache's Big Data Spark, Spark Framework здесь представляет собой легкую веб -структуру Java для быстрой разработки (50% пользователей Spark используют Spark для создания API REST). Он вдохновлен рубиновой рамкой Синатрой.
Он имеет минимизированное ядро менее 1 млн. И предоставляет все основные функции для создания отдыха или традиционных веб -приложений.
Ссылка <br /> официальная документация GitHub GitHub
преимущество
Быстрый, легкий
Отличный быстрый прототип
Легко построить
Часто используется с AngularJs
Настоящая микропрофликта
Использование пристани
Можно использовать в контейнерах или запускаться независимо
недостаток
Документация может быть лучше, она не подходит для начинающих
Не подходит для крупных проектов
Сообщество маленькое
пример
Импорт Static Spark.spark.*; открытый класс helloworld {public static void main (string [] args) {get ("/hello", (req, res) -> "Hello World"); }}Примечание <br /> Эта структура подходит для начальной разработки. В основном используется в качестве небольших проектов или прототипов.