Java-Programme unter Mac OS X



  • Hallo miteinander,

    in Anbetracht der Tatsache, dass ich ein kleines Tool schreiben soll, dass auch noch plattformunabhängig sein soll, habe ich nun das Problem, dass ich weiß, dass Mac OS X etwas Besonderes ist bzw. besonders behandelt werden will.

    Bei meiner Suche bin ich schon auf einige hilfreiche Dinge gestoßen, wie z.B. via Kommandozeile die nötigen Parameter übergeben lassen oder mit folgendem Code das Meiste richtig biegen:

    System.setProperty("apple.laf.useScreenMenuBar", "true");
    System.setProperty("apple.laf.useScreenMenuBar", "true");
    System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Your app name");
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } 
    catch (ClassNotFoundException ex) {}
    catch (InstantiationException ex) {}
    catch (IllegalAccessException ex) {}
    catch (UnsupportedLookAndFeelException ex) {}
    

    Ich würde gerne wissen, was ihr empfehlen könnt, wie es am besten zu machen ist und darüber hinaus möchte ich gerne wissen, wie ich am besten unter Mac OS X eine App daraus machen kann, weil ich nicht erwarten kann, dass sich die Nutzer, die dieses Programm wünschen, auch mit der Konsole/dem Terminal auseinandersetzen sollen! 😞

    Gruß,
    Christian



  • Hallo,

    wie stellst du das Tool zur Verfügung (CD, Web, Stick, ...)?

    Ich persönlich bevorzuge meist Java WebStart in Verbindung mit einer Webseite. Das nimmt einen sehr viel Arbeit ab und der Benutzer bekommt immer die aktuelle Version des Programms. In der JNLP kannst du z.B. Argumente (main()-Methode) und sogar gleich System.Properties setzen.
    Kurz, in der JNLP lassen sich alle plattformabhängige Daten/Eigenschaften hinterlegen.

    Letztendlich musst du irgendwo die systemspezifischen Einstellungen hinterlegen. Dies geht z.B. auch mit einer Shell-Datei (seit Jahrzehten üblich), welche die "Start"-Datei für den Benutzer ist. Unter Linux meist *.sh und Windows *.bat. Wie die unter Mac heißen weis ich nicht, aber denke mal *.sh da Mac ja von FreeBSD abstammt.

    Beispiel.sh

    # setze Umgebungsvariable JAVA_HOME
    export JAVA_HOME=/usr/abc/bin
    
    export MEIN_UMGEBUNGSVARIABLE=HALLO
    
    java -jar prog.jar
    

    Gruß,
    Thomas





  • Die Sache ist die, dass es sich hierbei um eine Server/Client-Applikation handelt und diese auf den Clients in der Firma verfügbar sein muss. Der serverseitige Part läuft eh automatisiert auf dem Server (auch Mac).
    Desweiteren will ich es zu einfach, wie nur möglich machen, dass ich niemandem zu erklären habe, wie ein Terminal zu benutzen ist und das Programm zu starten ist! Am Besten wäre es ja, wenn ich das eine App packen kann, dass es nur noch per Doppelklick gestartet werden muss. Das werde ich noch ergooglen müssen.

    Eine weitere Frage btw. bzgl. Mac. Ich nutze die com.sun.net.httpserver.* -Klassen, was unter Windows prima funktioniert, aber unter Mac muss das Programm via sudo gestartet werden um den Server zu nutzen, sonst kommt eine IOException mit "Permission denied!"-Fehler! Eine Ahnung, wie ich (in Java?) schon beim Start nach diesen Privilegien (auch grafisch) frage?



  • Egal unter Mac, Linux oder Windows. Das Binden von ein Serverport am Rechner benötigt ein privilegiertes Recht. Falls deine Windows-Maschine es nicht tut, dann hast du ein Sicherheitsproblem... dir ist es freigestellt in Panik auszubrechen oder gelassen es zu ignorieren. Btw. meine Windows würde mir übel auf die Fingerschlagen.

    Jar Dateien sollten auch auf jeden Betriebssystem mit einen Doubleklick ausführen lassen. Nun ich hab kein Mac, also kann ich nicht sicher sein. Also kann ich dir nur noch den Tipp geben, dass ich durch Recherche herausgefunden habe, dass Eclipse auf dem Mac die Funktion hat, deine Java Anwendung in ein App Bundle zu packen, somit wie jede andere Mac Anwendung verhält.



  • Darauf bin ich gestoßen (außerdem habe ich auch den JARBundler von Xcode entdeckt). Jedoch muss ich noch herausfinden, wie ich Privilegien erfordern will vom Benutzer.



  • Christian Ivicevic schrieb:

    ... eine Server/Client-Applikation handelt und ... Desweiteren will ich es zu einfach, wie nur möglich machen, ...

    Java Webstart. Ist nur ein Klick 😃


Anmelden zum Antworten