I agree with the main premise of the article: that Steve Jobs isn't the one dealing a blow to Java, he is just getting rid of the white elephant that is already on its way down.
Seriously Apple does not have that much of a market share in the desktop and laptop field, and while it is a growing share, it is far from the market majority. Therefore, to think that Jobs is dealing a major blow to Java by not factory installing Java on a machine which is only going to sell to a small percentage of the market doesn't make sense.
If Java is losing popularity as a desktop app programming language it won't be because of Apple.
I agree that it's not the primary cause of Java's decline — as if it had far to go aside from theoretically — as a desktop system. Apple's moves seem these days to signal or drive the industry direction, though, so if Apple's deprecation isn't a blow, it's at least a bellwether.
I looked at javax.sound yesterday and estimated it would take me 4-6 weeks, full-time, to do a production-quailty port using Core Audio. I’ll bid the project out at $20,000.
How about Kickstarter?
Desktop Java is a ruinously expensive legacy that they need to do something about.
All the angry screeds against Steve Jobs won’t change the fact that this is the “ball and chain” that’s pulling Java below the waves.
I think attempting to do cross-platform UIs held Smalltalk back as well. You either have Least Common Denominator native UIs that stink, or emulated UIs that don't look native. "Cross Platform" failed for the general public end-user. Web Apps took up their niche.
Eclipse is cross-platform, comes with a disgusting component system (OSGi), pillages all your RAM, and yet is still arguably the most popular IDE these days.
Firefox has never looked or felt like a native application on the Mac. It didn't even have native form controls or pixel-perfect scrolling ala Safari until fairly recently.
I've heard of in-house apps being done with XUL. I'm not aware of any used by the general public, other than Firefox.
To be a successful cross-platform development environment, there would have to be lots of these. To my knowledge, only web apps are that widespread and used by the general public, not primarily for in-house apps.
There don't seem to be many. But I believe it has been used quite extensively in internally-developed applications, never intended for the mass market. The same goes for Swing as well.
So although end consumers might not see them, it will certainly take a long time for SWT or Swing to die. These are the same class of applications that are keeping IE 6 alive, after all.
Does this matter to Apple? I doubt it's significant, as most of these applications are probably running on Windows desktops already. Probably more significant is the legion of Java developers that have been vocal proponents of Macs over recent years. The numbers of such developers might not be so great in an absolute sense, but the amount of noise they create is disproportionate. And, more importantly, they are more motivated to build interesting stuff for the platform they use.
Lotus Notes and Lotus Symphony aren't consumer apps but they both have a pretty big user base beyond typical Eclipse users.
Azureus is the first consumer app that comes to mind.
While the underlying logic should be the same, each UI should be leveraged towards whatever OS is running the app. It requires a bit of across-the-aisle thinking to create a decent UI for the other OS, but it's do-able.
UI design should be more like a cross-channel ad campaign (print, web and TV) than porting.
Apple open-sourcing their work to be included in OpenJDK would also require copyright-assignment to Oracle.
Not going to happen.
Also, get the crappy APIs out of Java SE, like AWT and Swing, then the Java SE "standard" and the TCK needs updating, and then you've got a subset suitable for mobile phones, for which Oracle cannot collect revenue anymore.
Apple plays a long game, and they're not afraid to toss stuff under the bus. Now consider what these Apple engineers might now be working on, if not Oracle's Java and JVM pieces. Some language past Java? A replacement for Objective C? Both?
I think so too. MacRuby is perfect for Apple, as they control its implementation, and the syntax is far more approachable than Objective-C is. Also, no performance penalty when compiled, unless I'm mistaking.
Thinking on it, I'd only be slightly surprised (and extremely delighted) if native/official (as opposed to experimental) MacRuby support for Xcode and the new Mac App Store was announced at the next WWDC.
I think the problems with [non-native] GUIs on the Mac are compounded by their developers likely not having as much passion for look & feel as Cocoa-heads to start with, regardless of the quality of the APIs.
I was under the impression that the IntelliJ IDE was a diamond, then I saw a dude use it in a screencast and the design looked grim.
I wouldn't go so far as to say grim - but it definitely shows that even with the best of efforts, Swing is never going to cut it for non-developer applications. IntelliJ is about as good as Swing apps get on OSX.
Gotta feel for the JetBrains guys, I have a feeling that a good chunk of their users are on Macs and it's not clear that they'll have a way forward. It does look to me like Eclipse will be a viable option in future. Which, as an IntelliJ fan using a Mac, doesn't make me super happy.
That said, I think the original article was spot-on.
IntelliJ does use JNA quite extensive, already, on the Mac. It wouldn't be a stretch to imagine more extensive use of JNA e.g., for custom widgets.
JetBrains guys are very smart (I dislike Java as a language, but I continue to be impressed by IntelliJ)
and I have no doubt they'd be able to switch a native layer if needed: they have all the motivation to (it's a commercial product).
IDEA (IntelliJ IDE) is a diamond - but not visually. In terms of editing (and this applies to scala, ruby, javascript as well as java) the experience is amazing - it really understands what you are doing.
But it is the ugliest thing... just horrible, but if you can get past that, it is a great tool.
OS-X users are a big paying contingent for Jetbrains - so I expect they will find a way, one way or another, to make it run well.
Huh? I don't get this at all. IntelliJ is a phenomenally great IDE. I'm sure that is blinding me to the ugliness you're seeing. But thinking about just the visual elements, I still don't see your point. What exactly is the problem?
Font rendering is horrible (at least on linux), you have to try various l&f before finding one that is "acceptable", etc.
It's a great IDE, general usability is certainly better than Eclipse (it was meant to be an IDE as opposed to Eclipse which is a platform with an IDE built on top), but personally, font rendering was a deal break.
Thankfully that bit is fine on a mac. And really - that is 90% of it there - the rest is a distraction.
Their icons are, well, tasteless is the best way to describe them.
I know people don't often talk about usability and developer tools - but it really really matters. You spend a LOT of time on it - may as well fuss over it and make it right. IDEA gets so much right.... and this is also a good example of when user experience can be great, but design (graphic) not so great.
Nice UI's can be done on the mac with swing. As you mention they require passion. Take a look at what this guy has built with Swing.
http://code.google.com/p/macwidgets/
Back when I worked at LimeWire (probably the largest Swing install base in the world) I played around with MacWidgets. It's really an admirable effort, but trying to emulate Cocoa in Java always feels a little off. It's sort of an Uncanny Valley effect...you can't easily point out what's wrong, but you know it's not quite right.
Either build a real Cocoa interface, or go LimeWire's route and don't make it look native at all.
I don't think Apple's decision is going to be a death-rattle to Java on OS X, but it provides an interesting perspective.
If nothing else, it's provided the groundwork for my next software development project. The vast majority of tools my industry uses to perform a specific type of testing are Java-based, and more and more folks I run into are using Macs.
I think he makes a good case for himself in the article, though I wonder how much effort it really costs to maintain an already written port. However, he is quite mistaken about the possible side effects of Apple licensing the code under the GPL:
> The company would want nothing less than an absolutely forensic code analysis to ensure there are no loopholes, stray imports or links, or anything else that a creative FSF lawyer could use to claim that Mac OS X links against the GPL’ed OpenJDK and must therefore itself be GPL’ed.
That is not how the GPL works. The GPL doesn't apply to the copyright holder (owner) of the code. The GPL applies to all the people who get the code from the owner. The owner can do what every they want.
I'm confused by everyone focusing on Java. "Java's on the decline", "I don't mind if Java goes away", etc, etc.
This is really about the JVM and the JVM is on the rise. I have no idea what impact this decision will have, but if it's negative if affects a lot more than Java.
Are Apple going to ship any sort of Java runtime with 10.7? I (and some of my team) use Intellij on OSX. Are we not going to be able to upgrade to 10.7?
While Apple hasn't been specific, I'm taking that to mean "no pre-installed JVM beginning with 10.7". Apple only mentioned 10.7 this past week (with very few specifics). Wikipedia suggests that the release date for 10.7 will be 'Summer 2011'. The problem may be real, but there is time to find solutions.
There is no official Oracle release for Mac OS X. Your options (right now) are Apple's official JDK (which comes preinstalled), or OpenJDK (http://openjdk.java.net/).
am I the only one who thinks JDK 7 (for OSX) will be released by Oracle when Lion is launched?
at the end of last year they released JavaME 3 for osx. so it wouldn't be that far off
Seriously Apple does not have that much of a market share in the desktop and laptop field, and while it is a growing share, it is far from the market majority. Therefore, to think that Jobs is dealing a major blow to Java by not factory installing Java on a machine which is only going to sell to a small percentage of the market doesn't make sense.
If Java is losing popularity as a desktop app programming language it won't be because of Apple.