![]() |
Java vs .NET
Hallo Leute!
Ich solle mich von der Firma aus mit einer der Beiden Programmiersprachen (Java und .NET) auseinandersetzen. Da ich bisher mit keiner der Beiden Erahrung habe wollte ich mal anfragen, was im Allgemeinen die "bessere" Sprache wäre, also für Windows- und Internetanwendungen? Könntet ihr mir da einen Tipp geben? |
Die Frage ist falsch.
Sie müsste entweder "Java oder C#" bzw. "J2EE/Spring/EJB oder .NET" lauten. |
Zitat:
Zitat:
pong |
hi,
na c# natürlich :D (= eine .net sprache, andere wären vb.net, ironpython, ruby.net) Ist einfach viel cooler wie java. ...freu mich schon auf die schimpfer, die ich jetzt bekommen werden. :cool: fg hannes |
Die Frage ist hier nicht welche Sprache cooler ist, sondern was die Anforderung an die Applikation ist.
Wenn sichs um eine reine Windows Applikation und für Webanwendunge ASP handelt, dann ist man mit .NET deutlich besser bedient (klarerweise kann das Microsoft hier besser unterstützen als andere). Sobald du aber als Killerrequirement die Anforderung hast, daß die Applikation auf unterschiedlichen Plattformen laufen soll, dann führt an Java eh nichts vorbei. Mono ist bei weitem noch nicht so weit um zuverlässig .NET Applikationen auf ander Plattformen zu bringen. (Meine akutellen Tests mit Mono 1.2 waren mehr als enttäuschend sobald man über simple Konsolenapplikationen hinausgeht) Die ersten Fragen die sich also stellten (wie das nun mal so ist in der Softwareentwicklung: Phase 1 Requirementsengineering): - was sind die genauen Anforderunge an die Applikation: - welche Plattform(en), - native Client od. webbased Client (wenn webbased: welcher Webserver. (eine reine Konsolenanwendung solls ja wohl nicht werden) - Interfaces und/oder Integration zu bestehenden Systemen? (Wenn ja welche und welche API*s in welchen Sprachen stellen diese zur Verfügung). Sprich: was gibts schon und soll eingebunden/wiederverwertet werden. Und dann, wenn das alles klar ist kann man ne ernsthafte Aussage über das zu verwendende "Tool" (Java od. C#/VS) treffen. |
hallo,
Zitat:
aber: Zitat:
Zitat:
Aber nur wenn es grade will... fg hannes (der kein java mag, außer in gebrühter form + mit milch) |
Zitat:
Ich schließe mich dir an, wenns um die persönliche Meinung geht: Zur Zeit bin ich selbst seit .NET 1.0 Hauptberuflich als C# Entwickler tätig. Mir gefällt C# in vielen Punkten weit besser als Java (z.B. Property-Konstrukt, Delegates, etc..) und ich programmiere sehr gerne damit. Allerdings gibts im Vergleich zu Java auch ein paar Schwachpunkte (z.B. kein zwingendes Exceptionhandling, die InvokeRequired Problematik, Altlasten und Einschränkungen hervorgerufen durch die darunter liegenden Win32 APIs, etc.). Das perfekte Tool gibts halt leider (noch) nicht. Und auch wenns dir gegen den Strich geht ;) .. Java Applikationen laufen sehr gut wenn man weiß was man tut und die richten Tools benützt. Aber die gleiche Aussage kann man auch auf C#/den .Net Framework anwenden. Genauso kann man mit beiden Tools viel Blödsinn anstellen ohne fundiertere Kenntnisse. Drum seh ich die Programmiersprache mehr als Mittel zum Zweck. Java war der Hype von 1995 jetzt ist es C#/.Net und in 10 Jahren wirds die Sprache XY sein. Wenn ich sage ich fixiere mich auf eine Sprache ohne nach links und rechts zu schauen und sag die eine ist cool und die andere mag ich nicht, dann löst diese Einstellung weder das gegebene Problem noch zahlt sie meinen Gehalt ;) |
hallo,
Zitat:
Zitat:
Ich gebe dir grundsätzlich in allen genannten Punkte recht - v.a. "Programmiersprache == Mittel zum Zweck". Ich hab vor, in nächster Zeit mich mal mit Ruby zu beschäftigen, hab ich bisher nur theoretsich und es scheint einige neue/interessante ansätze zu haben. fg hannes |
Zitat:
- stabil laufen: das liegt wohl eher am Programmierer als an der Sprache. - gut aussehen: jede Java Applikation kann ein System Look&Feel haben seit (nicht schlagen jetzt) .. ich glaub 1.3? Geb dir recht, daß dies am Anfang die Hemmschwelle war, Java für UIs einzusetzten. Aber seit das mit dem UIManager gelöst ist, ist das ein Argument von Leuten die sich nicht auskennen. Mit System Propertys kann man die Darstellung der einzelnen systemspezifeschen Sachen auch noch einstellen. - performant: Gegen C++/Assebmler, etc Ja.. Gegen .NET Sprachen wohl kaum. Einen Zwischencode hast da und dort. Also als C# Anhänger über die Performance von Java zu lästern ist dreist ;) Und Performancebremsend kannst auch unter C# programmieren: Kleiner Test (der Klassiker): Wie prüft man, ob eine String Variable keinen Wert enthält (sprich ob sie null ist oder einen Empty String enthält)? Na? :D |
hey, das wird ja doch noch eine lustige unterhaltung. ;)
ad stabil laufen: wenn du ein fertiges packet auf 3 pc's installierts - auf 1 läuft es, auf 2 nicht und es kommt irgendeine (weiß nimma genau) exception, welche darauf schließen lässt, dass es was mit dem GUI zusammenhängt. Dann installierst du das zeug in einer vm-ware und es geht ebenso wie auf den anderen 2 pc's. naja, das nenn ich nicht gerade stabilität. (der pc auf dem es nicht ging war ein notebook mit "ungewöhnlicher" grafikkarte) gut aussehen: stimmt schon, dass sich hier viel getan hat - gui schaut jetzt besser aus, dafür is noch langsamer. Im Vergleich zu einer modernen xaml oberfläche (winfx - präsentation foundation) schauen java guis aber schon sehr alt aus... ad performance: natürlich kann man in jeder sprache so programmieren, dass das prog. langsam läuft. in java tut es das mal per default. :hammer: auch spiele wo performance das wesentliche kriterium ist werden schon managed programmiert - ab vista + dx10 wird das noch vermehrt der fall sein. Zeig mir mal einen 3d-shooter in java, der aktuelle grafik verwendet und schnell ist! stringvariable prüfen: PHP-Code:
hannes |
Zitat:
nach diversen klogriffen hat selbst herold .net gekübelt... fazit: java/.net is a schaß :p |
hi,
@spunz: stimmt genau - java + net == schas außerdem ist ja dieses ganze computer zeugs teufelswerk. da drückst irgendwelche tasten und plötzlich kann das jemand anders lesen. vor 300 jahren wärst du am scheiterhaufen gelandet, wenn du sowas vorgezeigt hättest. :lol: jetzt bin ich aber neugierig - nachdem java/net == schas, welche programmiersprache verwendest du? fg hannes |
ich leide an diversen java/.net anwendungen die ihr programmier-terroristen-hexer-teufel zusammenpfuscht :p :D
/me zündet den scheiterhaufen unter biri an :D |
Zitat:
ad gut aussehen: Auf den Rechnern wo ein Java GUI langsam rennt, läuft .NET auch nicht grad exterm flott und ein WPF GUI meist schon überhaupt nimmer nativ weil in den Kisten die Graka das eh nicht packt und der Prozessor das GUI Rechnen muß. Und ein XML GUI zu rendern geht ja sicher gleich viiiiiiiiiiel schneller (XML parsen braucht ja schon mal üüüberhaupt keine Zeit.. ja klar *lol*). Klar sehen die neuen WPF GUIS moderner aus. Brauchen aber deutlich mehr Resourcen für die Umsetzung und scneller werden sie auf gleicher Hardware auf keinen Fall. Nur irgendwann ist die Hardware dann so schnell das es egal sein wird. Aber dann steht uns eh schon wieder was neueres ins Haus. ad performance: .NET Applicationen und Java Applikationen sind Geschwindigkeitsmäßig per default gleich. 3D Shooter in Java kenn ich nicht, ich kenn aber auch keinen der auf .NET läuft. Und sobald du bei einer .NET Sprache auf Windows APIs zugreifst (auch bei dem von dir angesprochenen DirectX 10) hast unter .NET nichts anderes als ne Wrapperklasse die im Hintergrund erst wieder auf die alten Win32 Funktionen zurückgreift (dh. eigentlich eine laufzeitbremsende Zwischenschicht die du da verwendest). Also von managed weit entfernt! Klar steigen viele um, aber nicht weils managed ist sonder die Framework APIs an vielen stellen freundlicher zu handhaben sind als direkt Win32 APIs was wiederum die Produktivität steigert in Kombination mit neueren Sprachen wie C#. Der ganze .NET Framework baut in der untersten Schichte bei allem betriebssystemspezifischen Funktionen auf Win32 auf. Wenn also performante Applikationen dein Hauptziel sind, ist .NET als Plattform auch danebengegriffen. |
Zitat:
Problem vieler .NET Benutzer ist die Meinung: ah es gibt eh den Garbagecollector. Da ist das mit dem Resourcenfreigeben eh kein Problem mehr (Das hab ich sogar mal bei nem Softwareaudit zu hören bekommen, bin in Gelächter ausgebrochen). Da liegt genau das Problem bei vielen. Nur darauf kann man sich nicht blind verlassen. Selbst unter .NET kommst ohne Memoryprofiler nicht aus. Es ist teilweise sogar leichter Memleaks zu reißen als unter C++ (wenn man nicht weiß was man tut, grad im Bereich GDI und Delegates). Wir haben uns diese Erfahrungen über 3 Jahre im Entwicklungsteam auch erst erarbeiten müssen (ist immer so bei neuen Technologien die keiner kennt). Und die Applikationen die wir erstellen laufen soweit durchgehen auf Rechnern mit Tochscreens über Wochen und Monate ohne Neustart. Und die halten ihren Speicherverbrauch im geplanten Rahmen und werden auch nicht langsamer. Ohne Memoryprofiler kommst da aber nicht weit. Genausowenig wie in anderen Programmiersprachen. Noch dazu wenn die Programme dann Größenordnungen von mehreren 100.000 Zeilen Code haben. |
Zitat:
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag