2012-05-17 7 views
7

Ich schätze, dass diese Frage wegen ihrer offenen Natur geschlossen werden kann, aber ich bin dennoch neugierig.Statisch typisierte Cross-OS-Webplattformen: Java, Mono und was noch?

Wenn ich eine plattformübergreifende Webanwendung mit einer statisch typisierten Sprache entwickeln möchte, was würde ich wählen? Ich kenne Mono und Java, aber was gibt es sonst noch?

(Wenn ich Cross-Plattform sage, dann meine ich Windows und mindestens ein gemeinsamer Geschmack von Linux)

Antwort

3

Es gibt mehr High-Performance-Haskell Web-Frameworks, die starke statische Korrektheit betonen:

Das Ziel vom Typ System zu mager ist, bieten hochgradig optimierten Code und keine Chance auf Laufzeitfehler.

Jessod Website zu zitieren:

Schalten Laufzeit Fehler in Kompilierung-Fehler

Yesod zur Herstellung der Compiler Ihre Verbündeten in der Philosophie glaubt, nicht dein Feind. Wir verwenden das Typensystem, um so viel wie möglich zu erzwingen, von der Erzeugung von richtigen Links, zur Vermeidung von XSS-Attacken, zum Umgang mit Zeichencodierung Probleme. Wenn der Code kompiliert wird, funktioniert es im Allgemeinen. Und anstelle von Deklaration von Typen überall lassen Sie den Compiler sie für Sie mit Typ Inferenz herausfinden.

+0

Diese sind völlig neu für mich, danke für die Info! Ich bin jedoch skeptisch gegenüber der Bemerkung "Null Laufzeitfehler" - bitte können Sie das näher ausführen? Statische Typisierung entfernt keine Verhaltensfehler ... –

+1

Ich sollte klarstellen: Das * Ziel * ist, so viele Eigenschaften wie möglich in das Typsystem zu codieren, um Null Möglichkeit des Laufzeitversagens im Grenzbereich zu nähern. Es bedeutet nicht, dass Sie eine formal verifizierte Web-App haben, aber es ist ein Schritt in diese Richtung. –

+0

Awesome, ich benutze derzeit formale Verifikation in .NET über Code Contracts. Diese klingen wie meine ein bisschen Sprachen :) –

1

Ich glaube Ruby stongly eingegeben wird, so Ruby on Rails hierfür eine gute Wahl sein.

+0

Sind Sie sicher, dass Ruby stark typisiert ist? Wikipedia scheint anders zu denken ... –

+4

Ja, aber Ruby ist nicht ** statisch getippt **. Stark typisiert bedeutet, dass das Programmiersystem Ausdrücke/Operationen zurückweist, bei denen die Typen nicht übereinstimmen. Dies kann jedoch zur Laufzeit erzwungen werden, z. B. in Ruby. –

+0

Ah ja natürlich, vielen Dank für die Reinigung. Ich werde die Frage aktualisieren! –

4

Sie können einzelne Sprache verwenden für den Client und Server Teilen:

  1. Java
  2. C#
  3. Googles Go
  4. Scala
  5. GWT (Java-Framework)
  6. Haskell web Gerüste
+0

PHP und Python sind keine statisch typisierten Sprachen. Daher verhindern ihre Frameworks nicht, dass Typfehler zur Laufzeit den Server beschädigen. –

+0

Sie mischen Frameworks und Sprachen. GWT ist ein Framework, das Java verwendet. Dies kann IMHO irreführen. –

+0

@MikeMyers Oh, auf jeden Fall upvoted für die Auflistung von ihnen alle, aber ich dachte nur, dass das OP war ziemlich klar auf Sprachen, nicht eine Liste von Frameworks, die die gleiche Sprache verwenden. Die Frage hebt die begrenzten Möglichkeiten von statisch getippten Sprachen für Webentwickler hervor. Wäre cool, die statisch getippte Version von nodejs zu sehen. –

2

Wenn Sie statisch getippt meinen, gibt es leider nicht viel Auswahl. Googles Sprache beginnt, in den Webanwendungsraum zu wachsen (es gibt Go-Unterstützung für Googles App Engine und Projekte wie GoWeb), aber diese Bemühungen sind wahrscheinlich noch nicht sehr ausgereift.

Scala könnte eine weitere mögliche Option sein. Obwohl es auch auf der JVM läuft, sind seine Web-Frameworks aufgrund der fortgeschrittenen Funktionen der Sprache sehr unterschiedlich (siehe z.B. Lift) und könnten einen separaten Blick wert sein.

2

Neben Java und C# (über Mono), können Sie auch verwenden (modern) C++ in Form des
Wt (C++ Web Toolkit). Jetzt ist der C-Abwärtskompatibilitätsteil von C++ nicht stark typisiert, aber ansonsten sind C++ - Programme typsicher.

Wenn Sie wirklich starke Art Sicherheit wollen, können Sie Haskell mit Yesod verwenden. Das Ziel von Yesod ist es, starke Typen zu verwenden, um häufige Fehler bei der Programmierung von Webanwendungen zu vermeiden. URLs sind zum Beispiel typgeprüft. Sie können eine Intra-Application-Verknüpfung nicht erstellen, ohne die richtigen Parameter anzugeben. Das Escapen von Benutzerinhalten beim Rendern der Webseite ist eine weitere Situation, in der der Haskell-Compiler verwendet wird, um sicherzustellen, dass Strings ordnungsgemäß maskiert werden, bevor sie in eine gerenderte Seite eingefügt werden.