Universal builds for 64-bit only?

Mike Swingler swingler at apple.com
Sun Dec 4 10:08:02 PST 2011


On Dec 3, 2011, at 6:40 AM, James Melvin wrote:

> Hi,
> 
> In more closely examining the hotspot build on Mac OS X, we appear to be
> building the following JVMs, followed by universal binary packaging...
> 
> Client at ${JAVA_HOME}/jre/lib/client/libjvm.dylib
> - 32-bit Client JVM
> 
> Server at ${JAVA_HOME}/jre/lib/client/libjvm.dylib (one binary, 2 archs)
> - 32-bit Server JVM
> - 64-bit Server JVM
> 
> Being new to the platform, I have some general, perhaps naive
> questions...
> 
> 1) What is the value of a universal binary with only 1 arch?

What do you mean?

> 2) We plan to only support 64-bit JDKs...
>    a. Is there value in continuing to build 32-bit JVMs?
>    b. Should we drop universal builds, if we only build 64-bit JVMs?
>    c. Can the JDK use universal binaries and Hotspot not use them?

There is only value to continuing 32-bit builds for client code that needs features only available in 32-bit (legacy Quicktime, Carbon, etc). There are some 32-bit only machines (which are stuck on SnowLeopard) that won't be able to run 64-bit executables.

Dropping support for 32-bit also implies that the -client option will just redirect to -server, right?

> 3) Various infrastructure depends on a relocatable JDK.  Can we expect
>   to support both a formally installed system JDK and a freestanding
>   JAVA_HOME?

No. You cannot assume there will ever be a "system" JDK. We are moving to a model where every app that requires Java will have to bundle it in it's own app bundle. Even a JDK installed for command-line use can be in many different locations on disk, so you can never rely on a fixed path for the JDK (which is why we have the /usr/libexec/java_home command for scripts and command-line deployments).

> 4) What is the plan for deployment?  Supported .dmg or just .zip?

AFAIK, it's currently a .dmg for the developer-focused command-line development package (.jdk bundle in /Library/Java/JavaVirtualMachines).

> 5) What is the strategy for auto-update?  Supported independently or
>   through Apple OS updates?

Apple will not update Java provided by Oracle (Java SE 7 or greater).

Last I was involved in the discussions, the plan was for apps that embed Java to update it on their own schedule. The applet plug-in, as a concrete example of this, will have it's own auto-update mechanism, and will only update the .jre that is private to it's own bundle.

Regards,
Mike Swingler
Apple Inc.



More information about the macosx-port-dev mailing list