Sinn von Java, ganz kurz



  • Bin eben über nen geschlossenen Thread auf nen Link zu einem alten gestoßen,
    da wird Java wegen plattformunahängigkeit gelobt, nun wenn ich sämtliche Libs
    in C standarisiere wie in Java und die Schnittstellen wie in Java auf jedem OS
    gleich sind, nur der Unterbau sprich der Compiler+Libs wie die JRE verschieden
    sind, so ist C/C++ genauso unabhängig/abhängig wie Java und trotzdem schneller.

    Das ist es was ich nicht verstehe, an angeblicher Plattformunabhängigkeit, vllt.
    könnt ihr mich ja aufklären oder meine Aussage bestätigen.

    Edit:
    Hallo???
    Hatte eigentlich gehofft, man könnte über das Thema mal unabhängig von dem Aspekt
    Java schlecht C/C++ gut diskutieren, finde Java eigentlich ganz nett, auch wenn
    OOP für mich völlig neu ist.
    Und für Java-Applets ist Java auf jeden Fall geeignet 🙂

    Also schreibt mal bitte was ihr darüber denkt.


  • Mod

    SirLant schrieb:

    nun wenn ich sämtliche Libs in C standarisiere wie in Java und die Schnittstellen wie in Java auf jedem OS gleich sind, nur der Unterbau sprich der Compiler+Libs wie die JRE verschieden sind, so ist C/C++ genauso unabhängig/abhängig wie Java und trotzdem schneller.

    1. Wie du schon festgestellt hast, müßtest du erstmal die Standardbibliothek von C bzw. C++ massiv erweitern, da die hier interessanten Dinge nunmal nicht in den aktuellen Standardbibliotheken zu finden sind.

    2. Weiterhin hast du bei C/C++ das Problem, dass z.B. Datentypen nicht eindeutig von der Sprache bestimmt sind. Ein int, was auf der einen Plattform 32 Bit hat, könnte auf einer anderen 16 oder 64 Bit haben. Weiterhin könnte es Unterschiede zwischen Big- und Little-Endian usw. geben. Dies kann zu unterschiedlichem Programmverhalten auf unterschiedlichen Systemen führen.

    3. Es wäre in jedem Fall für jede Plattform eine eigene Kompilierung erforderlich. Das ist bei Java nicht so, was IMHO einer der Hauptvorteile von Java ist.

    4. Du mußt deine Programme bei C++ so programmieren, dass sie von jedem Compiler kompilierbar sind, was bei größeren Programmen sicherlich schwierig ist, da ja fast alle C++-Compiler dem C++-Standard nur bedingt gerecht werden. Du kannst dich beim Programmieren also nicht an den Standard halten, sondern mußt vorher rausfinden, was die Schnittmenge der verschiedenen Compiler unterstützt.

    Ich sehe es übrigens nichtmehr als DEN Hauptvorteil von Java, dass Java relativ plattformunabhängig ist. Viel wichtiger halte ich es momentan, dass Java darauf ausgelegt ist, bestimmte Dinge zur Laufzeit machen zu können (z.B. dynamisches Klassenladen, Reflection, Laufzeitoptimierungen,...). Dies ist mit C++ nur bedingt, wenn nicht teilweise (mit halbwegs vertretbaren Mitteln) garnicht möglich. In C++ ist alles darauf hin ausgelegt, möglichst alles zur Compilezeit zu erledigen, was sicherlich auch von vielen als Vorteil gesehen wird.

    Dieser Unterschied ist für mich der Hauptgrund, warum C++ für mich als Alternative zu Java nicht in Frage kommt. Ich nutze diese Java-Sprachfeatures sehr massiv und profitiere auch entsprechend von ihnen, entsprechend könnte ich ein größeres Javaprogramm von mir nichtmal ansatzweise entsprechend in C++ implementieren. Das beinhaltet jetzt natürlich keine Wertung. Ich habe nur für mich festgestellt, dass mir diese Sprachfeatures wichtig sind. Für andere mögen andere Sprachfeatures wichtig sein, die vielleicht C++ bietet, Java aber nicht.

    In Java und C++ sind halt unterschiedliche Programmieransätze möglich, weshalb sie durchaus beide ihre Existenzberechtigung haben, auch für gleichartige Programme. Das Geschwindigkeitsargument spielt da nur eine sehr untergeordnete Rolle, zumal der Unterschied hier eh nicht mehr so groß ist und auch in Zukunft weiter schrumpfen wird.

    EDIT:

    1. Ein weiterer Vorteil von Java ist natürlich, die schon erwähnte, sehr umfangreiche Klassenbibliothek.

    2. Weiterhin ist ein Vorteil von Java die sehr gute Dokumentation. Ich habe noch keine C++-Doku gesehen, die da rankommt, ist auch nicht möglich, da C++ von der Sprache her deutlich komplexer ist, was sich natürlich auch in Dokumentationen niederschlägt.



  • Hehe, Hieb und Stichfeste Argumente von Gregor 🙂
    Ich würd ja auch gerne wieder mit Java programmieren,
    doch leider kenne ich keine Möglichkeit ein Programm in Java zu schreiben, welches ich auf einem Atmel AT 90S8515 laufen lassen kann ;),
    mit dem ich mich momentan am meisten beschäftigen muss.
    Drum muss ich mich wohl leider weiterhin mit C rumquälen 🙂


  • Mod

    Ingo aka Desert Hawk schrieb:

    Drum muss ich mich wohl leider weiterhin mit C rumquälen 🙂

    Hmmm... Bereust du, dass du dich für TI entschieden hast?! 😃



  • nö, nicht wirklich,
    nur, dass es für µController kein Java gibt 😉



  • Wie kommst du denn darauf?
    Natürlich gibt es Java auch für µcontroller.

    Beispiel:
    http://www.mjolner.dk/embedded/jepes/index_en.php



  • klingt vielversprechend,
    nur hab ich noch nix gesehen, wo man es kaufen/runterladen kann.
    Interessieren würde mich das schon, ob und wie gut man damit programmieren kann.

    Falls irgendwer noch andere ähnliche seiten kennt/findet, dann bitte hier posten, danke 😃



  • ich bin selber ein fan von java

    aber java auf kleinst prozessoren ist nicht so das was ich mir vorstelle

    zumindest nicht solange diese µprozessoren nicht mehr geschwindigkeit und speicher haben wird das nichts das man wirklich produktiv nutzen kann

    weil welches dk nutzt du fuer solche tools

    selbst java 2me ist fuer sowas zu gross

    nur die java card initiative duerfte hier ansprechend funktionieren

    gomberl



  • Die Laufzeitmöglichkeiten sind ein gutes Argument, daran dachte ich nicht, dies
    wäre in C/C++ zwar auch ohne Probleme zu realisieren, aber ist nicht ganz trivial.
    Ich selbst finde Java ja nicht schlecht, nur bin ich zZ zu beschäftigt um mich mit
    Java außerhalb der Schule zu befassen und wir tun nicht gerade etwas wo man sagen
    kann: "Wow ist die Sprache Klasse", wenn ihr versteht was ich meine.

    Ich kam heut mal auf die Idee, dass ich nen FTP-Programm als Java-Applet schreiben
    könnte, da es praktisch wäre für den Zugriff auf mein Webspace von überall,
    aber wir kann ich da eine sichere authetifizierung einbauen?
    Also eine Passwortabfrage bevor das eigentliche tool erscheint, welche nicht einfach
    durch decompilen des Bytecodes ausgelesen werden kann?
    Und kann ich mit einem Java-Applet überhaupt auf Dateien oder Ordner zugreifen
    so dass man eine baumstruktur hat wo man alles mögliche einfach rüberschieben
    kann auf den Server?



  • Du willst einen FTP Server als Applet schreiben? Oder einen Client?

    Das einfachste wäre einen Server auf deinem PC laufen zu lassen. Da gibt es verschiedene Freeware Server.
    Darauf zugreifen kannst du dann einfach mit dem IExplorer mit ftp://ipadresse



  • Ne nen FTP-Client, dachte mir den leg ich aufm Webspace ab und wenn ich ihn aufrufe
    darf ich ja zu meinem Provider ne Verbindung aufmachen(ist ja nen Java-Applet).
    Das müsste doch gehen, also eine FTP-Verbindung, oder?
    Nun die Daten die dort liegen kann ich abfragen (muss man sich halt das FTP RFC anschauen),
    und diese als Baumstruktur darstellen oder wie das rechte Fenster im Explorer.
    Aber wie kann ich die Festplatte und das ganze als Baumstruktur darstellen,
    da Applets ja stark eingeschränkt sind, was Dateien angeht.
    Bzw. geht das überhaupt?

    Und wie siehts mit ner sicheren PW-Abfrage aus?
    Im Zweifelsfall würd ich halt .htaccess verwenden, aber im Applet wäre mir lieber
    falls das mal jdm in die Finger bekommt...



  • Ich verstehe immer noch nicht ganz was du mit diesem Applet vorhast.
    Ein Java Applet läuft auf dem PC auf dem du dir die Webseite ansiehst. Es läuft nicht auf dem Server und gibt dir daher auch keinen Zugriff auf den Server.

    Du hast vor von überall auf deinen Webspace zuzugreifen? Wieso machst du das nicht einfach mit dem Internet Explorer? Wo ist das Problem?
    Ein Applet wird dir dabei jedenfalls nicht weiterhelfen.



  • Also, ich will das so:
    -Applet liegt auf meinem Webspace
    -Ich ruf das Applet auf und lade es mir dann ja auf meinen PC
    Nun darf das Applet ja eine Verbindung zum Server herstellen, das ist einem
    Applet ja erlaubt
    -Ich lade meine Dateien hoch und kann auch sachen löschen usw.

    Wie geht das direkt über den Browser? Das geht doch nur wenn man pw dort mit in
    die URL einbindet oder nicht?
    Und das will ich auf keinen Fall, dann kann ja jeder in der History mein pw sehen.



  • Applets laufen niemals auf dem Server. Es sei denn sie heißen Servlets 😉
    Damit du Daten übertragen kannst muss eine Gegenstelle existieren, die die Daten auch entgegennimmt. Das kann ein FTP-Server sein muss aber nicht aber mit einem Applet wirst du das nicht hinbekommen.



  • Ich weiß was SirLant meint, da ich schon mal das gleiche Problem wie er hatte! Ich sitze hier im Büro, ne Firewall, und kann meine Homepage von der Arbeit aus nicht aktualisieren. Nun, ein FTP-Client funzt nicht wegen Firewall. Aber auch einige User können selbst einen FTP-Client nicht installieren, weil sie die Rechte nicht haben (ich schon, da ich Entwickler bin, aber egal).

    Nun, da wäre es doch schlau, nen Applet zu entwickeln, weil man das halt NICHT installieren muß. Problem ist aber, wie SirLant sagt, das ein Applet nicht mal so ebend auf die lokale Festplatte des Users zugreifen darf.

    Das die Applets nicht auf dem Server laufen, ist SirLant sicherlich bekannt. Er wollte nur sagen, das die JAR bei ihm auf der Homepage liegt. Sie könnte auch woanders liegen...



  • Achja, zum Thema: ich code jeden Tag beruflich in Java. Es hat einen Vorteil: man kommt seeehr schnell zu Ergebnissen. Völlig unabhängig davon ob es plattformunabhängig ist. Hier im VW-Konzern ist Java für Applikationen praktisch standard, aber eher weniger aus dem Grund weil es überall läuft. Denn das interessiert hier niemanden, wird eh überall Windows eingesetzt, bis auf die Unix-Workstations für CAD-Menschen. 😉

    Ich selber betrachte Java bzw. die JVM als Emulator eines Computers der niemals als Hardware existiert hat. Privat code ich aber in C++, in Java weil hier fast alle VW-Projekte in Java gemacht werden und ich damit meine Brötchen verdiene.



  • Ich finde diesen Aspekt bei Java auch ganz nett..
    
    Programmierer_1   Programmierer_2    Programmierer_3
        I                  I                  I
      Class_A            Class_B           Class_C
      (Win)              (Mac OS)         (Linux)
        I                   I                 I
        ---------------------------------------
                           I
                           I
          Fertiges Programm (beinhaltet alle 3 Klassen)
                        (Solaris)
    

    Erklärung:
    Die einzelnen Klassen einens Programms können durch verschiedene Programmierer
    auf verschiedenen Betriebssystemen implementiert werden.
    Das fertige Programm kann dann widerum auf einer anderen Platform laufen (z.B. Solaris)..

    Ist doch ganz nett oder?



  • @Artchi: Und was soll ihm das bitte bringen? Deswegen kanner noch immer keine Daten auf den Server schicken wenn er hinter einer Firewall sitzt ...



  • Könnte er es dann nicht irgendwie über ein HTTP-Protokoll machen lassen? Stelle mir das wie mit ICQ GO vor, welches wir hier im Büro heimlich einsetzen, da uns die Firewall nicht lässt. Aber ICQ GO machts über HTTP und das funktioniert. Könnte mir gut vorstellen, das man sich da was zurecht bastelt.



  • Wenn der HTTP-Server einen Upload unterstützt dann braucht er dafür keine Applets zu schreiben. Da würde ein Webupload genügen. Allerdings ist dieses Feature nicht auf allen Servern verfügbar.



  • Archi hat es verstanden, ich wollte das Applet auf mein Webspace legen, weil ein
    Applet ja nur mit anderen Computern kommunizieren darf von denen es heruntergeladen
    wurden.
    Dass es lokal läuft ist mir ja bewusst.
    Aber hat sich schon erledigt, da ich es auch über den IE machen kann.Wusste ich
    bisher nicht.

    Nein ich sitz auch nicht hinter einer Firewall nur so könnte ich auch von der
    Schule aus, von nem Kumpel oder von wo auch immer ohne Probleme auf meinen Webspace
    zugreifen sofern keine FTP-Verbindungen verboten sind.


Anmelden zum Antworten