Cada año en el pasado, surgieron más y más marcos de Java. Al igual que JavaScript, todos piensan que saben cómo debería ser la funcionalidad de un buen marco. Incluso mi antigua abuela ahora usa un marco del que nunca he oído hablar y probablemente nunca lo usaré. El mercado del marco hinchado está saturado por el marco hinchado que puede hacer casi cualquier cosa, pero ¿cómo juzgarlo? Este artículo tiene como objetivo proporcionar los mejores marcos Java Restful disponibles en la actualidad. Solo introdujo productos livianos, omitiendo esos marcos de diseño excesivo hinchado. Al mismo tiempo, solo quiero que sean estables y maduros, proporcionando características simples y livianas. Solo he roto esta regla al introducir marcos de juego, la razón se da más adelante. El marco de Java Restful para usar en proyectos futuros depende completamente de sus necesidades actuales. Para facilitar sus elecciones, enumeraré las características del marco más destacadas, con la esperanza de que esto le ahorre algo de tiempo.
Dropwizard
Tiempo de nacimiento: 2011
Calificación: 4.5/5
Dropwizard proporciona una biblioteca Java estable y madura y la encapsula en un paquete simple y liviano.
Dropwizard está en algún lugar entre marco y biblioteca. Proporciona todas las necesidades necesarias para desarrollar una aplicación web. Gracias a la modularidad incorporada, una aplicación puede permanecer pequeña y delgada, reduciendo el tiempo de desarrollo y mantenimiento y reduciendo la carga.
Dropwizard utiliza la biblioteca HTTP de jetty existente para incrustarse en su proyecto sin la necesidad de un servidor externo. Todos los proyectos de Dropwizard tienen un método principal para administrar el servidor HTTP incorporado.
Enlace <Br /> Documentación oficial de GitHub del sitio
ventaja
Construcción rápida del proyecto y inicio
Modular
Increíble rápido (al menos según los resultados medidos por la métrica incorporada)
Jetty para http, jersey para descansar y jackson para json
También es compatible con otras bibliotecas, como bigote, logback, jdbi, validador de hibernación, guayaba, ...
Apoyar el monitoreo con métricas
El método principal inicia el servidor Jetty, que se puede depurar y mantener fácilmente
Fuerza de la comunidad fuerte
defecto
La documentación de Dropwizard es la principal fuente de conocimiento, pero no es excelente. Es posible que deba buscar y descubrir documentos para bibliotecas de terceros.
Por alguna razón, el error se trata como texto sin formato, si desea que el resultado de la respuesta sea siempre JSON, esto puede ser problemático
Asegúrese de usar el último Dropwizard, algunas versiones anteriores usan bibliotecas de terceros abandonadas. Y fue difícil actualizar la dijera temprana
ejemplo
paquete 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; La clase pública HelloWorldApplication extiende la aplicación <LeaLOWOrldConfiguration> {public static void main (String [] args) lanza la excepción {New HelloWorldApplication (). Run (args); } @Override public String getName () {return "Hello-World"; } @Override public void Initialize (bootstrap <HelloworldConfiguration> bootstrap) {// nada que hacer todavía} @Override public void run (configuración de HelloworldConfiguration, entorno ambiental) {// todavía}}} Nota <Br /> Personalmente no quiero recomendar este marco para grandes proyectos. Pero si quieres probarlo, no te decepcionará. Principalmente, este marco utiliza los mejores componentes web modernos de Java y se ensambla en un marco simple y fácil de usar.
Lamentablemente, esto también trae sus problemas. La combinación de estas bibliotecas puede conducir a problemas imprevistos. Es por eso que perdí 0.5 estrellas por ello, sin calificarlo como una puntuación completa de 5 estrellas.
Jersey
Tiempo de nacimiento: 2012 (Jersey 2.x)
Calificación: 5/5
El marco de Jersey Restful es un marco RESTFUL de código abierto que implementa la especificación JAX-RS (JSR 311 y JSR 339). Extiende la implementación de JAX-RS y proporciona más funciones y herramientas que pueden simplificar aún más el servicio RESTful y el desarrollo del cliente. A pesar de ser relativamente nuevo en Xinyi, ya es un servicio RESTful de grado de producto y un marco de clientes.
Enlace <Br /> Documentación oficial de GitHub del sitio
ventaja
Excelente documentación y ejemplos
rápido
Enrutamiento súper fácil
Integración de Junit suave
Personalmente, al desarrollar un servicio RESTFUL, la implementación de JAX-RS es mejor que los marcos MVC.
Se puede integrar en otras bibliotecas/marcos (Grizzly, Netty). Esta también puede ser la razón por la cual muchos productos lo usan.
Soporte de enlace asincrónico
¿No te gustan los contenedores de servlet? Puedes usarlos cuando usas Jersey.
Wadl, XML/JSON Support
Incluido en el pez vidrio
defecto
Jersey 2.0+ utiliza una implementación de inyección de dependencia compleja
Probablemente no sea algo malo. Jersey 1.x implementos utilizando Jax-RS más antiguo
Una gran cantidad de bibliotecas de terceros solo admiten Jersey 1.x, y no están disponibles en Jersey 2.x
ejemplo
paquete org.glassfish.jersey.examples.helloworld; import javax.ws.rs.get; import javax.ws.rs.path; import javax.ws.rs.produce; @Path ("HelloWorld") Clase pública HelloWorldResource {public static final String cliched_message = "¡Hola mundo!" ; @Get@produce ("text/sencillo") public string gethello () {return cliched_message; }} anotación
Jersey es mi elección, 5 estrellas.
Marco web ninja
Tiempo de nacimiento: 2012
Calificación: 3.5/5
Ninja Web Framework es un marco web Java de pila completa. Estable, rápido, confiable, de grado de producto.
Proporciona todo lo que desarrolla, prueba, publica y mantiene aplicaciones web RESTful (Servlets, Guice, JPA, Flyway Migrations, Maven, etc.).
Al igual que Dropwizzard, Ninja Web Framework es una pila de software integrada. No tiene que construir el suyo, solo use Maven Archetype para generar un nuevo proyecto, importarlo al IDE y comenzar a codificar.
Enlace <Br /> Documentación oficial de GitHub del sitio
ventaja
rápido
Construcción rápida del proyecto y inicio
Modular
XML, HTML, JSON Rendering
También se admiten otras bibliotecas (como Guice, Logback, Guava, etc.)
Buena persistencia de datos y almacenamiento en caché
¿No te gusta el contenedor de servlet? Puedes elegir el contenedor que te guste
Si no le gustan los contenedores, puede usar el modo independiente y usar el muelle como un frasco de auto ejecución
defecto
Del mismo modo, como Dropwizzard, la documentación tiene, pero no es lo suficientemente buena. Me llevó mucho tiempo conocerlo. Este marco también se basa en muchas otras bibliotecas, y a veces es problemático obtener la información requerida.
No es muy famosa, pequeña comunidad. Hay rumores de que este marco fue creado por los usuarios de Play 2.x que cambiaron a Scala
ejemplo
controladores de paquetes; Public Class ApplicationController {Public Result Index () {Person Person = New Person (); persona.name = "John Johnson"; return resultados.json (). render (persona); }}Tenga en cuenta <Br /> Se ve bien, pero lo tiraré a un lado antes de que madure.
Marco de juego
Tiempo de nacimiento: 2011
Calificación: 4/5
Use el marco de juego para crear, crear y publicar aplicaciones web con soporte Java y Scala. Utiliza Akka, basado en una arquitectura liviana sin estado. Debe usarse para aplicaciones con bajo consumo de CPU y memoria a gran escala.
Enlace <Br /> Documentación oficial de GitHub del sitio
ventaja
Fácil de desarrollar
Rápido, pero no tan rápido como otros marcos
Basado en Netty, admite E/S sin bloqueo. Es excelente al manejar llamadas remotas en paralelo.
La comunidad es grande
Construcción rápida del proyecto y inicio
Modular
MVC
REST, JSON/XML, SOCKETS WEB, E/S sin bloqueo
Simplemente actualice el navegador para ver los últimos cambios
Apoyo a Async
Hay libros publicados
defecto
La versión 2.0 es el marco Java más controvertido. Cambiar a Scala hizo que algunos desarrolladores de Java fueran fuertes.
No compatible con retroceso; Jugar 2.x reescrito
Se conoce como liviano, pero está un poco hinchado
Herramienta de compilación SBT. Conocido como el asesino Maven, pero nunca sobresale para reemplazarlo. Difícil de aprender y configurar
No servicio
Rompiendo cambios entre los lanzamientos
ejemplo
Controladores de paquete Importar Play.api._import Play.api.mvc._ La aplicación de clase extiende el controlador {def hello (name: string) = Action {ok ("Hola" + nombre + "!")}}Tenga en cuenta <Br /> No importa cuánto me queje, todavía me gusta y elijo primero este marco. Desafortunadamente, solo puedo darle 4 estrellas. Creo firmemente que un marco basado en JAX-RS es más adecuado para servicios web RESTful.
Reiniciar
Tiempo de nacimiento: 2009
Calificación: 3/5
REVEXpress es un envoltorio de pila Netty HTTP sintonista que no contiene para facilitar la creación de servicios Java Restful.
El objetivo de REVEXpress es apoyar las mejores prácticas relajantes.
Enlace
Github
ventaja
Real Microframework
Rendimiento superior, rápido y confiable
XML/JSON
Uno de los marcos de descanso más antiguos y estables
defecto
Sin documentación
Casi no hay apoyo
Una comunidad muy pequeña
ejemplo
paquete com.example; import java.io.ioException; import io.netty.handler.codec.http.httpmethod; import org.restexpress.restexpress; Public Class Main {public static RETEXPress startserver (String [] args) lanza 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); servidor.bind (8080); servidor de retorno; } public static void main (string [] args) lanza la excepción {RESTEXPress Server = starterver (args); System.out.println ("presione Enter para detenerlo ..."); System.in.read (); server.shutdown (); }}Nota <Br /> Aunque este marco es súper rápido, tampoco quiero recomendarlo. La falta de documentación y la falta de apoyo lo convierten en un marco subdesarrollado. Dale 3 estrellas para la velocidad.
Rejilla
Tiempo de nacimiento: 2005
Calificación: 4.5/5
Restlet ayuda a los programadores de Java a construir API web rápidas a gran escala que se ajustan a los patrones de arquitectura tranquilos.
Proporciona potentes sistemas de enrutamiento y filtrado. La API Java de cliente/servidor unificado cumple con todas las plataformas principales (Java SE/EE, Google Appengine, OSGI, GWT, Android) y proporciona innumerables extensiones para satisfacer las necesidades de los programadores.
Por lo que puedo decir, es el primer marco web Java Restful. Muchas compañías lo usan, pero es posible que nunca haya oído hablar de él, como si ya no fuera visible.
Enlace <Br /> Documentación oficial de GitHub del sitio
ventaja
poderoso
Marco de nivel empresarial
Java SE multiplataforma, Java EE, Google Web Toolkit, Google Appengine, Android, entornos OSGI
Apoya a Jax-RS (al igual que Jersey)
Soporte RESTful más avanzado
Modular
Apoyar otras bibliotecas
El desarrollo ha sido activo
IRI de URL inteligente, enrutamiento URI con todas las funciones
Hay libros relacionados
defecto
Curva de aprendizaje muy empinada
Comunidad cerrada, abierta incluso en Stackoverflow
Ya no es popular, más debido a Play Framework y Jersey
ejemplo
Public Class Part03 extiende ServerResource {public static void main (string [] args) lanza la excepción {// Crear el servidor HTTP y escuchar en el puerto 8182 nuevo servidor (Protocol.http, 8182, parte03. class) .start (); } @Get ("txt") public string toString () {return "Hello, World"; }}Nota <Br /> Aunque este marco ha sido popular todo el tiempo, no puedo darle 5 estrellas a su finalización y actualización actual.
Reposo
Tiempo de nacimiento: 2013
Calificación: 3.5/5
RESTX es un marco de descanso Java de código abierto liviano, modular, multifaurado y súper rápido.
Enlace <Br /> Documentación oficial de GitHub del sitio
ventaja
Rápido, liviano
Fácil de construir
Real Microframework
Modular
Apoyar otras bibliotecas
Apoyo MongoDB
defecto
Documentación confusa hostil. Espero una mejor documentación para este tipo de marco.
Demasiado joven
Async asíncrono aún no es compatible
ejemplo
@Get ("/mensaje/{id}") Mensaje público Sayshello (ID de cadena, // Path Param String String Who // Query Param) {return New Message (). SetMessage (String.format ("Hello %S, es %s", Who, Datetime.Now (). Tostring ("HH: MM: SS")); } @Post ("/mensaje/{id}") Mensaje público Sayshello (ID de cadena, // Path Param Mensaje Msg // Body Param) {return msg.setMessage (string.format (" %s @ %s", msg.getMessage (), detaTime.now (). ToString ("Hh: mm: ss"))); }Nota <Br /> Para ser honesto, no pasé mucho tiempo en este marco. No vale la pena gastar demasiado esfuerzo en otro marco, quiero decir, el mercado del marco Java se está volviendo cada vez más fragmentado, al igual que el mercado de JavaScript, esta tendencia debería detenerse.
Marco de chispa
Tiempo de nacimiento: 2011
Calificación: 3.5/5
No se confunda con el Big Data Framework Spark de Apache, el marco Spark aquí es un marco web Java ligero para el desarrollo rápido (el 50% de los usuarios de Spark usan Spark para crear API REST). Está inspirado en el marco Ruby Sinatra.
Tiene un núcleo minimizado de menos de 1 m y proporciona todas las características básicas para construir aplicaciones web relajantes o tradicionales.
Enlace <Br /> Documentación oficial de GitHub del sitio
ventaja
Rápido, liviano
Excelente prototipo rápido
Fácil de construir
A menudo usado con angularjs
Real Microframework
Usando el muelle
Se puede usar en contenedores o ejecutar de forma independiente
defecto
La documentación puede ser mejor, no es adecuada para principiantes
No es adecuado para proyectos grandes
Comunidad pequeña
ejemplo
Importar Spark.spark estático.*; public class Helloworld {public static void main (string [] args) {get ("/hello", (req, res) -> "Hello World"); }}Nota <Br /> Este marco es adecuado para el desarrollo inicial. Utilizado principalmente como pequeños proyectos o prototipos.