매년 과거에는 점점 더 많은 Java 프레임 워크가 등장했습니다. JavaScript와 마찬가지로 모든 사람은 좋은 프레임 워크의 기능이 어떤지 알고 있다고 생각합니다. 내 늙은 할머니조차도 지금 들어 본 적이없는 프레임 워크를 사용하고 아마도 사용하지 않을 것입니다. 부풀린 프레임 워크 시장은 거의 모든 것을 할 수있는 부풀어 오른 프레임 워크에 의해 포화되어 있지만 그것을 판단하는 방법은 무엇입니까? 이 기사는 현재 사용 가능한 최고의 Java Restful 프레임 워크를 제공하는 것을 목표로합니다. 가벼운 제품 만 소개하여 부풀어 오른 과도하게 설계된 프레임 워크를 건너 뜁니다. 동시에, 나는 단지 안정적이고 성숙하여 간단하고 가벼운 기능을 제공하기를 원합니다. Play Frameworks를 소개 할 때만이 규칙을 깨뜨 렸습니다. 그 이유는 나중에 주어집니다. 향후 프로젝트에서 사용할 Java Restful 프레임 워크는 현재 현재 요구에 달려 있습니다. 선택을보다 쉽게하기 위해 가장 두드러진 프레임 워크 기능을 나열하여 시간을 절약 할 수 있기를 바랍니다.
Dropwizard
출생 시간 : 2011
평가 : 4.5/5
Dropwizard는 안정적이고 성숙한 Java 라이브러리를 제공하여 간단하고 가벼운 패키지로 캡슐화합니다.
Dropwizard는 프레임 워크와 라이브러리 사이에 있습니다. 웹 응용 프로그램을 개발하는 데 필요한 모든 필요성을 제공합니다. 내장 모듈성 덕분에 응용 프로그램은 작고 마른 상태로 유지되어 개발 및 유지 보수 시간을 줄이고 부담을 줄일 수 있습니다.
Dropwizard는 기존 Jetty HTTP 라이브러리를 사용하여 외부 서버없이 프로젝트에 포함됩니다. 모든 Dropwizard 프로젝트에는 내장 HTTP 서버를 관리하는 주요 방법이 있습니다.
링크 <br /> 공식 사이트 github 문서
이점
빠른 프로젝트 구성 및 시작
모듈 식
믿을 수없는 빠른 (적어도 내장 메트릭으로 측정 한 결과를 기준으로)
HTTP의 Jetty, Jersey for Rest, Json의 Jackson
또한 콧수염, 로그백, JDBI, Hibernate Validator, Guava와 같은 다른 라이브러리를 지원합니다.
메트릭으로 모니터링을 지원합니다
기본 메소드는 부두 서버를 시작하여 디버깅하고 쉽게 유지할 수 있습니다.
강력한 공동체의 힘
결점
Dropwizard 문서는 주요 지식의 원천이지만 우수하지는 않습니다. 타사 라이브러리의 문서를 검색하고 발견해야 할 수도 있습니다.
어떤 이유로 든 오류는 일반 텍스트로 취급됩니다. 응답 결과가 항상 JSON이 되려면 문제가 될 수 있습니다.
최신 Dropwizard를 사용해보십시오. 일부 이전 버전은 버려진 타사 라이브러리를 사용합니다. 그리고 초기 드롭 위조드를 업그레이드하기가 어려웠습니다
예
패키지 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; 공개 클래스 helloworldApplication application <helloworldconfiguration> {public static void main (string [] args)은 예외 {new helloworlDapplication (). run (args); } @override public String getName () {return "hello-world"; } @override public void initialize (bootstrap <HellowOrldConfiguration> bootstrap) {// 아직 할 일이 없음} @override public void run (helloworldConfiguration 구성, 환경 환경) {// 아직 할 일이 없습니다}} 참고 <br /> 나는 개인적으로 큰 프로젝트 에이 프레임 워크를 추천하고 싶지 않습니다. 그러나 시도하고 싶다면 실망하지 않을 것입니다. 주로이 프레임 워크는 최고의 최신 Java 웹 구성 요소를 사용하고 간단하고 사용하기 쉬운 프레임 워크로 조립합니다.
불행히도 이것은 또한 문제를 일으킨다. 이러한 라이브러리를 결합하면 예상치 못한 문제가 발생할 수 있습니다. 그렇기 때문에 별 5 점의 전체 점수로 평가하지 않고 0.5 스타를 잃어 버렸습니다.
저지
출생 시간 : 2012 (Jersey 2.X)
평가 : 5/5
Jersey Restful Framework는 JAX-RS (JSR 311 & JSR 339) 사양을 구현하는 오픈 소스 RESTful Framework입니다. JAX-RS 구현을 확장하고 편안한 서비스 및 클라이언트 개발을 더욱 단순화 할 수있는 더 많은 기능과 도구를 제공합니다. Xinyi에 비교적 새로운 것이 었음에도 불구하고 이미 제품 등급의 편안한 서비스 및 클라이언트 프레임 워크입니다.
링크 <br /> 공식 사이트 github 문서
이점
훌륭한 문서 및 예제
빠른
매우 쉬운 라우팅
부드러운 주니트 통합
개인적으로 RESTFul 서비스를 개발할 때 JAX-RS 구현은 MVC 프레임 워크보다 낫습니다.
다른 라이브러리/프레임 워크 (Grizzly, Netty)에 통합 될 수 있습니다. 이것은 또한 많은 제품이 사용하는 이유 일 수 있습니다.
비동기 연결을 지원합니다
서블릿 컨테이너가 마음에 들지 않습니까? 저지를 사용할 때 사용할 수 있습니다.
WADL, XML/JSON 지원
Glassfish에 포함됩니다
결점
Jersey 2.0+는 일부 복잡한 의존성 주입 구현을 사용합니다
아마도 나쁘지 않을 것입니다. Jersey 1.X는 구형 JAX-R을 사용하여 구현합니다
많은 타사 라이브러리는 Jersey 1.X를 지원하며 Jersey 2.X에서만 사용할 수 없습니다.
예
패키지 org.glassfish.jersey.examples.helloworld; import javax.ws.rs.get; import javax.ws.rs.path; import javax.ws.rs.produces; @Path ( "HelloWorld") 공개 클래스 HelloWorlDresource {public static final String Cliched_message = "Hello World!" ; @get@produces ( "text/plain") public String gethello () {return cliched_message; }} 주석
저지는 나의 선택, 별 5 개입니다.
닌자 웹 프레임 워크
출생 시간 : 2012
평가 : 3.5/5
닌자 웹 프레임 워크는 풀 스택 Java 웹 프레임 워크입니다. 안정적이고 빠르며 신뢰할 수 있으며 제품 등급.
RESTFul 웹 응용 프로그램 (Servlet, Guice, JPA, Flyway Migrations, Maven 등)을 개발, 테스트, 게시 및 유지하는 모든 것을 제공합니다.
Dropwizzard와 마찬가지로 Ninja Web Framework는 통합 소프트웨어 스택입니다. 당신은 자신의 것을 구축 할 필요가 없으며 Maven Archetype을 사용하여 새 프로젝트를 생성하고 IDE로 가져오고 코딩을 시작하십시오.
링크 <br /> 공식 사이트 github 문서
이점
빠른
빠른 프로젝트 구성 및 시작
모듈 식
XML, HTML, JSON 렌더링
다른 도서관도 지원됩니다 (예 : Guice, Logback, Guava 등).
좋은 데이터 지속성 및 캐싱
서블릿 컨테이너가 마음에 들지 않습니까? 당신이 좋아하는 컨테이너를 선택할 수 있습니다
컨테이너가 전혀 마음에 들지 않으면 독립형 모드를 사용하여 Jetty를 자체 실행 항아리로 사용할 수 있습니다.
결점
마찬가지로 Dropwizzard와 마찬가지로 문서는 충분하지만 충분하지 않습니다. 그것을 알아가는 데 오랜 시간이 걸렸습니다. 이 프레임 워크는 또한 다른 많은 라이브러리에 의존하며 때로는 필요한 정보를 얻는 것이 번거 롭습니다.
그다지 유명하지 않은 작은 공동체. 이 프레임 워크는 Scala로 전환 한 Play 2.x 사용자가 만들었다는 소문이 있습니다.
예
패키지 컨트롤러; 공개 클래스 ApplicationController {public result index () {person person = new person (); person.name = "John Johnson"; return results.json (). render (person); }}참고 <br /> 좋아 보이지만 성숙하기 전에 옆으로 던질 것입니다.
프레임 워크를 재생하십시오
출생 시간 : 2011
평가 : 4/5
Play Framework를 사용하여 Java & Scala Support를 사용하여 웹 응용 프로그램을 작성, 빌드 및 게시하십시오. 가벼운 무국적 아키텍처를 기반으로 Akka를 사용합니다. CPU가 낮고 메모리 소비를 대규모로 사용하는 데 사용해야합니다.
링크 <br /> 공식 사이트 github 문서
이점
개발하기 쉽습니다
빠르지 만 다른 프레임 워크만큼 빠르지는 않습니다
Netty를 기반으로 비 블로킹 I/O를 지원합니다. 원격 통화를 병렬로 처리 할 때 우수합니다.
커뮤니티는 크다
빠른 프로젝트 구성 및 시작
모듈 식
MVC
REST, JSON/XML, 웹 소켓, 비 블로킹 I/O
브라우저를 새로 고치면 최신 변경 사항을 확인하십시오
비동기를 지원합니다
출판 된 책이 있습니다
결점
버전 2.0은 가장 논란의 여지가있는 Java 프레임 워크입니다. Scala로 전환하면 일부 Java 개발자가 아웃 트레이드되었습니다.
뒤로 호환되지 않습니다. 2.X 재생을 재생합니다
그것은 경량으로 알려져 있지만 약간 부풀어 오른다
SBT 빌드 도구. Maven Killer로 알려져 있지만 교체하기 위해 결코 탁월하지 않습니다. 배우고 구성하기 어렵습니다
비 서비스
릴리스의 변화를 깨뜨립니다
예
패키지 컨트롤러 가져 오기 play.api._import play.api.mvc._ 클래스 응용 프로그램 확장 컨트롤러 {def hello (이름 : String) = action {ok ( "hello" + name + "!")}}참고 <br /> 내가 아무리 불평하더라도, 나는 여전히이 프레임 워크를 먼저 좋아하고 선택합니다. 불행히도, 나는 별 4 개만 줄 수 있습니다. JAX-RS를 기반으로 한 프레임 워크가 RESTFul 웹 서비스에 더 적합하다고 굳게 믿고 있습니다.
Restexpress
출생 시간 : 2009
평가 : 3/5
Restexpress는 비 컨테이너 가벼운 Netty HTTP 스택 래퍼로 Java Restful 서비스를보다 쉽게 만들 수 있도록합니다.
Restexpress의 목표는 최고의 Restful Practices를 지원하는 것입니다.
링크
github
이점
실제 마이크로 프레임 워크
최고의 성능, 빠르고 신뢰할 수 있습니다
XML/JSON
가장 오래되고 가장 안정적인 편안한 프레임 워크 중 하나입니다
결점
문서가 없습니다
거의 지원이 없습니다
아주 작은 커뮤니티
예
패키지 com.example; import java.io.ioexception; 가져 오기 io.netty.handler.codec.http.httpmethod; import org.restexpress.restexpress; Public Class Main {public static restexpress statcherver (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 = stighterver (args); System.out.println ( "Enter를 히트하여 중지 ..."); system.in.read (); server.shutdown (); }}참고 <br />이 프레임 워크는 매우 빠르지 만 추천하고 싶지는 않습니다. 문서의 부족과 지원 부족으로 인해 저개발 프레임 워크가됩니다. 속도를 위해 별 3 개를 줘.
restlet
출생 시간 : 2005
평가 : 4.5/5
Restlet은 Java 프로그래머가 편안한 아키텍처 패턴을 준수하는 대규모의 빠른 웹 API를 구축 할 수 있도록 도와줍니다.
강력한 라우팅 및 필터링 시스템을 제공합니다. Unified Client/Server Java API는 모든 주요 플랫폼 (Java SE/EE, Google Appengine, OSGI, GWT, Android)을 충족하며 프로그래머의 요구를 충족시키기 위해 수많은 확장 기능을 제공합니다.
내가 알 수있는 한, 그것은 최초의 Java Restful Web Framework입니다. 많은 회사들이 그것을 사용하지만, 더 이상 보이지 않는 것처럼 들어 본 적이 없을 수도 있습니다.
링크 <br /> 공식 사이트 github 문서
이점
강한
엔터프라이즈 레벨 프레임 워크
멀티 플랫폼 Java SE, Java EE, Google 웹 툴킷, Google Appengine, Android, OSGI 환경
JAX-RS 지원 (저지와 마찬가지로)
대부분의 고급 편안한 지원
모듈 식
다른 라이브러리를 지원합니다
개발은 활성화되었습니다
스마트 URL 바인딩, 완전한 기능 URI 라우팅
관련 서적이 있습니다
결점
매우 가파른 학습 곡선
폐쇄 된 커뮤니티, StackoverFlow에서도 열립니다
더 이상 인기가없고, 플레이 프레임 워크와 저지 때문에
예
Public Class Part03은 ServerResource {public static void main (string [] args) 예외를 {// http 서버를 생성하고 포트 8182 새 서버 (properocol.http, 8182, part03. class) .Start ()에서 듣습니다. } @get ( "txt") public String toString () {return "Hello, World"; }}참고 <br />이 프레임 워크는 항상 인기가 있었지만, 현재 완성에 별 5 개를 줄 수는 없습니다.
RESTX
출생 시간 : 2013
평가 : 3.5/5
RESTX는 가볍고 모듈 식, 다중 기능, 매우 빠른 오픈 소스 Java Rest 프레임 워크입니다.
링크 <br /> 공식 사이트 github 문서
이점
빠르고 가볍습니다
쉽게 빌드 할 수 있습니다
실제 마이크로 프레임 워크
모듈 식
다른 라이브러리를 지원합니다
MongoDB를 지원하십시오
결점
비 우호적 인 혼란스러운 문서. 이러한 유형의 프레임 워크에 대한 더 나은 문서화를 기대합니다
너무 어립니다
비동기 비동기는 아직 지원되지 않습니다
예
@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 sayshello (문자열 id, // path param message msg // body param) {return msg.setmessage (string.setMessage ( " %s @ %s", msg.getMessage (), dateTime.now (). toString ( "hh : mm : ss")); }참고 <br /> 솔직히 말해서, 나는이 프레임 워크에 많은 시간을 보내지 않았습니다. 다른 프레임 워크에 너무 많은 노력을 기울일 가치가 없습니다. Java 프레임 워크 시장은 JavaScript 시장과 마찬가지로 점점 더 단편화되고 있습니다.이 추세는 중단되어야합니다.
스파크 프레임 워크
출생 시간 : 2011
평가 : 3.5/5
Apache의 빅 데이터 프레임 워크 Spark와 혼동하지 마십시오. 여기에서 Spark Framework는 빠른 개발을위한 가벼운 Java 웹 프레임 워크입니다 (Spark 사용자의 50%가 Spark를 사용하여 REST API를 생성합니다). 루비 프레임 워크 Sinatra에서 영감을 얻었습니다.
1m 미만의 커널이 최소화되어 있으며 편안하거나 전통적인 웹 애플리케이션을 구축 할 수있는 모든 기본 기능을 제공합니다.
링크 <br /> 공식 사이트 github 문서
이점
빠르고 가볍습니다
우수한 빠른 프로토 타입
쉽게 빌드 할 수 있습니다
종종 Angularjs와 함께 사용됩니다
실제 마이크로 프레임 워크
부두 사용
컨테이너에서 사용하거나 독립적으로 실행할 수 있습니다
결점
문서화가 더 좋을 수 있고 초보자에게는 적합하지 않습니다.
대규모 프로젝트에는 적합하지 않습니다
커뮤니티 소규모
예
static spark.spark.*; 공개 클래스 helloworld {public static void main (String [] args) {get ( "/hello", (req, res) -> "Hello World"); }}참고 <br />이 프레임 워크는 초기 개발에 적합합니다. 주로 소규모 프로젝트 또는 프로토 타입으로 사용됩니다.