Apple Deprecates Their JVM
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')."
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
(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)
Expert in software patents or patent law? Contribute to the ESP wiki!
So they have dropped default support for flash, then java, now they just launched their app store.
This is really starting to look more and more like the iphone. I just hope they don't start dropping multitasking and third party software sources.
As long as users are able to install non-appstore apps, install flash and install java, I'm fine with it.
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...
E pluribus unum
This seems like a similar move to the obsoleting of Flash. Cross platform app development was useful when Apple was struggling to compete. Now Apple doesn't see any particular need for cross platform apps, because the breadth of app types is already covered by native Cocoa apps. They won't exclude Java in the way that they excluded Flash on the iPhone. But there's no need for them to spend development time on bundling it with the OS.
This means that the Apple-produced runtime will not be maintained at the same level, and may be removed from future versions of Mac OS X.
Obvious reason: people aren't using the Apple-produced runtime in Mac Applications?
Applications developed in Objective-C / Cocoa are more specific to the OS X platform, providing Apple a competitive advantage when developers build their apps using Cocoa, instead of something portable like Java.
Not in Apple's best interest for Mac apps to be developed using Java.
Not only can they be run on other platforms, but Java-based apps may not conform to Apple UI design guidelines
tell apple they dont get java if they dont use a standard installer.
They don't need to create an Installer, they need to create an entire port to a new operating system. The low-level threading and memory management, the GUI.. who wants their Java apps to be running under X11 on Mac?
- jon
Ganymede, a GPL'ed metadirectory for UNIX
Really? I mean doesn't that seem a little extreme, shouldn't it still work pretty close to the previous versions of OS X? Seriously just asking,
Not all life is cyber. Extra Income
I don't see much use of Java on the desktop these days (aside from a few specific applications), but I certainly see it used a lot in server environments. I suppose Apple will also apply this to OS X server? So if you want an Apple server you can't run the applications you've been running up to this point? They're going to shrink their already small server share.
Also, Slashdot, I set this account to use the "classic" interface, why are you making me click buttons to see comments now?! I just want to see the page, not have to keep clicking "show more". This comment entry box is terrible too, the "Reply" button is too close to the box itself.
The right to protest the State is more sacred than the State.
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...
thing is apple did the first port, not SUN. I don't think that apple will graciously give there JRE code-base to oracle.
Jehovah be praised, Oracle was not selected
We have rather a lot of internally-developed applications in Java, and some of them are substantial. Since there's not a hope in hell of us porting millions of lines of Java code to Objective-C, no matter how much Apple spins things, should we be considering saying in future that Apple hardware is no longer a supported platform and that all users will have to migrate to Linux or Windows on their desktops and laptops instead? (While it is possible to use Apple hardware to run non-OSX, there's no real point in buying it specially for the purpose of running non-OSX when other hardware with a lower price premium will do a perfectly adequate job of it.)
Mind you, adequate availability of a JVM for the platform from another vendor (e.g., Oracle) could well be an acceptable solution. It's just a shame that the announcement is not clearer in this respect. But then it's not exactly like Apple are very good at providing proper support for developers who aren't targeting Jobs's latest platform du jour.
"Little does he know, but there is no 'I' in 'Idiot'!"
From the Mac App Store guidelines:
2.24
Apps that use deprecated or optionally installed technologies (e.g., Java, Rosetta) will be rejected
This space for rent.
From the Mac App Store guidelines:
2.24
Apps that use deprecated or optionally installed technologies (e.g., Java, Rosetta) will be rejected
Looks like you're right.
This space for rent.
Java on the Mac have always been maintained by Apple, they licensed it about fifteen years ago from Sun. There has never been a Sun Java for Macs. I don't know how much code is going back to Sun/Oracle but in worst case that may be nothing at all. The main problem is that Java by itself has no support for things like the Mac Aqua UI, that's all additions made by Apple. In the late 90's when the Mac wasn't going well Apple decided to license Java and fix those things since Sun wasn't likely to put much time and effort on it. It's actually really good and well done.
Apple did it with Suns approval and they didn't make changes that made it incompatible.
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.
Go green: turn off your refrigerator.
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.
You might want to go read up on Grand Central Dispatch.
There are two types of people in the world: Those who crave closure
Apple isn't going to 'stop supporting Java'.
Actually, if the JVM goes back to being a 3rd party system on OS X, which it seems like it will, this is exactly what they've done.
I don't think they will because I believe that Apple would rather developers use Objective-C over Java for OSX development for the very same reasons they would rather developers use Objective-C over Flash for iOS development.
Avantslash - View Slashdot cleanly on your mobile phone.
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.
note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
However, if they pull through an App Store for the Mac, which doesn't even have the "it's on a Phone" excuse, they will have effectively succeeded in solving the 20+ year old problem of how to actually sell "shareware" aka "Free/Premium".
My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
I believe that Apple would rather developers use Objective-C over Java for OSX development
Then does Apple plan to provide a tool to automatically translate the back-end of an existing application written in Java into Objective-C so that it can be used as a first-class citizen on Mac OS X 10.7?
The $64,000 question is whether Oracle will now start offering a Java download for OS X - if so, then the Mac will have the same status as other platforms, where you get your Java VM from Oracle. Since Apple's Java releases have tended to lag quite a way behind Sun in the past that might not be a bad thing (although the downside is that the horrible Java auto-updater might make an appearance).
OTOH, if Jobs is really determined to turn the Mac into an oversized iPad that can only run native software then, yes, there will have to be a bit of an exodous. However - there's no reason to decide right now (its not like Java is going to vanish from Mac tomorrow - and you weren't expecting the next version of Java to appear on Mac anytime soon, anyway).
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
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.
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.
I am TheRaven on Soylent News
Do you have a point, or are you just spouting buzzwords? GCD is a set of C APIs that lets you schedule work to be run concurrently in thread pools whose size is managed by the kernel. It is completely irrelevant to writing a JVM, which will use its own N:M threading model with the kernel threads being implemented using POSIX threads.
I am TheRaven on Soylent News
Maybe he is here for all the non-technical political articles.
Go green: turn off your refrigerator.
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.
Magic? No, computers run on magical smoke. I know because I have seen the magical smoke come out of computers before, and after that they do not work.
"But this one goes to 11!"
cross-platform Java development and Mac development were different enough that if you were using Java it was because you wanted it to run on other platforms and therefore didn't care if it looked like a good Mac app.
You, like numerous other Slashdot users, appear to have forgotten the model-view-controller or multi-tier paradigm. An application is split between a front-end, which interacts with the user, and a back-end, which interacts with the data. Ideally, an application would have a separate front-end per platform and a common back-end. I have applied this philosophy in one of my video game projects: the physics of the game world are the same in the PC version and the Game Boy Advance version because they build from the same source tree, but the front-end is very different. But in order for this to work, all platforms have to share a common language in which the back-end can be written.
Something tells me your missing the point.
No other company did the work to take the browser from KHTML to webkit, which is now used in almost every phone OS, including Android & RIM.
Apple gets shit all the time for being closed. They're not always. Examples: http://www.apple.com/opensource/
There are two types of people in the world: Those who crave closure
Unlike the Windows versions of Java, you aren't regularly harassed to install "Yahoo Toolbar", or "Google Chrome" or some other piece of software along with every single update they try to push out to you!
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.
I am TheRaven on Soylent News
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.
I am TheRaven on Soylent News
I'm sure they would, but is it very likely that people are going to start doing OSX only development? Apple doesn't really have that much marketshare, and as this very incident once again shows, it's dangerous to trust them.
If Mac loses Java, then Mac loses Java programs, not gain native ones. And frankly, Mac can ill afford to lose software.
Forget magic. Any technology distinguishable from divine power is insufficiently advanced.
Couldn't Sun just write their JVM in Java, so that it could run on any platform without porting?
http://cltracker.net -- powerful craigslist multi-city search
You're right that the people that Apple is now pissing off won't be queueing up to port their applications to Objective-C. But it's clear that Apple doesn't want to invest that kind of money in that kind of user experience and then have to support it. They're already well on their way to slough off Carbon completely.
They want to settle on just one framework that they provide and support. (And yes, I said framework, not languages. There are supported bridges to Objective-C for Ruby and Python, and unsupported bridges in many other languages.)
I would conserve my bewilderment until Apple starts making it impossible to do, say, Qt apps.
My hunch tells me that there are more Cocoa applications than Java GUI applications, and even if that isn't strictly the case, that the number of people that are writing Java GUI applications each day are shrinking, and the number of people that are writing Cocoa applications each day are growing. (Yes, excluding iOS.)
Mac as a platform doesn't have a ton of software compared to Windows, but that doesn't mean that this makes even a sizable dent in the installed applications that people use. Name one pervasive Mac Java application besides Eclipse and Vuze.
(That doesn't mean that it's a valid reason to kill a Java runtime. But that sentence was discussing the impact, not the action.)
Qt is in most every way better than Java for client-side graphical application development. However, Qt is not completely free, requires that your app be compiled for each platform it is distributed for, and does not provide access to Java libraries. The last reason there is why we use it at my work.
I'm not sure why this was modded funny. IIRC Apache Harmony is written mostly in Java with only bits of C code to bootstrap the JVM written in Java.
All hope abandon ye who enter here.