# C# vs. Java



## SirGawain (17. April 2004)

Hi,

Ich will mir eine neue Programmiersprache aneignen, und schwanke im Moment zwischen Java und C#.

Wo liegen die Vor- und Nachteile von Java/C#?

Welche der beiden ist Zukunftsorientierter? Mit welcher kann man denn besser Spiele programmieren (was ich nämlich u.a. auch vorhabe).

Und braucht man für einer der Sprachen irgendetwas, das kostet? Z.B. ein Programm, welches ich mir erst kaufen muss, damit die Sprache überhaupt auf meinem Rechner rennt, etc.?
Oder kann ich es ganz kostenfrei programmieren, und die Programme benutzen?

Achja, und bitte bewertet alles Objektiv, also nicht sagen, dass weil euch der Name "Java" besser gefällt, ihr mir diese auch empfiehlt 

mfg gawain


----------



## djwawe (17. April 2004)

Ich würde dir persönlich Java empfehlen, ist eine sehr gute Sprache.
C# ist wieder so eine Sache, von Microsoft eingeführt, ähnelt Java "rein zufällig" etwas 
C# ist zwar auch plattformunabhängig, jedoch bietet Microsoft dafür dann wieder bestimmte packages an, die nur auf Windows laufen etc. (wenn jetz irgendwas, was ich über C# gesagt hab, nicht stimmt, nicht hauen )
Ich programmiere gerade selber ein Spiel in Java, das geht auch sehr gut, nur muss man halt auf die Performance achten, weil das ganze über die JVM läuft und daher nicht mit der Performance von nativen Sprachen wie C++ mithalten kann. Dafür ist es aber komfortabler, die Spiellogik damit zu machen. Der Egoshooter "Chrome" wurde z.B. bis auf die Grafik mit Java gemacht.
Für Spieleprogrammierung mit Java empfehle ich dir die Seite http://fivedots.coe.psu.ac.th/~ad/jg/, allerdings erst, wenn du mit den Grundlagen vertraut bist. Dafür gibts dann das hier: http://www.dpunkt.de/java/index.html
Als Entwicklungsumgebung gibt es kostenlos eine von Sun (ka wie die heißt, sry ) und den Borland JBuilderX Foundation.
Außerdem hast du bei Java den Vorteil einer recht großen Community und der Portabilität von Klassen, soll heißen, es gibt viele Problemstellungen, die andere schon gelöst haben und diese Lösungen dann auch zum Download anbieten.


----------



## Sunray (17. April 2004)

C# ist eigentlich nicht Plattformunabhängig, da es auf dem .NET-Framework aufbaut, welches nur für Windows zu haben ist. Es gibt allerdings eine Gruppe von Leuten, die sich darangemacht haben. Das Framework auf Linux zu portieren (mono Projekt). 

In C# ist es recht bequem möglich mit DirectX9 zu programmieren.
Allerdings baut es, auch wie Java, auf ein Framework auf und ist somit auch nicht so schnell wie C++.

Für Pacman sollte es allerding reichen. Ich weiss nicht, wie es bei Java mit DirectX aussieht, aber wenn du kein DirectX willst, denke ich, dass Java die bessere Wahl ist.


----------



## Norbert Eder (17. April 2004)

Jetzt geht das schon wieder los .. gibt unzählige Threads dazu.

Grafikprogrammierung ist mit C# absolut kein Problem. Und vermutlich sogar einfacher unter Windows als mit Java. Willst spiele verkaufen, sollten diese wohl eher auf Windows laufen und da spricht Java schon mal dagegen.

DirectX mit C# ist kein Problem. Dann gibts da noch das GDI+ welches recht mächtig ist, immerhin visualisiert Windows damit so ziemlich alles.

Von der Sprache her ists eigentlich egal. Sind beide sehr ähnlich und gleich zu lernen. Für Java hast viele freie Tools, die das Programmieren ein wenig erleichtern, dafür gibts keine GUI, die an Visual Studio rankommt (nein, IDEA nicht und Eclipse auch nicht).

Du solltest Dir vielleicht überlegen, für welche Plattform Du hauptsächlich entwickeln möchtest. Ist es Windows, dann nimm C#, ist es Linux/Unix/etc. und willst Du plattformunabhängig sein, dann Java. Wobei die Plattformunabhängigkeit auch so eine Sache ist .. da musst auch wieder aufpassen, welche Klassen Du verwendest und vor allem gestaltet sich die Grafikprogrammierung unter Linux (Treiber bla bla bla) ein wenig anders als unter Windows. Wirst also vermutlich eh zweimal schreiben müssen, wenns was gscheites werden soll. Bei Pacman is egal 

Nitro

PS: Ich muss auch dazusagen, dass Du ausser Deinem Windows für C# auch nicht mehr brauchst. Für C# gibt es mittlerweile auch kostenlose Entwicklungsumgebungen etc. Das Framework sowie das SDK sind ohnehin gratis. SharpDevelop zum Beispiel. Ausserdem gibts von Microsoft-Mitarbeitern, den User-Groups etc. große Anstrengungen, da noch ein wenig mehr Leben hineinzubekommen. Die Kosten sollten also hier keinen Faktor darstellen.


----------



## Christian Fein (19. April 2004)

nitronic hat gesagt.:
			
		

> Jetzt geht das schon wieder los .. gibt unzählige Threads dazu.
> 
> Grafikprogrammierung ist mit C# absolut kein Problem. Und vermutlich sogar einfacher unter Windows als mit Java. Willst spiele verkaufen, sollten diese wohl eher auf Windows laufen und da spricht Java schon mal dagegen.



Und wenn du es tausendmal wiederholst es wird nicht wahrer.
Java ist auf Windows wunderbar. Performanter als C#. Und es wurden schon mehrere Spiele mit Java programmiert, was bei C# noch nicht der fall ist. Dennoch sind Java und C# beides keine Programmiersprachen um Spiele zu programmieren. Wenn du Spiele programmieren willst dann lern C++;



			
				nitronic hat gesagt.:
			
		

> Von der Sprache her ists eigentlich egal. Sind beide sehr ähnlich und gleich zu lernen. Für Java hast viele freie Tools, die das Programmieren ein wenig erleichtern, dafür gibts keine GUI, die an Visual Studio rankommt (nein, IDEA nicht und Eclipse auch nicht).



Dafür ist Visual Studio ziemlich altbacken. Kein Incremental Build, kein HotCode Replacement (in der neusten iX wurde von dem MS Produktmanager versprochen das dies in 2 Jahren kommt, eclipse kann es schon lange).



			
				nitronic hat gesagt.:
			
		

> Du solltest Dir vielleicht überlegen, für welche Plattform Du hauptsächlich entwickeln möchtest. Ist es Windows, dann nimm C#, ist es Linux/Unix/etc. und willst Du plattformunabhängig sein, dann Java. Wobei die Plattformunabhängigkeit auch so eine Sache ist .. da musst auch wieder aufpassen, welche Klassen Du verwendest und vor allem gestaltet sich die Grafikprogrammierung unter Linux (Treiber bla bla bla) ein wenig anders als unter Windows. Wirst also vermutlich eh zweimal schreiben müssen, wenns was gscheites werden soll. Bei Pacman is egal


Erzähl kein Zeuch von dem du keine Ahnung hast. Damit es wirklich auf jedem OS gleich aussieht gibt es bei Java LayoutManager die das komplett hinbekommen.
Und sämmtliche Klassen des JDK sind auf allen Plattformen lauffähig.

Wenn du etwas nicht weisst, sag lieber gar nichts, anstatt so ein blödsinn zu erzählen.

Wir fassen zusammen, ausser ein paar falsche Behauptungen kaum Inhalt in dem Post.

Sorry wenn meine Reaktion etwas scharf ist, aber bevor mann falsche Dinge erzählt sollte mann sich informieren.


----------



## Norbert Eder (19. April 2004)

Sorry, die LayoutManager kenn ich natürlich schon. Und DARAUF hab ich auch nicht abgezielt. Dass ich mit nem LayoutManager das Layout komplett ändern kann ist mir bewußt. Soviel kenn ich mich mit Java auch aus. Außerdem hab ich diesen Punkt auch niemals erwähnt. Also warum die Aufregung? Hab ich in einem Wort gesagt, dass das Endergebnis anders aussieht? Ich sagte, dass sich die Grafikprogrammierung anders gestaltet - und zwar unter Linux. Und dem wirst Du wohl nichts entgegenzusetzen haben. Kannst also Deinen kompletten letzten Absatz streichen, da dieser mit meiner Post rein gar nichts zu tun hat.

Tja, Visual Studio kann vielleicht ein paar Dinge nicht, dies sind aber Dinge die man durchaus verkraften kann und die jemand, der in den Startlöchern steht, ohnehin nicht braucht. Visual Studio 2005 hat die Punkte meines Wissens nach drinnen - und das dauert *keine* 2 Jahre mehr.

Ausserdem muss hier angemerkt werden, dass ich mit Visual Studio ein paar Dinge mehr kann als Programmieren. Ich kann hier meine Datenbank administrieren, mir daraus jede Menge Zeugs generieren lassen. Ich damit XML verarbeiten, mir Schemata bilden, ich hab ein UML dabei etc. Dinge wozu ich mir unter Eclipse wieder irgendein Plugin suchen muss, wovon die, die zu brauchen sind, erst wieder kosten.

Ad Performance:
Ja, hier hast Du natürlich wieder Deine Quellen. Ich hab die meinigen und die bescheinigen C# ein anderes Zeugnis.  Wie gesagt, traue keiner Statistik, die Du nicht selbst gefälscht hast. Es gibt im Netz mind. gleich viele Aussagen, die bescheinigen dass C# schneller ist, als umgekehrt.

PS: Falsch war an meiner Aussage gar nichts. Nur anscheinend ist für die Java-Welt so manches anders.


----------



## Christian Fein (19. April 2004)

> _Original geschrieben von nitronic _
> *Sorry, die LayoutManager kenn ich natürlich schon. Und DARAUF hab ich auch nicht abgezielt. Dass ich mit nem LayoutManager das Layout komplett ändern kann ist mir bewußt. Soviel kenn ich mich mit Java auch aus. Außerdem hab ich diesen Punkt auch niemals erwähnt. Also warum die Aufregung? Hab ich in einem Wort gesagt, dass das Endergebnis anders aussieht? Ich sagte, dass sich die Grafikprogrammierung anders gestaltet - und zwar unter Linux. Und dem wirst Du wohl nichts entgegenzusetzen haben. Kannst also Deinen kompletten letzten Absatz streichen, da dieser mit meiner Post rein gar nichts zu tun hat.
> *



Swing sieht auf Linux genauso aus wie auf Windows. 



> _Original geschrieben von nitronic _
> *
> Tja, Visual Studio kann vielleicht ein paar Dinge nicht, dies sind aber Dinge die man durchaus verkraften kann und die jemand, der in den Startlöchern steht, ohnehin nicht braucht. Visual Studio 2005 hat die Punkte meines Wissens nach drinnen - und das dauert keine 2 Jahre mehr.
> *



Wir sprechen über die Version die mit Longhorn kommt und diese kommt in 2 Jahren




> _Original geschrieben von nitronic _
> *
> Ausserdem muss hier angemerkt werden, dass ich mit Visual Studio ein paar Dinge mehr kann als Programmieren. Ich kann hier meine Datenbank administrieren, mir daraus jede Menge Zeugs generieren lassen. Ich damit XML verarbeiten, mir Schemata bilden, ich hab ein UML dabei etc. Dinge wozu ich mir unter Eclipse wieder irgendein Plugin suchen muss, wovon die, die zu brauchen sind, erst wieder kosten.
> *



Achso VS kostet nichts? währe mir aber neu.
Im übrigen ist MS Visio keine UML Implementierung die nicht annähernd den UML Standard umsetzen. Für korrektes UML verweist auch der Produktmanager auf die Partner die Erweiterrungen für VS liefern. 
UML Plugins bekommst du auch kostenlos für Eclipse.



> _Original geschrieben von nitronic _
> *
> PS: Falsch war an meiner Aussage gar nichts. Nur anscheinend ist für die Java-Welt so manches anders. *



Nein deine Aussage das mann bestimmte Klassen nicht benutzen darf, um Plattformunabhängig zu sein, ist falsch.
Alles was in dem Java Standard Library drinne ist, ist definitiv genauso nutzbar auf allen Betriebssystemen die eine Java Standard Library nutzen.

Die 2. Aussage das GUIs unter Windows anders aussehen als unter Linux sind definitiv falsch. Dafür gibt es Swing und Swing sieht auf beiden absolut gleich aus.
Auch gestalltet sich die "Grafikprogrammierung" nicht anders. Java2D und Java3D sind auf beiden Betriebssystemen ebenso absolut plattformunabhängig.


----------



## Norbert Eder (19. April 2004)

Ad Swing:
Tja, Swing sieht zwar auf Linux gleich aus wie unter WIndows, sieht aber nicht wie Windows aus. Ausserdem hab ich davon nicht gesprochen, das ganze Thema hast du ins Rennen geworfen und ist irrelevant.

Ad VS 2005:
Erklär mir mal bitte was VS 2005 mit Longhorn zu tun hat? Nämlich original GAR NIX! Mit Longhorn hat Yukon was zu tun, aber das ist der SQL-Server. 

Ad Kosten:
Ich hab in keinster Weise behauptet, dass VS nichts kostet. Leg mir doch keine Dinge in den Mund, die ich nicht gesagt habe.
Meine Aussage lautete: Dass du für saubere, schnelle und gute Plugins für Eclipse bezahlen musst. Dem ist so und mehr habe ich nicht gesagt. Wenn Du etwas in meine Worte rein-implizierst, dann wirf es mir nicht vor.

Ad UML:
Tatsache ist, dass Du ein UML-Diagramm erstellen kannst. Fakt. Dass dem nicht 100%ig dem Standard entspricht weiß ich auch. Dass es allerdings immer noch besser ist, als das kostenlose UML-Plugin für Eclipse liegt aber auch auf der Hand. Für ein wirklich ordentliches Produkt musst ohnehin in beiden Fällen bezahlen.

Java-Klassen:
Tja, Standard-Klassen. Leider reichen die für spezielle Zwecke dann nicht mehr aus. Und willst du eine spezielle Sache umsetzen, dann musst du auf Klassen zurückgreifen, die dann leider nicht mehr von allen Systemen unterstützt werden.


----------



## Norbert Eder (19. April 2004)

Ad Produkt-Manager von Microsoft:

Die Aussage eines Produkt-Managers von M$ ist mir vollkommen egal. Ich hab auf der CeBit selbst erlebt wieviel Ahnung die tatsächlich haben. Danke, da verlass ich mich eher auf die Blogs von den Programmierern vom VS, denn die wissen wann sie fertig sein müssen. Der Produktmanager kriegt ohnehin etwas hingeworfen. Veröffentlichungstermin vom VS2005 ist kommendes Jahr, 1. Quartal.


----------



## Christian Fein (19. April 2004)

> _Original geschrieben von nitronic _
> *Ad Swing:
> Tja, Swing sieht zwar auf Linux gleich aus wie unter WIndows, sieht aber nicht wie Windows aus. Ausserdem hab ich davon nicht gesprochen, das ganze Thema hast du ins Rennen geworfen und ist irrelevant.
> *



Du hast davon gesprochen das Grafikprogrammierung anders gestalltet was totaler Blödsinn ist.



> _Original geschrieben von nitronic _
> *
> Ad VS 2005:
> Erklär mir mal bitte was VS 2005 mit Longhorn zu tun hat? Nämlich original GAR NIX! Mit Longhorn hat Yukon was zu tun, aber das ist der SQL-Server.
> *



Die Aussagen des Produktmanagers beziehen sich aber darauf das Hot-Code Replacement ein Feature für das VS das mit Longhorn ausgeliefert wird ist.




> _Original geschrieben von nitronic _
> *
> Ad Kosten:
> Ich hab in keinster Weise behauptet, dass VS nichts kostet. Leg mir doch keine Dinge in den Mund, die ich nicht gesagt habe.
> ...



Nein brauchst du nicht. Denn saubere, schnelle und gute Plugins für Eclipse gibts in Massen für Lau. Zum Beispiel ist das Struts Plugin ein ziemlich klasse Ding, für lau. 
Es gibt sowohl gute Plugins die richtig Geld kosten, als auch kostenlose. Dennoch kommt mann selbst vollgepackt mit Plugins nichtmal annähernd auf den Preis von einem Vergleichbaren VS Studio.




> _Original geschrieben von nitronic _
> *
> Ad UML:
> Tatsache ist, dass Du ein UML-Diagramm erstellen kannst. Fakt. Dass dem nicht 100%ig dem Standard entspricht weiß ich auch. Dass es allerdings immer noch besser ist, als das kostenlose UML-Plugin für Eclipse liegt aber auch auf der Hand. Für ein wirklich ordentliches Produkt musst ohnehin in beiden Fällen bezahlen.
> *



Das ist schon wieder totaler Müll.
Omondo:
http://www.omondo.com/features.jsp
Unterstützt den UML Standard und ist demnach um einiges besser als ein Halbwertiges Visio.



> _Original geschrieben von nitronic _
> *
> Java-Klassen:
> Tja, Standard-Klassen. Leider reichen die für spezielle Zwecke dann nicht mehr aus. Und willst du eine spezielle Sache umsetzen, dann musst du auf Klassen zurückgreifen, die dann leider nicht mehr von allen Systemen unterstützt werden. *



Och echt? Ist mir in meinen Jahren der Java Erfahrung noch nie vorgekommen. Anscheinend programmier ich ja keine richtigen Sachen.
Sach mir doch welche Speziellen Klassen ich denn umbedingt brauche die nicht 
Plattformunabhängig sind. Mir sind nähmlich noch keine Untergekommen.

Mich nervt einfach deine Mutmassungen und unhaltbaren Behauptungen.
Bisher sind deine Aussagen alle widerlegbar falsch, komplett.


----------



## Norbert Eder (19. April 2004)

Grafikprogrammierung:
Ich sagte, dass sich die Grafikprogrammierung unter Linux ein wenig anders gestaltet als unter Windows in Zusammenhang mit Treibern etc. Und zwar wie Du diese ansprichst usw.

Produkt-Manager:
Dann schreib gleich dazu worauf sich seine Aussage bezog und nicht, dass er generell alles mit Longhorn in Verbindung bringt. Dass das VS 2005 wesentlich vor Longhorn kommt (wo nichtmal noch feststeht, in welcher Form es auf den Markt kommt), steht fest und alle neuen Features sind noch nicht raus. Aber es gibt Leute die haben bereits einen Blick darauf geworfen und wissen, was in etwa kommen wird - und da sind wahrlich *einige* neue Features dabei.

Omondo:
Und ja, ich kenne Omondo, hab ich selber laufen, weils das einzig gscheite free UML-Plugin für Eclipse ist. Und langsam. Und es fehlen viele Features. Und ein Graus bei der Installation, weils mit der Hälfte der Eclipse-Versionen net kann, oder du einiges tun musst, damits funktioniert.

Eclipse-Plugins generell:
Ja, richtig, es gibt viele Plugins die free sind und teilweise gar nicht so schlecht. Viele findest aber auch erst, wenn du entweder von jemanden darauf gestoßen wirst, oder wenn du viel Zeit hast um alle zu probieren, ob sie wohl den Wünschen entsprechen.

UML - Visualisierung:
Mir persönlich ist das vollkommen egal, ob es 100%ig UML-konform ist. Ich verwende UML um zu designen, um zu analysieren und um vorhandenes visuell abzubilden. Ob es 100%ig UML-konform ist, ist mir deshalb egal, weil ich zB einem Manager zeigen will was dahinter steht. Nachdem der sowieso nur eine Grafik sehen will und nicht versteht was dahinter ist, ist es vollkommen egal ob es standard-konform ist oder nicht. Ich und die Leute die dran arbeiten müssen das gleiche verwenden und auch verstehen - dann gibt es auch kein Problem mehr.

Klassen die nicht kompatibel sind etc:
Du unterstellst mir da in jeder Post, dass ich dir etwas unterstelle. Schwachsinn. Du hast sicherlich jede Menge Erfahrung und die spreche ich dir nicht ab. Du hast auch sicherlich wesentlich mehr Erfahrung was Java angeht, auch kein Thema. Aber ich kann mir beim besten Willen nicht vorstellen, dass eine Klasse, die im Linux-System rumgräbt auch unter Windows funktioniert. Hier wirst das gleiche Verhalten haben, wie es uns die Win32-API zeigt.


----------



## Christian Fein (19. April 2004)

nitronic hat gesagt.:
			
		

> Grafikprogrammierung:
> Ich sagte, dass sich die Grafikprogrammierung unter Linux ein wenig anders gestaltet als unter Windows in Zusammenhang mit Treibern etc. Und zwar wie Du diese ansprichst usw.



Gib doch mal Beispiele als immer im Dunklen zu fischen. Denn Java bietet gerade wegen Betriebssystemunterschiede für alles eine Plattformunabhängige API.
nige neue Features dabei.



			
				nitronic hat gesagt.:
			
		

> Omondo:
> Und ja, ich kenne Omondo, hab ich selber laufen, weils das einzig gscheite free UML-Plugin für Eclipse ist. Und langsam. Und es fehlen viele Features. Und ein Graus bei der Installation, weils mit der Hälfte der Eclipse-Versionen net kann, oder du einiges tun musst, damits funktioniert.



Es gibt noch andere, aber da kannst du gern selber nach googlen. Und wenn du damit meinst es auf 3.0 laufen zu lassen, nur um dein Schwaches Gedächtnis aufzufrischen:
3.0 ist BETA.
Auf 2.1 ist die installation ein Kinderspiel.
Und nur zur Informationen, beim Einsatz von Beta Produkten kann mann kein Reibungslosen Ablauf garantieren deswegen heisst es ja auch beta.




			
				nitronic hat gesagt.:
			
		

> Eclipse-Plugins generell:
> Ja, richtig, es gibt viele Plugins die free sind und teilweise gar nicht so schlecht. Viele findest aber auch erst, wenn du entweder von jemanden darauf gestoßen wirst, oder wenn du viel Zeit hast um alle zu probieren, ob sie wohl den Wünschen entsprechen.



Da sind alle Plugins aufgelistet:
http://eclipse-plugins.2y.net/eclipse/index.jsp

Und das mann sich informieren muss ob ein Produkt gut oder schlecht ist, muss mann bei allem. 



			
				nitronic hat gesagt.:
			
		

> UML - Visualisierung:
> Mir persönlich ist das vollkommen egal, ob es 100%ig UML-konform ist. Ich verwende UML um zu designen, um zu analysieren und um vorhandenes visuell abzubilden. Ob es 100%ig UML-konform ist, ist mir deshalb egal, weil ich zB einem Manager zeigen will was dahinter steht. Nachdem der sowieso nur eine Grafik sehen will und nicht versteht was dahinter ist, ist es vollkommen egal ob es standard-konform ist oder nicht. Ich und die Leute die dran arbeiten müssen das gleiche verwenden und auch verstehen - dann gibt es auch kein Problem mehr.



Genau der selbe Quatsch wie:
Meine HTML Seite muss im IE gut aussehen. Ob das Standardkonformes HTML ist oder nicht, iss mir doch egal hauptsache meine Clankollegen können auf die phaette pAgE.




			
				nitronic hat gesagt.:
			
		

> Klassen die nicht kompatibel sind etc:
> Du unterstellst mir da in jeder Post, dass ich dir etwas unterstelle. Schwachsinn. Du hast sicherlich jede Menge Erfahrung und die spreche ich dir nicht ab. Du hast auch sicherlich wesentlich mehr Erfahrung was Java angeht, auch kein Thema. Aber ich kann mir beim besten Willen nicht vorstellen, dass eine Klasse, die im Linux-System rumgräbt auch unter Windows funktioniert. Hier wirst das gleiche Verhalten haben, wie es uns die Win32-API zeigt.



Glauben heisst nicht wissen.  
Ein Beispiel: 
Unter Windows gibt es kein Sendmail sonder das Windows Pendant dazu. Da mann sich also nicht darauf verlassen kann das dieses oder jenes Programm verfügbar ist unter Java, gibt es von Sun die JavaMail API (Bestandteil von J2EE) . Die mann entweder so konfigurieren kann das sie über bestehende Mailserver sendet (sprich mann muss nichts am Code ändern, höchstens die Konfiguration) oder selbständig agiert. Das heisst das ist gleichzeitig ein MailServer der auch auf SMTP Sendungen horcht.
Weiteres Beispiel: 
Ordner im Dateisystem. Unter Windows werden die Ordner Seperator mit \ dargestellt unter Unix mit / . Java beachtet dies und es gibt die Eigenschafft
File.seperator 
Mit diesem kann man plattformunabhängig dieses Darstellen. Beispiel images\bild.gif
bzw images/bild.gif
Java: "images"+File.separator+"bild.gif" 

Sprich sämmtliche Klassen die du im J2SE / J2EE findest sind komplett plattformunabhängig und so umfangreich (mehrere Tausend) das mann keine Betriebssystemspezifische Programmierung braucht. 
Wem das noch nicht genügend Klassen sind der bekommt bei Apache (die Commons Libs) die nochmals mehrere tausend Klassen die wieder komplett Plattformunabhängig sind.

Sorry nitronic,  ich diskutiere gerne mit dir, aber mich ärgert das du deine Vermutungen als Wahrheit darstellst.
Wie eben die Vermutung das mann auf Betriebssystemspezifische Komponenten zurückgreifen muss.


----------



## Martin Schaefer (19. April 2004)

Hmm, wenn SirGawain jetzt noch nicht suizidgefährdet ist, dann hat er gute
Nehmerqualitäten. Wisst ihr eigentlch, was ihr einem ANFÄNGER mit so einer
Diskussion antut?


----------



## Christian Fein (19. April 2004)

> _Original geschrieben von Martin Schaefer _
> *Hmm, wenn SirGawain jetzt noch nicht suizidgefährdet ist, dann hat er gute
> Nehmerqualitäten. Wisst ihr eigentlch, was ihr einem ANFÄNGER mit so einer
> Diskussion antut?  *



Ja mei, nur die harten kommen in den Garten


----------



## Norbert Eder (19. April 2004)

Grafik:
Gut, dann zeig mir bitte wie ich unter Linux und Windows einen virtuellen Desktop per Java anspreche. Vielleicht gehts ja mit einer einzigen Implementierung. Ich würds nur gerne sehen.

Eclipse:
Tatversion: 2.1.2 - ca. 15 Personen von 35 hatten ein Problem Omondo zu installieren. Nicht aufgrund Ihrer fehlenden Kenntnisse, sondern aus der Tatsache heraus, dass es schlicht und einfach nicht funktioniert hat. Windows 2000 und XP.

Dass es mit einer Beta sehr wahrscheinlich nicht funktioniert, ist mir klar. Aber siehe oben.

Ad Plugins:
Jup, den Link kenne ich mittlerweile auch. Dennoch ist es sehr mühsam, das für sich passende Plugin zu finden. Da verwende ich das was im VS integriert ist.

UML:
Dein Vergleich hinkt. Du vergleichst hier Äpfel mit Birnen. Ich benötige kein UML um es  mit einem weiteren Programm bearbeiten zu können, sondern um für mich und mein Team das Design zu entwerfen bzw. ein Design zu generieren. Hierzu muss ich es nicht mit anderen Tools etc. weiterverarbeiten, wodurch es auch nicht nötig ist, sich an einen Standard zu halten.

Betriebssystem:
Es gibt aber auch Fälle, in denen ich Funktionen verwenden möchte, die vom OS zur Verfügung gestellt werden .... vergleichbar mit der Win32 API.


----------



## Christian Fein (19. April 2004)

> _Original geschrieben von nitronic _
> *
> Eclipse:
> Tatversion: 2.1.2 - ca. 15 Personen von 35 hatten ein Problem Omondo zu installieren. Nicht aufgrund Ihrer fehlenden Kenntnisse, sondern aus der Tatsache heraus, dass es schlicht und einfach nicht funktioniert hat. Windows 2000 und XP.
> *



Komisch, ich habe die installation jetzt mehrmals durchgeführt und war jedesmal absolut kein Problem 
Deine Fehlerbeschreibung (weils halt nicht funktioniert hat) ist nicht wirklich aussagekräftig.



> _Original geschrieben von nitronic _
> *
> Jup, den Link kenne ich mittlerweile auch. Dennoch ist es sehr mühsam, das für sich passende Plugin zu finden. Da verwende ich das was im VS integriert ist.
> *



Wenn du nicht mal 15 minuten dich informieren kannst was benötigt wird dann ist das dein Problem. Im übrigen wirst du dich ja hoffentlich auch täglich informieren was es neues an Techniken gibt, verschiedene Usenetgroups lesen usw.
Dann bekommt mann auch ohne sich gezielt zu informieren mit, welche Plugins was taugen.



> _Original geschrieben von nitronic _
> *
> Dein Vergleich hinkt. Du vergleichst hier Äpfel mit Birnen. Ich benötige kein UML um es  mit einem weiteren Programm bearbeiten zu können, sondern um für mich und mein Team das Design zu entwerfen bzw. ein Design zu generieren. Hierzu muss ich es nicht mit anderen Tools etc. weiterverarbeiten, wodurch es auch nicht nötig ist, sich an einen Standard zu halten.
> *



Nein ich vergleich nicht Äpfel und Birnen. Es geht um warbare Programmierung. Und wenn das nächste Programmiererteam mit eurem Krampf da arbeiten muss und das entgegen den Standards ist dann werden die Entwicklungskosten in die Höhe springen.



> _Original geschrieben von nitronic _
> *
> Es gibt aber auch Fälle, in denen ich Funktionen verwenden möchte, die vom OS zur Verfügung gestellt werden .... vergleichbar mit der Win32 API. *



Wenn mann umbedingt über die Winapi ein File lesen will, anstatt die JSDK Klassen zu nutzen ist mann selber schuld.
Mann kann mit Java Plattformunabhängig programmieren, mann muss es nicht. Und ja du kannst auch über Java COM Objecte nutzen. Nur ist dies nicht teil des Standards, und wenn jemand mein das unbedingt durchführen zu müssen, dann hat er sich ganz gezielt gegen Plattformunabhängigkeit entschieden.

Das ist seine Entscheidung, aber deine Aussage lautete:


> Wobei die Plattformunabhängigkeit auch so eine Sache ist .. da musst auch wieder aufpassen, welche Klassen Du verwendest und vor allem gestaltet sich die Grafikprogrammierung unter Linux (Treiber bla bla bla) ein wenig anders als unter Windows.



Und das sind absolut 2 komplett falsche Aussagen:
Mann muss nicht aufpassen welche Klassen mann verwenden muss. Denn aufpassen das dies nicht passiert bedeutet, das es ausversehen passieren kann.

Wenn aber jemand explizit irgendwelche Externen Klassen benutzt um z.b Zugriff auf COM zu erhalten dann ist das geplant und hat absolut nichts mehr mit "Kann passieren wenn mann nicht aufpasst" zu tun.

Genauso war deine Aussage "Grafikprogrammierung unter Linux (Treiber bla bla) ein wenig anders als unter Windows" absolut falsch. 
Java2D und Java3D sind beide absolut plattformunabhängig.

Und darum geht es. Du stellst Behauptungen auf von denen du entweder:
- weil du es nicht besser weisst
- du trotz besseren wissen 
Unwahrheiten darstellst. Und das geht mir ehrlich gesagt tierisch auf den Senkel.

Ich sag es nochmal: Keiner muss alle Techniken kennen. Aber wenn jemand sich bei einer nicht so ganz auskennt, dann kann er nicht darüber richten.


----------



## Norbert Eder (19. April 2004)

Omondo:
Wenn ich wüsste worans gelegen hat, könnte ich es dir auch sagen. Nach mehrmaligen Versuchen hats Eclipse dann erkannt. War nur nervig.

Plugins:
Das hat mit 15 Minuten informieren nichts zu tun. Für gewöhnlich weiß man was gebraucht wird. Stehen aber 15 Plugins mit dem gleichen Funktionsumfang zur Verfügung hat man 15 Plugins zu testen. Und da werden mehr als 15 Minuten benötigt.

Standards:
Standards dort wo sie sinnvoll sind. In unserem Fall wird NIE jemand anders damit zu tun haben. Und wir arbeiten auch ausschließlich auf Windows. Warum also andere Tools verwenden, als die, die ohnehin in unserer Umgebung inkludiert sind? Ein guter .NET-Entwickler wird damit auch umgehen können. Ohne viel Aufwand.

Ad aufpassen:
Klar wird dies absichtlich getan, daher vielleicht meine Formulierung nicht korrekt.

Grafikprogrammierung:
Es stellt sich immer die Frage was erstellt werden muss und entsprechend werden auch die Hilfsmittel bez. Grafikprogrammierung eingesetzt. Greifst Du tief ins System ein, kann ich mir nicht mehr vorstellen, dass Java2D und Java3D ausreichend sind. Aber vielleicht belehrst du mich ja eines besseren....


----------



## Christian Fein (19. April 2004)

> _Original geschrieben von nitronic _
> *
> Plugins:
> Das hat mit 15 Minuten informieren nichts zu tun. Für gewöhnlich weiß man was gebraucht wird. Stehen aber 15 Plugins mit dem gleichen Funktionsumfang zur Verfügung hat man 15 Plugins zu testen. Und da werden mehr als 15 Minuten benötigt.
> *


Langsam wirds mir echt zu bunt. 
Wer Java und Eclipse programmiert der weiss welche Plugins was taugen oder nicht, weil er sie schon mehrfach gehört hat.



> _Original geschrieben von nitronic _
> *
> Standards:
> Standards dort wo sie sinnvoll sind. In unserem Fall wird NIE jemand anders damit zu tun haben. Und wir arbeiten auch ausschließlich auf Windows. Warum also andere Tools verwenden, als die, die ohnehin in unserer Umgebung inkludiert sind? Ein guter .NET-Entwickler wird damit auch umgehen können. Ohne viel Aufwand.
> *



Einerseits ist es dir zu zeitaufwendig dich mal ein paar Minuten über Plugins zu informieren, im Gegenzug sollen sich aber Programmierer um eher schlechte Abweichungen vom Standard informieren und dafür genug Zeit haben. 
Du drehst es wie du es brauchst oder?




> _Original geschrieben von nitronic _
> *
> Ad aufpassen:
> Klar wird dies absichtlich getan, daher vielleicht meine Formulierung nicht korrekt.
> *



Wenn du das mit der Formulierung nicht hinbekommst, dann sag in dem Fall lieber nichts. Das währe so als wenn ich sagen würde:
.NET Programme sind auf Windows 2000 nicht lauffähig.

Du würdest mich zurecht zusammenscheissen, und wenn ich dann irgendwann sagen würde: 
Ich wollte sagen sie sind nicht auf Windows 2000 lauffähig wenn mann kein .net Framework installiert hat, dann ist das nur eine dumme Ausrede.
Ich werde aber sowas erst gar nicht sagen.




> _Original geschrieben von nitronic _
> *
> Grafikprogrammierung:
> Es stellt sich immer die Frage was erstellt werden muss und entsprechend werden auch die Hilfsmittel bez. Grafikprogrammierung eingesetzt. Greifst Du tief ins System ein, kann ich mir nicht mehr vorstellen, dass Java2D und Java3D ausreichend sind. Aber vielleicht belehrst du mich ja eines besseren.... *


Java 2D reicht vollkommen für alle Arten von Desktop Applikationen die grafische Darstellung benötigen. 
Bei 3D ist Java3D  schon sehr leistungsfähig. Wenn es aber konkret um 3D Spiele geht dann gibt es Java Libs für OpenGL die wiederrum plattformunabhängig sind.
Aber .net und Java sind beide nicht die besten Kandidaten für performancehungrige 3D Spiele. Ob sie es in Zukunft werden, wird sich zeigen.
Mann kann auch DirectX mit Java programmieren, verliert aber dann die Plattformunabhängigkeit.
Hier findest du die Möglichkeit über Java3D DirectX zu nutzen:
http://www.j3d.org/implementation/java3d-OpenGLvsDirectX.html


----------



## Norbert Eder (19. April 2004)

Mal ganz davon abgesehen, dass diese Diskussion keinem etwas bringt. Ich persönlich kann Java, sicherlich nicht so gut wie Du, Christian, keine Frage. Nur habe ich mich mal gegen Java entschieden, was auch mehrere Gründe hat das sind mitunter auch Gründe, die für andere relevant sind und über die sich jeder klar werden soll, der sich fragt C# oder doch Java.

Ich programmiere mittlerweile ausschließlich auf Windows-Systemen (nicht dass ich nicht unter Linux programmieren würde, aber unsere Software ist auf Windows ausgelegt, weil eben alle unsere Kunden Windows verwenden bzw. ohnehin ein komplettes System inkl. Hardware, OS etc. kaufen). Hier kann ich Software entwickeln die sich perfekt in Windows integriert und das ohne viel Aufwand.

Weiters habe ich den Vorteil, dass sich die Software automatisch, ohne mein Zutun an den jeweiligen Style (Theme) des Benutzers anpasst, ohne Verrenkungen unternehmen zu müssen. Wie dies unter Java zu erreichen ist, keine Ahnung - ehrlich gesagt. Unter .NET muss ich da gar nichts dafür tun.

Unsere Systeme laufen mit einem MS-SQL-Server, hier bietet .NET und VS eine wesentlich angenehmere Variante was Administration etc. betrifft. Zumindest finde ich es angenehmer. Du, Christian,  vielleicht nicht. 

Wir verwenden unter anderem NUR eigens entwickelte Steuerelemente. Deren Entwicklung geht unter .NET + VS ein wenig schneller von statten als unter Java - dies ist übrigens nicht meine Aussage, weil ich unter Java noch nie derartige Elemente gebastelt hab, sondern von einem unserer Programmierer, der übrigens aus der Java-Welt stammt.

Weiters geht es mir am Senkel, in Java ständig einmal ein Getter zu machen und einmal ein Setter. In .NET benötige ich dazu genau _EINE_ Methode und nicht zwei. Bei 10 Properties macht sich das dann schon bemerkbar.

Und das sind einige der Gründe warum ich meine Projekte meist nicht mit Java mache.

Wie ich schon mehrmals bemerkt habe: Wenn die Anwendung plattform-unabhängig sein muss, dann greif selbst ich zu Java. Sind bei mir jedoch nur die wenigsten Projekte.


----------



## Norbert Eder (19. April 2004)

Zusatz zu deiner letzten Post:
Es geht hier darum, jemanden die Entscheidung einfacher zu machen, ob er C# oder Java nehmen soll. Und ich glaube NICHT dass ER weiß WELCHES Plugin er für Eclipse verwenden soll.

Plugins die zweite:
Geh bitte, schön dass für dich DEINE Vergleiche alle richtig sind. Teste ein komplexes Plugin ob es Deinen Ansprüchen gerecht wird. Das sind dann vermutlcih ein paar Minuten ... ja, jetzt wirds mir zu bunt.
Und wer mit UML zurecht kommt, der kommt auch mit der Visio-Visualisierung zurecht. Da muss nix umgelernt werden.

Ad Grafik-Game:
Jo, wie Du in deiner ersten Post richtig gesagt hast: C++


----------



## Christian Fein (19. April 2004)

nitronic hat gesagt.:
			
		

> Mal ganz davon abgesehen, dass diese Diskussion keinem etwas bringt. Ich persönlich kann Java, sicherlich nicht so gut wie Du, Christian, keine Frage. Nur habe ich mich mal gegen Java entschieden, was auch mehrere Gründe hat das sind mitunter auch Gründe, die für andere relevant sind und über die sich jeder klar werden soll, der sich fragt C# oder doch Java.



Das ist auch vollkommen in Ordnung. 
Das darf jeder für sich selber Entscheiden. Du sollstest dir nur überlegen was du über die andere Sprache sagst wenn du dir nicht sicher bist das es falsch ist. Dann sag das lieber nicht.
Dir würde es auch nicht gefallen wenn ich falsche Dinge über .net sagen würde, nur weil ich es nicht weiss oder?



			
				nitronic hat gesagt.:
			
		

> Ich programmiere mittlerweile ausschließlich auf Windows-Systemen (nicht dass ich nicht unter Linux programmieren würde, aber unsere Software ist auf Windows ausgelegt, weil eben alle unsere Kunden Windows verwenden bzw. ohnehin ein komplettes System inkl. Hardware, OS etc. kaufen). Hier kann ich Software entwickeln die sich perfekt in Windows integriert und das ohne viel Aufwand.
> 
> Weiters habe ich den Vorteil, dass sich die Software automatisch, ohne mein Zutun an den jeweiligen Style (Theme) des Benutzers anpasst, ohne Verrenkungen unternehmen zu müssen. Wie dies unter Java zu erreichen ist, keine Ahnung - ehrlich gesagt. Unter .NET muss ich da gar nichts dafür tun.



SWT passiert sich auch den Themes an, und das bei Windows die verschiedene Themes und auf Linux passt es sich den GTK Themes an, und zwar so das mann keinen Unterschied zwischen nativ und SWT sieht. 
Und nein mann muss dafür auch keine einzelne Zeile Code schreiben.



			
				nitronic hat gesagt.:
			
		

> Unsere Systeme laufen mit einem MS-SQL-Server, hier bietet .NET und VS eine wesentlich angenehmere Variante was Administration etc. betrifft. Zumindest finde ich es angenehmer. Du, Christian,  vielleicht nicht.


Ich habe sehr negative Erfahrungen mit dem MS SQL Server gemacht, und das seid 1 Jahr, das ich mit dem Projekt verbringe. 
Diese schlechte Erfahrung kann ich aber auf meine zu geringe Kentniss mit dem MS SQL Server zurückführen. Ich komme mit dem PostgreSQL Server um einiges besser klar weil ich diesen einfach kann.
Ein anderer kommt mit IBM DB2 am besten klar usw 
Da nehmen sich die meisten nicht viel.




			
				nitronic hat gesagt.:
			
		

> Wir verwenden unter anderem NUR eigens entwickelte Steuerelemente. Deren Entwicklung geht unter .NET + VS ein wenig schneller von statten als unter Java - dies ist übrigens nicht meine Aussage, weil ich unter Java noch nie derartige Elemente gebastelt hab, sondern von einem unserer Programmierer, der übrigens aus der Java-Welt stammt.



Um zu bewerten inwieweit die Aussage stimmt müsste ich wissen was für Steuerelemente. Da ich die aber nicht kenne kann ich dazu nichts sagen. Ich programmiere sowohl in .net als auch in Java und muss sagen das die Entwicklung verteilter Applikationen unter Java um einiges angenehmer durchzuführen ist, was durch RMI und EJB wunderbar unterstützt wird.




			
				nitronic hat gesagt.:
			
		

> Weiters geht es mir am Senkel, in Java ständig einmal ein Getter zu machen und einmal ein Setter. In .NET benötige ich dazu genau _EINE_ Methode und nicht zwei. Bei 10 Properties macht sich das dann schon bemerkbar.



Ich mache genau 3 Mausklicks und kann für einzelne/ sämmtliche Attribute getter (und oder setter) Methoden deklarieren.
Tip: Eclipse
folgende Klasse


```
public class Person {
    private String firstName, lastName;
}
```
rechts in den Code klicken
Kontextmenu ->  Source -> generate Getter/Setter
und das wars.



			
				nitronic hat gesagt.:
			
		

> Und das sind einige der Gründe warum ich meine Projekte meist nicht mit Java mache.
> 
> Wie ich schon mehrmals bemerkt habe: Wenn die Anwendung plattform-unabhängig sein muss, dann greif selbst ich zu Java. Sind bei mir jedoch nur die wenigsten Projekte.


Du kannst programmieren mit was du willst, das ist mir 88.
Aber hör auf mit falschen Behauptungen eine Programmiersprache schlecht zu reden.



			
				nitronic hat gesagt.:
			
		

> Es geht hier darum, jemanden die Entscheidung einfacher zu machen, ob er C# oder Java nehmen soll. Und ich glaube NICHT dass ER weiß WELCHES Plugin er für Eclipse verwenden soll.



Brauch er der nicht weiss mit was er anfangen will zu programmieren ein UML Plugin?
Brauch er ein J2EE EJB Plugin? Brauch er ein Struts Plugin? Brauch er Axis SOAP Plugin?

Nein er brauch eine IDE mit der er codieren, debuggen vielleicht noch Teamverwaltung (cvs ), TODO Liste und und 
Er wird als Programmieranfänger nichts benötigen was Eclipse ohne Plugins nicht bietet. Ich habe in meiner produktiv IDE genau 3 Plugins Installiert.
Wenn er lang genug gelernt hat um sich mit Techniken wie Servlet Programmierung gehört hat, so wird er schon 50 mal was von Sysedo Tomcat Pluging gehört haben.


----------



## Norbert Eder (19. April 2004)

Getter und Setter:
Ja, weiß ich, aber: Es gestaltet sich aber unübersichtlicher, wenn Du zusätzlichen Code in deine Getter und Setter-Methoden mit reinnimmst. Macht doch einen Unterschied bez. der Übersichtlichkeit ob du 20 Methoden oder nur 10 Methoden auf dem Schirm hast.

Steuerelemente:
TextBox, Label, Grids, ComboBoxen, CheckBoxen und viele mehr wurden ausgetauscht. 
Was das allerdings mit verteilten Anwendungen zu tun hat bleibt mir im Moment etwas verborgen.


----------



## Christian Fein (19. April 2004)

nitronic hat gesagt.:
			
		

> Getter und Setter:
> Ja, weiß ich, aber: Es gestaltet sich aber unübersichtlicher, wenn Du zusätzlichen Code in deine Getter und Setter-Methoden mit reinnimmst. Macht doch einen Unterschied bez. der Übersichtlichkeit ob du 20 Methoden oder nur 10 Methoden auf dem Schirm hast.



Auch wenn du 20 get/Set attribute mit Code und manche ohne Code ausführung hast, hast du das selbe Problem.
Der geschickte Programmierer strukturiert seinen Code so das ersichtlich ist wo etwas zur Ausführung kommt.

Ich finde die Regelung besser als die Get/Set Attribute von .net.
Denn dies ist wiederrum eine unlogische Veränderung.
Zugriffsmethoden sind Methoden. Der Zugriff auf ein Property unter .net verät dir nicht
im Code schon ob eine Methode ausgeführt wird die eventuell Code ausführt oder aber 
nur ein Variable gesetzt wird. Dieser Unterschied ist aber für mich relevant. 



			
				nitronic hat gesagt.:
			
		

> Steuerelemente:
> TextBox, Label, Grids, ComboBoxen, CheckBoxen und viele mehr wurden ausgetauscht.
> Was das allerdings mit verteilten Anwendungen zu tun hat bleibt mir im Moment etwas verborgen.


Nein du hast meinen Text nicht gelesen. Verteilte Anwendungen war ein beispiel von meiner Seite aus. Weil ich diese Art der Applikation sowohl in Java als auch in .net entwickelt habe. Und die Java Version war dank netter Applikationsserver die HotDeploy unterstützen eine Wohltat.


----------



## Norbert Eder (19. April 2004)

Getter/Setter
Für mich ist es nicht relevant ob im Hintergrund eine Methode ausgeführt wird, oder eine Variable gesetzt wird. Ich will das wieder zurückbekommen, was ich der Property übergeben habe. Der Vorteil gegenüber Variablen liegt doch darin, dass ich in der Property Prüfungen durchführen kann, die ich bei einer Variable sonst jedes Mal machen müsste.

Weiters macht es für mich sehr wohl einen Unterschied, ob ich 20 Methoden oder nur 10 habe. Diejenigen die ich nicht benötige, werden von mir zugeklappt und je weniger in einer Klasse ist, desto übersichtlicher ist sie für mich - hängt aber womöglich vom Programmierstil oder den eigenen Vorlieben ab.

Das Get/Set-Konstrukt unter C# hingegen finde ich selbst genial. Ich muss mir nur eine einzige Methode anzusehen was passiert und nicht zwei.

Aus deinem Absatz ging jedoch nicht hervor, dass du einen Themenwechsel vorgenommen hast:



> Um zu bewerten inwieweit die Aussage stimmt müsste ich wissen was für Steuerelemente. Da ich die aber nicht kenne kann ich dazu nichts sagen. Ich programmiere sowohl in .net als auch in Java und muss sagen das die Entwicklung verteilter Applikationen unter Java um einiges angenehmer durchzuführen ist, was durch RMI und EJB wunderbar unterstützt wird.



Lies die komplette Quote und dann wird es auch für dich ersichtlich.

Hier hast Du mir jedoch keine Antwort auf meine ursprüngliche Frage bzw. Aussage gegeben. Ich habe unter Java noch keine "Steuerelemente" entwickelt, daher hab ich keinen persönlichen Vergleich, sondern nur die Aussage eines Java-Programmierers, der sich in C# verliebt hat. Womöglich hast du jedoch auch einen Vergleich, da beides schon gemacht.


----------



## Christian Fein (19. April 2004)

nitronic hat gesagt.:
			
		

> Getter/Setter
> Für mich ist es nicht relevant ob im Hintergrund eine Methode ausgeführt wird, oder eine Variable gesetzt wird. Ich will das wieder zurückbekommen, was ich der Property übergeben habe. Der Vorteil gegenüber Variablen liegt doch darin, dass ich in der Property Prüfungen durchführen kann, die ich bei einer Variable sonst jedes Mal machen müsste.


Das problem ist aber auch das Schlechter Programmierer A auf die Idee kommen könnte jede Propertyänderrung in eine Datenbank zu schreiben. 
Und ich wenn ich keinen Unterschied sehe zwischen einer Zuweisung einer variable oder eines Properties diese Zuweisung eventuell ca 1000 mal in einer Schleife durchführe.
1000 Variablen zuweisungen sind aus performance Technischen Gründen kein Problem, aber 1000 Datenbank Querys nehmen den Rechner stark in Beschlagn



			
				nitronic hat gesagt.:
			
		

> Weiters macht es für mich sehr wohl einen Unterschied, ob ich 20 Methoden oder nur 10 habe. Diejenigen die ich nicht benötige, werden von mir zugeklappt und je weniger in einer Klasse ist, desto übersichtlicher ist sie für mich - hängt aber womöglich vom Programmierstil oder den eigenen Vorlieben ab.
> 
> Das Get/Set-Konstrukt unter C# hingegen finde ich selbst genial. Ich muss mir nur eine einzige Methode anzusehen was passiert und nicht zwei.



Wenn deine Get / Setter aber in der versteckten Oberklasse sind hast du eben ein Problem. Und zwar weisst du nicht ob du Programm Code aufrufst oder nicht.



			
				nitronic hat gesagt.:
			
		

> Hier hast Du mir jedoch keine Antwort auf meine ursprüngliche Frage bzw. Aussage gegeben. Ich habe unter Java noch keine "Steuerelemente" entwickelt, daher hab ich keinen persönlichen Vergleich, sondern nur die Aussage eines Java-Programmierers, der sich in C# verliebt hat. Womöglich hast du jedoch auch einen Vergleich, da beides schon gemacht.


Ich sagte doch das ich bei beiden schon eine Anwendung geschrieben. Dabei ein eigenes "Webservice Protokoll" implementiert habe welches den Ansprüchen gerecht wurde. 
Dies habe ich in .net für einen Kunden implementiert und ein halbes Jahr später in einem um einiges geringeren Aufwand in Java neu implementiert und verbessert.

Ich kenne genügend Java Programmierer die über .net zu Java gekommen sind. Das sind noch nicht so viele (weil es noch nicht soviele erfahrene .net Programmierer gibt) aber kommt immer häufiger vor.


----------



## Norbert Eder (19. April 2004)

Ist es nicht so, dass ich in Gettern und Settern unter Java auch weiteren Code angeben kann? Und hierbei sehe ich bei der Implementierung auch nicht unbedingt ob dort eine Variable gesetzt wird, oder eben der Code ausgeführt wird. zB, wenn ich den Source zur entsprechenden Klasse nicht habe ?


----------



## Christian Fein (19. April 2004)

> _Original geschrieben von nitronic _
> *Ist es nicht so, dass ich in Gettern und Settern unter Java auch weiteren Code angeben kann? Und hierbei sehe ich bei der Implementierung auch nicht unbedingt ob dort eine Variable gesetzt wird, oder eben der Code ausgeführt wird. zB, wenn ich den Source zur entsprechenden Klasse nicht habe ? *



Ja aber du erkennst das du eine set Methode benutzt und nicht nur einer Membervariable einen Wert zuweist.
Sprich wenn du einer protected Variable der Oberklasse (von der mann keine Sourcen hat) einen Wert auf die weise:
variable = wert;
zweist, weisst du das da kein Code ausgeführt wird. Wenn du eine get Methode verwendest 
ist dir klar das Code ausgeführt werden könnte.

Bei .net verschwimmen die Grenzen, da es nicht wirklich ersichtlich ist.


----------



## Norbert Eder (20. April 2004)

Du, ich glaube so ganz verstehe ich nicht was Du meinst.

Wenn ich mir eine Klasse mit einer Membervariablen erstelle, dazu die Getter und Setter generieren lasse, dann kann ich in der Setter noch zusätzlich reinschreiben was ich will. ZB erstell ich einen FileWriter, der mir jedes Mal beim Aufruf des Setters etwas an ein File anhängt. 

Habe ich nun die Klasse nicht im Quelltext, hab ich keine Möglichkeit zu erkennen, dass im Setter weiterer Code ausgeführt wird. Sogesehen könnte ich genauso eine Datenbank befüllen ohne es zu wissen.

Aber vielleicht bin ich ja noch nicht dort wo Du mit Deinen Gedanken bist ... bis jetzt erkenne ich auf jeden Fall noch keinen Unterschied.


----------



## Christian Fein (20. April 2004)

Ich habe schon verstanden was du meinst. Aber es stimmt nicht, es sind sehr wohl unterschiede. Hier ein beispiel (auf die schnelle).

Ok nehmen wir an wir wollen eine Applikationschreiben die mit sehr vielen Objecten handeln muss. Wir entschliessen uns das Framework XX von der Firma XY zu nutzen. In diesem Framework haben wir eine Klasse die sich Logger nennt und eben daten logged aufgrund von eines LogLevel der als int (0,1,2) in der Klasse gelogged wird.
Wir wollen aber diese Klasse Logger erweitern um eigene zusätzliche benötigte Logging mechanismen bereitzustellen


```
public class Logger {
    public static int NO_LOG = 0;
    public static int MEDIUM_LOG=1;
    public static int FULL_LOG = 2;
    public  int logLevel;
    {
        get
       {
            return logLevel;
        }
        set
       {
            someProperty = value;
            // Security Logging durchführen da 
            // der LogLevel geänder wird.
            // Es wird eine Zeile "loglevel changed to:"
            // ausgegeben.
        }
    }

  // andere methoden / properties usw 
}
```

meine Klasse sähe dann so aus:


```
public class MyLogger : Logger {
   public bool logString(string myString, int exceptionCount) {
           if(exceptionCount < 1) 
                      loglevel = NO_LOG;
           if(exceptionCount > 1 )
                      loglevel = MEDIUM_LOG;
           if(exceptionCount > 100)                     
                      loglevel = FULL_LOG;
           // String loggen:                    
   }
}
```

Ich werde als Programmierer jetzt ganz erschreckend feststellen das jedesmal 
wenn ich logge beu einem expcetionCount > 100 steht in den Logfiles:

loglevel changed to MEDIUM_LOG;
loglevel changed to FULL_LOG;
Logged (FULL_LOG): keine Userdaten vorhanden

ich hätte nur follgenden Eintrag erwartet:
Logged (FULL_LOG): keine Userdaten vorhanden.

Da sich für mich nicht zeigt das Dinge geschehen können die eben allein durch 
das zuweisung einer für mich nicht transparenten Variable, bekomme ich ein unerwartetes Ergebnis.

Wenn ich jedoch eine Methode hätte aller changeLoglevel(int new loglevel); 
kann ich damit rechnen das sowas passiert. Habe ich ein protected int loglevel und 
setze diese aus Java heraus kann ich sicher sein das ausser dem Zuweisen des Wertes nichts passiert.


----------



## Norbert Eder (20. April 2004)

Ich blick zwar noch immer nicht ganz durch was du meinst, aber ich schreib mal das was ich mir gerade denke, in der Hoffnung dass wir langsam dorthin kommen:

Wenn ich deinen geposteten Code 1:1 nach Java konvertiere, hab ich exakt das gleiche "Problem". Ausserdem weißt du in der Property intLoglevel Werte unterschiedlich zu, was in Java auch möglich aber ebenso sinnlos wäre.

Beispiel:


```
private int loglevel_ = 0;
public int intLoglevel
{
     get
     {
          return this.loglevel_;
     }
     set
     {
          this.loglevel_ = value;
     }
}
```

Weiters:
Bei den von Dir angegebenen If-Bedingungen ist klar, dass bei > 100 mehrfache Einträge entstehen. Da würde ich mich als Programmierer nicht wundern.

Alles in allem scheint mir das ein Problem des Programmierers und nicht der Programmiersprache zu sein. Wenn jemand unsauber programmiert, kann er dies auch unter Java tun.


----------



## Christian Fein (20. April 2004)

> _Original geschrieben von Norbert Eder _
> *Ich blick zwar noch immer nicht ganz durch was du meinst, aber ich schreib mal das was ich mir gerade denke, in der Hoffnung dass wir langsam dorthin kommen:
> 
> Wenn ich deinen geposteten Code 1:1 nach Java konvertiere, hab ich exakt das gleiche "Problem". Ausserdem weißt du in der Property intLoglevel Werte unterschiedlich zu, was in Java auch möglich aber ebenso sinnlos wäre.
> ...



Nein, der entscheidende Punkt ist:

ich kann bei Java mich darauf verlassen das wenn ich:

```
loglevel = MEDIUM_LOG;
```
diese Zuweisung mache, auch garantiert nur die diese Zuweisung durchgeführt wird und kein bischen Programmcode ausgeführt wird.

Bei .net weiss ich das einfach nicht, weil auch bei einer ganz normalen Zuweisung an ein Member Programm code ausgeführt werden kann.

Mann bist du begriffstutzig


----------



## Norbert Eder (20. April 2004)

Hehe, sag das doch gleich 

Folgendes Beispiel, eh von Dir gestohlen 


```
private int MEDIUM_LOG = 1; // wobei hier ne Const besser wäre bzw. ne Enum
```

loglevel = MEDIUM_LOG;

Da kann auch kein Code ausgeführt werden. Und das weiß ich auch, da MEDIUM_LOG erstens als Variable angezeigt wird und zweitens mit dem Typ int. 
Properties werden als Methoden angezeigt und dann weiß ich, dass eventuell Code ausgeführt werden kann.

Ausgeführt werden kann Code, wenn der Wert über eine Property gesetzt wird. Eine Property macht auch insofern Sinn, dass Werte überprüft werden, die Du sonst händisch überprüfen müsstest. Und das gleiche Problem bei nem Setter in Java.


----------



## Christian Fein (20. April 2004)

> _Original geschrieben von Norbert Eder _
> *
> Folgendes Beispiel, eh von Dir gestohlen
> 
> ...




ARGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

sag mal du kannst schon C# Programmieren und lesen?


Wie setze ich den Wert eines Propertys?

[property] = [value] ;

richtig?


----------



## Norbert Eder (20. April 2004)

Ja, das ist richtig.


Ich sagte aber auch:
Man erkennt ob es eine Property oder eine Variable ist. Demzufolge kann ich unter C# auch sagen ob eventuell Code ausgeführt wird oder nicht.

//EDIT

Gleich unter Java.


----------



## Christian Fein (20. April 2004)

> _Original geschrieben von Norbert Eder _
> *Ja, das ist richtig.
> 
> 
> ...



Woran erkennt mann das denn? 

Also bei

meineVar = 3;

erkenne ich nicht das es ein Property ist.



> _Original geschrieben von Norbert Eder _
> *
> //EDIT
> 
> Gleich unter Java. *



Eben nicht. 
Unter Java setzt du entweder:
meineVar = 3;  und kannst dir sicher sein das kein Code ausgeführt wird, weil es definitiv kein Property ist.
setMeinVar(3);  ist ganz klar als Property zu erkennen.


----------



## Norbert Eder (20. April 2004)

Also das Visual Studio zeigt es mir sehr brav an, dass es eine Property ist, SharpDevelop zeigt es mir schön brav an.

Und nur weil unter Java etwas setVariable heißt, kanns noch immer eine Variable oder ein Setter sein.

Ich kann mir schon vorstellen worauf du hinaus willst - nämlich auf der Art der Übergabe.

Zum einen die Wertzuweisung unter C# und zum anderen die Übergabe eines Parameters unter Java.

Dennoch gibts es unter C# Möglichkeiten herauszufinden ob es sich um eine Variable oder um eine Eigenschaft handelt.


----------



## Christian Fein (20. April 2004)

> _Original geschrieben von Norbert Eder _
> *Also das Visual Studio zeigt es mir sehr brav an, dass es eine Property ist, SharpDevelop zeigt es mir schön brav an.
> ...
> Dennoch gibts es unter C# Möglichkeiten herauszufinden ob es sich um eine Variable oder um eine Eigenschaft handelt. *



Ja anhand der IDE.
Also muss eine IDE die Designfehler einer Programmiersprache ausbügeln.

Da sind mit die get/set Methoden unter Java lieber.


```
Und nur weil unter Java etwas setVariable heißt, kanns noch immer eine Variable oder ein Setter sein.
```

Falsch, wenn ich eine zuweisung:
meineVar = 3;
mache, kann ich mich zu 100% darauf verlassen das kein Code ausgeführt wird. 

Und genau darum geht es. Denn unter Java kann ich Code schreiben wie:

```
if(exceptionCount < 1) 
              loglevel = NO_LOG;
if(exceptionCount > 0 )
              loglevel = MEDIUM_LOG;
if(exceptionCount > 100)                     
              loglevel = FULL_LOG;
```
Und weiss zu 100% das er bei einem exceptionCount von 120 zwar erst loglevel = MEDIUM_LOG setzt und dann loglevel = FULL_LOG setzt.
Sprich das loglevel = MEDIUM_LOG ist eine unnötige zuweisung, die aber Performancetechnisch absolut gar keine rolle spielt.
Unter C# könnte ich mir durch solchen Code ins Bein schiessen, wenn eben in der set Methode von loglevel irgendwas anderes passiert.
dor müsste ich den Code umarbeiten auf
if(exceptionCount < 1) 
         loglevel = NO_LOG;
if(exceptionCount  > 1 && expcetionCount   < 100) 
        loglevel = MEDIUM_LOG;
if(exceptionCount  > 100 && expcetionCount   < 1000) 
        loglevel = FULL_LOG;
usw

Sprich ein einfaches durchfallen lassen, könnte mich den Kopf kosten 
Unter Java kann ich mich darauf verlassen das eine Variablen zuweisung eine Variablen zuweisung ist, und eine Variablen zuweisung bleibt.


----------



## Norbert Eder (20. April 2004)

Gut, ohne IDE ist es nicht zu erkennen - gebe ich Dir recht. 

Hier ist es allerdings so, dass die Core-Klassen des Frameworks da keinen Code ausser Überprüfungen ausführen. Bei eigenen Klassen weißt Du was passiert und ansonsten gibt es noch eine Dokumentation. Gibt es keine Dokumentation war der andere Programmierer unsauber und so wird vermutlich auch die Componente bzw. der Code dahinter aussehen.

Aus diesen Blickwinkeln stellt dies absolut kein Problem dar.

99% der Entwickler verwenden jedoch eine IDE (zumindest ist das unter Windows so) und mit HIlfe der IDE kannst Du dies feststellen.

Ausserdem gibt es noch einen Punkt den es zu beachten gilt:

Properties sind hauptsächlich für UserControls gedacht. Du hast genauso die Möglichkeit reine Getter und Setter Methoden zu implementieren. Und hier kannst Du natürlich wieder feststellen ob es sich um eine Methode oder um eine Variable handelt..


----------



## Martin Schaefer (20. April 2004)

... und was fällt mir als Laie dazu ein?

Beide, sowohl C# als auch Java haben keine "Conditional Switch/Case/Break".

Wie schön ist doch, wenn ich das von euch beschriebene
Problem so lösen kann in "meiner" Sprache:

```
case TRUE of
  (exeptionCount > 100):
    loglevel = FULL_LOG
  (exeptionCount > 0):
    loglevel = MEDIUM_LOG
  (exeptionCount < 1):
    loglevel = NO_LOG
end case
```
nur zur Info: In Lingo (das ist die Sprache) braucht man keine breaks setzen.

So ists nämlich hübsch, übersichtlich UND eindeutig 
Oder hab ich was übersehen?


----------



## Christian Fein (20. April 2004)

> _Original geschrieben von Norbert Eder _
> *Gut, ohne IDE ist es nicht zu erkennen - gebe ich Dir recht.
> 
> Hier ist es allerdings so, dass die Core-Klassen des Frameworks da keinen Code ausser Überprüfungen ausführen. Bei eigenen Klassen weißt Du was passiert und ansonsten gibt es noch eine Dokumentation. Gibt es keine Dokumentation war der andere Programmierer unsauber und so wird vermutlich auch die Componente bzw. der Code dahinter aussehen.
> *



Wenn ich mich in einen Code reinarbeite dann lese ich diesen. Die beste Dokumentation ist der Code.
Doku brauch ich bei Dingen die nicht so einfach herauszulesen sind.
Eine Variablenzuweisung ist aber nichts wofür ich extra in der Doku nachschlagen will ob es ein Property ist oder eine Variable.



> _Original geschrieben von Norbert Eder _
> *
> Aus diesen Blickwinkeln stellt dies absolut kein Problem dar.
> *



Liest du dich in andere Projekte bei jeder Zeile Code in der Doku nach? 
Also ich habe nicht die Zeit jede Zeile durchzugehen und mit meiner IDE zu inspizieren 
ob da noch was dahinter steckt.
Eine Programmiersprache (von der IDE abgesehen) muss mir die Möglichkeit liefern 
den Code zu erfassen, das ist Aufgabe der Programmiersprache, und wenn diese das
Aufgrund eines Designfehlers nicht kann, dann ist das schlecht. Sprich dein genannter 
Nachteil von Java get und set Methoden zu schreiben ist eigentlich ein Vorteil gegenüber
.net.
Das wirst du, so uneinsichtig wie du mannchmal bist, wieder nicht einsehen und mit irgendwelchen
Argumenten wie eben das sogar kostenlose IDEs das darstellen können oder dieses und jenes
tool gibt. Punkt ist, die Sprache ansich leistet das nicht, was sie sollte.




> _Original geschrieben von Norbert Eder _
> *
> 99% der Entwickler verwenden jedoch eine IDE (zumindest ist das unter Windows so) und mit HIlfe der IDE kannst Du dies feststellen.
> *



Wenn du 2000 Zeilen Code vor dir hast, musst du mit deiner IDE entweder mit der Mouse über die Zuweisungen schweben um die Hilfe zu bekommen oder eine andere Aktion ausführen.
Das heisst mann kann den Code nicht einfach nur mit den Augen ergründen.



> _Original geschrieben von Norbert Eder _
> *
> Properties sind hauptsächlich für UserControls gedacht. Du hast genauso die Möglichkeit reine Getter und Setter Methoden zu implementieren. Und hier kannst Du natürlich wieder feststellen ob es sich um eine Methode oder um eine Variable handelt.. *



Nein da irst du dich. Properties sind für Eigenschafften gedacht die von anderen Programmen durch reflection herausgefunden werden können.
Sie werden u.a in UserControls genutzt, aber nicht ausschliesslich und nicht am meisten. So nutzen einige XML Librarys und auch einige Loggin Mechanismen die Möglichkeit Properties auszulesen und anhand diesen Zustände der Objecte zu analysieren. UserControls und GUI Builder sind nur ein Teil der Programme die Properties nutzt.

Wenn ich dann unter C# get und set Methoden wie unter Java nutzen soll dann kann ich keine Properties benutzen weil eben Programme wie UML tools dies nicht als Properties verstehen. Ich würde auch nie auf die Idee kommen unter C# getBla und setBla Methoden zu nutzen da dies keine Properties sind, und so auch nicht von meinen Werkzeugen erkannt werden. Also muss ich damit leben das unter .net die Art wie Properties behandelt werden auf den 1. Blick ja ganz nett ist aber letztendlich Probleme verursacht.
Ich habe immer zugegeben das es Dinge bei C# gibt, die sie ganz nett umgesetzt haben und das besser geregelt haben wie in Java. Ok sie hatten ja viel Zeit neue Features zu entwickeln da ja 90% von Java abgeschaut worden ist ...   
So ist autoboxing und foreach eine *wirkliche* Verbesserrung. Die get / set Properties unter .net sind es aber auf gar keinen Fall.
Im übrigen ist Sun ja auch nicht doof, und was von vielen als Verbesserrung empfunden worden ist wurde in 1.5 auch umgesetzt wie eben autoboxing und foreach


----------



## Christian Fein (20. April 2004)

> _Original geschrieben von Martin Schaefer _
> *... und was fällt mir als Laie dazu ein?
> 
> Beide, sowohl C# als auch Java haben keine "Conditional Switch/Case/Break".
> ...



Sach bloss du liesst hier noch mit 

In Case anwendungen kannst du in Java einen durchfallen lauffen lassen.
in C# musst du entweder ein break oder ein goto case setzen.

Manche sehen das als Nachteil von C# andere sehen das als Vorteil von C#.
Da will ich mich jetzt aber nicht drüber streiten weil das ist sowohl vorteilhaft (C++ Programmierer lieben das durchfallen lassen)  als auch nachteilhaft.
Mann kann zudem in Java das Verhalten von C# nachbilden und in C# das Verhalten von Java nachbilden weshalb es hier nirgends ein Vorteil / Nachteil entsteht.

Oft wird das argument: Mann könnte aus versehen durchfallen lassen was eine Fehlerquelle ist auf Seiten C# angebracht.
Das ist richtig. Dagegen spricht aber das andere Argument:
Ein durchfallen in C# zu implementieren ist Code aufwendiger und nervig.

Sprich es gibt nach & vorteile, das nimmt sich nicht viel.


----------



## Norbert Eder (20. April 2004)

ad Uneinsichtig: Hey, ich bin Löwe 

Du magst ja durchaus recht haben, dennoch ist mir noch NIE passiert, dass hinter einer Property etwas versteckt war, was ich nicht wollte. Wo ich aber trotzdem bei meiner Meinung bleibe: Die Lesbarkeit des Get/Set-Konstrukts unter C# ist besser (zumindest für mich und viele andere). 

Was Deine Tools darstellen können oder nicht, weiß ich nicht. Ich weiß, dass meine Tools sehr wohl Methoden darstellen können, die einen Variablen-Wert setzen  Dies würde sogar genau der Implementierung unter Java entsprechen. Wie geschickt dies ist, ist eine andere Geschichte.

Hiermit musst Du auch bedenken, dass C# an sich noch verdammt jung ist und vom Start weg um einiges weniger Fehler hat, als Java hatte. Einige der Neuerungen von 1.5 waren von vornherein in C# implementiert. Was eigentlich für eine gute Arbeit steht.

Das einzige was meiner Meinung nach gegen C# spricht, ist dass C# nicht plattofrmunabhängig ist - das war es dann aber auch schon wieder. In Details wird es immer unterschiedliche Ansätze geben. Und einmal ist Java besser und einmal C#. Ausserdem wird man sehen wie es Microsoft mit den Standards in Zukunft hält - teilweise haben sie ja den richtigen Weg schon gefunden.

Ad Dokumentationen:
Ich lese sie mir durch - dafür gibts die ja.


----------



## Christian Fein (20. April 2004)

Norbert Eder hat gesagt.:
			
		

> Du magst ja durchaus recht haben, dennoch ist mir noch NIE passiert, dass hinter einer Property etwas versteckt war, was ich nicht wollte. Wo ich aber trotzdem bei meiner Meinung bleibe: Die Lesbarkeit des Get/Set-Konstrukts unter C# ist besser (zumindest für mich und viele andere).



Typisch...



			
				Norbert Eder hat gesagt.:
			
		

> Was Deine Tools darstellen können oder nicht, weiß ich nicht. Ich weiß, dass meine Tools sehr wohl Methoden darstellen können, die einen Variablen-Wert setzen  Dies würde sogar genau der Implementierung unter Java entsprechen. Wie geschickt dies ist, ist eine andere Geschichte.



Hallo, dafür musst du aber erst mal den betreffenden Teil 



			
				Norbert Eder hat gesagt.:
			
		

> Hiermit musst Du auch bedenken, dass C# an sich noch verdammt jung ist und vom Start weg um einiges weniger Fehler hat, als Java hatte. Einige der Neuerungen von 1.5 waren von vornherein in C# implementiert. Was eigentlich für eine gute Arbeit steht.


Nein es währe eher peinlich wenn dem nicht so währe. 
Denn Microsoft konnte über Jahre erfahrung sammeln mit dieser Art von Framework in dem sie ihre 
Java VM entwickelt haben.
Sun Microsystems hat Java vom leeren Blatt papier auf erschaffen. Microsoft konnte auf die Erfahrungen von Java zurückgreifen und dort ansetzen. 



			
				Norbert Eder hat gesagt.:
			
		

> Das einzige was meiner Meinung nach gegen C# spricht, ist dass C# nicht plattofrmunabhängig ist - das war es dann aber auch schon wieder.



Eine Virtuelle Mashine bedeutet immer:
- nachteil in der Geschwindigkeit.

Dieser Nachteil in der Geschwindigkeit wird aber durch den Vorteil der Plattformunabhängigkeit wieder wettgemacht.... zumindest bei Java 

BTW: Wieso gibt es mittlerweile mehr Viren für .net als für Java, obwohl Java 13 Jahre und .net net mal 2 Jahre alt ist?
Das Problem ist .net geht nicht konsequent mit dem möglichen Sandbox Technik um. .net erlaubt in unsave wieder direkte Manipulation des Speichers anhand von Zeigern. Java hat sich über die Jahre als sehr sicher  herausgestellt weil es ein ziemlich defensieves Verhalten an den Tag legt. Da ist .net schon wieder ein Stück versaut mit.



			
				Norbert Eder hat gesagt.:
			
		

> In Details wird es immer unterschiedliche Ansätze geben. Und einmal ist Java besser und einmal C#. Ausserdem wird man sehen wie es Microsoft mit den Standards in Zukunft hält - teilweise haben sie ja den richtigen Weg schon gefunden.


Nein, in vielen ist .net eine grosse Marketing Blase.


----------



## AKST (26. Mai 2004)

Hallo Leute, 
ich klinke mich mal in diesen Thread ein, da ein ExtraThread zuviel ist.

kurz zu mir:

Ich habe mein Diplom (Wirtschaftsinformatik) gerade frisch in der Tasche und möchte in der Softwareentwicklung weiterhin Fuss fassen. Derzeit bin ich fest angestellt als Delphi-Programmierer (datenbankgestützte Anwendungen ) , möchte mich aber beruflich weiterentwickeln. Dafür möchte ich mich jetzt ernsthaft neben meinem Job entweder mit .NET oder Java beschäftigen. Ich habe schon mit beidem gearbeitet und finde beides gut. Da ich aber für beides nicht genug Zeit habe, muss ich mich für eins entscheiden. 
Für mich bietet Java den Vorteil der Plattformunabhängigkeit, wogegen .NET meiner Meinung nach effektiver und somit auch wirtschaftlicher ist.

Jetzt meine Frage an Euch, was denkt Ihr?
Mit welcher Technologie habe ich bessere Chancen in der Berufswelt? Java & Co (JSP, J2EE, struts etc.) oder .NET (Winforms, ASP.NET etc.).
Wenn ich mir die Jobbörsen im Internet anschaue, dann sehe ich ein gemischtes Bild, mit Vorteilen für JAVA, wogegen .NET aber in den letzten 12 Monaten stark aufgeholt hat (ist ja auch neuer).

Gruß AK 

P.S. Eigentlich bin ich ein Delphi Fan und Delphi gibt es jetzt auch für .NET, aber wenn ich mir die Stelllenanzeigen anschaue, dann muss ich Delphi mit der Lupe suchen....


----------



## psycomantis (26. Mai 2004)

> _Original geschrieben von AKST _
> *Hallo Leute,
> ich klinke mich mal in diesen Thread ein, da ein ExtraThread zuviel ist.
> 
> ...



Die Fragen die du stellst sind in anderen  Threads schon beantwortet.


----------



## AKST (26. Mai 2004)

Bis jetzt habe ich hier nur Threads gelesen in denen über technische Details diskutiert wurde. Welche Technlogie nun bessere Chancen auf dem Arbeitsmarkt verspricht und warum, darüber habe ich nichts gefunden.


----------



## Christian Fein (26. Mai 2004)

> _Original geschrieben von AKST _
> *Hallo Leute,
> ich klinke mich mal in diesen Thread ein, da ein ExtraThread zuviel ist.
> 
> ...



Hast du diesen Thread durchgelesen? Wenn ja dann wirst du festellen das es so aussehen wird das 2-3 leidenschafftlich Diskutieren und sich nur millimeter aufeinanderzubewegen (ja ich bin immer einer der 2-3  ) aber ansonsten nicht allzuviel bei rauskommt. 
Dieser Thread bietet demnach die Meinung von  Norbert Eder der leidenschafftlich die Vorzüge von .net versucht zu erklären, und gleichzeitig bietet es meine Post die leidenschafftlich die Vorzüge von Java erklärt.

Wenn dir das nicht genug ist, dann wirst du noch 2-3 andere Threads in genau diesem Forum finden in denen es zu denselben Gefechten kommt.
Letztendlich liegt die Entscheidung bei dir, und du musst ua. auch entscheiden ob .net den Vorsprung zu Java aufholen kann oder nicht, da werden dir unterschiedliche Leute, unterschiedliche Meinungen zu presentieren.

Letztendlich kann ich dir nur eine Info geben, beide Technologien sind sich äusserst ähnlich. So ähnlich das das erlernen einer der Technologie einen vorteile bringt die andere zu erlenen. Das bedeutet wiederrum das du sehr wohl erst C# ( wenn .net dann bitte C#) lernst um später dich dann auf Java zu favoriesieren. 
Ich habe es ähnlich gemacht. Ich konnte Java aber habe es nicht so ernsthaft Programmiert wie ich es heute mache. 
Das heisst ich habe erst Java (gleichzeitig mit C++) gelernt und habe dann das Wissen nützen können um die Sprache C# innerhalb sehr kurzer Zeit zu lernen. Die Zeit in der ich .net Programmiert habe (das war mit dem .net Framework Alpha bis Beta II ) konnte ich viele von dem Wissen später wieder bei Java nutzen.
Wenn du sowieso schon eine Programmiersprache kannst, und diese auch beruflich anwendest ist für dich der Einstieg so oder so nicht allzuschwer.
Das bedeutet erforsche beides, macht sich zudem gut in der Bewerbung und speziallisier dich auf die Technologie die dir am meisten Spass macht, denen du die besten Zukunfchancen einräumst usw.

Ich will diesen Thread jetzt schliessen da wir sonst hier die Diskussion weiter vom Zaun brechen die letztendlich nirgendwo hinführt 

grüsse


----------

