Neuer Fokus: Java & .Net
von Thomas Darimont
am 12.04.07 um 21:58 (635 Hits)
Wie einige von euch vielleicht schon mitbekommen haben, mische ich zur Zeit ab und an
mal im .Net Forum mit und poste dort auch mal die ein oder andere Idee.
Das hängt zum einen damit zusammen, dass ich nun seit gut einem Jahr bei einer .Net Company arbeite und mich seitdem somit etwas intensiver mit .Net auseinander setze.
Zum anderen ist mir aber klar geworden, dass man heutzutage wirklich beide Seiten (ich Spreche hier natürlich von Java und .Net) kennen muss um überzeugende Argumente zu haben um die "richtigen" Technologieentscheidungen treffen zu können.
Als Generalizing Specialist in spe muss man sich eben in beiden Welten auskennen
Meiner Meinung nach ist für einen guten Softwareentwickler die Platform / Sprache ersteinmal egal denn es geht mehr um das Design, die Struktur,das zusammenspiel der Komponenten und die Konzepte dahinter. Die Sprache bzw. Technologie ist letzendlich auch "nur" ein Implementierungsdetail. Jetzt könnt ich noch ein wenig über MDD / MDA philosophieren aber das lassen wir mal ... zumindest für heute
Na ja, das letzte Jahr hatte ich also ziemlich viel Zeit mich genauer mit den einzelnen Vorteilen von der "anderen Seite" auseinander zusetzen.
Für mich selbst muss ich sagen, dass Java für mich immer noch die Platform der
Wahl bleibt. Das hängt mit vielerlei Dingen zusammen hier meine Top 5)
- "Richtige" Platformunabhängigkeit - Mono hängt mit .Net immer etwas hinterher
- Riesige Community
- Zahlreiche hochqualitative Open Source Projekte (Springframework, Hibernate, JBoss, Geronimo, Eclipse, AspectJ, Tomcat, Groovy, etc.) (es gibt praktisch für jedes Problem gleich mehrere Lösungen) - Open Source ist in der .Net Welt zwar stark im Kommen, jedoch ist es IMHO fraglich,
ob je die Masse und Qualität wie bei Java basierten Open Source Projekten erreicht werden wird.- Zahlreiche erstklassige Entwicklungsumgebungen allen voran IntelliJ IDEA / Eclipse - Visual Studio 5 Professional suckz! Ich habe nun wirklich so ziemlich jeden Tastenkürzel /
Shortcut drauf den es für Visual C# für diese IDE gibt, aber trotzdem kann ich meine Arbeit mit Eclipse / IntelliJ IDEA schneller erledigen. Selbst auf meinem relativ flotten Notebook (P4 Mobile 2GHz , 2GB RAM, 7200 RPM Platte, Win XP)
ist VS 2005 nach längerem arbeiten sehr langsam und träge. Eclipse braucht da vielleicht ein wenig länger zum Starten performed aber dann später bei weitem besser.- Bessere Unterstützung für moderene Technologien wie Aspektorientierte Programmierung
Gerade für AOP gibt es mit AspectJ, Spring AOP, Nanning Aspects etc. hervorragende Frameworks mit denen man die Querschnittsbelange (Cross Cutting Concerns) seiner Anwendung sehr einfach zentralisieren und dadruch einfacher wartber, leichter erweiterbar und performanter machen kann.
Für .Net gibt es hier natürlich auch ein paar Lösungen, zum u.a. Aspect# vom CastleProject und zum anderen PostSharp wobei beide Frameworks derzeit noch nicht an die Mächtigkeit (beispielsweise in den Ausdrucksmäglichkeiten von Pointcuts) der Java AOP Frameworks heranreicht. Außerdem wird AOP IMHO in .Net immer noch sehr Stiefmütterlich behandelt wohingegen es in der Java Welt gerade im Enterprise Bereich schon gang und gäbe.
Gott sei dank gibts mit Spring .Net auch eine .Net Implementierung von diesem wunderschönen Softwaretechnik KleinodOhne Dependency Injection hat man IMHO wirklich Probleme große Komponentisierbare Anwendungen aufzubauen. In .Net 3.0 gibts mittlerweile auch einen (beschränkten) Support für Dependency Injection jedoch ist die Spring Variante IMHO einfacher und flexibler... außerdem lässt es sich leichter nach Java migrieren
Es ist natürlich nicht so, dass ich nur über .Net mecke... die Sprache C# finde ich eigentlich an einigen Stellen etwas besser als Java. Insbesondere das "native" Property-Konzept finde ich ganz hübsch (wird intern auf get_PropertyName(), set_PropertyName(...) Methoden) abgebildet, außerdem finde ich die Delegates (Da ist eine Art Methodenpointer) und Anonyme Delegates (Vergleichbar mit anonymous inner classes in Java) ganz nett. Auch die Generics-Informationen die zur Laufzeit verfügbar sind machen einige Sachen etwas einfacher (... und andere Sachen komplizierter...)
So das wars nun erstmal, ach ja in den kommenden Einträgen werde ich natürlich auch mal etwas "Fleisch" zu den Stammtischparolen servieren
Aber keine Angst mit Java mache ich derzeit immer noch genug in "privaten" Beratungsprojekten und als Hobby (und natürlich für euch. Aber ich spiele stets gerne mit neuen Technologien rum und probiere neue Open Source Projekte aus um am Ball zu bleiben
![]()





Ohne Dependency Injection hat man IMHO wirklich Probleme große Komponentisierbare Anwendungen aufzubauen. In .Net 3.0 gibts mittlerweile auch einen (beschränkten) Support für Dependency Injection jedoch ist die Spring Variante IMHO einfacher und flexibler... außerdem lässt es sich leichter nach Java migrieren 

