Re: Don't Get Mad, Get Relevant

Chris has a big commentary up about the decline -- perhaps another word would be better here -- of Java on the Mac.

Just some notes here...

Dr. Gosling writes, “as much as I love the Mac’s eye candy, it really hasn’t been keeping up as a developer’s machine.” Two points to make here. First, he didn’t used to just see the “eye candy”; years ago he wrote that he thought of OS X as “Linux with QA and Taste.” The very term “eye candy” has become something of a pejorative for dismissing the Mac, to suggest its strengths are purely visual. This despite the fact that the Mac can, by Gosling’s own admission, handle laptop power management better than Solaris.

Now, I am someone who moved from Linux TO the Mac, because I got tired of dicking around with Centrino Wifi Drivers vs Firmware releases, power management and all that crap. I still have Linux on my desktop at home, and love it, but certainly in the laptop world, Linux doesn't cut the mustard on just working. And frankly, my attempts to even get Xorg working right on Solaris leads me to say it is WELL BEHIND Linux in terms of day to day usability.

Secondly, it’s been keeping up just fine as a developer’s machine… for those developing Mac software (or Flash, but that’s another story). Those who are playing with Core Image and QTKit and all the other neat stuff in Apple’s API’s are pretty happy with it. The missing word here is “as a Java developer’s machine”. JDK 6, which Apple develops for OS X because Sun doesn’t do a Mac version of their Java runtime, has yet to be released despite some 2006 preview releases tracking fairly closely with Sun’s previews. In absence of official information, most resigned themselves to the idea that Apple had made JDK 6 a Leopard-only feature, and then Leopard slipped by six months. There’s also the fact that Apple deprecated Java as a development language for Cocoa, which brought the predictable screeds of Apple Doesn’t Like Java, Never Has, Probably Never Will (despite developing and maintaining their own VM, because Sun wouldn’t, since the late 90’s, and including it in every copy of OS X, something you don’t see on Windows or Linux).

Yeah, Mac is the dominant Ruby developers box right now, with TextMate being the dominant Ruby editor.

Here is the thing, though. Over the last couple years I have spent more time at developer conferences/events than I have for years previous, and what I have noticed is that at general (Non-Windows only) events -- like the recent BarCamp Atlanta -- Apple now has near parity with Windows in terms of users. At Java-specific events, Mac is the DOMINANT platform. The thing is, most places with Java developers don't give them the choice. I still have 3 Dell boxes on my desk at work because that is just what they give you. I would love to have a Mac Pro, but that isn't an option. However, I personally own 3 Macs, two of which are in daily use.

n a followup to Gosling, Keith Weinberg writes, “Apple needs to get the picture on this. Not only will they miss out on the developers, they’ll also miss out on the applications they’ve developed.” Really, applications they’ve developed? Where? They’re all on the server, which is probably running Windows or Linux, and so whether a client is a Mac or Windows or an iPhone or a Wii is irrelevant. End-user Java applications? Name a few, not counting NetBeans or LimeWire, which have been the default answers for years.

Azureus, JXplorer, SquirrelSQL. OK, the last few there aren't "Top Tier" applications by any stretch, but they are certainly widely used.

As a bit of an aside, but also remember that the Flex server and Flex Builder environment, as well as ColdFusion are Java-based. Dragging on Java is eventually going start putting a kink in Adobe's product offering. Dragging on 1.6 might not be huge, since there weren't any significant language changes since 1.5, but once 1.7 drops, it is gonna be a whole new deal. Wait till Adobe is the one bitching about Apple not supporting Java and see how fast that changes.

Anyway, name for me a big Python or Ruby client side app. There's uh, Odeo (Python), which Apple killed when iTMS started indexing podcasts, and... nothing. Hell, I can't even say I have ever seen a Ruby client of any description.

The thing here is, Python and Ruby are maintained FOR Darwin outside of Apple. Apple adding them to the distro is like saying apple is "supporting" bash. They don't have to, they just have to put it there.

Flash is wiping out the last of the applets, and installation/maintenance hassles made double-clickable Java wretchedly impractical. I’ll grant you the point on missing out on the developers, but is it that big a deal? A few million Java developers, some fraction of which own Macs, makes them just another special interest group, like educators, media professionals, scientists, etc: they’ll be a factor in what’s included in the OS or default apps, but since Java developers use Macs to develop apps that are rarely if ever run on Macs, they don’t contribute to the well-being of the platform like other kinds of developers do, and are thus more like the other special interest groups.

Now, here is the thing... Java developers, which anecdotally I will say 50% of which own Macs -- about the same ratio as even graphic designers in my experience, are certainly a larger market than the Ruby folk. But I want to turn Chris's last point around:

If you really think Apple should support Java better — that it should get the runtime and JDK out faster, keep Intel and PPC support up to snuff, talk it up to developers, etc. — then answer this question: how will doing so make more money for Apple? In what way is supporting Java going to move more Macs, iPods, and iPhones, or demand a higher price, than if corporate resources were directed elsewhere. Say, to the hardware lab where they make sure that the laptop goes to sleep when you close it.

How about in stead of making more money, Apple goes for "costs less." If Apple would just merge their fork into the OpenJDK project, I suspect there would be plenty of people who would work to make sure Apple sees first-class support. Apple could even keep one or two staffers on OpenJDK to oversee it and check it, THEN distribute OpenJDK the same way they will be with Ruby or Python.

Comments

Re: Re: Don't get mad, get relevant

Azureus, JXplorer, SquirrelSQL. OK, the last few there aren't "Top Tier" applications by any stretch, but they are certainly widely used.

Oh come on, you can probably name a hundred Cocoa apps or Flash-based web pages for each client-side Java app you can think of. Perspective!!

Anyway, name for me a big Python or Ruby client side app.

Can't. But then again, Ruby hasn't had a cross-platform windowing toolkit attached to it for 11 years. We'll see if connecting Ruby to Python to Cocoa goes any better than Cocoa-Java did. I suspect not, but then again, there was an audience for "rich GUI toolkit + simple programming language" back in the Visual Basic day, and I'm not sure where they went. Maybe they're doing DHTML or Flash? Or maybe they're waiting for Ruby/Python-Cocoa.

As a bit of an aside, but also remember that the Flex server and Flex Builder environment, as well as ColdFusion are Java-based. Dragging on Java is eventually going start putting a kink in Adobe's product offering.

OK, dude, you're server-side and I haven't been for a while, so you tell me: do you unit test on your own machine (with maybe a test db or mocks for your persistence), or do you unit test on an actual server? I'm just wondering how much it matters that your desktop OS be able to run the Flex Server or ColdFusion, if in practice it's possible (or maybe even desirable) to just NFS mount (or whatever) your dist directory over to a server and unit test over there.

How about in stead of making more money, Apple goes for "costs less." If Apple would just merge their fork into the OpenJDK project, I suspect there would be plenty of people who would work to make sure Apple sees first-class support.

There's already talk about running OpenJDK on OS X / Darwin, assuming it'll have to be X11. I guess the advantage of an Apple contribution would be that you'd pick up a Cocoa AWT implementation... and hope the community could keep it up to date.

Oh come on, you can probably

Oh come on, you can probably name a hundred Cocoa apps or Flash-based web pages for each client-side Java app you can think of. Perspective!!

Yes, but (a) apple doesn't maintain flash, so that is... uh... pears and oranges comparison to the point and (b) of course there are way more Cocoa apps. That doesn't really make the case that apple shouldn't support Java, though. Sure it would be great if everything in the world ran on Java, but that isn't really a likelyhood.

OK, dude, you're server-side and I haven't been for a while, so you tell me: do you unit test on your own machine (with maybe a test db or mocks for your persistence), or do you unit test on an actual server? I'm just wondering how much it matters that your desktop OS be able to run the Flex Server or ColdFusion, if in practice it's possible (or maybe even desirable) to just NFS mount (or whatever) your dist directory over to a server and unit test over there.

Here's the thing... People DO run and test on their local machines. Indeed, the whole Flex Builder development experience is kind of based on that. I don't run DBs on my machine most of the time -- I would PREFER to do it that way, but our AS400 hell makes that impractical.

Trust me, as soon as Flex Builder becomes hard to run on OSX, there will be a firestorm.

I guess the advantage of an Apple contribution would be that you'd pick up a Cocoa AWT implementation... and hope the community could keep it up to date.

And the Swing LAF... Yeah.

OS X and Java

"then answer this question: how will doing so make more money for Apple? In what way is supporting Java going to move more Macs"

See, I actually think it WOULD move more Macs. Something along the same line as Cooper, I came to the Mac from Linux on a laptop (the servers at home are still Linux, but the main machine I use is now a MacBook). I did it for just about the same reason as Gosling noted, it's got all the stuff I want under the hood (an actual shell, all the GNU stuff, so on), and it works as a personal machine for audio/video and such, along with "eye candy."

At the time I bought my Mac, I was still mainly using Java 1.4, and it worked fine. The Mac also supports Java 1.5. In my professional life, we only have a few apps using Java 1.6. Actually, I am the one that started upgrading things at the office to 1.5, and I have used 1.6 on a few projects where I could fit it in (it also causes problems with profiling and older tools other people have JVMTI/JVMPI, so adopting 1.6 is not just a Mac prohibitive thing, it's more general). I would be willing to bet this is a pretty common theme in the "enterprise." Most apps there are 1.4, and a few 1.5 (actually, though we should be ashamed, a good portion of ours still run 1.3 as well).

So here is my point, the Java world in general is still coming around to 1.6. Up to now, or at least only within the last year, I don't think 1.6 support has been a show stopper for your average Java developer.
Sure, maybe it SHOULD be, but the reality is it hasn't been. If Apple can get their act together pretty soon, maybe with Leopard (haven't payed close attention lately, does Leopard get 1.6 out of beta?) then they WILL be able to sell more Macs, to Java developers. That might seem like a drop in the bucket compared to the general audience, but it's important. First off, it is more sales on its own, and second that group often helps set and define more general trends, it might translate into more overall numbers. That and a platform that all developers (not just Java), and technically saavy folks (those that might have been using Linux on a laptop, for example) popularize will matter. That set, no matter how small (and I don't think it's that small actually) is the knowledgeable and vocal group, you want them in the fold.

All of that leaves out having Java to support apps ON the Mac. Sure I use MindTerm, Squirrel, Azareus, NeoOffice, and the like, but you are right that those aren't the top tier. Unfortunately though, on no platform is Java really dominant in terms of desktop apps (I think that it should be, more companies should focus on cross platform that way, but the big apps your average user installs, even on Windows, aren't Java).

Apple customers do, or at least should, have some level of demand for Java. And because of that, along with the low threshold to just include it (I know dick about making a JVM for Darwin, but really, how hard can it be in relative terms to everything else Apple does, and how many resources they have?), it seems only logical that Apple would just get it together.

And, I don't think Apple has really been as "anti" Java as many folks are claiming. They are working on it, or so they say? Sure it's been too long, and that hurts, but they haven't kicked Java to the curb like lots of folks purport (most of the "ball and chain" FUD is based on stuff taken out of context, and or misunderstood). If Dolphin drops and Apple is still not there with 1.6, that will be a big deal, but I don't think the sky is falling just yet.

So here is my point, the

So here is my point, the Java world in general is still coming around to 1.6. Up to now, or at least only within the last year, I don't think 1.6 support has been a show stopper for your average Java developer.

I think this is true, but here is the rub... For all Josh want's Java Desktop apps to have a good experience, and for all Sun is putting into unfucking the browser plugin and whatnot, Apple trailing so far behind cramps their style.

While I don't think Desktop App relevance is as important as Chris does to get Apple to support Java, this puts the whole thing in a Catch-22: Apple doesn't support it because desktop Java is irrelevant -> Desktop Java can't get relevant because Apple doesn't support it.

So there is your point

While I don't think Desktop App relevance is as important as Chris does to get Apple to support Java, this puts the whole thing in a Catch-22: Apple doesn't support it because desktop Java is irrelevant -> Desktop Java can't get relevant because Apple doesn't support it.

So, then would it be in Sun's interest to get Desktop Java relevant by getting it better supported on Mac? :-)

Truth be told, a few years ago, Mac OS X was clearly the premiere Java platform -- widely-lauded L&F, current Java installed by default on every system, etc. Did that save desktop Java?

Did that save desktop

Did that save desktop Java?

In and of itself, no. I would argue, though, that was Java's fault, not Apples. However, lack of Java support on Mac seriously damages the possiblity of desktop Java seeing widespread adoption.

The cycle is Apples current wanning support might be symptomatic of desktop Java not seeing widespread use.

The thing is, if MacJava was maintained outside of Apple, then it wouldn't even be an issue. I think Ruby and Python being part of the core distro show that if it is available, Apple will bundle it even if it doesn't add to the consumer user experience. Java on the other hand, Apple (presumably) expends a good deal of money to maintain. I think if that maintenance could be offloaded to Sun and OpenJDK with Apple working on it only at the "distro" level -- making sure it works OK and maybe doing look-ahead tweaks to the native stuff -- then Apple would have MUCH more reason to keep updated Java in the core distro than they do even Ruby.

Re: saving the desktop

In and of itself, no. I would argue, though, that was Java's fault, not Apples. However, lack of Java support on Mac seriously damages the possiblity of desktop Java seeing widespread adoption.

Only the True Believer talks about desktop Java in the future tense at this point. Look, I've done most of my Java work on the desktop or in applets, but it's been over 10 years now, and it hasn't taken off. What's going to change that, particularly given Sun's neglect of the client side for most of the 2000s?

What gives desktop Java a future?

Hmmm, let me think about that one:

* JavaFX, if done right
* Increasing demand for rich clients, some of which make demands competitors can't provide
* Better look and feel and desktop integration -- some of which rivals or exceeds what's available from Adobe AIR
* The fact that people are *already* using Java on the desktop

And this is why I find this so frustrating. So, yeah, I guess there's really NO ONE using Java except for NetBeans and LimeWire. And Azureus. And Eclipse. And things based on Eclipse, notably Aptana and (increasingly important) Flex Builder, central to Adobe's strategy. And a range of double-click-ready productivity apps that Mac users do indeed use. And no one uses Java except for server developers. And client developers. And those needing to provide cross-platform support for the large number of Windows apps (noted by various critics here and elsewhere). And digital artists. And 3D artists. And game developers (few in number, but essential to efforts to provide excellent, open-source, cross-platform tools). And Java is irrelevant, except for the fact that it's currently the best genuine multimedia-rich, cross-platform development platform that can work with both 2D and 3D. Flash/AIR/whatever, by contrast, has limited hardware I/O support, nothing to rival things like JNI, and doesn't do 3D. It's NOT THE SAME THING. Nor is Ruby or Python. And C#/.net/Mono has a LONG way to go before catching up with the community and platform richness of Java, not to mention that Mono is unlikely ever to maintain full parity with Microsoft's Windows-centric options. (Nothing against Mono/C#, which I think has a lot of promise, but the world is better with it AND Java than just Mono.)

So, yeah. I'm just stumped. I can't imagine any reason anyone should allow Java to continue to live. Why do that, when we can embrace incomplete solutions that don't do the same thing?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.