Hat jemand die Migration von Java nach Scala gestartet? Wenn ja, wie machst du das? Was kann ich tun, um meine Kollegen zu ermutigen, dasselbe zu tun?
Hat jemand die Migration von Java nach Scala gestartet? Wenn ja, wie machst du das? Was kann ich tun, um meine Kollegen zu ermutigen, dasselbe zu tun?
Antworten:
Am einfachsten ist es wahrscheinlich, Scala zunächst nur zum Testen zu verwenden. In diesem Fall musst du es deinem Chef vielleicht gar nicht sagen :-) Wenn er fragt, sag ihm, "das ist nur mein privater Testfall, es ist so viel einfacher und schneller, Scala dafür zu verwenden". Sobald Sie (und Ihre Organisation) genug Erfahrung mit Scala haben, können Sie damit beginnen, den "echten" Code zu verwenden.
Aus Unternehmenssicht ist es besser, bei Java zu bleiben, wenn es keinen eindeutigen Vorteil gibt, den eine Migration auf Scala bringt. Es ist für sie einfacher, Java-Programmierer einzustellen, um die Anwendung zu erstellen und zu warten. Sie können einfach gehen, nachdem Sie alles in Scala implementiert haben :-) Keine Verstöße :-)
Lassen Sie Ihren Chef solche Erfahrungen lesen:
Ich mache momentan die meisten meiner Sachen in Scala. (Ich sollte erwähnen, dass ich denke, dass Scala die beste Sache seit der Erfindung des Rades vor einiger Zeit ist. :-D)
Meiner bescheidenen Meinung nach ist es die einzige Sprache, die es den Menschen wirklich ermöglicht, den besten Ansatz für eine Aufgabe zu wählen, ohne unnötig zwischen (mehr) objektorientierten und (mehr) funktionalen Ansätzen zu unterscheiden.
Wenn ich mir die Sprachen anschaue, die vorher so etwas behaupteten, sehe ich im Grunde genommen zwei konkurrierende Sprachdesign-Camps:
Diejenigen von der objektorientierten Seite, die gesehen haben, dass die funktionale Programmierung in letzter Zeit etwas an Fahrt gewonnen hat und dachten: "Nun, wir verstehen dieses funktionale Ding nicht wirklich, aber fügen wir unserer Sprache etwas ausgefallenen syntaktischen Zucker hinzu, damit wir behaupten können, dass es funktional ist auch!" (Beispiele: Java, Python)
Dann diejenigen von der funktionalen Seite, die dachten: "Nun, unser funktionaler Ansatz ist allem anderen weit überlegen und dieser objektorientierte Unsinn ist ärgerlich, aber lasst uns ein paar zusätzliche Stichwörter in unsere Sprache einfügen, die unsere Sprache mit Sicherheit aus der akademischen Welt schaffen werden ! " (Beispiele: F #, OCaml)
Die Designer von Scala vereinten viele Ansätze von beiden Seiten und schufen eine gut gestaltete Sprache. Dies ist meiner Meinung nach der größte Unterschied zu anderen Sprachen, die sich für den "Frankenstein" -Ansatz beim Design von Programmiersprachen entschieden haben.
Nachdem ich mit Lift bisher nur kleinere Dinge gemacht und nur oberflächliche Erfahrungen mit Rails und Django gesammelt habe, muss ich zugeben, dass ich mich die meiste Zeit, als ich mich fragte, warum etwas in Lift anders funktionierte als erwartet, aufgrund der Tatsache, dass meine Erwartungen waren fehlerhaft und Lift's Ansatz überlegen.
Lifting ist sicherlich keine "einfache Einführung in Scala", aber das Erlernen der Funktionsweise von Lifting war fast so lohnend wie das Erlernen von Scala zuvor.
Die Fähigkeit, eine "saubere" Ansicht ohne Logik darin zu haben, ist eine große Verbesserung gegenüber anderen Frameworks, die dasselbe behaupteten, es aber verfehlten. Mithilfe der XML-Literalunterstützung von Scala können Sie überprüfen, ob Ihre Antwort korrekt ist: Der Compiler prüft zum Zeitpunkt der Kompilierung, ob Sie nur korrekt formatiertes XML an einen Client senden.
Lift ist eine praktikable Technologie und im Moment der einzige echte Ansatz, wenn Sie Webanwendungen erstellen möchten, die aussehen, sich anfühlen und sich wie "echte" Desktopanwendungen verhalten, ohne selbst wahnsinnig viel Code zu schreiben.
[ Quelle ]
In den letzten zwei Jahren sind wir bei guardian.co.uk auf diesem Weg ein gutes Stück vorangekommen - unsere Open Platform basiert auf Scala, unser Kern-CMS (ursprünglich in Java) enthält nach und nach mehr Scala (von dem wir bald ausgehen) Maven zu SBT für unser Build) und es war eine wundervolle Erfahrung - sehr belebend für unsere Entwickler, von denen einige ein bisschen mit Java überladen wurden :)
Ich möchte Sie ermutigen, diese beiden Artikel über unseren Übergang zu lesen und sie möglicherweise als Beleg für Ihre spitzen Haare zu verwenden:
http://skillsmatter.com/podcast/home/how-we-moved-from-java-to-scala
http://www.infoq.com/articles/guardian_scala
Einige schnelle Tipps:
Beginnen Sie damit, Ihre Tests in Scala zu schreiben. Auf diese Weise können Sie sich mit der Sprache vertraut machen, das Vertrauen in sie stärken und müssen keine Angst haben, die Laufzeit auf Ihren Produktionsservern sofort hinzuzufügen.
Bitten Sie nicht um Erlaubnis , neue Technologien auszuprobieren. Besser um Vergebung bitten, wenn du musst :-)
Diese Frage taucht in einer anderen Frage auf. Für welche Arten oder Projekte bietet die Migration auf Scala einen Mehrwert? Ich mache Java Tag für Tag, aber träume von dem Tag, an dem ich Scala "im Zorn" benutzen kann.
Ein paar Antworten auf meine eigene Frage:
Probleme, bei denen eine auf Akteuren basierende Parallelität von großem Nutzen wäre (Akka)
Webanwendungen, auf die Daten über COMET (Lift) übertragen werden
Irgendwelche anderen Einblicke oder noch bessere Erfahrungen?
Ich schreibe Tests für meine Java-Apps in Scala und bin damit einverstanden, dass dies ein guter Anfang ist. Meine Testabdeckung ist besser, weil sie schneller und einfacher zu schreiben ist (auch seit ich Scala benutze, konzentriere ich mich mehr darauf, Tests zu schreiben).
Ich habe auch angefangen, Prototypen und Wegwerf-POCs in Scala so ziemlich ausschließlich zu machen. Ich versuche, Managern und Vorgesetzten so bewusst wie möglich zu machen, dass ich Scala für diese einmaligen Aufgaben verwendet habe, und zu betonen, dass ich dank Scala in der Lage war, etwas schnell zum Laufen zu bringen. Wir brauchten (na ja, irgendwie) eine Web-App, um unser Spiel mit weißen Elefanten für die Weihnachtsfeiertage zu verfolgen - 1,5 Stunden mit Scalatra und MongoDB, und meine gesamte Abteilung sieht diese App und fragt danach. Seien wir ehrlich, Sie werden den Managern nie beschreiben können, wie viel aussagekräftiger die Sprache ist oder wie viel besser das Nebenläufigkeitsmodell ist. Aber wenn Sie ihnen zeigen, dass Sie schneller mehr erreichen können, gewinnen Sie an Boden.
Aber ich denke, das größte Stück ist, die Entwickler für Scala zu begeistern. Ich bin sicher, wir arbeiten alle mit Entwicklern zusammen, die nicht aktiv mit der neuen Technologie Schritt halten, und manchmal ist es schwierig, diese Leute für etwas Neues zu begeistern (warum verstehe ich das wirklich nicht). Es ist der Schlüssel, diesen Leuten einige Vorteile von Scala zu zeigen (versuchen Sie es mit der REPL). Wenn Sie genug Entwickler finden, die über die gleichen Produktivitätsvorteile schwärmen, ist es weitaus wahrscheinlicher, dass Scala offiziell in Ihrem Unternehmen eingeführt wird.
Es ist mein wichtigstes Ziel, dies 2011 zu verbreiten und die Basisarbeit zum Laufen zu bringen. Wir werden sehen, wie es ausgeht, denn ich kann es kaum erwarten, bis ich Scala für den Großteil meiner Arbeit benutze.
Ich frage mich, warum ich mich für das eine oder andere entschieden habe. Warum entscheiden Sie sich, Java aus der Tür zu werfen und den ganzen Weg auf die Scala zu gehen?
Es gibt kein perfektes Werkzeug für den Job. Es gibt keinen Grund, Fachwissen in einer Sprache komplett aus der Tür zu werfen und durch eine andere zu ersetzen.
Ich möchte (nicht mehr) in einem Unternehmen arbeiten, das sich auf eine Sprache oder Umgebung konzentriert, tbh. Es ist besser, viele Dinge zu wissen und das richtige Werkzeug für den Job auszuwählen.
Darüber hinaus ist es schwierig, wenn nicht unmöglich, Ihre Organisation dazu zu bringen, vollständig auf Scala umzusteigen. Stattdessen würde ich versuchen, einige Projekte (oder sogar Teile von Projekten) in Scala zu realisieren, anstatt den Alles-oder-Nichts-Ansatz zu wählen. Sie können sich beispielsweise dafür entscheiden, Ihren Java-Code mit Specs2 zu testen, das im Vergleich zu einfachem altem JUnit eine hübsche Syntax hat - und es ist auch kein komplexer, verwirrender und harter Scala-Code und -Paradigmen, nur syntaktischer Zucker, um das Verhalten Ihrer Anwendung zu definieren .
Am besten demonstrieren Sie zwei Versionen desselben Programms. Auf diese Weise können Sie Ihren Kollegen (in der Praxis) Scalas Ausdruckskraft demonstrieren . Wenn Sie bei anderen Problemen (XML, Parallelität usw.) dasselbe tun, können Sie die Vorteile der Verwendung von Scala anstelle von Java zur Behebung bestimmter Probleme demonstrieren.
Erwarten Sie natürlich nicht, dass die Migration an einem Tag stattfindet. Es gibt viele Probleme, die Sie möglicherweise unterschätzen: Die Lernkurve, die vorhandene Codebasis usw.