Frage

Mit einigen Änderungen in der personellen Ausstattung im Büro, die Niveaus von C # Know-how hat mich jäh abgesetzt und es gibt jetzt mehr Java-Entwickler. Es hat sich zu dem Punkt, wo die höheren-ups erwägen eine bestehende .NET-Projekt in C # in der Java-Welt geschrieben bewegen.

Neben dem offensichtlichen Problem der von Grund auf neu starten was sind die Möglichkeiten, dass dieses Unternehmen einen erfolgreichen Umzug der Entwicklung an einem Projekt von .NET C # in Java erreichen kann?

War es hilfreich?

Lösung

Hier sind Dinge zu beachten:

  • Ist das große Projekt? Wenn ja, versuchen Sie mit C # halten
  • Ist das mittlere Projekt mit Komponenten? Falls nein, versuchen Sie mit C # halten
  • Ist dieses kleine Projekt soll nur auf Windows eingesetzt werden? Wenn ja, versuchen Sie mit C # halten
  • Ist das alte Quellcode? Wenn ja, versuchen Sie mit C # halten
  • Haben Sie Windows OS-spezifische APIs verwenden? Wenn ja, versuchen Sie mit C # halten
  • Verwenden Sie Dritten APIs ohne Java Gegenstück? Wenn ja, versuchen Sie mit C # halten
  • Verwenden Sie .Net in "deep" (Datenbindung, Bedienelemente etc.)? Wenn ja, versuchen Sie mit C # halten
  • Migration Es ist eher akzeptabel als immer neue / konvertiert C # Jungs? Wenn nicht, versuchen Sie mit C # halten
  • Denken Sie, Endnutzern von Änderungen nicht empfänglich sein wird, wenn Sie Java-Framework zu verwenden sind, die werden Präsentation ändern? Wenn ja, versuchen Sie mit C # halten
  • Überprüfen Sie Werbung

Wenn Sie sich entscheiden zu konvertieren:

  • Gehen Sie pro Komponente
  • Gehen pro Schicht
  • Haben Sie viele Tests
  • Überprüfen Sie, ob es gibt Werkzeuge (noch so kleine Hilfe sein kann), um mit der Migration

Andere Tipps

Just zu Brian und Eric Meinungen hinzuzufügen, würde ich sagen, dass C # für Java-Entwickler Kommissionierung sollte meiner Meinung nach einfach sein. Sie sind vom Konzept her sehr ähnlich Sprachen, und ich würde vorschlagen, Ihre Java-Entwickler Training einiger C # Fähigkeiten zu gewinnen, so dass Sie nicht den Aufwand eines Migrationsprozesses gehen gezwungen werden.

Ich abonniere Blick auf Joels, die insgesamt Umschreiben fast immer ein Fehler ist. Andere Plakate sind richtig: C # und Java sind ähnlich genug, dass alle zuständigen Java Entwickler in der Lage sein sollte, in C # in einer Angelegenheit von Wochen oder Monaten kompetent zu werden. Das ist nicht zu sagen, dass sie Experten sind. Das dauert länger, aber so lange, wie Sie einige C # -Entwickler haben, die den Prozess führen können, dann sollten Sie in Ordnung sein.

Es ist schwer zu kommentieren, ob oder ob nicht ein solcher Übergang ist eine gute oder schlechte Idee ohne Besonderheiten Ihrer Anwendung zu wissen. Größe, Art der Anwendung, Industrie und so weiter

Ich wäre extrem zurückhaltend über einen solchen Schalter, weil in meiner bescheidenen Meinung nach, C # ist jetzt eine viel modernere Sprache als Java und das sage ich Ihnen als jemand, der ein Java-Entwickler ofr mehr als einem Jahrzehnt (seit den 1.0.2 / 1.1 Tage) gewesen ist.

Das ist nicht zu sagen, dass Java ist schlecht. Es ist nicht. Sun hat eine Wolke hängt über ihm haben und zeigten eine mangelnde Bereitschaft oder Unfähigkeit, die Plattform nach vorne in den letzten Jahren zu fahren.

Unabhängig von den beteiligten Sprachen, klingt das Management dieses Unternehmens verrückt. Für etwas anderes als eine triviale Anwendung, wie kann es wirtschaftlich sinnvoll sein, eine gesamte Code-Basis von Grunde auf neu zu schreiben, anstatt nur eine einzige Person mit einigen Fähigkeiten in der richtigen Sprache Einstellung? Ist das ein Geschäft mit dem bekannten Problem:? Zu viel Geld übrig

Wie lange hat den vorhandenen Code in der Entwicklung? Wenn es gerade erst begonnen hat, konnte ich das verstehen. Wenn es Release gesehen hat und aktive Nutzer hat, wird es nie Sinn machen, es wegzuwerfen. Wenn Sie den C # -Code zu einem Start-up mit den richtigen Fähigkeiten gespendet, denkt, wie viel von einem Kopf beginnen würden sie über Sie haben.

Bevor Sie das .NET-Projekt in Java beenden Umwandlung, all diese Java-Entwickler, die Teil des Umbaus waren, werden C # gelernt haben. So brauchen Sie nicht mehr, es zu Java konvertieren (und Sie können alle Java-Code wegzuwerfen, die bei der Umwandlung erzeugt wurde), weil Sie jetzt ein Entwicklungsteam haben, die sowohl Java und C # tun können. Problem gelöst. : D

Wenn es irgendwelche Komponenten, die bereits isoliert sind, oder irgendetwas davon nutzt eine serviceorientierte Architektur, könnten Sie möglicherweise eine Komponente zu einem Zeitpunkt, zu migrieren (wobei jede einzelne Komponente ist ein Rewrite) und haben immer noch die Komponenten miteinander reden unter Verwendung der gleichen interoperablen Netzwerkprotokolle. Wahrscheinlich hängt davon ab, welche Art von app wir reden.

Vergewissern Sie sich, Tonnen Tests , weil eine solche Migration Sie beißen, wo man es am wenigsten erwartet.

Haben Sie mehr .Net oder mehr Java-Anwendungen in der Produktion haben. Wenn Ihr bereits eine erhebliche Investition in .Net Server und Anwendungen haben, fragen, warum nicht für die Freiwilligen unter den Java-Entwickler .Net zu bewegen? Die Sprache und die Syntax ist sehr ähnlich, so dass der schwierige Teil des Rahmens zu lernen wäre und wenn sie nicht ihre ganze Zeit tun UI-Entwicklung auch den Rahmen Lernen würden verbringen, ist nicht so schwer.

In unserem Büro haben wir eine Reihe von sehr gutem Entwickler, die hin und her zwischen Java und .Net nach Bedarf verschieben.

Um die Verwaltung zu beweisen, muss man immer in Bezug auf ROI und Zahlen sprechen. Zeigen Sie ihnen, dass, wenn Sie diese Anwendungen bewegen, wird es sehr viel Zeit, QA Ressourcen nehmen und können leicht in den Hintergrund treten, wenn es wird de-priorisiert aufgrund eines anderen Projekts oder neuen Entwicklungen Bedeutung.

ich Erfolg hatte, als ich ihnen die Fristen zeigte, ROI, Arbeit beteiligt, um Geld geht, usw.

So nun zum eigentlichen Punkt kommen, ich glaube Java Entwickler in der Lage sein würde, C # zu unterstützen, wenn sie einige grundlegende mentale Blockade gegen Microsoft technolgies haben.

Hier finden Sie aktuelle Net2Java , die bei der Umwandlung von Code zu unterstützen puports aus C # Java. Ich bezweifle es perfekt sein wird, aber seine eine Art und Weise viel Plackerei von der Aufgabe zu entfernen, werden Sie mit dem Kinks inkompatibler Rahmen Anrufe und Sprachfunktionen verlassen auszuzubügeln.

Wenn Sie das getan haben, ist Ihre Aufgabe, wie jede andere große Migrationsprojekt - Test, testen und nochmals testen. Unit-Tests, Tests Integrationssystem, dann End-User-Tests. Sie sollten diese Tests bereits an Ort und Stelle havew, die Sie mit der ursprünglichen Anwendung verwendet wird, abgesehen von den Unit-Tests, werden sie immer noch relevant sein.

Wenn entschieden wird, dies zu tun, werden Sie wahrscheinlich profitiert von einem Hybrid-Ansatz, bei dem man im Grunde C # und Java in der gleichen Anwendung mische, da es das Szenario von einer Wasserfall Umstellung auf eine schrittweise Migration ändern. Hier kenne ich zwei Möglichkeiten:

1) ikvm ( http://www.ikvm.net/ ), die es Ihnen ermöglichen, laufen Java-Code in einem .NET-Runtime. Dies ermöglicht es der Java-Code den C # -Code zu rufen und umgekehrt. Dann können Sie die C # -Code Entwicklung einfrieren, und langsam die überarbeiteten Funktionen den Java-Teil hinzufügen, während eine funktionale Anwendung zu halten.

2) Mainsoft ( http://dev.mainsoft.com/Default.aspx ? tabid = 130 ), die Sie .NET-Bytecode in Java-Bytecode kompiliert werden können. Sie haben einen freien Eintritt Version. Ich habe keine Erfahrung mit dem Produkt, aber sie werben stark auf unserer Plattform, die nur Java zur Verfügung hat.

Ich bin kein Java-Experte, aber aus meiner Erfahrung in der Arbeit mit Java-Code, während ein C # Fan zu sein, die folgenden sind einige der möglichen Kopfschmerzen:

  • Generics sind unterschiedlich implementiert in Java und C #.
  • Boxen / Unboxing Verhaltensweisen unterscheiden sich zwischen Java und C #
  • Java-Klasse Namenskonvention + viele C # generierten Code
  • String-Handling (das heißt Unicode / ASCII betrifft) kann in Abhängigkeit von der Qualität der Java / C # -Code wird portiert problematisch sein.

Ich persönlich glaube nicht, von Grund auf neu zu schreiben überhaupt eine schlechte Idee ist. Da Sie bereits eine funktionierende Architektur haben.

Ich bin etwas überrascht, niemand sogar die Idee vorgeschlagen Migration der Ablehnung.

Ich glaube nicht, ein C # Entwickler gezwungen werden können, um Java (oder umgekehrt) zu wechseln, weil ihm gesagt wurde (na ja, wenn er mit einer Waffe bedroht werden dann vielleicht). Ich brauche viel Zeit, Bewegung und Leidenschaft mindestens einen Technologie-Stack zu meistern. Sie können einfach nicht über Nacht mit einer neuen Technologie beginnen und erwarten, dass die gleiche Qualität zu liefern.

Ich würde persönlich nicht gestört, bis sagte Migration zu starten. An welcher Stelle würde ich den Manager sagen, dass ich .NET Typ bin und nicht an einer anderen Technologie wechseln, nur weil sie entschieden.

Was die technische Seite, dann ist es nicht die Sprache, Syntax, sondern Bibliotheken und ihre Funktionen unterscheidet. Natürlich, wenn der neueste Schnickschnack von .NET 3.5 der Sprache Unterschied werden Sie eine echte Herausforderung bieten.

ausgiebig im Einsatz haben, dann

Das ist sicherlich eine lustige Art und Weise, entscheidet nur Anwendungen von .NET zu Java migrieren. Jemand hat keine Ahnung von dem Aufwand beteiligt ...

Möglicherweise könnten Sie jni4net - Open-Source-Brücke ? Oder Liste der andere Optionen Ich weiß.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top