Zum Inhalt springen

Gründe für .NET vs Java


Jaraz

Empfohlene Beiträge

Hallo,

ich werde hier das Ende des Threads "abstrakte Klasse" im Java Forum mal ontopic fortführen.

Situation: Ich bin eingefleischter Java Programmierer und habe keine große Lust mich mit MS .NET zu beschäftigen.

Da ich aber vielleicht etwas verpasse, möchte ich von euch wissen, warum ihr .NET Java vorzieht.

Also ehrlich gesagt, gibt es für mich im Moment nur einen nachvollziehbaren Grund, und zwar GUIs unter Windows.

Da viele User sich nur mit Windows beschäftigen, bekommt man bei Swing Oberflächen immer irgend welche Kommentare wir "das sieht aber komisch aus".

Die Geschwindigkeit von Swing interessiert bei den heutigen Rechnern nicht mehr.

Da ich im Moment allerdings fast nur noch Servlets schreibe, bzw meine GUIs auch unter Linux laufen müssen, zählt der GUI Punkt im Moment nicht.

Also, nennt mir Gründe warum ich z.B. von meinen Servlets mit EJB und SAPDB mit Apache Webserver und Resin Servlet Container zu .NET wechseln sollte bzw könnte.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich sehe dass auch nicht viel anders als du.

Es ging in "abstrakte Klassen" nur darum, dass irgendwelche dazwischen labern mit "say no to .net! ".

Damit ist keinem Geholfen und das Forum bewegt sich in Richung heise.de.

Wenn jemand sich notwendiger weise damit beschäftigen muss, dann sehe ich keinen Grund ihm deswegen einen Troll-Kommentar vor die Nase zu setzen.

Dass ich damit, den Thread etwas offtopic gebracht habe, war blöd. Ich habe wohl überreagiert.

So nun um Thema:

Im Bereich Server-Anwendungen hat .net den großen Nachteil, dass es nur unter Windows funktioniert und dies sich wohl auch nie ändern wird.

Eigentlich scheides .net bei vielen Projekten deshalb schon aus.

Eine gute Diskussion (allerdings von Sun) findet sich hier:

http://www.theserverside.com/resources/article.jsp?l=J2EE-vs-DOTNET

Die Abteilung, in der ich derzeit bin, macht beides J2EE und .net. Weil beides von den verschiedenen Kunden gefordert wird.

Zur Desktop-Anwendung-Entwicklung bevorzuge ich allerdings c#, weil man an viel mehr mit den versteckten Details von Windows machen kann, die mit Java nicht möglich sind.

Lieder kann man mit System.Windows.Forms immernoch nicht alles machen, was in der WinAPI möglich war.

C# finde ich auch besser gestaltet.

Es hat ein besseres Event-Handling. Die anonymen Klassen von Java finde ich ziemlich unpraktisch.

Endlich wieder Operatorüberladung wie in C++.

Es stellt für meinen Geschmack insgesamt ein besseres Java dar.

Frieden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von themaster

Weil beides von den verschiedenen Kunden gefordert wird.

Das ist meiner Meinung nach das größte Problem das Java hat, viele Kunden sind komplett auf MS fixiert.

Original geschrieben von themaster

Zur Desktop-Anwendung-Entwicklung bevorzuge ich allerdings c#, weil man an viel mehr mit den versteckten Details von Windows machen kann, die mit Java nicht möglich sind.

Lieder kann man mit System.Windows.Forms immernoch nicht alles machen, was in der WinAPI möglich war.

Das hatte ich ja auch schon bemerkt, obwohl sich die Programme dann nur auf Windows installieren lassen.

Original geschrieben von themaster

Es hat ein besseres Event-Handling. Die anonymen Klassen von Java finde ich ziemlich unpraktisch.

Das ist nur einer von 4 Möglichkeiten das Eventhandling zu implementieren. Bei mittleren bis großen Projekten ist es auch noch die schlechteste Möglichkeit.

Original geschrieben von themaster

Endlich wieder Operatorüberladung wie in C++.

Habe ich mal in C gemacht, in der Praxis aber noch nie vermisst.

IMHO wird der Code dadurch schwer nachvollziehbar.

Original geschrieben von themaster

Frieden?

War mal Krieg? Ich habe nur gesagt, das du nicht alles so ernst nehmen sollst. :D

Gruß Jaraz

PS: Weitere Meinungen sind willkommen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen,

ich arbeite zur Zeit mit Java und den SWT-Klassen, die für die OpenSource IDE von IBM entwickelt wurden.

Dort kann man mit Java arbeiten, und die GUIs werden vom BS erstellt. Dazu muss man bei Windows eine .dll einbinden, die die Verbindung zum BS herstellt.

Vorteil: schnell wie C++, aber Java.

Und die Systembibliothek (hier die .dll) soll für alle gängigen BS kommen, für vielen gibt sies schon.

Infos: eclipse

Schönen Tag noch,

k.o.b

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

meiner Meinung ist es doch gar nicht das Thema was besser ist,

sondern wie zukunftsicher das Ganze ist. Und nachdem MS bereits angekündigt hat, Java nicht mehr zu unterstützen (Gerücht?) wäre das doch mal ein Pluspunkt für .Net.

Windows ist unumstritten das am weitesten verbreitete Betriebssytem und dann liegt es doch nahe .Net zu verwenden

(Auch wenn man sich in eine gewisse "Abhängigkeit" begiebt)

Auch ein Vorteil von .Net ist die Vielfalt an Programmiersprachen (von MS selbst und von Drittanbietern) und das Problemose verwenden mehrer Sprachen für ein Projekt.

Der größte Vorteil von Java besteht meiner Meinung nach in der Plattformunabhänigkeit, was sich allerdings durch den Marktanteil Windows wieder relativiert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Chief

meiner Meinung ist es doch gar nicht das Thema was besser ist, sondern wie zukunftsicher das Ganze ist.

Es geht auch nicht darum was besser ist, sondern ob ich etwas verpasse wenn ich mich nicht mit .NET beschäftige.

Original geschrieben von Chief

Und nachdem MS bereits angekündigt hat, Java nicht mehr zu unterstützen (Gerücht?) wäre das doch mal ein Pluspunkt für .Net.

Kein Gerücht, aber MS hat schon seit Jahren keine neue JVM mehr für Java bereitgestellt. Die Windows interne die bis W2K ausgeliefert wurde, ist glaube ich stand 1.1.8. Jeder der aktuelle Java Programme laufen lassen will, musste sich deswegen eine VM von Sun downloaden.

Ab XP ist nun standardmäßig keine JVM mehr enthalten.

Original geschrieben von Chief

Windows ist unumstritten das am weitesten verbreitete Betriebssytem und dann liegt es doch nahe .Net zu verwenden

(Auch wenn man sich in eine gewisse "Abhängigkeit" begiebt)

Da stimme ich zu, aber zählt bei mir nicht, da ich nur Server Programme entwickle wo der User dann im Browser arbeitet und unsere stand alone Anwendung auch auf Linux und Unix laufen muss. Bei einem Programm ohne Server Komponente für die breite Masse, würde ich mir überlegen mal nen Blick auf C# zu werfen.

Original geschrieben von Chief

Auch ein Vorteil von .Net ist die Vielfalt an Programmiersprachen (von MS selbst und von Drittanbietern) und das Problemose verwenden mehrer Sprachen für ein Projekt.

Das habe ich nie verstanden, warum es jetzt noch VB.NET gibt obwohl doch C# eingeführt wurde.

Original geschrieben von Chief

Der größte Vorteil von Java besteht meiner Meinung nach in der Plattformunabhänigkeit, was sich allerdings durch den Marktanteil Windows wieder relativiert.

Na ja, durch die neue Lizensierungs Strategie wird sich das ja hoffentlich bald ändern, obwohl ich von Linux als Arbeitsplatzrechner im Moment noch nicht so viel halte.

Werde mir aber die Tage mal Debian 3.0 installieren.

Immerhin sind wir hier schon auf Open Office umgestiegen. :marine

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also .NET ist ja nicht bloß C#.

Das beste an .NET ist meiner Meinung nach die Möglichkeit verschiedenen Sprachen einzusetzen und dass man die fertigen Komponenten auch objektorientiert weiter verwenden kann, z.B. in anderen Sprachen von den vorhandenen Klassen abzuleiten.

Java ist auch nicht besonders fortschrittlich in der Entwicklung. Angeblich denkt man bei Sun darüber nach endlich Templates einzuführen.

Bertrand Meyer (Designer von Eiffel) hat einige interessante Artikel zu .Net veröffentlicht.

http://www.fawcette.com/dotnetmag/2001_12/online/online_eprods/bmeyer/

http://www.sdmagazine.com/documents/s=7134/sdm0205j/

Jemand hat im Thread geschrieben, dass es schwieriger wäre die WinAPI von .NET Anwendungen aus zu nutzen. Zuerst schien mir das auch so, aber mittlerweile habe ich festgestellt, dass es auch hier wesentlich besser als MFC ist. Wenn man z.B. einen ListView mit OwnerDraw haben möchte, überschreibt man einfach die WndProc Funktion und kann alle entsprechende Windows Nachrichten abfangen und selbst behandeln. In C# besteht zwar der Nachteil das verwendete API structs und enums neu definiert werden müssen, aber man kann das ganze ja auch in MC++ machen und von C# aus oder was auch immer verwenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

emand hat im Thread geschrieben, dass es schwieriger wäre die WinAPI von .NET Anwendungen aus zu nutzen. Zuerst schien mir das auch so, aber mittlerweile habe ich festgestellt, dass es auch hier wesentlich besser als MFC ist.

ja, das war ich.

Um die Standard-Steuerelemente geht es doch nicht. Wenn MS die nicht Windows.Forms eingebaut hätte, dann wäre es ja gar nicht zugebrauchen.

Aber wenn du Fensterhandles direkt benötigst (von anderen Programmen) oder Fensternachrichten mti SetWindowHook(...) abfangen möchstest, dann bist du mit .net falsch.

Gut solche Dinge kommen bei Business-Anwendungen (und dafür ist .net gemacht) selten vor, aber wenn man tief in das System eingreifen will/muss, dann ist dies nicht möglich.

Es geht auch nicht darum was besser ist, sondern ob ich etwas verpasse wenn ich mich nicht mit .NET beschäftige.

Angucken und etwas mit beschäftigen schadet aber auch nicht.

Windows ist unumstritten das am weitesten verbreitete Betriebssytem.

In diesem Thread sollte es laut Anfangsposting hauptsächlich um die Server-Anwendungen gehen und dort ist Windows ein ganz kleiner Fisch.

Das ist ein Unterschied der immer wieder vergessen wird. Windows ist bei Desktop unangefochten (auch nicht durch Linux), aber bei Servern ein Klotz am Bein.

Das habe ich nie verstanden, warum es jetzt noch VB.NET gibt obwohl doch C# eingeführt wurde.

Ich sehe das so, dass beide Sprachen eingeführt worden sind, damit auch die Einsteigerprogrammier dotnet-Anwendungen entwickeln können.

Der Java-Programmier steigt innerhalb von Tagen auf C# um. der Visual Basic-Programmierer steigt innerhalb kurzer zeit auf vb.net um.

Außerdem glaube ich, dass Herr Gates Basic aus persönlichen Gründen immer wieder fördert, weil er mit Basic sein erstes Geld verdient hat.

Das beste an .NET ist meiner Meinung nach die Möglichkeit verschiedenen Sprachen einzusetzen und dass man die fertigen Komponenten auch objektorientiert weiter verwenden kann, z.B. in anderen Sprachen von den vorhandenen Klassen abzuleiten.

Da muß ich schon wieder für Java in die Bresche springen.

Ich halte die Mehrsprachlichkeit für Unnütz außer für Umsteiger von anderen Sprachen.

Das Problem ist da doch, dass ein Projektteil mit zwei Programmiersprachen nur sehr schwer zu warten und erstellen ist.

Man benötigt dann zur Wartung einen Experten für jede Sprache.

Ein Vorteil von .net ist für Serveranwendungen die Bedienung und Konfiguration einheitlich für alle Bereiche ist.

Das ist einer der Vorteile, wenn alles aus einer Hand kommt.

Wenn man sich mit Java-Web-Anwendungen beschäfftigt dann kommen eine ganze Menge Konfigurationsarbeit auf einen zu, die auch nicht alle einheitlich sind, z.B. Deployment-Diskriptor für Servlets, build.xml für ant, server-config.xml für struts, server.xml für Tomcat, usw, usw.

Das ist bei dotnet wesentlich einfacher.

Außerdem entwickelt Microsoft definitiv die besten Entwicklungsumgebungen. VS.net ist wesentlich übersichtlicher und einfacher bedienen als alles Java-IDE, die ich kenne.

Bei Java hat mich noch keine IDE vollständig überzeugt. Eclipse ist gut, aber es fehlt doch einiges an Funktionalität.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von themaster

Aber wenn du Fensterhandles direkt benötigst (von anderen Programmen) oder Fensternachrichten mti SetWindowHook(...) abfangen möchstest, dann bist du mit .net falsch.

Gut, das gehört zwar nicht in diesen Thread aber wieso soll das nicht gehen? So was wie EnumWindows ist kein Problem und als Callback können Delegates benutzt werden. Für anwendungsspezifische Hooks gibts es hier ein Beispiel:How can I use 'Hooks' in .Net

und mit dem folgenden MC++ Code ist auch ein globaler Hook möglich.


// Hook.h

#pragma once


#include <windows.h>

#undef MessageBox


#using <mscorlib.dll>

#using <system.dll>

#using <system.windows.forms.dll>


using namespace System;

using namespace System::Windows::Forms;

using namespace System::Reflection;

using namespace System::Runtime::InteropServices;


HHOOK g_Hook;


int _stdcall KeyboardProc(int code, int wparam, int lparam)

{

  String __gc* text = String::Concat(S"You pressed : ", __box(((Keys)wparam))->ToString());

  MessageBox::Show(text, S"Hook Message", MessageBoxButtons::OK);

  return CallNextHookEx(g_Hook, code, wparam, lparam);

}


public __gc class GlobalHook

{

private:

  GlobalHook() {};

public:

  static void SetHook() {

    if (g_Hook != 0)

      return;

    Module __gc* mod = Assembly::GetExecutingAssembly()->GetModule(S"Hook.dll");

    IntPtr hinst = Marshal::GetHINSTANCE(mod);

    g_Hook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, 

      static_cast<HINSTANCE>(hinst.ToPointer()), 0);

  }


  static void Unhook() {

    if (g_Hook != 0) {

      UnhookWindowsHookEx(g_Hook);

      g_Hook = 0;

    }

  }

};

Original geschrieben von themaster

Ich halte die Mehrsprachlichkeit für Unnütz außer für Umsteiger von anderen Sprachen.

Es wäre sicherlich nicht sinnvoll, wenn jeder innerhalb eines Projekts mit seiner bevorzugten Sprache entwickelt und ich glaube auch nicht, dass das ein Unternehmen zulassen wird. Aber Mehrsprachlichkeit ist nun mal ein Fakt und daran hat Java bestimmt nichts geändert. Warum soll MS sich auf eine Sprache festlegen und sich viele Türen verschließen. Man entwickelt z.B. ein Projekt in Sprache x und möchte fertige Komponenten von einem anderen Anbieter benutzen. Der hat in Sprache y entwickelt - kein Problem. Ein weiterer Grund wäre, dass bestimmte Sprachen für einige Probleme besser geeignet sind. Es gibt zum Beispiel Haskell (eine funktionale Sprache) für .Net. Es wird ja keiner gezwungen jedes größere Projekt in mindestens 3 Sprachen zu entwickeln. Wenn man allerdings darauf angewiesen ist oder es gute Gründe gibt, besteht zumindest die Möglichkeit.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...