SoyLatte is a functional, X11-based port of the FreeBSD Java 1.6 patchset to Mac OS X Intel machines. SoyLatte is initially focused on supporting Java 6 development; however, the long-term view far more captivating: open development of Java 7 for Mac OS X, with a release available in concert with the official Sun release, supported on all recent versions of Mac OS X.
The name "SoyLatte" was chosen to clearly differentiate from Sun's trademarks (Red Hat already claimed IcedTea, and I drank a lot of double soy lattes while working on this. (I think it's funny)
The work is being done as a part of the FreeBSD Java project, with changes being pushed upstream to the FreeBSD code base as the port progresses. Coordination with OpenJDK is also progressing. SoyLatte is a staging ground for the Mac OS X port -- it is not intended to be a fork. For more information on licensing, and the project's relationship with FreeBSD and OpenJDK, please see the licensing section below.
Contact information: landonf (at) bikemonkey (dot) org.
You must be a licensee in good standing under the Java Research License. To ensure compliance, downloading requires authentication:
The current release tag is jdk6_1.0.2
By downloading these binaries or source code, you certify that you are a Licensee in good standing under the Java Research License of the Java 2 SDK, and that your access, use, and distribution of code and information you may obtain at this site is subject to the License. Please review the license at http://java.net/jrl.csp.
Binaries are available for Mac OS X 10.4 and 10.5. The soylatte directory can be placed anywhere on your system -- I chose /usr/local/soylatte16-amd64. Like other Java platforms, setting the JAVA_HOME and PATH environmental variables to point at this location will work as expected.
To provide a JRL "click-through" agreement, authentication is required to download these binaries. Username 'jrl', Password 'I am a Licensee in good standing'.
SoyLatte is based on the BSD Port of Sun's Java 6 JDK, and is made available under the Java Research License. JDK and Java are trademarks of Sun. While SoyLatte is a port of Java, it is not Sun's Java, JDK, or OpenJDK. SoyLatte is made available under the JRL. For further information on licensing, see the licensing section below.
By downloading these binaries or source code, you certify that you are a Licensee in good standing under the Java Research License of the Java 2 SDK, and that your access, use, and distribution of code and information you may obtain at this site is subject to the License. Please review the license at http://java.net/jrl.csp.
Due to bugs in 10.4's compiler, building the sources currently requires a Mac OS X 10.5 machine.
OpenMotif is the only required dependency. I installed OpenMotif using MacPorts -- if you install it using Fink, or manually, you must modify the ALT_MOTIF_DIR build setting.
To build the 32-bit JDK:
cd control/make make ALT_BOOTDIR=/System/Library/Frameworks/JavaVM.framework/Home \ ALT_MOTIF_DIR=/opt/local SYS_CFLAGS="" LANG="C" JAVA_HOME="" CLASSPATH="" \ LD_LIBRARY_PATH="" MAKEFLAGS="" SKIP_COMPARE_IMAGES="YES" \ BUILD_DEPLOY="false" ALT_DEVTOOLS_PATH=/usr ALT_CUPS_HEADERS_PATH=/usr/include \ HOTSPOT_BUILD_JOBS=1 PARALLEL_BUILD_JOBS=1
The following additional make options are available:
To target Tiger, set the MACOSX_DEPLOYMENT_TARGET environmental variable to "10.4", and pass DARWIN_SDK=/Developer/SDKs/MacOSX10.4u.sdk as a make flag.
To install, place the jdk directory anywhere on your file system. I chose /usr/local/soylatte16-amd64
To use the new JDK with tools like Apache Ant, set the JAVA_HOME environment variable to the full path of your soylatte installation (eg, /usr/local/soylatte16-amd64).
To ensure that the Soylatte binaries are preferred over the system's 1.5 installation, add the installation directory to your PATH (eg, export PATH=/usr/local/soylatte16-amd64/bin:$PATH)
SoyLatte can be added as an Apple JVM to your Eclipse configuration. There may be some issues with this work around, see Michael Allman's patch to allow "Standard VMs", attached to Eclipse Bug 211648
On Mac OS X, Netbeans expects all JVMs to be located in the /System/Library/Frameworks/JavaVM.framework directory. Users have reported success in symlinking /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home to the SoyLatte directory.
The latest source is always available via Mercurial. If you'd like to contribute, here's the current list of TODO items. This list may not be complete, and if there's something that should be on it, but isn't, let me know:
Due to the complexity of licensing (1.6 JRL, FreeBSD JDL, OpenJDK GPLv2 + ClassPath Exception), and Sun's Contributor Agreement Requirement, contributors following:
This is inconvienent, but I don't want to see valuable work dropped on the floor because of licensing concerns. I'm not a lawyer, and license complexity makes me sad, so if you have a better solution, please let me know.
The Mac OS X work is based entirely on the BSD Java port, which is licensed under the JRL. The BSDs develop Java under the JRL; FreeBSD has negotiated a license with Sun to distribute FreeBSD Java binaries based on the JRL sources.
As the Mac port stabilizes, I am merging my work upstream into the BSD port, and in turn, it is a goal of the FreeBSD Java project to merge their work into OpenJDK. I've signed a Sun Contributor Agreement in preparation for this, and an OpenJDK Porters group has been proposed
While the JRL makes this initial port possible, OpenJDK's GPLv2+CE licensing makes development and distribution far simpler. I hope to contribute this work to OpenJDK as soon as is feasible.