• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Diskussion: Java-Entwickler gut aufgehoben bei MacOSX ?

zeroeye

Boskoop
Registriert
03.06.09
Beiträge
39
Hallo Entwickler,

ich wollte hier mal eine (nicht neue Thematik) noch mal zur Diskussion stellen:

Java unter MacOS X - Unterstützung und Engagement seitens Apple mangelhaft?

Ich entwickle viel unter Eclipse vor allem für Web-Projekte. Und obwohl Java6 schon eine Ewigkeit für Windows und Linux verfügbar ist, schaut man am Mac bei einer offiziellen Java6 Unterstützung in die Röhre. Es gibt zwar diverse openSource Projekte, wie SoyLatte und OpenJDK (http://landonf.bikemonkey.org/static/soylatte/), aber diese sind nicht vollständig bzw. bugfrei.
Es fehlt z.B. eine SWT-Unterstützung, was zu Fehlern wie diesem führt:
Code:
java.lang.UnsatisfiedLinkError: no swt-carbon-3448 or swt-carbon in swt.library.path, java.library.path or the jar file
Und von Apple gibt es schon seit langem zwar eine 64-bit Java6 Preview für Developer, aber auch hier hat man Probleme, vor allem, wenn man 32-bit Java-Anwendungen hat:
Code:
java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM
Auch die Verwendung von Applets ist mit dieser Java6-Preview in z.B. Safari nicht möglich.
Und Cocoa-Unterstützung? Fehlanzeige...

Es mag für all das Workarounds geben und Hacks (wobei mir die Lösung, beide obige Exceptions gleichzeitig wegzubekommen nach 2 Stunden googlen noch nicht begegenet ist), aber generell stellt sich mir die Frage, ob ich als Java-Entwickler beim Mac gut aufgehoben bin. Nun steht ja auch schon Java7 an der Tür und ob und wann hier von Apple eine offizielle Version angeboten wird, steht in den Sternen, oder?

Und obwohl Apple und Steve Jobs persönlich vor einigen Jahren noch Java auf einer Keynote gross als Mac-Programmiersprache hervorgehoben haben und Java als DIE Sprache für den Mac gepriesen haben, scheint mir doch die Unterstützung von Java immer mehr stiefmütterlich zu sein.
Dafür spricht auch, dass die Java-Bridge aus XCode verschwunden ist.

Natürlich kann man anführen Objective-C sei viel besser am Mac etc. pp.
Aber das ist nicht der Punkt. Java-Entwicklung am Mac scheint für mich jedenfalls nicht professionell möglich. Deshalb überlege ich, die Plattform zu wechseln (z.B. Ubuntu Linux).

Wie seht ihr das?
Wie äussert sich Apple zur Zukunft von Java am Mac?
Gibt es Ankündigungen für Java6 oder gar Java7 Unterstützung in Snow Leopard?
 

yamiro

Fießers Erstling
Registriert
16.03.09
Beiträge
128
Ich verdiene mit J2EE Entwicklung mein Geld. Dafür verwende ich in der Firma Fedora Linux (FC9, 32bit) und zuhause meinen Mac. Auf beiden OS verwende ich JDK6 (automatisch via Apple Update), Jetbrains IntelliJ Idea, Tomcat, Maven, Ant, PostgreSQL und SVN. Die letzgenannten finden via MacPorts den Weg auf meine Platte. Da ich keine RichClient Applikationen entwickle, fühle ich mich auch auf dem Mac gut aufgehoben, wenn man mal von der unzureichend beschrifteten Tastatur absieht. Mein 17" Macbook pro mit Prozessoroption buildet sogar schneller als mein Arbeitsplatz-PC.
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Ohne nun allzu ausführlich auf dieses Topic eingehen zu wollen:
SWT ist Sache von Eclipse, nicht von Apple. Unterstützung und Engagement von Apple mit SWT-Problemen begründen zu wollen, passt also irgendwie nicht.
Übrigens soll doch meines Wissens noch im Juni Eclipse Galileo rauskommen, das dann auch endlich auf Cocoa und nicht mehr auf Carbon aufsetzen soll.

schaut man am Mac bei einer offiziellen Java6 Unterstützung in die Röhre.

Hmm, auf meinen Macs ist durch reguläre Apple-Updates Java SE 6 installiert worden. (Leopard ist allerdings anscheinend Voraussetzung.)

Ich habe meine Java-Entwicklungen bisher problemlos auf dem Mac durchführen können, allerdings handelt es sich dabei in letzter Zeit um Java-Webapplikationen. Das Sun Java EE SDK samt Application Server gibt's auch für OS X. Als IDE nehme ich Eclipse. Der wesentliche Nachteil, der mich bisher allerdings nie betroffen hat, ist m.E., dass neue Java SE-Versionen nicht frühzeitig auf dem Mac verfügbar sind, sondern immer erst spät durch Apple nachgeschoben werden. Aber für alle Notfälle könnte ich ja immer noch auf ein Java meiner Windows-VM ausweichen.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Die Java-Cocoa-Bridge sollte den Einstieg für Java-Geeks in Cocoa-Entwicklung ermöglichen. Wer aber Java auf OS X programmieren will, hätte die Bridge eh nicht benutzt.

Java 6 gibt es schone eine ganze Weile für OS X.
 

zeroeye

Boskoop
Registriert
03.06.09
Beiträge
39
Ich stimme Euch zu. Es ist nicht so, dass Java6-Entwicklung unter MacOS X Leopard gar nicht geht - man kann damit leben, wenn man nicht gerade RichClients entwickelt. Und stimmt, SWT ist eher ein Problem von Eclipse (Danke für den Hinweis mit der im Juni erscheinenden Eclipse-Version).
Dennoch finde ich, es gibt viele Nachteile, wenn man unter MacOS für Java entwickelt.
Der wesentliche Nachteil [ist], dass neue Java SE-Versionen nicht frühzeitig auf dem Mac verfügbar sind, sondern immer erst spät durch Apple nachgeschoben werden. Aber für alle Notfälle könnte ich ja immer noch auf ein Java meiner Windows-VM ausweichen.
Klar, auf eine VM ausweichen geht immer, aber das ist ja nicht der Punkt. Das bestätigt ja eher meine Aussage ;)
Bei mir wurde zwar auch Java6 installiert, aber nicht aktiviert. Das musste ich von Hand machen. Soweit ich weiss, weil Apple Java6 immer noch als Preview deklariert, wegen der oben genannten Probleme (Applets etc.). Oder wurde bei Euch Java6 nach dem Auto-Update gleich zur Standard-VM gemacht?

Ist vielleicht alles nicht kritisch und man kann damit leben, aber unter z.B. Linux ist man als Java-Entwickler meiner Meinung nach besser aufgehoben. Denn wie gesagt, Java7 von Apple wird bestimmt nicht vor der Linux- und Windows-Version erscheinen...

Hier noch zwei Links zu dem Thema, die zwar schon etwas älter sind, aber nicht uninteressant:

Java 6 on Mac. Worst release ever
http://java.dzone.com/news/java-6-mac-worsest-release-eve

Java 6 für Mac OS X: Eine Bestandsaufnahme
http://it-republik.de/jaxenter/artikel/Java-6-fuer-Mac-OS-X-Eine-Bestandsaufnahme-1601.html
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Bei welchem anderen System ist Java ins System integriert? Und so nahtlos, daß es nativ wirkt? Bessere Integration kostet halt Zeit.
Bei Windows und GNU/Linux mußt Du Java selbst installieren und es sieht nicht nativ aus.

Mit der jeweils aktuellsten Java-Version macht man als Profi eh keine Software ab Erscheinungsdatum.

http://developer.apple.com/java/javaleopard.html

Der eine Artikel, den Du verlinkst, behauptet:
lack of 64 bit libraries for cocoa
Das ist falsch. Wahr ist:
bietet Leopard Entwicklern die Möglichkeit, komplette 64-Bit-Programme mit den Cocoa, Quartz, OpenGL und X11 GUI Frameworks zu erstellen.
http://www.apple.com/de/macosx/technology/64bit.html

Schreib ihm mal, er solle seine "facts straight" machen.
 
Zuletzt bearbeitet:

yamiro

Fießers Erstling
Registriert
16.03.09
Beiträge
128
Bei mir wurde zwar auch Java6 installiert, aber nicht aktiviert.

Das zählt für mich nicht als Kriterium. Im Klickibuntitool von Apple das aktuelle JDK6 nach oben zu schieben ist zumutbar. In Linux verwalte ich die unterschiedlichen JDKs auch via "alternatives --config java".
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Man kann auch ohne den Default-Wert mit dem GUI-Tool zu ändern jede Java-Version direkt angeben beim Ausführen oder Compilieren, die man nutzen möchte. "Aktiviert" sind immer alle installierten Java-Versionen. Du kannst sie sogar parallel nutzen.
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Bei mir wurde zwar auch Java6 installiert, aber nicht aktiviert. Das musste ich von Hand machen.

Das war bei mir auch so, aber nicht erst bei Java SE 6, sondern auch schon bei früheren Major Java Updates. Da es ja mit der Abwärtskompatibilität von Java manchmal nicht ganz so rosig aussieht, hielt ich das auch durchaus für Absicht.
 

zeroeye

Boskoop
Registriert
03.06.09
Beiträge
39
Ja, das finde ich auch gut gelöst in MacOS, wie sich verschiedene Java-Versionen parallel nutzen lassen. Und mit der schicken Java-Einstellungen.app lässt sich das nett handhaben. Und soweit ich das verstehe, schaut jede java-app in die dort zu pflegende Liste, mit welcher Java-Version sie laufen kann und nimmt die erste passende aus der liste. sehr cool.
Aber dennoch schade, dass es kein 32bit-Java6 von Apple gibt. Somit läuft ein Java-Programm, dass Java6 / 32bit benötigt nicht, oder?
 

yamiro

Fießers Erstling
Registriert
16.03.09
Beiträge
128
Ein Java Programm braucht eine VM in der es laufen kann. Ob die VM auf 32 oder 64bit läuft ist in den allermeisten wenn nicht allen Fällen egal.
 

zeroeye

Boskoop
Registriert
03.06.09
Beiträge
39
stimmt eigentlich. java class files liegen ja nicht als end-kompilat vor.

Da hat mich wohl der Einstellungs-Dialog in der Java-Einstellungen.app vernebelt, in deren 2 Listen man ja munter die Reihenfolge der VMs bestimmen kann und wo 32 bit UND 64 bit versionen erscheinen, was ja dann eigentlich keinen Sinn macht.
So sieht meine Liste unter Java-Anwendungsversionen derzeit aus:

Java SE 6 - 64 bit
J2SE 5.0 - 64 bit
J2SE 5.0 - 32 bit
Java SE 1.4.2 - 32 bit

Hier könnte ich ja theoretisch J2SE 5.0 - 32 bit nach ganz oben schieben, was ja dann absolut Sinnfrei wäre, wenn die auf meiner 64 bit intel Architektur nicht lauffähig ist.
Oder wie ist der Sinn hier zu verstehen?
 

nevermind

Bismarckapfel
Registriert
19.12.07
Beiträge
142
Ein Java Programm braucht eine VM in der es laufen kann. Ob die VM auf 32 oder 64bit läuft ist in den allermeisten wenn nicht allen Fällen egal.

In den allermeisten, ja. sobald man aber native libraries braucht (EDIT: die nur für 32bit vorliegen), ist es das nicht mehr. mir fiel das aber auch erst auf, als ich mal ffmpeg und java 6 gleichzeitig brauchte. das geht unter osx dann nicht. aber ich denke das ist eine marginalie.

fazit: schönes os, auch zum java programmieren. und guis muss man ohnehin nochmal auf win/linux testen und nachbessern. so weit ists dann mit cross-platform auch nicht her. ich hab noch keinen gui code gesehn der auf allen plattformen perfekte ergebnisse liefert. wobei, die eclipse rcp kommt vllt noch am nächsten dran.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
... Hier könnte ich ja theoretisch J2SE 5.0 - 32 bit nach ganz oben schieben, was ja dann absolut Sinnfrei wäre, wenn die auf meiner 64 bit intel Architektur nicht lauffähig ist. ...

Doch, die sollte lauffähig sein. OS X kann 64 und 32 Bit gleichzeitig.
 

zeroeye

Boskoop
Registriert
03.06.09
Beiträge
39
Dann also doch schade, dass es Java6 nicht als 32 bit Version gibt, weil doch nicht egal. :-D
Denn dann würden Programme, wie Eclipse, die native 32-bit libs benötigen, korrekt laufen.
So verstehe ich diesen Error:
Code:
java.lang.UnsatisfiedLinkError: 
Cannot load 32-bit SWT libraries on 64-bit JVM
Aus diesem Grund läuft Eclipse zur Zeit auch nur unter Java5 korrekt. Aus dem Readme von Eclipse 3.4:
SWT cannot be used with OS X JRE version 1.6 (Mac OSX only)
OS X JRE version 1.6 assumes that pointers have a size of 64 bits, but SWT's Carbon port only uses 32-bit pointers, so SWT and Eclipse cannot be used with OS X JRE version 1.6. The workaround is to use an earlier supported version of the OS X JRE.

Ob das nun die Schuld von Apple oder Eclipse ist sei dahin gestellt. Und Eclipse kommt ja nun bald in einer Cocoa Version. Insofern ist da ja Besserung in Sicht.

Nur ist man meiner Meinung nach am Mac, was Java angeht, immer etwas benachteiligt gegenüber der Linux-Plattform z.B., denn ob nun Java6 oder Java7 immer erst mit Verzögerung auf dem Mac vollwertig verfügbar sind, oder ob Programme, wie Eclipse, frühzeitig an den Mac angepasst werden, der Mac hinkt hinterher. Wie lange ist Java6 von Sun jetzt schon released? 12.12.2006, wenn Google recht hat. Und nach schlappen 2,5 Jahren kann Eclipse, einer der verbreitetsten IDEs immer noch nicht am Mac unter Java6 laufen. (egal wessen Schuld ;) )

Will da aber gar nicht recht behalten und behauten "Java am Mac ist sch..." , sondern nur meine Meinung kund tun. Finde auch eure Anregungen und Sichtweisen super, die ich sehr wertvoll fand.

Finde auch, dass die Java-Einbindung in MacOS super gelöst ist. Trotzdem würde ich mir von Apple mehr Engagement in Sachen Java wünschen, das meiner Meinung nach bei Apple nur im Schatten von Objective-C steht.
Wieso z.B. kann ich für das iPhone nicht mit Java programmieren? Beim Google-Handy geht das doch auch!
Und eine Zumutung finde ich auch, dass Apple schon seit langem die extrem kritische Sicherheitslücke, die vor allem Java-Applets betrifft, nicht schliesst.
http://www.macworld.com/article/140704/2009/05/java_vulnerability.html?lsrc=rss_news
Nicht jeder Otto-normal User bekommt das mit und weiss, wo er im Browser die Applets generell deaktiviert.

Also mein Zwischen-Resumee:
Apple's Java-Einbindung ins MacOS ist cool gemacht und ermöglicht GUIs mit Cocoa. Aber ich finde, es gibt sehr viel Verbesserungspotential beim Java-Engagement seitens Apple.
 

zeroeye

Boskoop
Registriert
03.06.09
Beiträge
39
Als Nachtrag:
Natürlich läuft Eclipse auch jetzt schon unter MacOS, wenn man Java5 und Java6 parallel installiert hat. Und obwohl Eclipse dann in der Java5 VM läuft, kann man ja in Eclipse einstellen, dass Projekte mit Java6 kompiliert werden sollen.
Aber hier und da, z.B. bei Verwendung von ANT in Eclipse, kommt es dann doch zu Problemen, wenn Eclipse nicht unter Java6 läuft. Auch hier kann man Abhilfe schaffen, indem man ANT angibt in einer eigenen VM zu laufen, aber das löst nicht alle Probleme.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Dann also doch schade, dass es Java6 nicht als 32 bit Version gibt, weil doch nicht egal. :-D
Denn dann würden Programme, wie Eclipse, die native 32-bit libs benötigen, korrekt laufen.
So verstehe ich diesen Error:
Code:
java.lang.UnsatisfiedLinkError: 
Cannot load 32-bit SWT libraries on 64-bit JVM
....
Also mein Zwischen-Resumee:
Apple's Java-Einbindung ins MacOS ist cool gemacht und ermöglicht GUIs mit Cocoa. Aber ich finde, es gibt sehr viel Verbesserungspotential beim Java-Engagement seitens Apple.

Du kannst auf einem 64-Bit-Mac 32- und 64-Bit-Programme (inklusive Java) ausführen.
Du kannst auf einem 32-Bit-Mac nur 32-Bit-Programme (inklusive Java) ausführen. Java 6 für OS X gibt es nur in 64 Bit, läuft also nicht auf der aussterbenden Minderheit von 32-Bit-Macs.

Du kannst in einem 64-Bit-Programm keine 32-Bit Libraries laden. Daher der Eclipse Fehler: Du kannst nicht zwei Bittigkeiten in einem Programm mischen!

Java auf OS X nutzt kein Cocoa (die Bridge ist tot). Die Java-GUI auf OS X ist eine eigenes Java-Swing-Look&Feel von Apple (Aqua LAF), welches das native Look&Feel nachbaut.
http://developer.apple.com/document...Development/01-JavaOverview/JavaOverview.html
 

zeroeye

Boskoop
Registriert
03.06.09
Beiträge
39
Du kannst auf einem 64-Bit-Mac 32- und 64-Bit-Programme (inklusive Java) ausführen.
Du kannst auf einem 32-Bit-Mac nur 32-Bit-Programme (inklusive Java) ausführen.
...
Du kannst in einem 64-Bit-Programm keine 32-Bit Libraries laden. Daher der Eclipse Fehler: Du kannst nicht zwei Bittigkeiten in einem Programm mischen!

sehe ich genau so!

Java 6 für OS X gibt es nur in 64 Bit, läuft also nicht auf der aussterbenden Minderheit von 32-Bit-Macs.

Da ich bis vor kurzem ein 3 jahre altes MacBook hatte (also gerade mal 6 Monate älter als Java6 ;) ), das einen Intel Core Duo hatte (32 bit), fand ich es nicht so nett, kein Java6 von Apple zu haben, sondern auf SoyLatte zurückreifen musste, bei dem so einiges fehlt.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: MacMark

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Wie seht ihr das?
Wenn Du in einem professionellen Umfeld Java entwickelst und auf die neuste Java Version angewiesen bist, dann kommen als Java Entwicklungsplattformen eigentlich nur Windows, Solaris oder Linux in Frage. Apple läßt sich leider sehr viel Zeit die JDKs anzupassen oder gar auf den neusten Stand zu bringen. Auf einem PowerMac ist zur Zeit die einzige Möglichkeit Java6 zu Nutzen Linux zu installieren und IBMs Java6 SDK zu nutzen, das gibt es schon seit Jahren!