My guess is that there is some sort of Oracle licensing agreement that prevents Apple from distributing Java with the release. You'd think that these two massive public companies would be able to work something out
This is pure unfounded speculation.
In reality Apple probably wanted to make the Lion base install leaner.
Many components are are now simply loaded and installed on demand. Like for example also extra voices for text2speech.
After a decade of shipping Java on the Mac and tricking old apps that hardcode paths to the 1.3.1 JVM, or putting in class loader hacks to fake out Xerces XML classes that were moved in 1.5.0, we are ready to try something different.
What you loose in a per-app embedded model is shared memory mapping of the native libraries and .jar files, but this is the same problem as a half dozen apps embedding (often different) versions of the Sparkle.framework to do app self-updates. The cost of the JVM heap is still the same, and class-sharing was never ported to 64-bit by Sun, so that optimization hasn't been around for a long time on Macs.
Long-term, we recommend that app developers who use the JavaApplicationStub should transition to embedding the Java runtime within their own app. We are working with Oracle on the OpenJDK project to provide an open source version of JDK7 that can be embedded, and several developers have already started deploying their apps with an embedded JDK7 (but it requires many manual steps right now).
Stuff like this needs to be called out. These days, some blogger speculates on a reason for something and every technology news site is reporting it as fact.
Agreed. This was announced 8 months ago and widely covered by the tech media. It's just irresponsible reporting if people are covering this story and don't know the reasons why.
The thing that annoys me is that people always thing the worst when something happens in Apple land. Most of the times things happen because they simply make sense.
That's absolutely right. The problem is just that not everything that makes sense for Apple's bottom line makes sense for mine.
For instance, deleting everything from my iPod without warning probably made sense for Apple's copyright negatiations with media companies. It didn't make much sense to me. Censoring dictonaries and banning everything sexual, satirical, political or otherwise "unclean" from the app store probably makes sense for Apple. Makes no sense to me.
So, I guess, the issue I have with the phrase "making sense" is that it obfiuscates the fact that everyone has their own vested interests and the vested interests of a particular large corporation are sometimes very different from mine.
"the vested interests of a particular large corporation are sometimes very different from mine."
Couldn't agree more! Especially when it comes to large corporations where you are a product being sold to advertisers, they're even worse than large corporations that accept money from you in return for goods and services.
I wouldn't say one is necessarily worse than the other. It's more that my interests overlap and disagree with either of them in different areas.
Ad driven companies have an incentive to spy on me and I have to defend against that. On the other hand, they have to be pretty agnostic when it comes to the type of content they enable and that gives me free and anonymous access to pretty much anything I want.
They certainly do – probably not for Apple but certainly for consumers. Apple currently only distributes Lion digitally. You can get it on a thumb drive in two months or so but it will cost you more than twice as much as the download. Apple wants consumers to download Lion.
3.7 GB (that’s the size of the download) are still a lot and keeping the size of downloads as small as possible is certainly a valid goal.
I think Apple shaved off about one GB or so compared to what they pressed on DVDs and that’s certainly noticeable for many people. My parents’ house (in Germany) has this really awful DSL connection, more than 4,000 kbit/s are just not possible. Having to download 1 GB less would save them over thirty minutes. (Downloading merely 3.7 GB would take them over two hours.)
Making stuff only few people use optional is still a great idea when you want people to download it. Not everyone has FIOS.
IIRC The 3.7 Lion install is down from the 4.7 Snow Leopard install, which was the result of a crash diet that Leopard was put on, I believe, bringing it down from around 7GB originally.
Apple's been squeezing out the bloat for several years, I believe, with the intention of doing digital downloads of OS in the future.
This implies the Mac App Store has been in the planning stages since around 2007-2008 or so (when Snow Leopard development likely started.)
If I remember correctly, in Tiger the default install included a few gigabytes of printer drivers that were removed and downloaded on demand in later versions. The OS itself has remained fairly constant in size.
My parents’ problem is more that those 4M are the limit for the house, their DSL line just isn’t any faster. The connection also seems somewhat flaky (this might be an illusion, though). My parents must be really far away from the next DSLAM, close to the limit of what’s possible.
It’s certainly noticeable, there are really annoying slowdowns when someone watches a YouTube video and someone else tries to browse the web. The problem is probably that in my parents’ house the internet connection is often used by more than one person. When I’m downloading something I can sort of deal with a video that takes longer to load, but when someone else causes my video to take longer to load, well that’s annoying.
If we are talking about 4Mb/s, then yes, that's at least half of the slowest speeds you'd expect nowadays. The cheapest package my ISP offers is 10Mb/s, with the average priced one being 30Mb/s.
But that's cable, right? DSL is different; 15Mbps seems to be the high end of DSL connectivity. But, unlike with cable, you are not sharing that bandwidth with everyone else on your block: it's all yours. Hence, it's advantageous on occasion.
Yes, I think it matters -- some extra megs here, some extra bandwidth there, some ugliness that few people notice -- and pretty soon you end up with Adobe Acrobat.
There's a reason people felt in love with everything Apple does: they took attention to details at heights nobody in this industry did.
But I also think a couple hundred megs of data is not the only reason -- but more to do with wanting to cut dependencies to other companies (Apple does that frequently). Once upon a time Java was one of the preferred methods for writing Mac OS apps: Apple clearly doesn't want that anymore.
>Once upon a time Java was one of the preferred methods for writing Mac OS apps: Apple clearly doesn't want that anymore.
Apple just doesn't see enough benefit in continuing their own JVM development. The primary reason that Java was the preferred method was purely because of the portable nature of Java code, and the fact that Mac OS9 and OSX didn't really have enough marketshare to make full ports feasible. Since OSX has a fairly decent marketshare at this point, it's an easier argument to make a native port over multiplatform, portable code like Java.
One of the issues with Java on OSX was that, most of the time, you couldn't actually code to the latest version of Java, because Apple was months(or even years) behind on implementing new JVM and Java language specs.
It took Apple about a year and a half to update their JVM to 1.6 after that was released. Here's a timeline for Apple's historical Java releases:
I think Apple should seriously consider looking into removing other obscure things as well. Their process of downloading optional stuff is very slick and painless.
After launching Minecraft (which needs Java) I had to confirm one dialog box. Java downloaded, installed and Minecraft launched. No user interaction required, it was completely painless.
I’m not sure why you are so hung up on Java. It’s certainly obscure enough to make it optional. Languages could certainly also be removed but OS X always had this philosophy of shipping every app and every OS with every language. There are no language versions of apps and Apple doesn’t like them.
You may not use them, but not everyone speaks english. Plus, I suspect that those were one of the things that got removed and that get pulled down at install time if needed.
Bandwidth is not the only consideration. Apple sells MacBook air's with a single 64GB 'disk'. On such a system, users will notice a difference if you manage to save 'a couple hundred megs' a few times.
Even if that were true, the price of Apple's early adoption is that they have to support it for four years. (Just like they supported 32-bit x86 for years even though they only used it for a short time.)
I Spotlighted for Java Preferences and when I started it I was told that Java will be downloaded. After Lion downloaded and installed Java the Java Preferences started.
IntelliJ et al works as expected.
You don't need to do these manual step the article suggests(for running Java apps). (See comment below when you need to do these steps)
The steps for symlink'ing are totally necessary in order to get click through JDK source code in Eclipse. Of course, it could be argued that Eclipse needs to be fixed to automatically look in the new location, but that location changes for every update and isn't technically 'JAVA_HOME'.
The developer package you download from connect.apple.com is a full JDK in its own right, there's no need to link the sources to the JRE under /System. You just need to let Eclipse know that there's a new JDK in '/Library/Java/JavaVirtualMachines/' and make that the default in your Eclipse execution environment settings for 1.6; all your projects for that environment will pick up the new JDK along with the sources and docs. I link the specific JDK to 'latest' under the JavaVirtualMachines' and use that in Eclipse; that way I can just recreate the symlink after upgrading to a newer JDK and my IDE doesn't have to care.
Well yes, but there's a big usability difference between:
"Finder used to know how to handle this file but now it doesn't. Please select the application to use for this type of file."
and
"This requires the Java runtime which isn't installed. Hit this button and we'll download it, install it, and then re-open this for you once it's working."
We have known this was coming for many months now - why is anyone surprised?
The support will revert to JVM vendors where it belongs.
Personally I think it is a good thing - we will get JVM versions much faster than Apple supplied them.
It isn't about being surprised. Apple is still supplying the JVM. At my company, some IT guy sends out an email saying 'don't install Lion cause Java isn't installed and it breaks Network Connect'. It is this kind of unnecessary confusion which doesn't help anyone. My blog post is simply telling people how they can fix their stuff after Apple decides to make things difficult and confusing for people.
When I first launched Xcode after installing Lion, a dialog popped up saying I would need to install Java and relaunch, and gave me a button to press that would do that for me. It worked exactly as advertised -- literally one mouse click. Not at all difficult or confusing, and in fact simpler than the command-line approach your post describes. Other folks I've talked to had the exact same thing happen with apps like Photoshop and Java-dependent games: just one click. Was your experience different?
I didn't find opening up Terminal.app and typing 'java' difficult or confusing either. The rest of the blog post (with the symlinks) is about telling Eclipse where to find the source code.
That said, I think that it sure would be nice if my OS already came with Java. But I use Java every day, so maybe I'm biased.
For those of you who are worried about Apple needing to spend a few of the billions of dollars it has in the bank on paying a couple engineers to maintain security patches, it doesn't have to be the Apple or Oracle one either. OpenJDK would be fine.
Apple was the only vendor that took up Sun's original model of java where each vendor tailored the JVM to their situation. Look at what Microsoft did with that compared to Apple.
I'm a bigger fan of having Oracle deal with the porting since they have a much larger interest in getting java working everywhere well and securely than Apple has in keeping java working on their platform.
It makes sense for Apple to not bundle any extraneous, non-core stuff like the JVM/Ruby/Python runtimes with the OS and let people download and install things on demand from their preferred source. Microsoft has always done it this way.
The problem in the JVM's case is that Apple made some intricate changes to the JVM to better integrate with OS X / Cocoa - like the look and feel and other integration stuff. A JVM with default Swing implementation on a Mac, without these changes, would have never been used at all - it just doesn't go with a Mac.
These changes are not going to be Open Sourced and the required OS level support for these changes is going to be deprecated. Which means whatever solution OpenJDK comes up with is likely going to be at the level of 'bare minimum' - enough to run server side apps and stuff and may be some horrible looking alien Swing Apps based on X11 or something.
There's the hold up I think - they need to come up with open source reimplementation of the integration bits without needing any OS/framework level hacks and that ain't no easy task!
Actually, Apple and Oracle made it clear that Oracle is going to get Apple's changes and integrate them into the JDK.
You could argue that they didn't specify which ones, or make some interpretations of the vague statements involved, but let's all wait until it happens and then judge, eh?
I am generally not the one to speculate or judge - I remember reading something to that effect on I think - Apple mailing list - although I can't find it right away. Take a look at Gosling's post on the subject as well - http://nighthacks.com/roller/jag/entry/steve_jobs_comments_o...
It makes sense for Apple to not bundle any extraneous, non-core stuff like the JVM/Ruby/Python runtimes with the OS and let people download and install things on demand from their preferred source.
Read the article. The news (for people who weren't in the Lion beta program) is that if you open up a Terminal prompt and type 'java', it will automatically install Java for you.
So, it's not really deprecated anymore. In fact, Java was updated a few times during the beta process.
They never called it "deprecated" — they said it was an optional install in 10.7 and would no longer receive the same level of support. They gave Rosetta the same treatment in 10.6. It's gone now. All signs point to this being a grace period for Java devs to figure something else out.
It's always best to qualify your statements with "... that I'm aware of." ;)
Straight from the horse's mouth:
As of the release of Java for Mac OS X 10.6 Update 3, the Java runtime ported by Apple and that ships with Mac OS X is deprecated. Developers should not rely on the Apple-supplied Java runtime being present in future versions of Mac OS X.
The Java runtime shipping in Mac OS X 10.6 Snow Leopard, and Mac OS X 10.5 Leopard, will continue to be supported and maintained through the standard support cycles of those products.
I see it as fairly unnecessary to qualify things that way, because it's implied in any statement of fact that we're speaking according to our knowledge. I'd never write "according to your knowledge."
At any rate, this is still not a reversal of any stance. Apple never said it would not ship a Java runtime for Lion (and iirc it has been this way in Lion for a long time), and it still isn't recommended that developers depend on this.
I was just responding to your erroneous correction that Apple never said it was "deprecated", when in fact they explicitly said so. :)
Even our Apple rep said it was deprecated and he sure as heck doesn't read Developer notes, so I'd have to assume he got the news through some other chain at Apple.
Perhaps other orgs were protesting as loudly as our org was.
Unless I missed a subsequent announcement, this was a silent change of policy — my understanding from their earlier announcement had been that you'd have to get a JRE from Oracle directly. Which gave me a bit of a scare when I realized my VPN software relied on Java and I hadn't seen any announcement from Oracle of a downloadable JRE. Happily, the first time I tried to connect, Lion popped up a window asking if I wanted to install Java; I said yes, and a few minutes later, everything worked as it always had.
Apple has gone to the same general distribution scheme for Java as they've implemented for themselves with Lion, Xcode, and many other pieces. Download it when you need it, and download the newest bits. (The Java download is certainly not as integrated as the Mac App Store stuff, but then the Xcode download that is in the Mac App Store is also a little weird, too. Download on demand, or whatever you want to call it.)
What's more interesting (to me) is the remote satellite boot that's now feasible during Lion recovery (where your Mac can boot off software loaded from Apple's servers via the Internet), and additions such as the ability to perform a recovery boot that can go as far as to launch Safari and get to the Internet to access services or to research whatever has caused me to be in the recovery path.
This certainly looks to be an operating system that's moving out onto the web/cloud/Internet.
I recalled there was an internal Apple support stat showing that the two major sources of security holes on Mac OS X are Flash and Java. Apple has to maintain its own JVM stack, which is basically nightmare for a company with so few head counts compared to its product volume. The majority of OS X users won't ever use Java in their life time. Seems a really good idea not to bundle it.
That was years ago. Practically no one has ever written pleasant Java-based consumer-facing applications running on OS X. Then iOS and OS X attracted a lot of native app developers using Xcode/Obj-C, and it paved the end of pre-installed Java on OS X.
Not included anymore; you have to install it from adobe.com. They'd already switched to that on their hardware (at least on the storage-constrained MacBook Air… others too, though, I think) a few months back.
Well no, you posted a linkbait title and that tends to drive people to click. (Even HN readers like sensationalism.) You have to admit the title is a bit dishonest: the answer is "No, they do not remove Java."
Nobody thinks the removal of Flash's hardware acceleration and now Java are somehow related? My guess is they don't want to support technologies that are "helping" Android.
They said (or someone important on a Apple-related mailing list) that they were wanting people to focus on making ObjC/Cocoa apps, not flash or java, certainly not ppc or carbon. It's a slow timeline that predates Android.
This is pure unfounded speculation.
In reality Apple probably wanted to make the Lion base install leaner.
Many components are are now simply loaded and installed on demand. Like for example also extra voices for text2speech.