Apple Deprecates Their JVM 451
Mortimer.CA writes "In some recent release notes Apple has deprecated their JVM: 'As of the release of Java for Mac OS X 10.6 Update 3, the version of Java that is ported by Apple, and that ships with Mac OS X, is deprecated.' In the past Sun (now Oracle) has always let Apple do this: 'Apple Computer supplies their own version of Java. Use the Software Update feature (available on the Apple menu) to check that you have the most up-to-date version of Java for your Mac.' I wonder how much heads-up Oracle was given for this change, and if the Java team has any code ready to go, or whether they'll have to ramp up porting for Mac OS 10.7 (aka 'Lion')."
Patents (usually) wouldn't worry Apple (Score:4, Informative)
Oracle's patent moves probably didn't help, but Apple's normally not a company to be afraid of software patents - they have a big enough portfolio of their own.
http://en.swpat.org/wiki/Java_and_patents [swpat.org]
(Phone patents are another beast - they're held by companies that Apple often doesn't have as long a history of dealing with and they don't yet have patent non-aggression pacts)
Re:Mac as ultimate dev machine no more? (Score:3, Informative)
In the past I've heard macs referred to as the ultimate developer's machine, with a full UNIX, all the gnu tools, a nice UI (with X if you need it), and nicely integrated laptop hardware. But Java is still one of the top languages on the planet, so if Apple really stops keeping it up to date that could put a nail in that coffin. Heck, I'm pretty sure the Apple Store has a big pile of Java back there...
The Linux foundation doesn't develop a Linux JVM.
Microsoft's JVM was awful and incompatible.
Both those platforms are still widely used for Java development and deployment, in spite of depending on a third-party JVM.
Re:Mac as ultimate dev machine no more? (Score:3, Informative)
UNIX is a specification, not an implementation. Mac OS X 10.5 onwards on Intel are UNIX 03 certified /pedantic
Re:I'm curious... (Score:4, Informative)
In short, Microsoft feared and sought to impede the development of network effects that cross-platform technology like Netscape Navigator and Java might enjoy and use to challenge Microsoft's monopoly. Another internal Microsoft document indicates that the plan was not simply to blunt Java/browser cross-platform momentum, but to destroy the cross-platform threat entirely, with the "Strategic Objective" described as to "Kill cross-platform Java by grow[ing] the polluted Java market."
More... [wikipedia.org]
Re:Mac as ultimate dev machine no more? (Score:5, Informative)
MacOS is actually based on the mach kernel, and not UNIX. /pedantic
Mac OS X is actually based on the mach kernel, which, along with OS X's userland is a certified implementation of UNIX. /pedantic
Java banned from the Mac App store... (Score:5, Informative)
From the Mac App Store guidelines:
2.24
Apps that use deprecated or optionally installed technologies (e.g., Java, Rosetta) will be rejected
Re:So they are dropping another tech (Score:4, Informative)
Other media players will probably support HTTP Live Streaming in a couple months. It's not like it's a proprietary format or anything- it's just a continuously updating MPEG-2 file sitting on a server. Quicktime continuously checks that file for updates and downloads just the new parts when they get uploaded. I'd rather they use that than Adobe's proprietary streaming format or Real's proprietary streaming format.
Re:Plenty of heads up. (Score:5, Informative)
Re:Question (Score:2, Informative)
Re:I thought JAVA was supposed to be crossplatform (Score:4, Informative)
Binaries for the JVM are cross platform. The JVM itself is written for the platform. If you write a Java application and compile it on Windows, the compiled version will run on a JVM on Mac. But the Windows JVM will not run on a Mac.
Re:I thought JAVA was supposed to be crossplatform (Score:2, Informative)
Java applications are supposed to be cross-platform, but the runtime environment has to be written for the host platform. It's not pure Java that's accessing files on the OS filesystem, opening sockets, painting dialog boxes on the screen, etc.
Re:I thought JAVA was supposed to be crossplatform (Score:4, Informative)
Java is crossplatform in the sense that you should be able to run your java app* on any system with a compliant java implementation but someone still has to provide that implementation of java built on whatever interfaces the OS provides.
Currently on the mac (unlike with windows and linux) apple provides the java implementation based on code licensed from sun (now oracle). If apple stops updating thier java implementation and doesn't either release the code or at least push it upstream to oracle then either java on the mac becomes ever more outdated or someone else redoes the porting.
* provided the app is pure java and written properly.
Re:Mac as ultimate dev machine no more? (Score:2, Informative)
The Linux foundation doesn't develop a Linux JVM. Microsoft's JVM was awful and incompatible.
Both those platforms are still widely used for Java development and deployment, in spite of depending on a third-party JVM.
I distinctly remember Microsofts JVM being faster and more stable than the alternatives (Suns own port), but had Windows only extensions which meant if you wrote for it your app wasnt portable elsewhere - to say it was awful is a bit of a lie, but you are right on the incompatible side.
Re:Holes in the API coverage of 100% Pure Java (Score:1, Informative)
Why wouldn't a peripheral require a driver? If the physical machine doesn't know about a device, why would a virtual machine hosted on it be aware?
Re:Plenty of heads up. (Score:5, Informative)
Right, but Apple does ship versions of Python and Ruby that can access their Cocoa libraries. Apple would rather all developers use Objective-C, but that's just a way of ensuring that developers use Cocoa. Using Cocoa is what they're really after, technically speaking, because their real goal is for all Mac applications to use the same toolkit, look nice and behave like other Mac applications.
I promise you Apple doesn't care if Swing applications look similar to Mac applications since they won't behave like Mac apps due to not running through Cocoa. I bet Apple would be happy if those apps just never ran on OS X. But they have in the past provided a way of using Cocoa through Java. Apparently the Mac Java developer community had enough of a clue to realize that using Cocoa is a great way to restrict your app to one platform and miss the whole point of using Java in the first place.
Apple's special JVM was really just a way of trying to sneak Java developers into Cocoa, but it never really worked, so at this point, it's probably in Apple's best interest to just provide a stock JVM so people who really want to use Java can and let Oracle worry about whether or not Swing apps look like Mac apps. In general, Swing app usability is damning enough that Apple can just leave well enough alone and their customers will want Cocoa apps or Swing apps that have been engineered to look and behave a lot like Cocoa apps anyway.
Re:Plenty of heads up. (Score:5, Informative)
NeXT jumped on the Java bandwagon early on, porting their flagship WebObjects framework from Objective-C to Java. When Steve returned to Apple, he planned to make Java a first-class citizen of OS X. The Apple JRE had a number of enhancements over the stock one. For example, it shared classes between JVM instances, a feature that didn't appear in the Sun JRE for a few years. It also included a lot of stuff for native integration - you could make the menu bar sit at the top of the screen from Swing apps, just like a proper Mac App and use the standard Mac keyboard shortcuts, for example.
They also shipped an Objective-C to Java bridge. You could call the Cocoa APIs directly from Java programs with some low-level automatic translation letting you use Java strings and arrays instead of NSString and NSArray, for example. This was deprecated some time around 10.2 or 10.3 (I can't remember - Wikipedia probably can), largely because no one was using it. New Cocoa APIs were not added to the bridge.
The idea that Java would be one of the dominant languages for OS X development died five years ago. Apple has only continued to invest money in their JRE to help sell XServes running OS X Server and running WebObjects. I'd imagine this market is now so small that it's no longer worth bothering with.
Re:Plenty of heads up. (Score:4, Informative)
Re:So they are dropping another tech (Score:3, Informative)
Funny story: in order to watch Apple's live stream of the "Back to the Mac" event yesterday, I had use my 1st gen iPod touch. This despite the fact that i have a macbook sitting on the same network. Why? because it required Snow Leopard to stream. Their 2 year old general purpose operating system can't "handle" the stream but their 4 year old mp3 player can? Yeah Apple cares so much about its "real" OS
Re:Holes in the API coverage of 100% Pure Java (Score:5, Informative)
Why wouldn't a peripheral require a driver?
The driver is already present on the machine and available to native code, yet the Java virtual machine is not aware of it.
Re:So they are dropping another tech (Score:3, Informative)
(Quoted a larger section of the GP post to make a point)
Where did the GP confuse Java and JavaScript? The GP is making the statement that Apple considers Java (desktop apps) "old tech" and that they are pushing HTML5/JavaScript.
Apple makes a server OS, but afaik, the percentage of that market is even more minuscule than their share of the desktop market is. Web Servers are dominated by Linux and Windows (with the percentages of each varying wildly depending on whose stats you're reading), which combined control at least 90% of the market regardless of which survey you believe... and in Netcraft's 2009 survey, the only one where OSX is enumated, it is counted as part of the 3.45% of "Other non-UNIX" OSes.
What Apple thinks and does is irrelevant to the server market.
Re:So they are dropping another tech (Score:2, Informative)
I don't know about Real, but Adobe (Flash) uses common video codecs, such as H.264.
Re:What about servers? (Score:4, Informative)
Slashdot briefly seemed to have forced everybody to the "Dynamic Discussion" mode this morning. I went to my account settings, turned it off, and it still showed up as on. Then a half hour later, I went back to Slashdot and everything seems to be working with the classic interface again.
Anyway, it seems to have been a glitch in the matrix and all is back to normal now. An interface that only shows score-5 comments and makes you click 100 times to see more comments is just horrible. I hope that's not what "dynamic discussion" mode is. Ugh.
Re:Plenty of heads up. (Score:4, Informative)
The problem with this assumption is that Apple does not seem to have realized that a load of developers especially in the java land use OSX for java server side development
Irrelevant. Those people can still use the Oracle JDK / JRE on their Macs. Most will probably prefer to, because they will no longer have the delay between Sun releasing a new version of Java and Apple porting their changes.
Re:Plenty of heads up. (Score:3, Informative)
Did you actually read the second link? He's saying it doesn't make sense to implement anything in Java with GCD, although it might potentially make sense for some 1.7 extensions to be designed to use it.
GCD implements an N:M threading model for C. The JVM implements an N:M threading model for Java, but with different semantics (more preemption points - GCD only has them between blocks, which gives a different throughput-to-latency trade). Implementing one in terms of the other does not make sense. It is marginally possible that the JVM could use some of the pthread_workqueue_* system calls to manage the Java thread to OS thread mapping, but probably not worth the effort.
Re:So they are dropping another tech (Score:2, Informative)
Actually, it's already supported. I watched the Apple presentation yesterday with:
curl $(for all in $(seq -w 1 9999); do echo http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/0640/064$all.ts; done) -o - | mplayer -
The problem is not that they use the very simple HTTP Live Streaming, that's great. The problem is that their Javascript code refuse to recognize any non-Safari browser for video. Even when they use the HTML5 with H264: Google Chrome supports that (not Chromium), but Apple JS code refuse to give you a tag. Instead, they ask you to install Quicktime (good luck on Linux).
That's the problem.
Re:Mac as ultimate dev machine no more? (Score:3, Informative)
The BSD-port [java.net] of OpenJDK already run on OS X. I don't know if they support using Cocoa yet but their mailing list would probably be a nice place to start looking for others that are interested in working on Cocoa support in OpenJDK.
Re:Plenty of heads up. (Score:1, Informative)
Got a download link for "can still use the Oracle JDK / JRE on their Macs?"