Archiv der Kategorie: Java

Java und AppleScript

Tja, AppleScript in Verbindung mit Java waren bzw. sind in meine Augen ein sehr gutes Gespann. Apple bot extra für diese Zwecke eine Cocoa-Java Bridge an über die man auch auf AppleScript zugreifen konnte.

Doch wer Apple kennt weiß das die Firmenpolitik strikt ist und konsequent ein Schlußstrich gezogen wird, wenn Technologien in Apples Augen veraltet sind oder nicht mehr gebraucht werden. So erging es auch der Cocoa-Java Bridge und diese wurde seit Mac OS X Tiger 10.4 nicht mehr weiter unterstützt.

In Java wurde aber eine Java Scripting API integriert mit der man auch unter anderem wieder auf AppleScript zugreifen kann. Diese nutzt auch der Java-AppleScript-Connector der über einen JNI Wrapper das AppleScript über „osacompile“ in der Kommandozeile ausführt.

Anhand eines kurzen Beispiels mit der Netbeans IDE zeige ich wie man auf AppleScript zugreifen kann.

Zuerst fügen wir die jasconn.jar in den Libraries des neu angelegten Netbeans Projekts hinzu.

Im Netbeans  GUI Editor fügen wir einen Button hinzu der eine Methode ausführt in die wir folgenden kleinen Beispielcode einfügen.
public void callAppleScript() {
      ScriptEngineManager sem = new ScriptEngineManager();
      ScriptEngine e = sem.getEngineByName("jasconn");
      //ScriptEngine e = sem.getEngineByName("AppleScript");
      ScriptEngineFactory f = e.getFactory();
      String[] statements = {
          "tell application \"QuarkXPress Passport\" to set x to get properties of every generic box of document 1",
          "return x",
      };
      String program = f.getProgram(statements);
      try {
          //Rückgabewert
          Object resultOfAppleScript = e.eval(program);
          System.out.println("Result:" + resultOfAppleScript.toString());
      } catch (ScriptException ex) {
          ex.printStackTrace();
      }
  }

Nun die Java App kompilieren auf den Button klicken. Das AppleScript wird ausgeführt und der Rückgabewert wird übergeben und zusötzlich über println() ausgegeben.

Im Beispiel weisen wir QuarkXPress Passport an die Eigenschaften aller generic boxes auszugeben.

 

Java: Database Publishing System Update 4

Es ist mal wieder Zeit für ein kleines Update. Qusa wie mein Programm nun genannt wird ist fast fertig. Dieses soll als eigenständiges Modul funktionieren und am Ende fertige Quarkdateien und PDFs erzeugen. Dieses muss noch ausgiebig getestet werden. Zu überlegen ist auch ob die Scripts auch für QXP 8 angepasst werden sollten. Leider hat mich Quark mit der neuen Version überholt ;-(

Eine passende Domain wurde auch schon registriert. Nur leider hatte ich noch keine Zeit diese Seite aufzubauen.

Mal abgesehen von der Domain gibt es neben dem Mac & Quark Part auch noch einiges in PHP zu programmieren, denn die finalen Scripts zum erstellen der Dokumente soll PHP nach erhalt einer XML Datei erzeugen. Wie die Übergabe genau ablaufen soll (als Hotfolder, Webservice oder Cronjob) steht noch nicht fest. Es gibt wieder einiges was neu gelernt werden muss….

Wie immer more to come….

Java: Database Publishing System Update 3

Kurzer Zwischenstand: In der Zwischenzeit habe ich mich mit Applescript in Verbindung mit QuarkXpress vertieft und habe ein Templatesystem entwickelt das Musterseiten oder Templates in eine Datenbank speichert. Dieses befindet sich in den Endzügen. Leider fehlt etwas die Motivation dieses weiter zu entwickeln bzw. zum Ende zu bringen. Dummerweise war der Versionssprung von QXP von 7 auf 8. Die Dokumentstruktur die über Applescript ansprechbar ist, hat sich nur marginal geöndert. Es kostet aber wieder Zeit diese Neurungen mit zu berücksichtigen.

Die Idee mit Java ein eigenes CMS zu entwickeln ist im Moment etwas in den Hintergrund gerutscht. Der Grund dafür ist mein Kontakt zu Typo3. Typo3 ist ein komplettes CMS mit sömtlichen Features(Userverwaltung, Versionierung, Mehrsprachigkeit, etc.), man muss das Rad ja nicht neu erfinden. Vielleicht kann man mit einer Extension für Typo3 eine Art Produkt- und Printplanung realisieren die dann auf mein Templatesystem zugreifen.

Java: Database Publishing System Update 1

Netbeans 6.0 ist raus und Apple hat auch das Developerpreview 9 von Java 6 SE zur Verfügung gestellt. Erfreulicherweise bietet Java 6 SE Unterstützung für Applescript über javax.script.*. Interessante Neuigkeiten wie ich meine. Ein Umstöndlicher weg über eine JNI-Library und Objective-C kann somit vermieden werden. Ich hoffe genügend Zeit dafür zu haben mein Vorhaben auf Netbeans und Java 6 umzusetzen. Das Projekt liegt leider seit einem Jahr brach ;-(


Java: Database Publishing System

Java und MySQL basiertes Database Publishing System. Das grobe Konzept ist in Java ein flexibles CMS zu programmieren, das dank Java multiplattformföhig ist und als Rich-Client Applikation (ich kann keine nachladenden Webapplikationen mehr sehen) unter Linux-, Mac- oder Windowsrechnern genutzt werden kann. Bei Bedarf ist auch eine Appletversion im Browser denkbar.

Die Erfassung von Produktdaten, Erstellung von Templates (Modulen und Musterseiten) soll komplett in Java erfolgen. Hier werden auch Farben und Stilvorlagen definiert.

Die Ausgabe der fertigen Seiten ist noch etwas unklar. Ursprünglich war die Ausgabe über eine Applescript-Java Bridge geplant die aber in Zukunft von Apple nicht mehr unterstützt wird. Soviel zum Thema deprecated…. Alternativ war noch eine native JNI Lösung von mir in Betracht gezogen worden. Dazu müsste man aber in Objective-C eine JNI Library programmieren. Was soll man denn noch alles lernen ;-)

Nach ersten Gehversuchen mit iTables wurde sehr schnell klar das der Weg über eine Applescriptausgabe zu Quark mit sehr vielen Steinen gepflastert ist.

Die finale Ausgabe ist somit noch etwas unklar. Eventuell wäre eine Realisierung über die PDFlib denkbar. Vielleicht sollte man noch am Applescriptgedanken festhalten. Hiermit könnte man offene Dateien für Quark und InDesign realisieren was nicht zu verachten wäre.

Zwischenzeitlich überlege ich die Programmierung komplett auf die Netbeans Plattform aufzusetzen. Dank Ihrer Modularitöt und Erweiterbarkeit samt Unterstützung durch das Netbeans Framework für den Programmierer ist man für die Zukunft gut gewappnet.

Alles in Arbeit und noch viel zu tun. Es ist noch ein langer, langer Weg…