Kaffee mit Apfelgeschmack



Ähnliche Dokumente
Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

ANT. Kurzvortrag von Manuel Schulze.

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Einstieg in die Informatik mit Java

Installation der 4Dv12sql Software für Verbindungen zum T.Base Server

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Wie konfiguiriert man Eclipse (mit oder ohne Plugin) Erich Ehses

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Internet Explorer Version 6

WOT Skinsetter. Nun, erstens, was brauchen Sie für dieses Tool zu arbeiten:

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Starten der Software unter Windows 7

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Nutzung der VDI Umgebung

eridea AG Installation Eclipse V 1.1

Live Update (Auto Update)

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Starten der Software unter Windows XP

Verbinden. der Firma

Das Build-Tool ANT ETIS SS05

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Eclipse und Java Einheit 06: Building Eclipse Projete mit Ant

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

Installation OMNIKEY 3121 USB

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

auf den E-Book-Reader

AK Medientechnologien Hello World. Josef Kolbitsch

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

DVD Version 9.1. Netzwerkinstallation + VDE-Admin-Tool.

INSTALLATION VON INSTANTRAILS 1.7

Java unter Linux für die Arbeit mit der SciFinder Webversion-ein Anwenderbericht

Installationsanleitung VIO Copy 2.x

Netzwerkeinstellungen unter Mac OS X

25 Import der Beispiele

32.4 Anpassen von Menüs und Symbolleisten 795i

Installation des edu- sharing Plug- Ins für Moodle

Computeria Solothurn

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Updatehinweise für die Version forma 5.5.5

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1.

Installationshilfe und Systemanforderungen. Vertriebssoftware für die Praxis

FreePDF XP Handbuch. Aktuelle Version bei Fertigstellung: FreePDF XP 1.0. Inhalt:

Anleitung zur Webservice Entwicklung unter Eclipse

4D Server v12 64-bit Version BETA VERSION

Software-Engineering Grundlagen des Software-Engineering

Installationsanleitung

Installationsanleitung. Update ATOSS SES 2.40 für Windows ATOSS Server

Klicken Sie auf Extras / Serienbriefe mit Word. Im Fenster Serienbriefe können Sie nun auswählen, an wen Sie den Serienbrief schicken möchten.

Dokumentation owncloud PH Wien

1 Was ist das Mediencenter?

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Schulpaket 2015 / 2016 Installation

Visual Basic Express erstes Projekt anlegen

Handbuch USB Treiber-Installation

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Internet online Update (Internet Explorer)

mygesuad Download: Wamp/Lamp Systemumgebungen:

Bootapplikation ohne CODESYS laden

Java: Vererbung. Teil 3: super()

Hinweise zu Java auf dem Mac:

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Gezielt über Folien hinweg springen

Programm GArtenlisten. Computerhinweise

Meine Welt auf einen Blick erleben.

Erstellen einer PostScript-Datei unter Windows XP

Windows Verbindung mit WLAN BZPflege trennen Verbindung mit WLAN EDU-BZPflege automatisch erstellen... 30

SICHERN DER FAVORITEN

Installation der Konfigurationsdateien für alle Windows-Versionen bis einschließlich Microsoft Windows 7

OpenVPN unter Linux mit KVpnc Stand: 16. Mai 2013

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Eclipse 3.0 (Windows)

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Version 0.3. Installation von MinGW und Eclipse CDT

auf den ebook-reader Ausleihen und Nutzen von ebooks auf einem ebook-reader

eclips Handheld Remote Control Software Updater

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Microsoft PowerPoint Präsentationen in MP4 (H.264) umwandeln

Zugriff auf die elektronischen Datenbanken

Installationsanleitung CLX.PayMaker Home

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

SJ OFFICE - Update 3.0

MetaQuotes Empfehlungen zum Gebrauch von

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

Wissensdatenbankeintrag zur Classic Line Version CL 4.4 und SNC >= 5.2 WDB Artikel:

SWT. -The Standard Widget Toolkit- Inhaltsverzeichnis. Thomas Wilhelm SWT. 1. Was ist SWT?

Dokumentation zur Browsereinrichtung

Transkript:

Kaffee mit Apfelgeschmack Optimierung von Java-Anwendungen für Mac OS X Thomas Much thomas@muchsoft.com www.muchsoft.com

Themen Überblick: Mac OS X und Java Ausführbare Java-Anwendungen JAR-Archive, Java Web Start, Programmpakete Programmpakete mit Xcode bzw. mit Ant und Eclipse Benutzungsoberflächen (GUI) bessere System-Integration mit Apple-spezifischen Klassen portable System-Integration Look & Feel und Apples Human Interface Guidelines

Überblick: Mac OS X und Java

Mac OS (X) Geschichte 1999 Mac OS 9 "Classic" 2001 2002 2003 2005 Mac OS X 10.0 ("Cheetah") Mac OS X 10.1 ("Puma") Mac OS X 10.2 ("Jaguar") Mac OS X 10.3 ("Panther") Mac OS X 10.4 ("Tiger")

Mac OS X Systemaufbau

Mac OS X 10.0 Mac OS X 10.1 Mac OS X 10.2 Mac OS X 10.3 Mac OS X 10.4 Java auf Mac OS X Java 1.3 Java 1.4 Java-Implementation von Apple, nicht von Sun! basiert auf Sun-Sourcen, Source-Austausch in beide Richtungen nur jeweils eine Hauptversion möglich Java-Updates aktualisieren i.d.r. alle Hauptversionen (offiziell) kein Downgrade, mehrere Testsysteme nötig nicht alle Sun-Bugfix-Versionen verfügbar/nötig Java 5.0

Anwender Struktur der Apple-Implementation /Programme/Dienstprogramme/Java/ /Library/Internet Plug-Ins/ Entwickler /Developer/Applications/Java Tools/ plus Beispiele+Dokumentation in /Developer System /System/Library/Frameworks/JavaVM.framework/Versions/ 1.3.1/ 1.4.2/ Home/ bin/ lib/ Symlinks in /usr/bin/ auf <Version>/ Commands/ java javac

JAVA_HOME auf /Library/Java/Home setzen Alias für /System/Library/Frameworks/JavaVM.framework/Home/ bzw. /System/Library/Frameworks/JavaVM.framework/ Versions/1.4.2/Home/ (jeweils aktuellste Version) in einer Shell (tcsh, bash u.a.): setenv JAVA_HOME /Library/Java/Home /Programme/Dienstprogramme/Terminal.app für den GUI-Parent-Prozess mit RCEnvironment: http://www.rubicode.com/software/rcenvironment/

Erweiterungsverzeichnisse ~/Library/Java/Extensions/ /Library/Java/Extensions/ /System/Library/Java/Extensions/ bequem, aber gefährlich stehen in java.ext.dirs und werden somit vor dem Klassenpfad ausgewertet /Library/Java/Home/lib/ext/ gibt es auch aber: gehört dem System, wird beim Update überschrieben daher: nicht verwenden

Mac OS X erkennen System-Property abfragen: String osname = System.getProperty( "os.name" ); if ( osname.tolowercase().startswith("mac os x") ) { // Code speziell für Mac OS X } Bibliothek "Sys" (Open Source) verwenden: import com.muchsoft.util.sys; //... if ( Sys.isMacOSX() ) { } else if ( Sys.isLinux() ) { } http://www.muchsoft.com/java/

Konfigurationsdateien speichern Benutzerdaten ~/Library/Preferences konkret z.b. /Users/much/Library/Preferences/ Sys.getPrefsDirectory() Systemdaten /Library/Preferences/ Sys.getLocalPrefsDirectory() alternativ mit Java Preferences API (ab Java 1.4) dann aber systemabhängige Dateien

Ausführbare Java-Anwendungen

JAR-Archive Problem: Anwender möchte Applikation per Doppelklick starten Standard für lokale Applikationen: JAR-Archive mit passendem Manifest Windows 2000, XP, Linux KDE... und Mac OS X wie gewohnt: jar cvfm classes.jar manifest.txt *.class manifest.txt: Main-Class: de.paket.hauptklasse ausgeführt von /System/Library/CoreServices/Jar Launcher

Java Web Start (JAWS) Standard für entfernt geladene Applikationen ein Klick startet Applikation: <a href="meineapp.jnlp">... </a> seit Mac OS X 10.1 (Java 1.3.1) fester Bestandteil auf anderen Systemen erst ab Java 1.4.1 fest dabei Programm-Manager: /Programme/Dienstprogramme/Java/Java Web Start.app lokal testen: Apache Web-Server vorinstalliert "Personal Web Sharing", Home: ~/Web-Sites/ kein automatischer Download von JREs keine zu alten / zu konkreten Java-Versionen voraussetzen! <j2se version="1.2+"> geht aber problemlos

Programmpakete (Bundles) natives Programmformat von Mac OS X Verzeichnisstruktur: MeineApplikation.app/ Type+Creator: APPL???? Contents/ Info.plist PkgInfo MacOS/ JavaApplicationStub Resources/ MeineApplikation.icns Java/ MeineApplikation.jar Kopie von /System/Library/Frameworks/ JavaVM.framework/ Resources/MacOS/ JavaApplicationStub libmeineapplikation.jnilib

Info.plist (1) <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/dtds/propertylist-1.0.dtd"> <plist version="1.0"> <dict> <key>cfbundleexecutable</key> <string>javaapplicationstub</string> <key>cfbundlegetinfostring</key> <string>1.0 (01.01.2005) Copyright... </string> <key>cfbundleiconfile</key> <string>meineapplikation.icns</string> <key>cfbundlename</key> <string>meineapplikation</string>

Info.plist (2) <key>cfbundlepackagetype</key> <string>appl</string> <key>cfbundlesignature</key> <string>????</string> <key>java</key> <dict> <key>classpath</key> <string>$javaroot/meineapplikation.jar</string> <key>mainclass</key> <string>de.paket.hauptklasse</string>... </dict> </dict> </plist>

Info.plist (3) <key>java</key> <dict>... <key>jvmversion</key> <string>1.4+</string> <key>properties</key> <dict> <key>apple.laf.usescreenmenubar</key> <string>true</string> <key>apple.awt.showgrowbox</key> <string>true</string> </dict> <key>vmoptions</key> <string>-xfuture</string>

Programmsymbol (Icon) von /Developer/Applications/Utilities/Icon Composer.app aus Bilddatei mit Transparenz/Alphakanal icns-datei erzeugen lassen: auch normale Bilddatei möglich einfach JPEG-, TIFF-, PNG-Datei in Info.plist eintragen minimale Maske wird dann aber nicht automatisch erzeugt bei Shell-Skripten über java-optionen konfigurierbar

Xcode

Export als Bundle mit Eclipse 3.0 nur in der Mac-Version scheint nur mit SWT problemlos zu funktionieren

Ant (1) <?xml version="1.0" encoding="utf-8"?> <project default="build" basedir="."> <property environment="env"/> <property name="product" value="${env.product_name}"/> <property name="build" location="build"/> <property name="jar" location="${build}/${product}.jar"/> <property name="bundle" location="${build}/${product}.app"/> <property name="contents" location="${bundle}/contents"/> <property name="macos" location="${contents}/macos"/> <property name="stub" location="${macos}/javaapplicationstub"/> <target name="build" depends="compile">... </target>

Ant (2) <property name="resources" location="${contents}/resources"/> <property name="java" location="${resources}/java"/> <mkdir dir="${macos}"/> <mkdir dir="${java}"/> oder aus bestehendem <copy todir="${macos}" file="/system/library/frameworks Bundle kopieren /JavaVM.framework/Versions/Current /Resources/MacOS/JavaApplicationStub"/> <copy todir="${contents}" file="info.plist"> <filterset> <filter token="product" value="${product}"/> </filterset> </copy> <echo file="${contents}/pkginfo" append="false" message="appl????"/> <copy todir="${resources}" file="${product}.icns"/> <copy todir="${java}" file="${jar}"/> <chmod file="${stub}" perm="755"/>

Lokalisierung MeineApplikation.app/ Contents/ Info.plist PkgInfo MacOS/ JavaApplicationStub Resources/ MeineApplikation.icns English.lproj/ French.lproj/ German.lproj/ Java/ MeineApplikation.jar MeineApplikation.properties MeineApplikation_de.properties leer, aber für lokalisiertes Apfel- und Programm- Menü nötig

Benutzungsoberflächen (GUI)

Cocoa & Aqua das Cocoa-Framework wird normalerweise mit Objective-C programmiert auch mit Java ansprechbar: Cocoa-Java-Bridge hier aber nicht Thema, da nicht portabel AWT & Swing: von Apple an Aqua-Oberfläche angepasst

GUI-Einbindung AWT: wie üblich System-Aussehen (beim Mac also Aqua) Swing: System-L&F ist Aqua bei Entwicklung auf anderem System besser Metal-L&F verwenden, da nur dieses Aussehen systemübergreifend gleich ist dann wirken Java-Anwendungen aber wie Fremdkörper, Benutzer-Akzeptanz schwierig (gilt nicht nur für Mac OS X) technisches Problem: Interaktion mit Systemoberfläche (z.b. Apfel- und Programm-Menü) Lösung: spezielle Apple-Klassen leider unterschiedlich für Java 1.3 und 1.4...

Apple-Klassen für Java 1.3 import com.apple.mrj.*; public class AWTTest extends Frame implements MRJAboutHandler { public AWTTest() {... MRJApplicationUtils.registerAboutHandler( this ); } public void handleabout() {... } } weitere Handler für Quit, Prefs, OpenDocument...

Apple-Klassen für Java 1.4 import com.apple.eawt.*; public class SwingTest extends JFrame implements ApplicationListener { public SwingTest() {... Application app = new Application(); app.addapplicationlistener( this ); } public void handleabout( ApplicationEvent e ) {... } public void handlequit( ApplicationEvent e ) {... }... }

Portables Einbinden der Apple-Klassen Problem: ClassLoader referenziert Klassen, selbst wenn sie nur bedingt instanziiert werden if (Sys.isMacOSX()) { registerquithandler()... } funktioniert also nicht! Lösung: Reflection "Sys"-Bibliothek bietet fertige Lösung: Java1?Handler deklarieren portable Interfaces Java1?Integration sprechen Apple-Klassen direkt an Java1?Adapter binden (nicht öffentliche) Integration-Klassen auf Mac OS X per Reflection ein

Portables Einbinden für Java 1.3 import com.muchsoft.util.mac.*; public class AWTPortabel extends Frame implements Java13Handler { public AWTPortabel() {... Java13Adapter.registerJava13Handler( this ); } public void handleabout() {... } public void handlequit() {... }... }

Portables Einbinden für Java 1.4 import com.muchsoft.util.mac.*; public class SwingPortabel extends JFrame implements Java14Handler { public SwingPortabel() {... Java14Adapter.registerJava14Handler( this ); } public void handleabout( EventObject e ) {... } public void handlequit( EventObject e ) {... }... }

Human Interface Guidelines (1) von Anfang an für Mac OS festgelegt, für Aqua aktualisiert u.a. Menüs & Menüpunkte z.b. Fenster-Menü (der Mac kennt kein MDI!):

Human Interface Guidelines (2) Problem: Aqua-L&F beachtet im Zweifel HIG und nicht Swing- Richtlinien (zumindest meistens) nur bedingt portabel unbedingt testen! bessere Beachtung der HIG mit Aqua-Ergänzung "Quaqua" http://www.randelshofer.ch/quaqua/

Brushed Metal neueres Aussehen, zusätzlich zu Aqua Property apple.awt.brushmetallook auf true setzen nur beim AWT (Frame) verfügbar, kein komplettes L&F! ab Java 1.4, funktioniert erst ab Mac OS X 10.3 richtig sollte nur sparsam (beim Hauptdialog) eingesetzt werden

Ausblick Application-Framework nur für Menüleisten und Multi-Dokument-Verwaltung für AWT und Swing (und SWT?) optimiert für Windows, Linux, Mac OS X einheitliche Schnittstelle für alle Java-Versionen (ab 1.3) eigenes java.net-projekt? oder an JDIC anbinden? andere Lösungen z.b. MRJAdapter (aber nur für Mac-Optimierung) http://www.roydesign.net/mrjadapter/

Zusammenfassung

Optimierung von Java-Apps für Mac OS X? von Mac-Nutzern erwartet, da höhere Ansprüche an Bedienbarkeit von Software davon können auch Windows-Nutzer profitieren! leider Unterschiede zwischen Java 1.3 und 1.4 mit Mac OS X-Testrechner kein Problem auch ohne Mac-Testrechner möglich: JAR-Archive, Programmpakete, Basis-Systemintegration aber: GUI muss getestet werden! Aqua-L&F beachtet Apple-Richtlinien sonst am besten Metal-L&F einsetzen, aber... s.o.

Vielen Dank! thomas@muchsoft.com www.muchsoft.com "Java für Mac OS X" Galileo Computing 2005 630 Seiten, mit CD-ROM ISBN 3-89842-447-2