C# Lernen von C# mit guten Java Kenntnissen

Zyboarg

Ensign
Registriert
Juli 2012
Beiträge
218
Hey,

Da ich gerade an einem größerem Projekt arbeite und mir Java zu langsam wird, wollte ich den ganzen Code in C# "umschreiben".
Starten wollte ich dabei mit dem OpenBook Visual C# 2012 vom Rheinwerk Verlag und kaufe es mir ggf. auch als gedruckte Auflage, da mir die Java Insel 1 und 2 sehr gut gefallen haben.
Habt ihr vielleicht sonst noch ein paar Tipps für einen Umstieg , oder einfach grundlegende Sachen die man bei C# von Anfang an beachten sollte?

LG Zyboarg
 
Zuletzt bearbeitet:
Unabhängig vom lernen von C#, bist du sicher das das Performanceproblem an der Sprache liegt, bzw durch einen Wechsel auf C# gelöst wird?

Ansonsten sollte der Umstieg nicht zu gross sein von Java auf C#
 
Durch welche dunkle Magie soll C# denn schneller sein? Hast du mal einen Profiler benutzt? Ich halte es für recht wahrscheinlich, dass deine Algorithmen mies sind, wenn du Performanceprobleme hast.
 
C# ist mit Windows ein wenig schneller als Java - dafür ist Java mit Linux schneller, vielleicht lohnt es sich da eher das OS zu wechseln.

Was aber wahrscheinlicher ist, dass der Code an sich optimiert werden kann durch schnellere Algorithmen und/oder Multithreading.
 
Ich muss auf viele externen Bibliotheken zugreifen, welche dann Code in anderen Sprachen ausführen um z.B. auf globale Tastendrücke in Windows zu reagieren oder auch um Audio Dateien zu konvertieren.
Weil das eben sehr viele Anfragen auf diese fremd Bibliotheken sind hatte ich vor das Programm umzuschreiben.
Ansonsten habe ich keine Probleme mit dem Resourcenmanagment, da man in Java ja viel durch den GC abgenommen bekommt bzw. nur die Streams von Hand schließen sollte.
 
Zyboarg schrieb:
Ich muss auf viele externen Bibliotheken zugreifen, welche dann Code in anderen Sprachen ausführen um z.B. auf globale Tastendrücke in Windows zu reagieren oder auch um Audio Dateien zu konvertieren.
Weil das eben sehr viele Anfragen auf diese fremd Bibliotheken sind hatte ich vor das Programm umzuschreiben.
Ansonsten habe ich keine Probleme mit dem Resourcenmanagment, da man in Java ja viel durch den GC abgenommen bekommt bzw. nur die Streams von Hand schließen sollte.

Das schreit eher nach C/C++, weils da wesentlich effektiver ist Bibliotheken einzubinden ohne irgendwelche "interop" Geschichten oder so zu bauen. Ebenfalls kannst du da entsprechend CPU-nahe optimieren (SIMD, SSE, SSE2, AVX) und hast generell alle Möglichkeiten dass performant wie nur Möglich zu machen. Aber da müsstest du vermutlich erstmal C/C++ lernen - aber wenn du High-Performance willst, bleibt schlichtweg nix anderes übrig. In Java/C# und Konsortien kannst du max. deine Algorythmnen verbessern und auf Threading setzen.

Allerdings hast du tatsächlich mit C# mehr Möglichkeiten als mit Java:

- Unsafe-Code
- Viele out-of-the-box Parallelisierungshilfen (parallel-for)
- Windows Forms / UI (Hat Java auch, aber da gibts keine brauchbaren "funktionierenden" Designer)
 
Zuletzt bearbeitet:
Ich benutze keinen Designer sondern schreibe alles von Hand, mit Layouts etc.
Braucht zwar ein bisschen länger, dafür kann ich alles sehr schnell auf Nachfrage verändern.
Für meine anderen Projekte habe ich immer den Java Editor benutzt. Der ist aber mMn. "bescheiden" :freak:
 
Wenn man weiß was man tut kann mit mit Netbeans auf AWT oder Swing basierende GUIs bauen, was einem viel Arbeit erspart.
Ich wäre auch erstmal dafür die Anwendung mit einem Profiler zu prüfen.
Wenn die externen Libs Mist sind liegt das Problem der Performance auch dort.
 
Zyboarg schrieb:
Ich benutze keinen Designer sondern schreibe alles von Hand, mit Layouts etc.
Braucht zwar ein bisschen länger, dafür kann ich alles sehr schnell auf Nachfrage verändern.

Mit der Zeit ist man händisch kaum langsamer, der Code aber u.U. signifikant besser (und wartbarer). Insbesondere mit guten Layout-Managern.

Zyboarg schrieb:
Für meine anderen Projekte habe ich immer den Java Editor benutzt. Der ist aber mMn. "bescheiden" :freak:

Das ist ja auch kein professionelles Tool. Eclipse, IDEA, NetBeans, JDeveloper. Das sind momentan die großen vier, mit durchaus unterschiedlichen Schwerpunkten. Die JVM selbst bietet mit Flight Recorder und Mission Control mittlerweile sehr brauchbare Tools zum Profiling.
 
soares schrieb:
OT: Welche hast Du denn bisher ausprobiert/verwendet?

Ich hab den der jetzt von Google weiterentwickelt wurde früher und vor nem Jahr mal ausprobiert und der scheint immernoch nicht die Robustheit eines Windows-Forms Designers zu haben. Neue Projekte damit zu erstellen ging wohl, auch wenn es mal abgestürtzt ist, aber vorhande zu importieren ging überhaupt nicht - was vermutlich einfach an der komplexität an den UI-Anwendungen liegen mag, bzw. auch das nicht alles so 100% AWT Konform implementiert wurde (wenn 10 leute dran rumfullen dann passiert sowas).

Klar man kann auch das ganze von Hand bauen - mache ich auch so. Aber spät. wenn du ne komplexere UI-Anwendung schreiben willst, dann möchte man einen brauchbaren und stabilen UI-Designer haben. Einfache UI-Anwendungen ok, aber aufwendige Datenbank-Anwendungen wo es hunderte Dialoge gibt, dynamische Frames usw. no-way.
 
Zuletzt bearbeitet:
Also ich komme mit dem Grid Layout sehr gut zurecht. Wenn ich sehr viele Dialoge zum Anzeigen habe dann speichere ich meine Dialogboxen einfach in einer Liste und durchkämme die dann im Programm selber.
So habe ich immer schnellen zugriff auf jedes Element ohne den Überblick zu verlieren, da beim Grid Layout ja jedes Element eine festgelegte Größe besitzt.
Dynamische Frames sind auch kein Problem wenn man viele Abfrage Variablen einsetzt, welche immer genau die Größe und den "Zustand" des fokusierten Frames abspeichern.
 
JavaFX scheint für die meisten ein Fremdwort zu sein. Für private Anwendungen kann ich den Scene Builder empfehlen, einfacher gehts kaum noch eine GUI zu erstellen, zumin. was ich bisher so gesehen habe. Den LayoutManager kann man sich auch direkt sparen.
 
Finalspace schrieb:
Ich hab den der jetzt von Google weiterentwickelt wurde früher und vor nem Jahr mal ausprobiert und der scheint immernoch nicht die Robustheit eines Windows-Forms Designers zu haben

Das ist nun nicht der einzige GUI-Builder. Und auch nicht der beste. Finde ich etwas gewagt, von lediglich einem Tool auf alle zu schließen.


Finalspace schrieb:
aber aufwendige Datenbank-Anwendungen wo es hunderte Dialoge gibt, dynamische Frames usw. no-way.

Die will man dann aber ohnehin nicht alle händisch erstellen, ob mit oder oder GUI-Builder.
 
Zurück
Oben