Jedes Jahr tauchten in der Vergangenheit immer mehr Java -Frameworks auf. Wie JavaScript glaubt jeder, dass er weiß, wie die Funktionalität eines guten Frameworks aussehen sollte. Sogar meine alte Großmutter benutzt jetzt ein Framework, von dem ich noch nie gehört habe und das ich wahrscheinlich nie benutzen wird. Der aufgeblähte Framework -Markt ist gesättigt über den aufgeblähten Rahmen, der fast alles kann, aber wie kann man ihn beurteilen? Dieser Artikel zielt darauf ab, die besten Java -Ruhestands -Frameworks zur Verfügung zu stellen, die derzeit verfügbar sind. Ich stelle nur leichte Produkte ein und überspringe diese aufgeblähten übergeordneten Frameworks. Gleichzeitig möchte ich nur, dass sie stabil und reif sind und einfache, leichte Funktionen bieten. Ich habe diese Regel nur bei der Einführung von Play -Frameworks gebrochen. Der Grund wird später angegeben. Welcher Java -Ruhestand in zukünftigen Projekten verwendet werden soll, hängt ausschließlich von Ihren aktuellen Anforderungen ab. Um Ihre Auswahlmöglichkeiten zu erleichtern, werde ich die bekanntesten Framework -Funktionen auflisten, in der Hoffnung, dass Sie dies einige Zeit sparen.
Dropwizard
Geburtszeit: 2011
Bewertung: 4,5/5
DropWizard bietet eine stabile und reife Java -Bibliothek und füllt sie in ein einfaches und leichtes Paket.
Dropwizard liegt irgendwo zwischen Framework und Bibliothek. Es bietet alle erforderlichen Bedürfnisse, um eine Webanwendung zu entwickeln. Dank der integrierten Modularität kann eine Anwendung klein und schlank bleiben, die die Entwicklungs- und Wartungszeit verkürzen und die Belastung verkürzen.
DropWizard verwendet die vorhandene HTTP -Bibliothek von Stegy, um in Ihr Projekt einzubetten, ohne dass ein externer Server erforderlich ist. Alle Dropwizard-Projekte haben eine Hauptmethode, um integrierten HTTP-Server zu verwalten.
Link <BR /> offizielle Site Github -Dokumentation
Vorteil
Schnelle Projektkonstruktion und Startup
Modular
Unglaublich schnell (zumindest basierend auf den Ergebnissen, die durch die eingebaute Metrik gemessen wurden)
Jetty für HTTP, Jersey für Ruhe und Jackson für JSON
Es unterstützt auch andere Bibliotheken wie Schnurrbart, Logback, JDBI, Hibernate Validator, Guava,…
Unterstützung der Überwachung mit Metriken
Hauptmethode startet den Jetty -Server, der leicht debugged und gewartet werden kann
Starke Stärke der Gemeinschaft
Mangel
Die Dropwizard -Dokumentation ist die Hauptkenntnisquelle, aber nicht ausgezeichnet. Möglicherweise müssen Sie Dokumente für Bibliotheken von Drittanbietern suchen und entdecken.
Aus irgendeinem Grund wird der Fehler als einfacher Text behandelt. Wenn Sie möchten, dass das Antwortergebnis immer JSON ist, kann dies problematisch sein
Stellen Sie sicher, dass Sie den neuesten DropWizard verwenden. Einige ältere Versionen verwenden verlassene Bibliotheken von Drittanbietern. Und es war schwierig, den frühen Dropwizzard zu verbessern
Beispiel
Paket com.example.Helloworld; importieren io.dropwizard.application; import io.dropwizard.setup.bootstrap; import io.dropwizard.setup.Environment; importieren com.example.helloworld.resources.Helloworldresource; com.example.hellhellld.Health.TemplateHealthChteck; public class helloWorldApplication erweitert die Anwendung <HelloWorldConfiguration> {public static void main (String [] args) löst eine Ausnahme aus {new HelloWorDApplication (). Run (Args); } @Override public String getName () {return "hello world"; } @Override public void initialize (Bootstrap <HelloWorldConfiguration> Bootstrap) {// Noch nichts zu tun} @Override public void Run (HelloWorldConfiguration -Konfiguration, Umgebungsumgebung) {// nichts zu tun}}}}} Hinweis <BR /> Ich persönlich möchte diesen Rahmen nicht für große Projekte empfehlen. Aber wenn Sie es versuchen wollen, werden Sie nicht enttäuscht sein. Hauptsächlich verwendet dieses Framework die besten modernen Java-Webkomponenten und montiert zu einem einfachen und benutzerfreundlichen Framework.
Leider bringt dies auch seine Probleme. Die Kombination dieser Bibliotheken kann zu unvorhergesehenen Problemen führen. Deshalb habe ich 0,5 Sterne dafür verloren, ohne es als eine volle Punktzahl von 5 Sternen zu bewerten.
Jersey
Geburtszeit: 2012 (Jersey 2.x)
Bewertung: 5/5
Das Ruhestand von Jersey ist ein Open-Source-Ruhestand, das die Spezifikation der JAX-RS (JSR 311 & JSR 339) implementiert. Es erweitert die JAX-RS-Implementierung und bietet mehr Funktionen und Tools, die den erholsamen Service und die Kundenentwicklung weiter vereinfachen können. Obwohl es in Xinyi relativ neu ist, handelt es sich bereits um einen rastful-Service- und Kundenrahmen für produktqualifiziertes.
Link <BR /> offizielle Site Github -Dokumentation
Vorteil
Ausgezeichnete Dokumentation und Beispiele
schnell
Super einfaches Routing
Smooth JUNIT Integration
Persönlich ist die JAX-RS-Implementierung bei der Entwicklung von Rastful-Service besser als MVC-Frameworks.
Es kann in andere Bibliotheken/Frameworks (Grizzly, Netty) integriert werden. Dies kann auch der Grund sein, warum viele Produkte es verwenden.
Unterstützen Sie asynchrone Verknüpfungen
Mögen Sie keine Servlet -Container? Sie können sie bei der Verwendung von Jersey verwenden.
WADL, XML/JSON -Unterstützung
In Glassfish enthalten
Mangel
Jersey 2.0+ verwendet eine komplexe Implementierung der Abhängigkeitsinjektion
Wahrscheinlich keine schlechte Sache. Jersey 1.x implementiert mit älteren Jax-Rs
Eine große Anzahl von Bibliotheken von Drittanbietern unterstützt Jersey 1.x nur und ist nicht in Jersey 2.x erhältlich
Beispiel
Paket 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 = "Hallo Welt!" ; @Get@produziert ("text/plain") public String gethello () {return cliched_message; }} Anmerkung
Jersey ist meine Wahl, 5 Sterne.
Ninja Web Framework
Geburtszeit: 2012
Bewertung: 3,5/5
Ninja Web Framework ist ein Full-Stack-Java-Web-Framework. Stabil, schnell, zuverlässig, produktquist.
Es bietet alles, was sich entwickelt, testet, veröffentlichen und erholsame Webanwendungen verwaltet (Servlets, Guice, JPA, Flyway -Migrationen, Maven usw.).
Genau wie bei Dropwizzard ist Ninja Web Framework ein integrierter Software -Stapel. Sie müssen nicht Ihr eigenes erstellen, verwenden Sie einfach den Maven -Archetyp, um ein neues Projekt zu generieren, in die IDE zu importieren und mit dem Codieren zu beginnen.
Link <BR /> offizielle Site Github -Dokumentation
Vorteil
schnell
Schnelle Projektkonstruktion und Startup
Modular
XML, HTML, JSON Rendering
Andere Bibliotheken werden ebenfalls unterstützt (wie Guice, Logback, Guave usw.)
Gute Datendauer und Ausschnitt
Mögen Sie keinen Servlet -Container? Sie können den Container auswählen, den Sie mögen
Wenn Sie Container überhaupt nicht mögen, können Sie den Standalone-Modus verwenden und Steg als selbstversorgungsgeschäftsfleisch verwenden
Mangel
Ebenso hat die Dokumentation wie DropWizzard, aber nicht gut genug. Ich habe lange gebraucht, um es kennenzulernen. Dieses Framework beruht auch auf viele andere Bibliotheken, und manchmal ist es problematisch, die erforderlichen Informationen zu erhalten.
Nicht sehr berühmt, kleine Gemeinschaft. Es gibt Gerüchte, dass dieses Framework von Play 2.x -Benutzern erstellt wurde, die zu Scala umgestellt wurden
Beispiel
Paketcontroller; public class applicationController {public result index () {Person Person = new Person (); Person.Name = "John Johnson"; Rückgabeergebnisse.json (). Render (Person); }}Hinweis <br /> Es sieht gut aus, aber ich werde es einfach beiseite werfen, bevor es reift.
Rahmen spielen
Geburtszeit: 2011
Bewertung: 4/5
Verwenden Sie das Play -Framework, um Webanwendungen mit Java & Scala -Unterstützung zu erstellen, zu erstellen und zu veröffentlichen. Es verwendet Akka, basierend auf einer leichten staatenlosen Architektur. Es sollte für Anwendungen mit niedrigem CPU und Speicherverbrauch in großem Maßstab verwendet werden.
Link <BR /> offizielle Site Github -Dokumentation
Vorteil
Leicht zu entwickeln
Schnell, aber nicht so schnell wie andere Frameworks
Basierend auf Netty unterstützt es nicht blockierende i/o. Es ist ausgezeichnet, wenn es parallel abwickelt.
Die Gemeinschaft ist groß
Schnelle Projektkonstruktion und Startup
Modular
MVC
Ruhe, JSON/XML, Web Sockets, nicht blockierende i/o
Aktualisieren Sie einfach den Browser, um die neuesten Änderungen zu sehen
Unterstützung Async
Es gibt veröffentlichte Bücher
Mangel
Version 2.0 ist das umstrittenste Java -Framework. Um Wechsel zu Scala machte einige Java -Entwickler ausgestattet.
Nicht rückwärtskompatibel; Spielen 2.x umgeschrieben
Es ist als leicht bekannt, aber es ist ein bisschen aufgebläht
SBT -Build -Tool. Bekannt als der Maven -Killer, aber nie übertrifft, um ihn zu ersetzen. Schwer zu lernen und zu konfigurieren
Nicht-Service
Veränderungen zwischen Veröffentlichungen durchbrechen
Beispiel
Paketcontroller importieren play.api._import play.api.mvc._ class -Anwendung erweitert Controller {def hello (name: string) = action {OK ("Hallo" + Name + "!")}}Hinweis <BR /> Egal wie sehr ich mich beschwere, ich mag und wähle dieses Framework zuerst. Leider kann ich es nur 4 Sterne geben. Ich bin fest davon überzeugt, dass ein auf JAX-RS basierendes Framework besser für erholsame Webdienste geeignet ist.
RestExpress
Geburtszeit: 2009
Bewertung: 3/5
RestExpress ist ein leichter Netty-HTTP-Stack-Wrapper von Netty Netty, damit die Erstellung von Java Rastful-Diensten einfacher ist.
Das Ziel von RestExpress ist es, die besten erholsamen Praktiken zu unterstützen.
Link
Github
Vorteil
Echte Mikroframework
Top -Leistung, schnell und zuverlässig
XML/JSON
Eines der ältesten und stabilsten Rückenrahmen
Mangel
Keine Dokumentation
Fast keine Unterstützung
Eine sehr kleine Gemeinschaft
Beispiel
Paket com.example; importieren java.io.ioException; importieren io.netty.handler.codec.http.httpMethod; import org.restexpress.restexpress; public class main {public static restExpress startserver (String [] args) löst IOException aus {restExpress server = new restExpress (); Myresource r = neuer Myresource (); server.uri ("/myapp/myresource", r) .Method (httpMethod.get) .noserialization (); server.uri ("/myapp/myresource", r) .method (httpMethod.post); server.bind (8080); Server zurückgeben; } public static void main (String [] args) löst Ausnahme aus {restExpress server = startserver (args); System.out.println ("Treffer eingeben, um es zu stoppen ..."); System.in.Read (); server.shutdown (); }}Hinweis <BR /> Obwohl dieses Framework super schnell ist, möchte ich es auch nicht empfehlen. Die mangelnde Dokumentation und der Mangel an Unterstützung machen es zu einem unterentwickelten Rahmen. Gib es 3 Sterne für Geschwindigkeit.
Restlet
Geburtszeit: 2005
Bewertung: 4,5/5
Restlet hilft Java-Programmierern, groß angelegte, schnelle Web-APIs aufzubauen, die sich den erholsamen Architekturmustern entsprechen.
Es bietet leistungsstarke Routing- und Filtersysteme. Die Unified Client/Server Java API erfüllt alle wichtigen Plattformen (Java SE/EE, Google Appengine, OSGI, GWT, Android) und bietet unzählige Erweiterungen, um die Anforderungen der Programmierer zu erfüllen.
Soweit ich das beurteilen kann, ist es das erste Rastful -Web -Framework von Java. Viele Unternehmen verwenden es, aber Sie haben vielleicht noch nie davon gehört, als ob es nicht mehr sichtbar wäre.
Link <BR /> offizielle Site Github -Dokumentation
Vorteil
kraftvoll
Unternehmensebene
Multi-Plattform Java SE, Java EE, Google Web Toolkit, Google Appengine, Android, OSGI-Umgebungen
Unterstützen Sie JAX-RS (genau wie Jersey)
Die fortschrittlichste erholsame Unterstützung
Modular
Unterstützen Sie andere Bibliotheken
Die Entwicklung war aktiv
Bindende URI-URI-URI-URI-URI-Routing
Es gibt verwandte Bücher
Mangel
Sehr steile Lernkurve
Geschlossene Community, offen sogar für Stackoverflow
Nicht mehr beliebt, mehr wegen des Spiels Framework und Jersey
Beispiel
public class Part03 erweitert ServerResource {public static void main (String [] args) löst Ausnahme aus {// Erstellen Sie den HTTP -Server und hören Sie auf Port 8182 neuer Server (Protocol.http, 8182, Teil03. Klasse) .Start (); } @Get ("txt") public String toString () {return "Hallo, Welt"; }}Hinweis <BR /> Obwohl dieses Framework ständig beliebt war, kann ich ihm nicht 5 Sterne für seine und aktuelle Fertigstellung geben.
Restx
Geburtszeit: 2013
Bewertung: 3,5/5
Restx ist ein leichtes, modulares, mehrfunktioniertes, superschnelles Open-Source-Java-REST-Framework.
Link <BR /> offizielle Site Github -Dokumentation
Vorteil
Schnell, leicht
Leicht zu bauen
Echte Mikroframework
Modular
Unterstützen Sie andere Bibliotheken
Unterstützen Sie MongoDB
Mangel
Unfreundliche verwirrende Dokumentation. Ich erwarte eine bessere Dokumentation für diese Art von Framework
Zu jung
Asynchrone Async wird noch nicht unterstützt
Beispiel
@Get ("/message/{id}") öffentliche Nachricht SayShello (String -ID, Pfad Param String WHO // Abfrage Param) {neue Nachricht zurückgeben (). } @Post ("/message/{id}") public message SayShello (String -ID, // Pfadparamach "msg // Körperparam) {return msg.setMessage (string.format (" %s @ %s ", msg.getMessage (), datetime.now (). Tostring (" hhh: mm: mm: mm: mm: ss "); }Hinweis <BR /> Um ehrlich zu sein, ich habe nicht viel Zeit mit diesem Rahmen verbracht. Es lohnt sich nicht zu viel Mühe für einen anderen Rahmen, ich meine, der Java -Framework -Markt wird immer fragmentierter, genau wie der JavaScript -Markt sollte dieser Trend gestoppt werden.
Funkenrahmen
Geburtszeit: 2011
Bewertung: 3,5/5
Lassen Sie sich nicht mit dem Big Data Framework Spark von Apache verwechseln. Das Spark Framework ist hier ein leichtes Java -Web -Framework für die schnelle Entwicklung (50% der Spark -Benutzer verwenden Spark, um REST -APIs zu erstellen). Es ist von dem Ruby -Framework Sinatra inspiriert.
Es verfügt über einen minimierten Kernel von weniger als 1 m und bietet alle grundlegenden Funktionen, um erholsame oder herkömmliche Webanwendungen zu erstellen.
Link <BR /> offizielle Site Github -Dokumentation
Vorteil
Schnell, leicht
Ausgezeichneter schneller Prototyp
Leicht zu bauen
Oft mit AngularJs verwendet
Echte Mikroframework
Verwenden von Steg
Kann in Behältern verwendet werden oder unabhängig laufen
Mangel
Dokumentation kann besser sein, es ist für Anfänger nicht geeignet
Nicht für große Projekte geeignet
Gemeinschaft klein
Beispiel
statische Spark importieren.*; public class helloWorld {public static void main (String [] args) {get ("/hello", (req, res) -> "Hallo Welt"); }}HINWEIS <BR /> Dieses Framework ist für die erste Entwicklung geeignet. Hauptsächlich als kleine Projekte oder Prototypen verwendet.