Java-Applet: Problem mit Datei-Lese-Zugriff

  • Zitat

    Original geschrieben von stadolf
    M$ bietet nebenbei gesagt auch etwas an, das fast aufs Haar genauso aussieht wie Java, aber nicht Java ist: es nennt sich C#.


    Viele gutgemeinte Grüße. Mögen nun die 1000 FollowUps folgen.

    1000 FollowUps? Wir sind doch nicht im Heise-Forum und es ist auch nicht Freitag :rolleyes:


    C# ist - das muß man auch as M$-Nichtsodollfinder zugeben - in einigen Punkten Java sogar überlegen (Vergleich z.B. unter http://www.fh-wedel.de/~si/sem…tung/4.csharp/csharp4.htm zu finden). Kunststück, hatte Microsoft doch jahrelang Zeit, sich die Stärken und Schwächen von Java anzusehen.


    Gruß,


    Henning.

    ________________________

  • Zitat

    Original geschrieben von XNeo
    1000 FollowUps? Wir sind doch nicht im Heise-Forum und es ist auch nicht Freitag :rolleyes:


    *LOL* :)

    Zitat


    C# ist - das muß man auch as M$-Nichtsodollfinder zugeben - in einigen Punkten Java sogar überlegen (Vergleich z.B. unter http://www.fh-wedel.de/~si/sem…tung/4.csharp/csharp4.htm zu finden). Kunststück, hatte Microsoft doch jahrelang Zeit, sich die Stärken und Schwächen von Java anzusehen.


    Full ACK! Dafür hat Java hunderte von genialen freien Libraries (kuckst du hier http://jakarta.apache.org oder hier http://xml.apache.org) die einem die tägliche (Programmier)arbeit ungemein erleichtern.


    Gruss
    inflagranti

  • Bin kurz drübergeflogen.


    Habe sogleich einige "Vorteile" entdeckt, die keine sind. (Der Schreiber weist implizit drauf hin, aber nach meinem Gefühl wurde der von M$ gesponsort :D)


    Ein Beispiel, was mir in der Zukunft viele C# Leute an den Kopf werfen werden, ich warte schon drauf:


    get/set - Methoden (liebevoll getter und setter genannt, ich nenn sie gemeinhin "Akzessoren").


    Java: object.getValue() / object.setValue(i);
    CSharp: object.Value / object.Value = i;


    Der Prof meint, der CSharp-Code wäre besser zu lesen etc. Er hat sicher recht. ABER. Dieses System hebelt doch IMHO das komplette Zugriffsschutzkonzept der OO-Entwicklung aus (public, protected...), das wir OO-Programmers uns jahrelang erkämpfen mussten, um endlich kritische interne Abschnitte vor DAUs schützen zu können.


    Weiterhin spielen die Akzessoren bei Java eine sehr wichtige Rolle: nämlich im Zusammenhang mit Beans, dem BeanSDK und der darunterliegenden BeanBox as well as mit EJBs allgemein: Der Reflection-Mechanismus erlaubt das sehr schnelle Auffinden der offenen Membervariablen über das Auffinden der Methoden, deren Namen mit get und set beginnen. Das ist ein wirklich essentieller Punkt, der auch wirklich Sinn macht. Microsoft verfolgt abstrakt gesagt einen ähnlichen Ansatz im COM-Modell über das IUnknown-Interfacing (inkl QueryInterface etc..): gewisse Funktionalitäten werden durch spezielle Signaturen gekapselt !


    Finde also nicht, dass dieser Aspekt in der professionellen Entwicklung wirklich einen Vorteil darstellt.


    Dann: Enums als Datentyp. Das hat C# von C++ geerbt. Enums sind ne feine Sache - aber man braucht sie nicht wirklich. In Java schreibt man sich ne einfache Klasse, die die Enum-Werte als final static member hat. Trotzdem: eher ein Vorteil von C#.


    Die Collections in C# gleichen (!) sogar fast im Namen , aber auf jeden Fall im sinn denen von Java, nur muss man in C# von System.xxx inkludieren und in Java von java.util. M$ verkauft das scheinbar auch den Anfängern als tolles Feature, aber ich seh da auch keinen echten "Vorteil" gegenüber Java, wenn nur die Mutter-packages anders heissen. Die foreach-Funktion ist nur ein weiteres Schlüsselwort - das wird in Java genauso über Iteratoren geleistet, wie in C# auch.


    Das Interfacing ist in C# weniger fehleranfällig gelöst - gute Sache (aber hier hat M$ natürlich auf die Erfahrungen aus 5 Jahren Existenz der anderen Seite zurückgegriffen...)


    Zeigerarithmetik ist nett für C++ Programmierer, wurde aber in Java seit dem ersten Release Candidate ganz bewusst rausgelassen. Hintergrund: Man _braucht_ sie nicht, wenn man genug Rechenpower hat und intelligent programmiert (Stichwort : garbage collection). Sie sind bei der Entwicklung auf verschiedenen Systemen auch ziemlich gefährlich (Alpha Pointer != x86 Pointer etc.)


    Und da der Beitrag schon so lang ist, kommt hier für alle das Fazit des Schreibers von oben genanntem Artikel. Dafür gibts ein dickes ACK.

  • Zitat

    get/set - Methoden (liebevoll getter und setter genannt, ich nenn sie gemeinhin "Akzessoren").


    Java: object.getValue() / object.setValue(i);
    CSharp: object.Value / object.Value = i;


    Der Prof meint, der CSharp-Code wäre besser zu lesen etc. Er hat sicher recht. ABER. Dieses System hebelt doch IMHO das komplette Zugriffsschutzkonzept der OO-Entwicklung aus (public, protected...), das wir OO-Programmers uns jahrelang erkämpfen mussten, um endlich kritische interne Abschnitte vor DAUs schützen zu können.


    Neinein, die getter und setter haben GENAU DIE GLEICHE Funktion wie getXXX, setXXX methoden in Java, sie sind nur schöner in den Code eingebaut. Wenn ich also in Java "int x = anInt.intValue()" mache passiert genau das gleiche wie wenn wenn ich in C# "int x = anInt" machen würde. In beiden Fällen wird eine Methode aufgerufen, welche vor direkten Variblen-Zugriffen schützt. In Java geschieht dies explizit in C# implizit.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!