Dmitri Rettig: Alternative zu Java

Hallo,

ich will ein Programm erstellen, das sowohl unter Linux, als auch unter Windows und Mac OS lauffähig ist.

Ich habe schon angefangen am Programm zu basteln, und zwar mit Java. Allerdings dauert es über zwei Sekunden, bis es eine kurze HTML-Datei eingelesen, diese auf dem Bildschirm ausgegeben [keine grafische Oberfläche, sondern mit System.out.print()] und in einer anderen Datei abgespeichert hat. [Ich wollte lediglich die Ein- und Ausgabetechnik von Java testen, also nicht lachen, weil das oben beschriebene Progrämmchen so billig ist].

C wird von Linux unterstützt, und von Windows glaube ich auch (Mac OS keine Ahnung). Allerdings will ich eine Objektorientierte Programmiersprache benutzen, und C ist hier nicht die beste Wahl.

C++ ist zwar nicht sooo objektorientiert wie Java, ist aber besser als C. Sind C++ Programme unter Linux, Windows und Mac OS lauffähig? So ohne weiteres?

Und hat man mit diesen Programmiersprachen die Möglichkeit, auch grafische Oberflächen zu erstellen?

Gibt es andere Programmiersprachen, die für mein Vorhaben geeignet sind? Ich will noch betonen, dass ich mit Programmiersprachen auch solche meine, also nicht Visual Basic (was ja sowieso unter Linux nicht läuft) oder Delphi o. ä.

Oder ist Java wirklich die beste Lösung?

MfG Dmitri

  1. hallo Dmitri,

    ich will ein Programm erstellen, das sowohl unter Linux, als auch unter Windows und Mac OS lauffähig ist.

    Das heißt, es soll _exakt_ dieselbe Datei laufen? Das ist nicht hinzukriegen, weil "Programme" unter Windows nun einmal EXE heißen, was für LINUX egal ist

    Ich habe schon angefangen am Programm zu basteln, und zwar mit Java.

    JAVA ist _eine_ Möglichkeit, ja

    C wird von Linux unterstützt, und von Windows glaube ich auch (Mac OS keine Ahnung).

    C ist ein Programmiersprache. Im Ergebnis des Compilerdurchlaufs kannst du auf allen drei Plattformen lauffähige Applikationen erhalten

    C++ ist zwar nicht sooo objektorientiert wie Java, ist aber besser als C. Sind C++ Programme unter Linux, Windows und Mac OS lauffähig?

    Ja. Aber wie kommst du zu der Einschätzung, C++ sei "nicht so objektoirientiert"? JAVA ist sozusagen als "Gegenentwurf" zu C entwickelt worden

    Und hat man mit diesen Programmiersprachen die Möglichkeit, auch grafische Oberflächen zu erstellen?

    prinzipiell ja. Es kann auch hier wieder davon abhängig sein, welche Bibliotheken dir dein Compiler auf der entsprechenden Plattform zur Verfügung stellt. Visual C++6, womit allerhand WINDOWS-Bestandteile gebaut worden sind, hat da ein paar Besonderheiten

    Gibt es andere Programmiersprachen, die für mein Vorhaben geeignet sind?

    TCL/Tk käme noch in Frage, das ist extra für solche Zwecke entworfen worden.

    Oder ist Java wirklich die beste Lösung?

    Das hängt sehr stark davon ab, was deine Applikation können soll

    Grüße aus Berlin

    Christoph S.

    1. Hallo,

      ich will ein Programm erstellen, das sowohl unter Linux, als auch unter Windows und Mac OS lauffähig ist.
      Das heißt, es soll _exakt_ dieselbe Datei laufen? Das ist nicht hinzukriegen, weil "Programme" unter Windows nun einmal EXE heißen, was für LINUX egal ist

      Ich weiss, dass ich nicht die selbe Datei verwenden kann. Aber ich würde gerne den gleichen Code verwenden, und für das jeweilige Betriebssystem compillieren.

      Ich habe schon angefangen am Programm zu basteln, und zwar mit Java.
      JAVA ist _eine_ Möglichkeit, ja

      C wird von Linux unterstützt, und von Windows glaube ich auch (Mac OS keine Ahnung).
      C ist ein Programmiersprache. Im Ergebnis des Compilerdurchlaufs kannst du auf allen drei Plattformen lauffähige Applikationen erhalten

      C++ ist zwar nicht sooo objektorientiert wie Java, ist aber besser als C. Sind C++ Programme unter Linux, Windows und Mac OS lauffähig?
      Ja. Aber wie kommst du zu der Einschätzung, C++ sei "nicht so objektoirientiert"? JAVA ist sozusagen als "Gegenentwurf" zu C entwickelt worden

      Nein, ich sage zwar nicht, dass die Programmiersprache nicht objektorientiert ist, im Gegenteil. Aber wie ich so vom Lesen gehört habe, gibt es dort einige nicht objektorientierte C-Ansätze.

      Und hat man mit diesen Programmiersprachen die Möglichkeit, auch grafische Oberflächen zu erstellen?
      prinzipiell ja. Es kann auch hier wieder davon abhängig sein, welche Bibliotheken dir dein Compiler auf der entsprechenden Plattform zur Verfügung stellt. Visual C++6, womit allerhand WINDOWS-Bestandteile gebaut worden sind, hat da ein paar Besonderheiten

      Was meinst du mit Besonderheiten?

      Gibt es andere Programmiersprachen, die für mein Vorhaben geeignet sind?
      TCL/Tk käme noch in Frage, das ist extra für solche Zwecke entworfen worden.

      Mal gucken was das ist.

      Oder ist Java wirklich die beste Lösung?
      Das hängt sehr stark davon ab, was deine Applikation können soll

      Angenommen man hat eine längere Dokumentation, mit gleicher Seitenstruktur, und man will auf jeder Seite immer das gleiche Element verändern, z. B. Email-Adresse, oder einfach mal ein kleines Element an eine bestimmte Stelle einfügen. Dann kann man eine gewisse Strukturdatei der ganzen Doku verändern, und das Programm geht jede HTML-Seite durch und fügt da gewisse Dinge ein oder entfernt welche. So muss man sich nicht die Mühe machen und das ganze manuell zu erledigen.

      Ich hoffe das ist verständlich.

      Gruß Dmitri

      1. hallo Dmitri,

        Ich weiss, dass ich nicht die selbe Datei verwenden kann. Aber ich würde gerne den gleichen Code verwenden, und für das jeweilige Betriebssystem compillieren.

        ok, das kann man mit so ziemlich allen Programmiersprachen so machen

        wie kommst du zu der Einschätzung, C++ sei "nicht so objektoirientiert"?
        Aber wie ich so vom Lesen gehört habe, gibt es dort einige nicht objektorientierte C-Ansätze.

        Das hast du wahrscheinlich richtig gelesen. C++ ist eine Weiterentwicklung von C, eben gerade, weil mit C++ objektorientiertes Arbeiten ermöglicht werden soll. So weit ich das einschätzen kann, war C++ die erste derartige "Erweiterung" einer bestehenden Sprache, mit der OOP konsequent implementiert wurde. Da C++ keine _eigene_ Sprache ist, werden einige Elemente von C weiterhin benutzt. Nicht _jedes_ Programm, das man schreibt, muß unbedingt mit OOP erstellt werden.

        Visual C++6, womit allerhand WINDOWS-Bestandteile gebaut worden sind, hat da ein paar Besonderheiten
        Was meinst du mit Besonderheiten?

        spezifische Klassenbibliotheken, so sogenannten MFC

        TCL/Tk käme noch in Frage
        Mal gucken was das ist.

        schau dich unter http://dev.scriptics.com um. Downloadmöglichkeiten gibt es (für WINDOWS) bei http://www.activestate.com/Products/Download/Download.plex?id=ActiveTcl

        Angenommen man hat eine längere Dokumentation, mit gleicher Seitenstruktur, und man will auf jeder Seite immer das gleiche Element verändern»» Ich hoffe das ist verständlich.

        natürlich ist das verständlich. Aber dafür brauchst du kein "Programm". Das ist eigentlich eines der "klassischen" Einsatzgebiete von PERL, und PHP kann das auch

        Grüße aus Berlin

        Christoph S.

        1. Hi,

          Angenommen man hat eine längere Dokumentation, mit gleicher Seitenstruktur, und man will auf jeder Seite immer das gleiche Element verändern»» Ich hoffe das ist verständlich.
          natürlich ist das verständlich. Aber dafür brauchst du kein "Programm". Das ist eigentlich eines der "klassischen" Einsatzgebiete von PERL, und PHP kann das auch

          Heist das etwa, es gibt schon tausende solche Programme und es lohnt sich gar nicht, das Rad neu zu erfinden?

          Gruß Dmitri

          1. hallo Dmitri ;-)

            Heist das etwa, es gibt schon tausende solche Programme und es lohnt sich gar nicht, das Rad neu zu erfinden?

            naja, so ungefähr so etwas meine ich tatsächlich *g*
            wie gesagt, ein PERL-Script kann das, was du haben möchtest, mit weit weniger Aufwand als ein ganzes Programm. Aber wenn dein Projekt sehr groß ist (ein paar tausend Dateien enthält) und es viele verschiedene user gibt, kann man durchaus darüber nachdenken, auch ein eigenständiges Programm zum Beispiel in C/C++ zu schreiben

            Grüße aus Berlin

            Christoph S.

  2. Moin, moin

    Allerdings dauert es über zwei Sekunden, bis es eine kurze HTML-Datei eingelesen, diese auf dem Bildschirm ausgegeben [keine grafische Oberfläche, sondern mit System.out.print()] und in einer anderen Datei abgespeichert hat.

    Das könnte daran liegen, daß es einige Zeit dauert, bis die Java-Laufzeitumgebung gestartet ist. Der Programmablauf selber sollte ziemlich schnell gehen. Gerade bei Java 1.4

    Gruß,
        Maddin

  3. Hallo!

    Ich habe schon angefangen am Programm zu basteln, und zwar mit Java. Allerdings dauert es über zwei Sekunden, bis es eine kurze HTML-Datei eingelesen, diese auf dem Bildschirm ausgegeben [keine grafische Oberfläche, sondern mit System.out.print()] und in einer anderen Datei abgespeichert hat.

    Wie groß ist denn die Datei?
    Die Ausgabe dieser Datei http://www.w3.org/TR/REC-xml braucht bei mir auf nem P III (1 GHz) 200 ms.
    Wobei die Ausgabegeschwindigkeit sehr von der verwendeten Konsole abhängt. Mit kterm braucht es 10 mal so lang.

    Wenn es schon bei einer sehr kurzen Datei so lange braucht, machst Du vermutlich was falsch. (z.b. bytewiese Aus- und Eingabe)

    C++ ist zwar nicht sooo objektorientiert wie Java, ist aber besser als C. Sind C++ Programme unter Linux, Windows und Mac OS lauffähig? So ohne weiteres?

    Sie müssen in jeden Fall auf der entsprechenden Platform kompiliert werden und Du darfst keine Platformspezifischen Schnittstellen verwenden.

    Und hat man mit diesen Programmiersprachen die Möglichkeit, auch grafische Oberflächen zu erstellen?

    Ja. Mit QT ist da auch eine ziemlich mächtige Bibliothek für grafische Oberflächen vorhanden.

    Gibt es andere Programmiersprachen, die für mein Vorhaben geeignet sind?

    Scriptsprachen. Ein sauber porgrammiertes Perlprogramm läuft z.B. auch auf allen/vielen Platformen.

    Oder ist Java wirklich die beste Lösung?

    Ich denke, es ist zu mindest die einfachste.
    Java löst viele der Probleme von platformübergreifendem Programmieren, die Du bei anderen Spachen selber lösen müsstest.

    Grüße

    Daniel

    1. Hi, meine Datei ist nicht so ewig lang. Aber ich habe vergessen zu sagen, dass meine Kiste 100MHz hat ;-(

      MfG Dmitri

      1. Hallo Dmitri

        Auf nem pentium 133mhz braucht mein Programm für die genannte Datei dann auch 2 Sekunden.
        Wenn Du für solche Rechner Programme entwickeln willst, ist java höchsten noch für komandozeilenorientierte Programme geeignet.
        Grafische Anwendungen (speziell solche mit Swing) kannst Du abschreiben.
        Allerdings stößt Du auch mit Bibliotheken wie QT vermutlich schnell an die Grenzen.
        Perl mit Tk wäre eine Möglichkeit. Allerdings ist die objektorientierung von Perl eher gewöhnungsbedürftig. (Zu mindest meine Meinung)

        Grüße

        Daniel

  4. Hallo,

    Tach

    ich will ein Programm erstellen, das sowohl unter Linux, als auch unter Windows und Mac OS lauffähig ist.

    Ich habe schon angefangen am Programm zu basteln, und zwar mit Java. Allerdings dauert es über zwei Sekunden, bis es eine kurze HTML-Datei eingelesen, diese auf dem Bildschirm ausgegeben [keine grafische Oberfläche, sondern mit System.out.print()] und in einer anderen Datei abgespeichert hat. [Ich wollte lediglich die Ein- und Ausgabetechnik von Java testen, also nicht lachen, weil das oben beschriebene Progrämmchen so billig ist].

    Wie lange das dauert, hängt u.a. auch davon ab, WIE man die Datei einliest (buffered/unbuffered, block-/byte-weise)...
    Auch ist zu berücksichtigen (wie bereits erwähnt), daß erstmal die VM gestartet werden muß...

    C wird von Linux unterstützt, und von Windows glaube ich auch (Mac OS keine Ahnung). Allerdings will ich eine Objektorientierte Programmiersprache benutzen, und C ist hier nicht die beste Wahl.

    C-Kompiler gibt es für so gut wie alle Betriebssysteme.
    C ist überhaupt nicht objektorientiert.

    C++ ist zwar nicht sooo objektorientiert wie Java, ist aber besser als C. Sind C++ Programme unter Linux, Windows und Mac OS lauffähig? So ohne weiteres?

    C++-Kompiler gibt es ebenfalls für so gut wie alle Betriebssysteme.
    Ob ein C++-Programm auf verschiedenen Systemen lauffähig ist, hängt sehr stark von den verwendeten Bibliotheken und Klassen ab (solange Du nur systemunspezifische Sachen nutzt, ja!)

    Und hat man mit diesen Programmiersprachen die Möglichkeit, auch grafische Oberflächen zu erstellen?

    Ja, aber hier ist die Gefahr, systemspezifische Sachen benutzen zu müssen, besonders hoch.

    Gibt es andere Programmiersprachen, die für mein Vorhaben geeignet sind? Ich will noch betonen, dass ich mit Programmiersprachen auch solche meine, also nicht Visual Basic (was ja sowieso unter Linux nicht läuft) oder Delphi o. ä.

    Perl (mit Tk für die Oberfläche).

    Oder ist Java wirklich die beste Lösung?

    Da Java von Anfang an für systemunabhängiges Programmieren geschaffen wurde, ist es damit relativ leicht, systemunabhängig zu programmieren.
    Ist aber auch in anderen Sprachen nur eine Frage der Disziplin.

    Andreas