Вибір реалізації JAX-RS для нового проекту


35

Я запускаю новий проект Java, який потребує API RESTful. Це буде бізнес-додаток SaaS, що обслуговує мобільних клієнтів.

Я розробив один проект з Java EE 6, але я не дуже знайомий з екосистемою, оскільки більша частина мого досвіду працює на платформі Microsoft.

Який був би розумний вибір для реалізації JAX-RS для нового проекту, такого як описаний?

Судячи зі списку Вікіпедії , головними претендентами є Джерсі, Apache CXF, RESTeasy та Restlet. Але Порівняння впроваджень JAX-RS, цитованих у Вікіпедії, є з 2008 року.

Мої перші враження від їхніх домашніх сторінок:

  • CXF має на меті бути дуже комплексним рішенням (нагадує мені про WCF у просторі Microsoft), що змушує мене думати, що це може бути складніше для розуміння, налаштування та налагодження, ніж те, що мені потрібно;
  • Джерсі є еталонною реалізацією і може бути хорошим вибором, але це спадщина від Sun, і я не впевнений, як Oracle ставиться до цього (сторінка оголошень не працює, а останнє повідомлення від 4 місяців тому);
  • RESTeasy походить від JBoss і, ймовірно, твердий варіант, хоча я не впевнений у навчанні кривої;
  • Рестлет, здається, користується популярністю, але має багато історії, я не впевнений, наскільки він сучасний у світі Java EE 6 або чи він несе в собі важкий настрій J2EE (наприклад, безліч конфігурацій XML).

Які були б переваги кожної з цих альтернатив? Що з кривою навчання? Підтримка функції? Інструменти (наприклад, майстри NetBeans або Eclipse)? Як щодо простоти налагодження, а також розгортання? Чи будь-який з цих проектів більш сучасний, ніж інші? Наскільки вони стійкі?


1
Я ціную заголовок редагування, але я не дуже запитую, чи JAX-RS добре підходить для мобільного проекту; це було б інше питання. Я намагаюся з’ясувати, яку реалізацію JAX-RS рекомендуватимуть.
Фернандо Коррея

Відповіді:


22

Я полюбив Dropwizard за загальне рішення

Замість того, щоб скористатися величезним підходом до контейнерних програм, Dropwizard виступає за легке рішення, яке пропонує набагато швидші цикли розвитку. По суті, він забезпечує клей для таких відомих рамок:

  • Jetty (HTTP)
  • Джерсі (JAX-RS)
  • Джексон (JSON або XML)
  • Гуава (відмінні доповнення до бібліотек JDK)
  • Показники (моніторинг додатків у режимі реального часу)
  • Перевірка у сплячому режимі (перевірка введення)
  • OAuth (RESTful аутентифікація)

Поєднання перерахованого вище, поєднане з ґрунтовним підходом до функціонального тестування, дає повне рішення для швидкого налагодження роботи та роботи.

Так? І питання JAX-RS, яке я задав ...

Ви помітите, що їх вибором був Джерсі, посилання на реалізацію JAX-RS. Будучи RESTEasy хлопцем, я подумав, що це буде проблемою, але крива навчання була нульовою. Два в основному взаємозамінні. Однак я б сказав, що клієнт Джерсі запропонував вільний інтерфейс для побудови тестів. Прикладом може бути ...

 @Override
  protected void setUpResources() {
    addResource(new HelloWorldResource("Hello, %s!","Stranger"));

    setUpAuthenticator();
  }

  @Test
  public void simpleResourceTest() throws Exception {

    Saying expectedSaying = new Saying(1,"Hello, Stranger!");

    Saying actualSaying = client()
      .resource("/hello-world")
      .get(Saying.class);

    assertEquals("GET hello-world returns a default",expectedSaying.getContent(),actualSaying.getContent());

}

2
Дуже дякую за те, що привернув до мене увагу Dropwizard. Я про це не знав, і, здається, дуже добре відповідає моїм потребам. Це виглядає добре продуманим, практичним і непростим, і, ймовірно, може врятувати мені багато клопоту, допомагаючи мені створити набагато краще рішення, ніж я міг би дати мої поверхневі знання про платформу Java EE. А прибуття від такої успішної компанії, як Yammer, яка обслуговує корпоративний ринок, безумовно, є плюсом. Знову ж, велике спасибі.
Фернандо Коррея

1
Без проблем. Я блогів про мій проект, який демонструє багато можливостей Dropwizard. Це під ліцензією MIT, тому сміливо
Gary Rowe

Це допоможе. Цінується.
Fernando Correia

1
Я вже схилявся до використання Джексона, Гуави, Валідатора та ОАута, тож це виглядає як нереалізатор ... Дякую.
PhiLho

Попередження: Джерсі 2.0 значно гірший за 1,0. У ньому відсутня функціональність, яка існувала в 1.0, вона змушує на вас певну рамку DI, а підтримка спільноти набагато гірша, ніж раніше.
Гілі

6

Ви можете поглянути на це запитання , в якому обговорюється певний досвід інших розробників.

Можу особисто рекомендувати Джерсі. Він дуже простий у використанні, і він має гарне наступне, тому що це еталонна реалізація. Це також означає, що він буде підтримуватися та підтримуватися протягом наступного часу.


1
Дякую за корисну відповідь та за посилання на це пов’язане питання - як не дивно, воно не з’явилося в пошуку . Але ця відповідь є від 4 років тому, тому я ціную вашу актуальну рекомендацію.
Фернандо Коррея
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.