StefanB.: Ist Java die richtige Sprache für mein Problem?

Hallo,
vielleicht kann mir hier jemand bei der Auswahl einer Programmiersprache helfen.

  • Ich möchte gern Programme schreiben, die zum Beispiel jpg Bilder verändern (als Beispiel: jedem Bild oben rechts eine Zahl hinufügen oder Dateien auf dem lokalen Dateisystem umbenennen, vergleichen o.ä.)

  • Es soll keine Internetverbindung zum ausführen nötig sein (also fällt php raus)

  • Sie sollen von jedem Anwender ausführbar sein (ggf. nach einer Installation). --> also keine Abhängigkeit von irgendwelchen Browsern oder anderen Programmen

Es sollen also kleine Programme werden, wie solche, die man sich irgendwo als freeware-utility herunterladen kann.
Welche Sprache nimmt man dafür am Besten?

Zuerst stieß ich auf Delphi. Aber damit kann man offensichtlich nur bmp's bearbeiten. C bzw. C++ scheint auch nicht das richtige zu sein.

Nach langem suchen wurde ich dann doch auf JAVA aufmerksam. Ich dachte zunächst, dass JAVA nur im Internet sinnvoll ist. Ist aber ja offensichtlich nicht so.

Jetzt ist die Frage, ob JAVA meine Anforderungen von oben erfüllt.
Kann ich mit damit .exe-Dateien erstellen? Ich habe in diversen Büchern herumgelesen, aber nichts darüber gefunden.
Anscheinend benötigen JAVA-Programme auch immer eine JAVA-Laufzeit-Umgebung, die man dann wohl mit installieren muss?
Kann mir jemand helfen?
Hat jemand einen Vorschlag, welche Programmiersprache man für sowas üblicherweise nimmt?

Vielen Dank für eure Hilfe!!
mfg
Stefan

  1. Hi,

    • Sie sollen von jedem Anwender ausführbar sein

    also auf jeder Plattform. Daher wundert mich, dass Du Dich später auf .exe (also Windows) reduzierst.

    also keine Abhängigkeit von irgendwelchen Browsern oder anderen Programmen

    Du hast _immer_ eine Abhängigkeit - letzten Endes vom Betriebssystem.

    Welche Sprache nimmt man dafür am Besten?

    Bei einem definierten Betriebssystem: eine dort übliche, kompilierbare. Bei gewünschter Einschränkungsfreiheit: eine plattformunabhängige, die dadurch andere Anforderungen ans System stellt. Im Fall von Java[1]:

    Anscheinend benötigen JAVA-Programme auch immer eine JAVA-Laufzeit-Umgebung, die man dann wohl mit installieren muss?

    Ja. Diese ist auf den allermeisten Systemen allerdings vorhanden. Nicht auf allen, wohlgemerkt, aber auf mehr, als wenn Du Dir nur ein einziges Betriebssystem rauspickst. Das Stichwort für das, was Du erzeugen willst, lautet Applikation.

    Cheatah

    [1] Das ist übrigens kein Akronym, deswegen heißt es "Java", nicht "JAVA".

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      • Sie sollen von jedem Anwender ausführbar sein

      also auf jeder Plattform. Daher wundert mich, dass Du Dich später auf .exe (also Windows) reduzierst.

      Das ist leicht. Kompiliere die Programme einfach für jede existierende
      Plattform. ;)

      Anscheinend benötigen JAVA-Programme auch immer eine JAVA-Laufzeit-Umgebung, die man dann wohl mit installieren muss?

      Ja. Diese ist auf den allermeisten Systemen allerdings vorhanden.

      Ist das so? Windows ist das am weitesten verbreitete System, und
      dort wird kein Java mitgeliefert. (Das Microsoft-Java zähle ich
      absichtlich nicht als Java, weil das verwendete Java 1.1 schon vor
      6 Jahren veraltet war.)

      Ich bezweifle einfach mal, daß sich übermäßig viele Benutzer eine
      Java Laufzeitumgebung nachträglich installieren möchten, nur um ein
      Mini-Tool verwenden zu können.

      Nicht auf allen, wohlgemerkt, aber auf mehr, als wenn Du Dir nur ein einziges Betriebssystem rauspickst.

      Sehe ich nicht so. Wenn es unter Windows läuft, läuft es auf den
      allermeisten Maschinen. Vermutlich sind das erheblich mehr System, als
      Systeme, auf denen eine JRE installiert ist. Leider.

      Achtet man darauf, das Programm möglichst plattformunabhängig zu
      schreiben -- was bei einem solchen Mini-Tool vermutlich nicht
      sehr schwer sein sollte -- kann man Binaries für die 3 am häufigsten
      verwendeten System zur Verfügung stellen, z.B. Windows, Linux und Mac.
      Man würde also damit fast jede Plattform abdecken.

      Andererseits:
      Es würden damit nur 3 Systeme unterstützt werden, während bei der
      Verwendung von Java prinzipiell jedes beliebige System unterstützt
      wird, sofern eine Laufzeitumgebung installiert ist.
      Jemand der z.B. Solaris verwendet, hätte damit trotzdem eine Chance
      das Programm zu verwenden.

      Aber wem sage ich das. :)

      Ich selbst würde vermutlich versuchen Binaries UND eine Java-Version
      zur Verfügung zu stellen.

      Gruß
      Slyh

      1. Hi,

        Ist das so? Windows ist das am weitesten verbreitete System, und
        dort wird kein Java mitgeliefert. (Das Microsoft-Java zähle ich
        absichtlich nicht als Java, weil das verwendete Java 1.1 schon vor
        6 Jahren veraltet war.)

        naja, das war der IE auch. Trotzdem wird er benutzt.

        Sehe ich nicht so. Wenn es unter Windows läuft, läuft es auf den
        allermeisten Maschinen. Vermutlich sind das erheblich mehr System, als
        Systeme, auf denen eine JRE installiert ist. Leider.

        Ich zähle jenes MS-Java durchaus dazu - es ist mangelhaft, aber vorhanden. Damit stimmt meine Aussage wieder.

        Aber wem sage ich das. :)

        Dem Fragesteller, denke ich, für den das durchaus nützliche Informationen sein können :-)

        Ich selbst würde vermutlich versuchen Binaries UND eine Java-Version
        zur Verfügung zu stellen.

        Das wiederum halte ich für potenziell unsinnig. Natürlich wieder mit einem "kommt drauf an" - ganz sicher gibt es Fälle, in denen dies ohne Schwierigkeiten machbar ist. Wenn man aber die Java-Entwicklung darauf ausrichten muss, es problemarm kompilieren zu können, kann ich mir erhebliche Mängel bei der Codequalität ausmalen. Möglicherweise bin ich dazu aber in Java einfach noch zu unerfahren.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          Ist das so? Windows ist das am weitesten verbreitete System, und
          dort wird kein Java mitgeliefert. (Das Microsoft-Java zähle ich
          absichtlich nicht als Java, weil das verwendete Java 1.1 schon vor
          6 Jahren veraltet war.)

          naja, das war der IE auch. Trotzdem wird er benutzt.

          Ja, er ist scheiße. Und die Leute sind zu faul sich was besseres
          runterzuladen und zu installieren. (Genau wie bei Java.)

          Der Unterschied ist nur der, daß man für den IE trotzdem noch
          ansehnliche Seiten bauen kann.
          Mit Java 1.1 (in der verkrätzten Version von MS) kann man nur schwer
          brauchbare Anwendungen schreiben...

          Ich selbst würde vermutlich versuchen Binaries UND eine Java-Version
          zur Verfügung zu stellen.

          Das wiederum halte ich für potenziell unsinnig. Natürlich wieder mit einem "kommt drauf an" - ganz sicher gibt es Fälle, in denen dies ohne Schwierigkeiten machbar ist. Wenn man aber die Java-Entwicklung darauf ausrichten muss, es problemarm kompilieren zu können, kann ich mir erhebliche Mängel bei der Codequalität ausmalen.

          Dann würde ich das natürlich auch nicht tun. Vielleicht muß ich meine
          Aussage etwas präzisieren:
          Ich würde Binary-Versionen und eine Java-Version bereitstellen,
          sofern/sobald GJC so weit ist _jedes_ Java-Programm "verlustfrei" zu
          kompilieren.

          Gruß
          Slyh

          1. Hi,

            naja, das war der IE auch. Trotzdem wird er benutzt.
            Ja, er ist scheiße. Und die Leute sind zu faul sich was besseres
            runterzuladen und zu installieren. (Genau wie bei Java.)

            bzw. sie wissen es nicht besser.

            Ich würde Binary-Versionen und eine Java-Version bereitstellen,
            sofern/sobald GJC so weit ist _jedes_ Java-Programm "verlustfrei" zu
            kompilieren.

            Okay, dem kann ich mich anschließen :-)

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Vielen Dank für eure Hilfe.
              Ich werde mich wohl für Delphi entscheiden, da ich mich mit C / C++  /C# nicht auskenne.

              Suche erstmal die von euch erwähnten Biliotheken.
              Vielleicht klappt es ja dann.

              mfg
              Stefan

  2. Hallo Stefan,

    Zuerst stieß ich auf Delphi. Aber damit kann man offensichtlich nur bmp's bearbeiten. C bzw. C++ scheint auch nicht das richtige zu sein.

    Das "Problem" liegt bei Windows vor .NET, nicht bei den Programmiersprachen. Das GDI, sozusagen der Grafikteil von Windows, kann nur mit Bitmaps und Metafiles umgehen. Erst GDI+ kann auch mit Jpegs umgehen. Im Framework von .Net sind dann auch Klassen dafür. Aber sicher gibt es auch für Delphi Freeware-Bibliotheken. Kostenpflichtige auf jeden Fall, z.B. LeadTools.

    Ich dachte zunächst, dass JAVA nur im Internet sinnvoll ist. Ist aber ja offensichtlich nicht so.

    Ist Java überhaupt sinnvoll? SCNR, nicht ernst nehmen.

    Kann ich mit damit .exe-Dateien erstellen? Ich habe in diversen Büchern herumgelesen, aber nichts darüber gefunden.

    Irgendwo gibt es glaub einen Compiler oder in der Art, womit man aus Java-Programmen Exe machen kann. Aber damit verliert man den Hauptvorteil einer Java-Anwendung, die Plattformunabhängigkeit.

    Anscheinend benötigen JAVA-Programme auch immer eine JAVA-Laufzeit-Umgebung, die man dann wohl mit installieren muss?

    Ja.

    Hat jemand einen Vorschlag, welche Programmiersprache man für sowas üblicherweise nimmt?

    Da ich mich lieber in .Net einarbeite, rein subjektiv: ich würde C# nehmen.

    Gruß,
    Martin

  3. Hallo,

    • Ich möchte gern Programme schreiben, die zum Beispiel jpg Bilder verändern (als Beispiel: jedem Bild oben rechts eine Zahl hinufügen oder Dateien auf dem lokalen Dateisystem umbenennen, vergleichen o.ä.)

    Das kannst du mit ziemlich jeder Programmiersprache.
    Entweder indem du alles selbst programmierst, oder indem du fertige
    Libraries nimmst, die es für jede Programmiersprache geben sollte.

    • Sie sollen von jedem Anwender ausführbar sein (ggf. nach einer Installation). --> also keine Abhängigkeit von irgendwelchen Browsern oder anderen Programmen

    Für Java wird üblicherweise eine Java Runtime Environment benötigt.
    Für dich ist ein natives Programme (z.B. EXE) vermutlich interessanter.

    Es sollen also kleine Programme werden, wie solche, die man sich irgendwo als freeware-utility herunterladen kann.
    Welche Sprache nimmt man dafür am Besten?

    Ziemlich egal. Nimm Java oder Delphi oder C/C++. Was du willst. Dir
    muß nur klar sein, daß Java von sich aus erstmal eine Laufzeitumgebung
    benötigt.

    Zuerst stieß ich auf Delphi. Aber damit kann man offensichtlich nur bmp's bearbeiten.

    Für Delphi gibt es sicherlich passende Libraries, die auch JPG
    laden und speichern können. (Sobald die Grafik geladen wurde, kannst
    du diese üblicherweise unabhängig vom ursprünglichen Dateiformat
    bearbeiten.)

    C bzw. C++ scheint auch nicht das richtige zu sein.

    Warum? Da gilt das gleiche wie bei Delphi.

    Nach langem suchen wurde ich dann doch auf JAVA aufmerksam. Ich dachte zunächst, dass JAVA nur im Internet sinnvoll ist. Ist aber ja offensichtlich nicht so.

    Kommt drauf an. Es wird aktuell (noch?) primär im Serverbereich
    eingesetzt. Das liegt aber vor allem daran, daß eine Laufzeitumgebung
    installiert werden muß, was die meisten Anwender vermutlich überfordert.
    Leider.

    Ansonsten spricht gegen Java nichts. Es ist sogar so, daß die mit-
    gelieferte API bereits das tun kann, was du willst, ohne daß du noch
    zusätzliche Libraries verwenden müßtest.

    Jetzt ist die Frage, ob JAVA meine Anforderungen von oben erfüllt.

    Prinzipiell ja.

    Kann ich mit damit .exe-Dateien erstellen? Ich habe in diversen Büchern herumgelesen, aber nichts darüber gefunden.

    Du kannst Java-Programme mit GJC in native Programme für verschiedene
    Plattformen kompilieren. Allerdings ist GJC aktuell noch in Entwicklung.
    Inbesondere AWT und Swing funktionieren nur sehr eingeschränkt.
    Du müßtest selbst rausfinden, ob die von dir benötigte Funktionalität
    bereits unterstützt wird.
    Ansonsten ist eben, wie geschrieben, die Laufzeitumgebung notwendig.

    Anscheinend benötigen JAVA-Programme auch immer eine JAVA-Laufzeit-Umgebung, die man dann wohl mit installieren muss?

    Mit o.g. Einschränkung, ja.

    Hat jemand einen Vorschlag, welche Programmiersprache man für sowas üblicherweise nimmt?

    Um kleine Freeware-Tools zu schreiben, wird üblicherweise (Visual) Basic,
    C/C++ oder Delphi verwendet. Java eher seltener, weil eben eine
    Laufzeitumgebung heruntergeladen und installiert werden muß, wozu
    die meisten Leute nicht bereit sind.

    Gruß
    Slyh

  4. C bzw. C++ scheint auch nicht das richtige zu sein.

    Ich glaube es gibt nichts das nicht in C oder C++ programmiert werden kann!

    Java wäre eigentlich meine erste Wahl da deutlich einfacher als C/C++ aber in Java ist die notwendige Runtime ein Problem.

    Wenn Du hingegen Plattform unabhängig sein willst (Win, Max, Unix,...) dann ist Java wieder klar im Vorteil.

    PHP, Perl,... würde ich da nicht nehmen da Du dort den Quellcode weitergeben müsstet (bei Java zumindest nur den P-Code).

    Bye
    Gerd