sroebuck/ScalaWebFrameworkReview.md

Übersicht

Im Allgemeinen bieten diese Frameworks Funktionen, die eine oder mehrere der folgenden Funktionen abdecken:

  • Routing: Ein Mechanismus, mit dem HTTP-Anforderungen entgegengenommen und an einen Code weitergeleitet werden, der sie verarbeitet und eine Antwort zurückgibt.

  • Templating: Eine oder mehrere Syntaxen zum Templating von Webseiten, so dass der statische und dynamische Inhalt auf relativ einfache Weise beschrieben werden kann und der Code eingebettet oder in irgendeiner Weise mit der Vorlage verknüpft werden kann, um die Lücken zu füllen.

  • Persistenz: Ein Mechanismus zum Speichern und Abrufen von Objekten aus einem Speicher.

Einige gehen jedoch weit über das Verkleben der Webkomponenten hinaus und bieten Frameworks, die ihr eigenes HTML, JavaScript usw. generieren. am Frontend und versuchen Sie, die Trennung zwischenclientseitiger Code und serverseitiger Code. Der Kürze halber werde ich diese als RichInternet-Anwendungen (RIA) bezeichnen, da GWT und Vaadin sich beide als solche bezeichnen und sicherlich in diese Kategorie passen.

Eine wichtige Referenz für verschiedene Webanwendungsframeworks (ohne Bezug auf Scala!) finden Sie auf Wikipedia hier: Web Application Frameworks

Play Framework

  • Geschrieben in Java mit Scala-spezifischer Unterstützung.
  • Betonung der Einfachheit.
  • Befehlszeilentool, das automatisch eine Startvorlage generiert.
  • Kompiliert Inhalte im laufenden Betrieb, ohne dass ein zusätzliches Build-Tool erforderlich ist.
  • Verwendet JPA und Hibernate als zugrunde liegendes Persistenzframework.

Pros

  1. Schnell, um loszulegen.

Nachteile

  1. Automatische Kompilierung im laufenden Betrieb bedeutet, dass Sie die Kontrolle über die Verwendung Ihres eigenen Standard-Build-Tools verlieren.
  2. Fühlt sich unbehaglich auf Funktionen konzentriert, die für schöne Demos sorgen!
  3. Die eingebaute Kompilierung führt auch eine automatische Codegenerierung mit Java-Beans durch, was bedeutet, dass sie möglicherweise ausgeführt wird, aber nicht mit einem normalen Compiler kompiliert wird.

GWT (Google Web Toolkit)

  • Geschrieben in Java ohne spezifische Scala-Unterstützung.
  • Die meisten Kommentare zu gelten gleichermaßen für GWT, auf dem es basiert.

Vaadin

Vaadin-Code sieht ein bisschen aus wie Swing-Code. Sie schreiben effektiv eine interaktive Javaapplication, die dann als JavaScript-Anwendung in einem Webclient ausgeführt wird. Aus funktionaler Sicht fühlt es sich an, als würde man eine traditionell deklarative Stilwelt aus HTML und CSS in einen sehr imperativen Stil verwandeln. Kurz gesagt, es fühlt sich an wie ein Rückwärtsansatz zur Lösungdas Problem der Schnittstelle zwischen Front-End- und Back-End-Programmierung.

  • Geschrieben in Java ohne spezifische Scala-Unterstützung.
  • Eine Rich-Internet-Anwendung (RIA).
  • Basiert auf GWT (Google Web Toolkit).
  • Die gesamte Codierung erfolgt serverseitig, Vaadin erledigt die gesamte Generierung von HTML, JavaScript usw.
  • Vaadins Vergleich mit anderen ‚konkurrierenden RIA-Frameworks‘.Einschließlich Flex, GWT, ICE Faces, jQuery und Wicket.
  • Wird derzeit verwendet von:
    • TNT
    • Devox
    • Logica

Pros

  1. Geeignet für Java-Programmierer, die sich nicht mit HTML und JavaScript anlegen möchten.
  2. Übernimmt die Verantwortung für die Verteilung der Unterschiede zwischen Webclients.

Nachteile

  1. Nimmt Ihnen die Kontrolle über die Feinabstimmung des Front-End-HTML und CSS.
  2. Mag jemandem, der nicht mit der Entwicklung von Java-GUI-Anwendungen vertraut ist, sehr unbekannt erscheinen.
  3. Web-Anwendungen mit schwerem Front-End-JavaScript zu produzieren.

Scalatra

Scalatra scheint im Grunde eine Form von Request Routing Engine Framework zu sein. Es bietet eine einfache Möglichkeit, eingehende Anforderungen zu verarbeiten und an Code weiterzuleiten, der die Antwort rendert. Jede andere Funktionalität kann selbst geschrieben oder als optionales Plugin hinzugefügt werden.

  • Geschrieben in Scala.
  • Inspiriert von Sinatra.
  • Baut mit sbt.
  • Läuft am Steg.
  • Hat einige Testunterstützung eingebaut.
  • Hat optionale Unterstützung für:
    • Scalate Templating Engine.
    • Commons FileUpload Datei-Upload-Unterstützung.
  • Wird derzeit verwendet von:
    • LinkedIn Signal Backend.

Pros

  1. Es scheint sehr klar zu sein, was dies tut und wie.
  2. Es scheint gut zu jedem kombinierten Scala-Projekt ohne Überschuss an DSLs oder Impliziten zu passen.

Nachteile

  1. Wenn Sie ein umfassendes Tool wünschen, ist dies keines.

Skalieren

Scala Templating Engine.

  • Geschrieben in Scala.
  • Scheint mit Maven oder sbt zu bauen.
  • Unterstützt Templates in Moustache, Scaml (Scala Markup Language) und SPP (Scala Server Pages).

Aufzug

Web-Framework.

  • Geschrieben in Scala.
  • Erstellt mit sbt (früher mit Maven).
  • Zeigt viele der Eigenschaften von Rich-Internet-Anwendungen und bietet dennoch Zugriff auf die direkte Manipulation von HTML, JavaScript usw. Diese Freiheit bietet einen gewissen Grad an Unschärfe und Spannung, wenn es darum geht zu verstehen, was es zu tun versucht und wie Sie es tun.
  • Bietet Templating, Routing, Sicherheit, Persistenz-Framework, in der Tat alles!

Pros

  1. Kann praktisch alles, was Sie brauchen.
  2. Hat viele starke Sicherheitsfunktionen standardmäßig eingebaut.
  3. Konzentriert sich insbesondere auf die Glättung der Codierung von AJAX- und Comet-Code.

Nachteile

  1. Scheint immer neue Funktionen hinzuzufügen, wirft aber selten alte weg.
  2. Die Dokumentation ist fragmentiert und nicht an die Aktualisierungen angepasst.
  3. Es gibt viele Möglichkeiten, dasselbe zu tun, daher ist es schwierig, den Code anderer Personen als Referenz zu verwenden, um zu überprüfen, ob Sie das Richtige tun.

Kegler

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.