1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Diskussion: Java-Entwickler gut aufgehoben bei MacOSX ?

Dieses Thema im Forum "iOS-Developer" wurde erstellt von zeroeye, 04.06.09.

  1. zeroeye

    zeroeye Fuji

    Dabei seit:
    03.06.09
    Beiträge:
    37
    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?
     
  2. yamiro

    yamiro Fießers Erstling

    Dabei seit:
    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.
     
  3. gKar

    gKar Maunzenapfel

    Dabei seit:
    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.

    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.
     
  4. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    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.
     
  5. zeroeye

    zeroeye Fuji

    Dabei seit:
    03.06.09
    Beiträge:
    37
    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.
    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
     
  6. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    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:
    Das ist falsch. Wahr ist:
    http://www.apple.com/de/macosx/technology/64bit.html

    Schreib ihm mal, er solle seine "facts straight" machen.
     
    #6 MacMark, 04.06.09
    Zuletzt bearbeitet: 04.06.09
  7. yamiro

    yamiro Fießers Erstling

    Dabei seit:
    16.03.09
    Beiträge:
    128
    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".
     
  8. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    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.
     
  9. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    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.
     
  10. zeroeye

    zeroeye Fuji

    Dabei seit:
    03.06.09
    Beiträge:
    37
    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?
     
  11. yamiro

    yamiro Fießers Erstling

    Dabei seit:
    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.
     
  12. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    Es gibt einfach nur kein Java 6 für 32-Bit-Macs. Das ist aber so oder so eine Minderheit, die zudem ausstirbt.
     
  13. zeroeye

    zeroeye Fuji

    Dabei seit:
    03.06.09
    Beiträge:
    37
    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?
     
  14. nevermind

    nevermind Bismarckapfel

    Dabei seit:
    19.12.07
    Beiträge:
    142
    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.
     
  15. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    Doch, die sollte lauffähig sein. OS X kann 64 und 32 Bit gleichzeitig.
     
  16. zeroeye

    zeroeye Fuji

    Dabei seit:
    03.06.09
    Beiträge:
    37
    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:
    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.
     
  17. zeroeye

    zeroeye Fuji

    Dabei seit:
    03.06.09
    Beiträge:
    37
    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.
     
  18. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    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
     
  19. zeroeye

    zeroeye Fuji

    Dabei seit:
    03.06.09
    Beiträge:
    37
    sehe ich genau so!

    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.
     
    #19 zeroeye, 05.06.09
    Zuletzt bearbeitet: 05.06.09
    MacMark gefällt das.
  20. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.251
    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!
     

Diese Seite empfehlen