Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo Community,
ich habe einen Studiengangs wechsel vollzogen und werde daher in Zukunft statt mit C# in Java programmieren. Ich habe 5 Jahre Erfahrung mit dem .Net Framework wodurch ich produktiv unter Visual Studio arbeiten kann. Leider kenne ich mich mit Java überhaupt nicht aus. Ich habe allerdings gehört das von C# zu Java keine allzu großen Unterschiede bestehen soll. Daher bin ich auf der suche nach einem Buch welches nicht anfängt zu erklären das es For-Schleifen, Select Case Fälle und Unterschiedliche Datentypen gibt.
Ich bräuchte etwas in der Art das mir die wesentlichen Unterschiede zwischen C# und Java übersichtlich darstellt. Desweiteren hab ich noch eine Frage bezüglich der API. Die größte Arbeit einer Programmiersprache ist ja das erlernen des jeweiligen Frameworks, in .Net habe ich 5 Jahre Erfahrung gesammelt. Wie könnte ich am besten schnell die API kennen lernen um ebenso Produktiv in Java Programmieren zu können, bzw gibt es für dieses Thema eine weitere Buch Empfehlung?
Das hab ich neulich auch in meiner Tutor Stunde für die Erst-Semester gesagt:
"Programmieren lernt man durch Programmieren." Nur habe ich leider nicht die Zeit soviel in einer Kurzen Zeit zu Programmieren, da ich Scheine anerkannt bekomme und ins 4.Semester einsteige. Die Profs also 1,5 Jahre Java Kenntnisse voraussetzen. Deswegen würde ich mich freuen wenn ich von dem einen oder anderen einen guten Tipp bekommen würde wie ich am besten an die Sache nun ran gehe.
ich hab wegen eines Job-Wechsels 2010 nach 2,5 Jahren Tätigkeit als C#-Entwickler einen Java-Job angenommen. Literatur wie du sie dir wünscht wirst du nicht finden. Die Unterschiede werden erst im jeweiligen Tätigkeitsfeld relevant.
Das .Net-Framework und das Java-Framework sind IMO gleich mächtig. Interessant wird es erst wenn man dann ins Detail geht.
Generell gilt allerdings: Die Sprachen sind sich sehr ähnlich - auch wenn sie Welten trennen. Du wirst ohne Probleme mit Java anfangen können und ganze Lösungen runter programmieren können. Haaring sind aber folgende Unterschiede:
C# kennt Delegaten und hat Events in die Sprache integriert. Am besten noch einmal nachlesen wie es in Java ordentlich gehandhabt wird.
C# ist in seiner aktuellen Version stark an F# bzw. funktionale Sprachen angelegt. Linq, Action<T>, Function<R, T> usw. usf. erlauben elegante Konstrukte die man in Java nicht ohne weiteres verwendet werden können.
C# Generics sind ein Traum im Vergleich zum grausigen Java-Pendant. Ich habe dies bzgl. schon richtige Kampfschriften gelesen warum dem nicht so ist, wo die Vorteile sind wenn man andere Sprachen in die JVM integriert usw. usf. Aber als Programmierer fühlt es sich einfach falsch an. Durch Type-Erasuring wird das ganze viel komplizierter als es sein müsste. Wenn man in Java arbeitet kann man nur voller Neid rüber zu C# oder auch Sprachen wie Haskell lugen. Um da ein besseres Gefühl dafür zu bekommen am besten in den Code der generischen Java-Collections reinschauen, in den Code anderer Projekte reinschauen die das massiv einsetzen wie z.B. ObjectMapper von Jackson und wenn die Zeit vorhanden ist lesen.
Ich hab auch Vergleiche wie diesen hier gelesen allerdings brachte mir das persönlich nicht sehr viel.
Nachdem diese Sprach relevanten Dinge abgeklärt sind geht's gleich weiter mit den zur Verfügung stehenden Frameworks:
Java unterscheidet sich schon wenn man Java SE und Java EE programmiert. Java EE definiert einen Standard und je nachdem für welche Implementation man sich entscheidet (TomEE, JBoss, Websphere, etc.) kämpft man mit anderen Eigenheiten des jeweiligen Systems. Das ist bei C# anders. Kennt man sich einmal mit dem IIS aus ist die Sache gegessen.
Java liefert Vielfalt, .Net liefert Konsistenz => Vergleicht man z.B. Spring (nicht einmal Java EE!), Struts und wie die MVC-Frameworks alle heißen mit den Möglichkeiten von .Net stellt man schnell fest, dass die MSDN schmerzlich vermisst wird in Java. (JBoss Doku! Ein Alptraum!)
In Java ist es normal viele externe Libraries einzubinden und die Arbeit wird dadurch wirklich viel einfacher. Bevor man sich Hilfsklassen schreibt sollte man immer zuerst prüfen ob es von Apache nicht schon etwas gibt!
Wenn du Desktop-Anwendungen schreibst und dich für Swing entscheidest, lies dir das durch. Swing ist so ähnlich wie Winforms allerdings etwas mächtiger durch dynamische LayoutManager und IMHO deutlich komplexer zu programmieren. Und immer ordentlich mit dem EDT arbeiten!
TL;DR: Wenn es soweit ist, dass du Java EE oder Spring coden musst beschäftige dich mit dem System. Vorher hat es keinen Sinn da die Unterschiede riesengroß sein können.
Falls sich ein passionierter Java-Programmierer angegriffen fühlt von den oben wiedergegebenen Erfahrungsberichten bitte nach dev/null pipen ;-) Ich bin noch immer Java-Coder und möchte hier nur einen .Netler darauf vorbereiten welche Fallstricke es gibt. Immerhin bin ich da in einen jeden reingetreten.
Danke schön, das hat mir echt weitergeholfen. das ich keine Literatur finde wie ich sie mir wünsche wurde mir auch schnell klar. Wobei ich es aber doch sehr schade finde, da im umgekehrten Fall sehr wohl viel Literatur gibt. C# für Java Entwickler , etc ....
Die Vorteile von C# hab ich bei einem ersten durchlesen der Java Insel auch bemerkt und ein klein wenig geschluckt, da gerade Delegates, Events und LINQ mächtige Werkzeuge sind.
Aber naja muss man sich halt mal mit Java Eigenheiten arrangieren und denke nach einer Gewissen Zeit sind diese auch nicht mehr so schlimm. Macht sich außerdem immer besser im Lebenslauf schreiben zu können das man eine Programmiersprache mehr auf dem Kasten hat.
Btw: Könnt ihr Java - kurz & gut empfehlen von O'reilly ?