Java 7 for Mac OSX
gregg at wonderly.org
Tue Feb 21 16:37:45 PST 2012
On 2/21/2012 4:08 PM, Richard Bair wrote:
>>> Having the appropriate JRE installed for users to run my Java software, is also a big deal for me. If we really do need to ship the "appropriate" JRE with every application, then it seems like we need to turn the whole compilation process upside down, and remove the JIT, and just have a complete native application built, instead of a jar. All of the dynamic binding properties of Java, allow me, as a developer, to let you guys, the providers of Java, fix your issues, independent of me.
>> That is an extreme oversimplification of the facts of real software development.
>> When it comes time for you to test your app, you only test against the version of Java you have, not future ones that don't exist yet. For your app's behavior to remain stable, the platforms it rests upon must be stable as well. Bundling your own JRE is the _only_ way to ensure that stability, and enable your app to be deployed as simply and as widely as possible on the Mac. This is also true on other platforms, but since deployment other platform is not as simple as dropping a single bundle onto the filesystem, this fact is shrouded by installers, scripts, registries, and other voodoo end users don't understand.
> I completely agree with Mike on this. A *huge* (I would say, central) reason why Java deployment is chronically struggling is related to installed JREs and incompatibilities from one release to the next. In addition, every single time we fix a bug with a semantic side effect, somebody out there is going to be broken. As an application developer, I would never, ever, release software without tying it to exactly a specific version of the JRE. I would never rely on Java being preinstalled, in any circumstance. It is guaranteed to break at some unspecified time in the future.
I guess I've always written Java with a different goal in mind. For me, I've
never had any issues with portability between Java SE releases. For years, I've
used the same Jar files with the same apps in them across multiple Java releases
and never had any problems. I've done Jini based applications that work just
fine. I've done extensive Swing based applications that work just fine. I use
the same javax.comm distribution for windows from Java 1.2 days and it still
continues to function just fine on windows.
I've only recently (3 years or so) been developing on the Mac, but still, the
same Java Jar files sitting on my desktop can be double clicked, and they just
work. Granted, when I came to the Mac, I needed to set the system property to
get the menubar to work correctly on the Mac (what's up with that anyway?)
Over the years, the ONLY java portability issues I've had, are bugs revealed by
hardware changes related to concurrency. Everything else, has just worked!
Okay, when I had to switch from the old AWT event model to the new one, things
were not portable and coding and testing was required. But, that is absolutely
the last time I had to "maintain" a Java application across releases.
Sun learned a hard lesson in Java 1.2. But after that, they paid attention and
made the write once, run anywhere work.
More information about the macosx-port-dev