최고의 8개의 Java RESTful 프레임워크

지난 1년마다 점점 더 많은 자바 프레임워크가 쏟아져 나왔다.자바스크립트처럼 모든 사람들은 좋은 프레임워크의 기능이 어떻게 해야 하는지 알고 있다고 생각한다.우리 할머니조차도 지금 내가 들어본 적이 없고 영원히 사용하지 않을 수도 있는 틀을 사용하고 있다.농담은 농담이다. 거의 모든 일을 할 수 있는 비대한 프레임워크 시장은 이미 포화되었다. 그러나 어떻게 평가할 것인가?이 글은 현재 가장 좋은 Java RESTfulful 프레임워크를 제공하기 위한 것이다.나는 단지 경량급 제품만 소개하고, 그 비대한 과도한 디자인의 틀을 생략했다.동시에 나는 그들이 안정적이고 성숙하며 간단하고 경량급의 특징을 제공하기를 원할 뿐이다.Play frameworks를 소개할 때만 이 규칙을 깨뜨릴 뿐입니다. 이유는 이따가 드리겠습니다.미래의 프로젝트에서 어떤 Java RESTful 프레임워크를 사용하느냐에 따라 현재의 요구 사항이 달라집니다.당신의 취사를 편리하게 하기 위해서, 나는 가장 두드러진 프레임워크 기능을 열거할 것이며, 이것이 당신의 시간을 좀 절약할 수 있기를 바랍니다.
Dropwizard
탄생 시간: 2011
평점: 4.5/5
Dropwizard는 안정적이고 성숙한 자바 라이브러리를 제공하고 간단한 경량급 패키지로 봉인합니다.
Dropwizard는 프레임워크와 라이브러리 사이에 있습니다.그것은 웹 응용 프로그램을 개발하는 데 필요한 모든 것을 제공한다.내장 모듈화로 인해 하나의 응용 프로그램은 작고 세련된 특징을 유지하고 개발과 유지보수 시간을 줄이며 부담을 줄일 수 있다.
Dropwizard는 기존 Jetty HTTP 라이브러리를 사용하여 프로젝트에 삽입합니다. 외부 서버가 필요 없습니다.모든 Dropwizard 프로젝트에는 내장된 HTTP 서버를 관리하는 main 방법이 있습니다.
링크
공식 사이트 GITHUB 문서
이점
신속한 프로젝트 구축 및 시작
모듈식
불가사의하게 빠르다 (적어도 내장된metric에 근거하여 측정한 결과)
Jetty for HTTP, Jersey for REST, Jackson for JSON
다른 라이브러리도 지원합니다. 예를 들어 Mustache, Logback, JDBI, Hibernate Validator, Guava,...
Metrics를 사용하여 모니터링 지원
Main 방법으로 Jetty 서버를 시작하여 디버깅과 유지보수를 쉽게 할 수 있습니다.
지역사회의 역량이 강하다
결점
Dropwizard 문서는 주요 지식 원천이지만 우수하다고 할 수는 없습니다.제3자 라이브러리의 문서를 검색하고 발굴해야 할 수도 있습니다.
어떤 이유로 오류가 일반 텍스트로 간주되기 때문에, 만약 응답 결과가 항상 JSON을 원한다면, 문제가 있을 수 있습니다
최신 Dropwizard를 사용해야 합니다. 일부 오래된 버전은 폐기된 제3자 라이브러리를 사용합니다.그리고 초기 Dropwizzard도 업그레이드가 어려웠어요.
예제

package com.example.helloworld;
 
import io.dropwizard.Application;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import com.example.helloworld.resources.HelloWorldResource;
import com.example.helloworld.health.TemplateHealthCheck;
 
public class HelloWorldApplication extends Application<HelloWorldConfiguration> {
   public static void main(String[] args) throws Exception {
     new HelloWorldApplication().run(args);
   }
 
   @Override
   public String getName() {
     return "hello-world" ;
   }
 
   @Override
   public void initialize(Bootstrap<HelloWorldConfiguration> bootstrap) {
     // nothing to do yet
   }
 
   @Override
   public void run(HelloWorldConfiguration configuration,
           Environment environment) {
     // nothing to do yet
   }
 
}
주해
개인적으로 큰 프로젝트를 위해 이 틀을 추천하고 싶지 않다.하지만 네가 해보고 싶다면 실망하지 않을 거야.주로 이 프레임워크는 가장 좋은 현대적인 자바 웹 구성 요소를 사용하여 간단하고 사용하기 쉬운 프레임워크로 조립한다.
불행하게도 이것도 그것의 문제를 가져왔다.이 창고들을 섞으면 예견할 수 없는 문제를 초래할 수 있다.이것도 내가 왜 그것에게 0.5개의 별을 빼주었는지, 만점에 5개의 별을 평가하지 않았는지.
Jersey
탄생 시간: 2012 (Jersey 2.X)
평점: 5/5
Jersey RESTful 프레임워크는 시작된 RESTful 프레임워크로 JAX-RS(JSR311 & JSR339)규범을 실현했다.이것은 JAX-RS 구현을 확장하고 더 많은 특성과 도구를 제공하여 RESTful 서비스와client 개발을 더욱 간소화할 수 있다.비록 상대적으로 신선하지만, 그것은 이미 제품급의 RESTful 서비스와client 프레임워크이다.
링크
공식 사이트 GITHUB 문서
이점
우수한 문서 및 예
빠르다
매우 쉬운 경로
매끄러운 JUnit 통합
개인적으로 RESTful 서비스를 개발할 때 JAX-RS의 실현은 MVC 프레임워크보다 낫다.
다른 라이브러리/프레임워크(Grizzly, Netty)에 통합할 수 있습니다.이것도 아마도 많은 제품들이 그것을 사용하는 원인일 것이다.
비동기식 링크 지원
서브렛 컨테이너 안 좋아해요?Jersey를 사용할 때 사용하지 않아도 됩니다.
WADL, XML/JSON support
Glassfish에 포함
결점
Jersey 2.0+는 약간의 복잡한 의존 주입 실현을 사용했다
나쁜 일이 아닐 수도 있어요.Jersey 1.X는 오래된 JAX-RS를 사용하여 구현
많은 제3자 라이브러리가 Jersey만 지원합니다. 1.X, Jersey 2.X 를 사용할 수 없습니다.
예제

package org.glassfish.jersey.examples.helloworld;
 
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
 
@Path ( "helloworld" )
public class HelloWorldResource {
   public static final String CLICHED_MESSAGE = "Hello World!" ;
 
@GET
@Produces ( "text/plain" )
   public String getHello() {
     return CLICHED_MESSAGE;
   }
}
주해
Jersey는 나의 선택이다. 별 다섯 개.
Ninja Web Framework
탄생 시간: 2012
평점: 3.5/5
Ninja Web Framework는 전체 창고의 자바 웹 프레임워크입니다.안정적이고 빠르며 믿을 만하며 제품급이다.
그것은 개발, 테스트, 발표, RESTful 웹 응용 프로그램의 모든 것을 유지합니다(Servlets, Guice, JPA, Flywaymigrations, Maven, etc.).
DropWizzard처럼 Ninja Web Framework는 통합된 소프트웨어 창고입니다.당신은 자신만의 것을 만들 필요가 없습니다. 마븐archetype을 사용하여 새로운 프로젝트를 생성하고 IDE에 가져오면 인코딩을 시작할 수 있습니다.
링크
공식 사이트 GITHUB 문서
이점
빠르다
신속한 프로젝트 구축 및 시작
모듈식
XML, HTML, JSON 렌더링
다른 라이브러리도 지원합니다(예: Guice, Logback, Guava, etc.)
좋은 데이터 지속화와 캐시
서브렛 컨테이너 안 좋아해요?U는 네가 좋아하는 용기를 선택할 수 있어.
용기를 전혀 좋아하지 않는다면, standalone 모드를 사용하고, Jetty를 자행한jar로 사용할 수 있다
결점
마찬가지로 DropWizzard처럼 문서는 있지만 좋지 않습니다.나는 그것을 이해하는 데 오랜 시간이 걸렸다.이 프레임워크도 다른 라이브러리에 의존하기 때문에 때때로 필요한 정보를 얻기가 매우 번거롭다.
별로 유명하지 않고 동네가 좁다.이 프레임워크가 스칼라로 전환된 플레이 2라는 소문이 있습니다.X 사용자가 만든
예제

package controllers;
 
public class ApplicationController {   
 
   public Result index() {
 
     Person person = new Person();
     person.name = "John Johnson" ;
 
     return Results.json().render(person);
 
   }
}
주해
보기에는 괜찮지만, 성숙하기 전에 나는 그것을 한쪽에 내버려 두겠다.
Play Framework
탄생 시간: 2011
평점: 4/5
Play Framework를 사용하여 웹 응용 프로그램을 쉽게 만들고 구축하며 발표하며 자바 & Scala를 지원합니다.그것은 경량급의 무상태 구조를 바탕으로 하는 Akka를 사용한다.그것은 CPU와 메모리 소모가 대규모로 적은 응용에 응용되어야 한다.
링크
공식 사이트 GITHUB 문서
이점
개발 용이성
빠르지만, 다른 틀은 빠르지 않다
Netty 기반 비차단 I/O. 원격 호출 병렬 처리 시 우수
지역사회가 매우 크다
신속한 프로젝트 구축 및 시작
모듈식
MVC
REST, JSON/XML, Web Sockets, non-blocking I/O
브라우저를 새로 고치기만 하면 최신 변경 사항을 볼 수 있다
Async 지원
출판된 책이 있어요.
결점
버전 2.0은 가장 논란이 되는 Java 프레임워크입니다.Switch to Scala로 전환하면 일부 Java 개발자가 당황했습니다.
뒤로 호환되지 않음;Play 2.X 다시 썼어요.
경량급이라고 불리지만 좀 비대하다
SBT 빌드 도구.마븐 킬러라고 불리지만, 그것을 교체할 만큼 훌륭하지는 않다.학습 및 구성 어려움
비servlet
Breaking changes across releases
예제

package controllers
 
import play.api._
import play.api.mvc._
 
class Application extends Controller {
 
  def hello(name: String) = Action {
   Ok( "Hello " + name + "!" )
  }
 
}
주해
불평은 불평이다. 나는 여전히 이 틀을 좋아하고 우선적으로 선택해 왔다.불행히도 나는 그것에게 별 네 개만 줄 수 있었다.나는 JAX-RS 기반 프레임워크가 RESTful 웹 서비스에 더욱 적합하다고 굳게 믿는다.
RestExpress
탄생 시간: 2009
평점: 3/5
RestExpress는 컨테이너가 아닌 가벼운 Netty HTTP 스택의 패키지로 Java RESTful 서비스를 쉽게 만들 수 있습니다.
RestExpress의 목표는 최고의 RESTful 실천을 지원하는 것입니다.
링크
GITHUB
이점
진정한 마이크로프레임
최상의 성능, 빠르고 신뢰성
XML/JSON
가장 오래된 것도 가장 안정적인 RESTful 프레임 중의 하나입니다.
결점
문서 없음
거의 지원되지 않음
아주 작은 지역 사회
예제

package com.example;
 
import java.io.IOException;
 
import io.netty.handler.codec.http.HttpMethod;
import org.restexpress.RestExpress;
 
public class Main
{
   public static RestExpress startServer(String[] args) throws 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 );
     return server;
   }
 
   public static void main(String[] args) throws Exception
   {
     RestExpress server = startServer(args);
     System.out.println( "Hit enter to stop it..." );
     System.in.read();
     server.shutdown();
   }
}
주해
비록 이 틀이 매우 빠르지만, 나는 그것을 추천하고 싶지 않다.문서가 부족하고 지원이 없어서 좋지 않은 프레임워크가 되었다.속도를 봐서 별 세 개를 줘.
Restlet
탄생 시간: 2005
평점: 4.5/5
Restlet은 자바 프로그래머가 RESTful 구조 모델에 맞는 대규모의 빠른 웹api를 구축하는 데 도움을 줍니다.
그것은 강력한 루트와 필터링 시스템을 제공한다.통합 클라이언트/server Java API.모든 주요 플랫폼(Java SE/EE, Google AppEngine, OSGi, GWT, Android)과 수많은 확장을 제공하여 프로그래머의 요구를 충족시켰다.
내가 알기로는 이것은 첫 번째 자바 RESTful 웹 프레임워크이다.많은 회사들이 그것을 사용하고 있지만, 너는 그것을 들어 본 적이 없을 것이다. 마치 그것은 이미 보이지 않는 것 같다.
링크
공식 사이트 GITHUB 문서
이점
강대하다
엔터프라이즈급 프레임워크
멀티플랫폼 Java SE, Java EE, Google Web Toolkit, Google AppEngine, Android, OSGi environments
JAX-RS 지원(예: Jersey)
대부분의 고급 RESTful 지원
모듈식
추가 라이브러리 지원
개발이 줄곧 활발하다
지능적인 URL 귀속, 모든 기능의 URI 루트
관련 서적이 있어요.
결점
매우 가파른 학습 곡선
StackOverflow에서 열려 있지만 닫힌 커뮤니티
더 이상 유행하지 않는 것은 Play Framework와 Jersey 때문이다
예제

public class Part03 extends ServerResource {
 
   public static void main(String[] args) throws Exception {
     // Create the HTTP server and listen on port 8182
     new Server(Protocol.HTTP, 8182 , Part03. class ).start();
   }
 
   @Get ( "txt" )
   public String toString() {
     return "hello, world" ;
   }
 
}
주해
비록 이 틀은 여전히 유행하고 있지만, 그것의 완성도와 현재의 완성도에 이르러서, 나는 그것에게 별 다섯 개를 줄 수 없다.
Restx
탄생 시간: 2013
평점: 3.5/5
Restx는 경량급, 모듈식, 특성이 다양하고 빠른 자바 REST 프레임워크입니다.
링크
공식 사이트 GITHUB 문서
이점
스피드
짓기 쉽다
진정한 마이크로프레임
모듈식
추가 라이브러리 지원
MongoDB 지원
결점
불친절한 매혹적인 문서.이런 프레임워크에 대해 나는 좀 좋은 문서가 있기를 기대한다
너무 젊다
비동기식 Async는 아직 지원되지 않음
예제

@GET ( "/message/{id}" )
   public Message sayHello(String id, // path param
               String who // query param
               ) {
     return new Message().setMessage(String.format(
         "hello %s, it's %s" ,
         who, DateTime.now().toString( "HH:mm:ss" )));
   }
@POST ( "/message/{id}" )
   public Message sayHello(String id, // path param
               Message msg // body param
               ) {
     return msg.setMessage(String.format(
         "%s @ %s" ,
         msg.getMessage(), DateTime.now().toString( "HH:mm:ss" )));
   }
주해
진심으로 나는 이 틀에 너무 많은 시간을 소비하지 않았다.다른 프레임워크에 너무 많은 정력을 들일 가치가 없다. 내 말은 자바 프레임워크 시장은 이미 갈수록 파편화되었다. 예를 들어 자바 스크립트 시장처럼 이런 추세를 멈춰야 한다는 것이다.
Spark Framework
탄생 시간: 2011
평점: 3.5/5
아파치의 빅데이터 프레임워크인 스파크와 헷갈리지 마세요. 이곳의 스파크 프레임워크는 경량급의 자바 웹 프레임워크로 빠른 개발을 진행합니다(50% 스파크 사용자가 스파크를 사용하여 REST API를 생성합니다).그것은 루비 프레임워크인 시나트라의 계발을 받았다.
그것은 RESTful이나 전통적인 웹 응용 프로그램을 구축하는 데 사용되는 1M도 안 되는 최소화된 커널을 가지고 있다.
링크
공식 사이트 GITHUB 문서
이점
빠르다
우수한 빠른 원형
구축 용이성
AngularJS와 자주 사용
진정한 마이크로프레임
Jetty 사용하기
용기에 사용하거나 독립적으로 운행할 수 있다
결점
문서는 초보자에게 적합하지 않기 때문에 더욱 좋을 수 있다
대형 프로젝트에 적합하지 않음
커뮤니티
예제

import static spark.Spark.*;
 
public class HelloWorld {
  public static void main(String[] args) {
    get( "/hello" , (req, res) -> "Hello World" );
  }
}
주해
이 프레임워크는 초기 개발에 적합하다.주로 작은 프로젝트나 원형으로 쓰인다.

좋은 웹페이지 즐겨찾기