Ich muss eine Sprache / Plattform für die Neuentwicklung einer Reihe von Diensten in einer SOA wählen. Ich schaue mir Scala und Clojure an, glaube aber nicht, dass die Community und die Produkte reif genug für ein echtes Enterprise-Produkt sind.
Aktualisierung / Erläuterungen:
Ich hoffe, dass diese die Frage klären.
Hängt davon ab, was Sie mit "reif genug für ein Unternehmensprodukt der realen Welt" und Ihrer relativen Toleranz für das Leben an der Schneide verstehen.
Zum Beispiel baue ich gerade ein "reales Unternehmensprodukt" in Clojure (ich wäre mit Scala genauso glücklich gewesen, es war nur, dass Clojure meine Bedürfnisse etwas besser aus der Parallelitäts- und Metaprogrammierperspektive passte ).
Ich bin sehr glücklich mit meiner Entscheidung.
Einige schnelle Perspektiven, wenn Sie diesen "Post-Java" -Pfad betrachten:
Die Communities sind großartig und unterstützend, aber Sie müssen immer noch Probleme selbst lösen, schon allein deshalb, weil noch niemand auf dasselbe Problem gestoßen ist. Keines davon ist wahrscheinlich unüberwindbar, aber es birgt ein gewisses zusätzliches Risiko für Lieferpläne.
Sowohl Scala als auch Clojure können sehr produktiv sein (in Bezug auf den Wert, der den Kunden pro Stunde zur Verfügung steht), aber Sie können auch schlecht und nicht überwachbaren Code in jeder Sprache schreiben. Java zwingt Sie ziemlich dazu, Dinge in einer standardisierten, etwas ausführlichen aber syntaktisch einfachen und verständlichen Weise zu schreiben. Mit Scala und Clojure bekommst du ein ganz neues Arsenal an verrückten Möglichkeiten, dein Ziel zu treffen oder dich in den Fuß zu schießen. Wird Ihr Team die Vorteile von Scala / Clojure optimal nutzen können?
Es ist schwieriger (wenn auch nicht unmöglich), erfahrene Leute mit den vorhandenen Clojure / Scala-Fertigkeiten an Bord zu bringen. Auf der anderen Seite sind die Leute, die diese Fähigkeiten haben (oder sie gerne erwerben möchten) wahrscheinlich zu den talentiertesten / motivierten Entwicklern gehören, so dass die Suche immer noch produktiv sein kann.
Bereiten Sie sich darauf vor, schwierige Entscheidungen zu treffen, ob Sie auf Sprach- / Bibliotheksfunktionen abzielen, die "gleich um die Ecke" sind. Warten Sie zum Beispiel auf die verbesserte primitive Unterstützung in Clojure 1.3? Oder mit den vollkommen adäquaten, aber langsameren Boxed-Primitiven Funktionen in Clojure 1.2 auskommen?
Ein großer Vorteil der JVM besteht darin, dass Sie das Java-Ökosystem weiterhin nutzen können, ohne an Java als Sprache gebunden zu sein. Unterschätzen Sie nicht, wie nützlich das ist: Ich verwende zum Beispiel eine Reihe von sehr gut getesteten, ausgereiften Java-Bibliotheken (zB Netty ) ziemlich transparent in meiner Clojure-Anwendung. Dies reduziert signifikant Ihr Risiko und die Menge der neuen Entwicklung, die Sie tun müssen.
Im Moment (nachdem ich gerade ein Service- / Integrationsprojekt abgeschlossen habe) steht Jersey oben auf Spring ganz oben auf meiner Favoritenliste für Web-Services.
Ich kann keine Vorschläge für ein SOA-Framework machen, das letzte Mal, als ich an solchen Dingen beteiligt war, nutzen wir Oracle BPEL Process Manager und ich habe gemischte Gefühle darüber. Wir haben REST dann auch nicht verwendet und ich bin mir nicht sicher, wie gut die Oracle-Software damit arbeitet.
Tags und Links scala java programming-languages clojure mono