Apple Prefers Hot Cocoa, Java Not so Much

| Hidden Dimensions

“When it comes to the future, there are three kinds of people: those who let it happen, those who make it happen, and those who wonder what happened.”

—John M. Richardson, Jr.

The recent decision by Apple to deprecate Java on Mac OS X seems, at first, like a disaster for the science and enterprise communities. Upon further reflection, that may not be the case. Here are my current thoughts, as always, subject to further refinement.

There is no question that the Java language and all of its variants, JSE, JEE, JME, have a firm foundation in the enterprise, higher education and science. While the U.S. Government has tended to prefer C++ in many cases for realtime work and in some sectors has been slow to adopt Java, it’s not universal. There are perhaps a few billion lines of code of Java running today on Linux, Windows and some on Mac. But mostly on enterprise servers.

However, when you look at the desktop Mac from a development perspective, there isn’t a whole lot going on in the Java space when compared to Cocoa. I am sure that Apple, which has likely done a survey, found that 1 in N commercial applications have been written in Java for the Mac, and I estimate N is between 200 and 500. It may be true that the number one activity for Java on the Mac, these days, is Android development. Precisely 0 of 300,000 iOS apps are in Java because, of course, it’s not an option on iOS. (Catch-22.)

Maintaining Java on the Mac isn’t just laziness on Apple’s part. I know that the company is growing rapidly, and it’s easy to argue that because Apple’s management structure hasn’t changed from the days when the company’s annual revenues were US$6B a decade ago, Apple is overloaded. We know that Mr. Jobs likes to keep things minimalist, aggressive, and he likes to keep a start-up atmosphere. It would be an easy shot to suggest that Apple engineers are overworked, unable to keep up, that management and financial resources are artificially constrained, and that the solution to a problem was to dump the management of Java on Oracle. That would lead to an outcry by the science and enterprise communities.

I don’t think that’s the case. At least not the greater part of it.

Java in the Balance

There are some plusses when it comes to cleaning the Mac OS X house. When it first came out, in March 2001, a necessary goal was to cater to the Unix community. As a science and technology marketing manager at Apple in those days, I spent a lot of time promoting the UNIX nature of Mac OS X to scientists. As an immature OS, the UNIX underpinnings of Mac OS X were a linchpin to gain a foothold in science, engineering and education.

However, in the last ten years, while Apple has grown and the iPhone and iPad have taken off, Windows and Linux have continued to be the primary platforms for Java development, especially on the server side. While many companies and universities love Java development on the Mac desktop, it isn’t a force in the Apple community.

What is a force is Cocoa and iOS. There are 300,000 iOS apps. Developers are jumping on the Cocoa and iOS bandwagon. Apple is integrating new iOS technologies back into Mac OS X, as described by Mr. Jobs during the October 20, “Back to the Mac” event. When I visit Barnes and Noble and Borders in Denver, I see a boatload of books on how to develop apps for the Mac and iPhone/iPad/iPod touch with Cocoa and Xcode. Few if any on Java development for the Mac. That’s a bellwether for the future.

The sad truth is that only a relative handful of specialized people are developing for Mac with NetBeans, Eclipse and Java. Worse, as James Gosling described it, Apple has to support private API’s to make Java work nicely on the Mac. I suspect Apple didn’t mind doing that for Java as a development language itself, but may feel that its hands would be tied moving forward if those APIs were folded into the rest. So there’s one reason for Apple to fret about the state of Java on the Mac.

Another problem is that a significant number of security problems are related to Java, and these are outside Apple’s direct control. As Roughly Drafted points out, when stones are cast at Mac OS X security issues, Java problems are conveniently lumped in, to Apple’s detriment.

Gotta Move Forward

Finally, I suspect that as part of the process of merging iOS and Mac OS X in a fashion that’s not yet clear, Java is in the way. For example, the forthcoming Mac App Store requires apps to download and run without installing or depending on third party frameworks. While Mac users will certainly continue to run Mac OS X as a desktop UNIX OS for Java development, they may have to branch off in the near future and live in a slightly different technology universe. Meanwhile, Apple, never happy to live in the past, will move forward.

I always worry that Steve Jobs is in too big a hurry to make Windows and PCs obsolete. He only has a few years left to complete his work, and by racing into the future furiously, Apple risks offending all the people who have consumed Apple’s Kool-Aid, bought off on the vision of the moment, and invested heavily in Java development. However, I haven’t seen much of that hue and cry. For example, I didn’t see the sky falling at www.macresearch.org.

I have said before that I think if the “problem” of Java on the Mac becomes a significant issue, the Apple/Java community will rally, work with Oracle, and push for the necessary measures. I used my network to ask someone at Oracle if they’d like to say anything on the record, and that person declined. I don’t take that as a bad sign. Rather, I’ll guess that Oracle just hasn’t decided what, if anything, they want to say in the record right now, especially since Apple has said they will continue to support the current versions of Java for Leopard and Snow Leopard.

If Apple developers had seized on Java as the premiere method for developing Mac OS X apps, then the situation may be different today. But that didn’t happen. As a result, Apple has to do what’s best for itself as it moves relentlessly forward. The explosive success of Apple, its plans for hardware in the future and Lion all make it appear that Apple is full steam ahead into the 21st century, and Apple just hates being tied down to legacy things that don’t have a massive ROI. That’s the way we roll in the Apple world.

Discussion is Good

My readers know that I was up to my ears in UNIX at the Oak Ridge National Laboratory, Lockheed Martin and Apple. That brought me into the Java world. My wife is a professional Java developer for a defense contractor. There’s a warm place in my heart for Java.

So. I will admit to this. This is how things seem to me so far, and I am heavily read on the matter. If there are organizations out there who feel that Apple’s decision, in light of all I’ve said above, remains way out of line, feel free to contact me. We’ll continue the discussion, I hope profitably, for years to come.

______

Postscript.  Here’s an idea.  Keep your big screen Mac.  Load up Parallels Desktop or VMware Fusion and install, say, Red Hat or Fedora Linux, and do your Java development there.  But the Mac OS X is right there too for all the Mac things you prefer to do.

Sign Up for the Newsletter

Join the TMO Express Daily Newsletter to get the latest Mac headlines in your e-mail every weekday.

25 Comments Leave Your Own

Bosco (Brad Hutchings)

It may be true that the number one activity for Java on the Mac, these days, is Android development.

Maybe #3. LogMeIn.com is probably bigger. College level computer science instruction is also probably bigger. I’ve seen many developers use Eclipse (Java-based development environment used for making Android apps and other things) on the Mac, but it works much better on Windows and even Linux.

I think you’re right from a scientific computing point of view. Apple’s not going to worry about on their legacy code from the last decade. I doubt these customers care too much. They can run it on Windows and Linux far less expensively.

This notion of cutting bait to “move forward” though… Laughable.

aaberga

If Apple developers had seized on Java as the premiere method for developing Mac OS X appsthen the situation may be different todayBut that didn?t happen.

Well, how could it possibly be? Seriously!

Years ago, I was a stranger to Objective-C and I saw with favor Apple’s Java support. No plan to go for “Apple-only, weird languages” no one cared about.

Still while I had tried my best to cope with the ever increasing Java APIs for quite some time, the results were meager.
In the end I used Python as an escape route to get productive for some in-house code, that I had to write.
And that did not have to run on Macs.

Today I am working proficiently in Objective-C, after a brief foray into pyObj-C that got me started in Cocoa, both
for in-house stuff and for ‘new bold projects’ (aka: the new gold rush).

Clearly my brain is as bad/good as it ever was (may be more on the bad side; you know: age, no exercise, etc), Java or no-Java.
Other things being equal, I have come to suspect that Java has never been really accessible for small shops/lone coders.
Great, probably, for bigger teams; loved in academia (but they generally are the last ones to get insight on cool stuff wink.

The remarkable fact is that it is literally little the effort you need to start coding in Objective-C ...
If only the couple of the ‘Bring-Foundation-to-Linux’ efforts could succeed, then I would love to go cross platform again.

But the mileage always varies.

John Martellaro

aaberga: GREAT post. Along those lines, one thing I didn’t mention is the implicit suggestion by Apple: “iOS is insanely popular now.  Why aren’t you developing your enterprise and science apps in Obj-C? There’s a whole world of support now.” As you said, on the education side, there is some element of academic tradition, slowness to react, aversion to commercialism… It’ll change.

Nemo

John:  I am confused here.  We have a controversy because Apple has deprecated Java, that is, Apple is ending its support for Java in OS X and leaving all of that future work to Oracle.  But isn’t that the case now for Windows?  Microsoft, I think, quit supporting Java more than a decade ago, after it lost the lawsuit that Sun filed against it for branching a version of Java that only worked on Windows.  So, Microsoft hasn’t provided support for Java in Windows for more than a decade, leaving that support to Sun and now Oracle.

And does the official Linux body, the Linux Foundation, as Apple has until now, provide any support for Java in Linux?  Or has Sun, now Oracle, provided that support?

John Martellaro

As I understand it, from Mr. Gosling, Oracle/Sun supports Java on Windows because Microsoft lost their right to do so after they doctored it and lost a lawsuit to Sun.  Oracle will support Java on Windows and Linux (because there’s no one else to do it on Linux) because it helps Oracle sell products, databases, on those widely used enterprise platforms.

The concern I’ve seen is whether Oracle thinks supporting Java on the Mac at a high standard will make them any money. I’m all ears on this.

Brett Johnson

The sad truth is that only a relative handful of specialized people are developing for Mac with NetBeans, Eclipse and Java.

Perhaps, but there are a large number of people who are developing on Mac with NetBeans, Eclipse and Java.  Mac OS X is my preferred desktop and development environment, even though the Java I write is targeted to server-side deployment.

Eric

The deprecation of Java does leave those of us who pushed the use of Macs in large scientific applications with a lot of egg on our faces.  Here’s a big eclipse project used to control major scientific facilities—http://sourceforge.net/projects/cs-studio/—hard to continue recommending Macs now.

John Martellaro

Eric:  I added a postscript to the article that I forgot to mention before.

Jamie

It’s also possible that Apple is simply deprecating their pursuit of any kind of enterprise or scientific market share. As I recollect, the last time they really tried to impress anyone with the Mac’s capabilities in those areas was back when they debuted the G5 (I had to wait an extra six months for mine, as the initial batch had been sent to create that cluster), or possibly the multi-core Mac Pros a number of years ago. I can’t imagine the future iOS flavored OS X would be as useful on a server, honestly. wink

I do sympathize with everyone that does their work on a Mac though. There seems to be no question that Apple will continue it’s forays deep into consumer oriented products. It’s ironic that in this era of the dying PC, that they have reinvented and are focused on what amounts to personal computing, by any other name.

Nemo

Okay, I get it.  The issue is whether Oracle thinks supporting Java on the Mac is worth its while, not that Apple does not implement Java in its computer OS.  John, you seems to think that they aren’t enough client Java apps for Oracle to find it in its interest to continue to support Java on OS X, even though Apple is now up to 10% percent of the installed base, though most of that is consumers, and has a rapidly growing presence in the enterprise.  Well, I am in no position to dispute your expertise on that issue, so I won’t. 

However, I hope that Oracle will find sufficient reason continue to support Java in OS X for those who either use OS X to develop Java apps or who use Java apps on OS X.

Eric

The problem with the virtual machine approach is that it more than doubles the effort to maintain a machine.  Some places explicitly prohibit non-native operating systems because of the extra maintenance and security issues that they raise.

vpndev

It’s true that making java work on Mac OS X has been a more-than-trivial task, one that Apple has worked on quite hard for years. Certain things are just different, for historical reasons mostly, and there’s always a lot of re-fit to do, especially with the graphical interface support. Similar things hold true for X11, and OpenOffice, and ...

That said, Apple has made it work reasonably well. I hope that, whether Oracle picks up support or if it’s left to the Java community, Apple will make its work available under a suitable license. It has not been available until now, as I understand things, but it sure would be a good move for Apple to do this.

Is anyone listening? Maybe, even better, this is already done and I just haven’t heard !

a.software.architect

there might not be too many people using Eclipse/Java development tools for mac. But for me, I use mac as my work computer. And java programming is a major chunk. I code serverside applications on my MacBookPro. It’s a bit slower than windows (I benchmarked) for developing/running java apps, but the overall experience is much nicer.

I was thinking of upgrading to the latest macbook pro when it comes, but if I don’t get Java support, Mr Jobs will be atleast a few thousand $$ poorer, if not more. I probably will give up my iPhone, iPod, airport… just to make a point.
And the sentiment it reflected by a few dozen others in my organization.

Bottom line is, only time will tell if Java stays on Mac, and free. I don’t care who supports it - Oracle of Apple. But if it’s not supported, I’ll go back to Windows/PC. Eventually apple is in it for business, and they need to do the cost/benefit analysis.

MonkeyT

While there aren’t a lot of apps *deployed* on Macs using Java, there were tons of web sites and server-based applications developed using Eclipse, Netbeans, and other Java IDEs on MacbookPros.  Sun/Oracle develops their own java installs for EVERY OTHER OS they support.  Apple picked up the slack solely because Sun refused to do so when share was small and the underlying OS was too proprietary - and a lot of the historical difficulties of getting java performance out of Mac OS went away with the evolution of Free-BSD based OS X.  Now, with an established user base and a larger set of users than Apple has ever had before, it is time for Oracle to step up and stop treating the Mac platform like a stepchild.

webjprgm

I don’t think Java will go away on the Mac so easily, since OpenJDK can be ported.  That said, it will likely be an inferior version unless someone takes up maintaining Apple’s version of Java.

Java apps are often slower (at least with 2GB ram, Eclipse is noticeably slower than, say, Xcode), but I still like to use Java for simple programs for which cross-platform compatibility is the greater issue.  (Small games I toy around with, some algorithm demos for classes, and a time clock app I made at work.)  I hope Java doesn’t disappear because it is still a useful tool.  At least, not until Java is totally dead and replaced by some other new language.

freejak

This is a poor and very short-sighted decision on Apple’s part. Java is The Future. Oracle can make sure of that. Where does Oracle run? Duh, in the enterprise. Nobody should need the Magic 8 Ball to see what this will do for Java moving forward.

As far as Oracle and their concern / lack thereof for providing Java on OS X, it would be a huge course change. Oracle is about making money. Lots and lots and lots of money. They don’t give a crap about Apple as a niche platform. This was proven to the few of us who live in both the Apple and Oracle world when Oracle released a port of their 10g flagship RDBMS product for OS X Server. This came years after the ‘normal’ ports for Unix and Windows. And we still rejoiced! And while it could be made to run on ‘regular’ OS X, that configuration was never officially supported. We loved it anyhow! Running the RDBMS right on our Macbooks was a dream. After whipping the Apple developer Oracle community into a froth, Oracle abandoned the OS X port without comment. Just a long, agonizing wait for something that never came. No desupport notice, no statement of direction, nothing. Me bitter? Hell yes. But it’s a valuable lesson about Oracle and their commitment to Apple. This isn’t speculation, this is how it’s already gone down.

Sometimes Steve leans too close to his own Reality Distortion Field. The rest of the world isn’t going to become infatuated with Objective C because Apple already is or tells them how Insanely Great it is. How’d the big push for Pascal work out? Hmmmm? Developers aren’t going to put up with doing Java in a VM, why? More hassle, difficulty, moving parts, pointing fingers when it doesn’t go right… All hassle, no payoff.

Java, it’s where IT’s going and Apple has blown this. They should take a break from improving red eye correction in iPhoto and make the effort to be sure that their product doesn’t become even more superfluous in the enterprise computing arena.

To the crys “This is hard!”, yeah. So are a lot of very, very worthwhile efforts. Think it was easy to port Oracle to more than a dozen OS platforms back in the day? I’ve still got the book listing product / version support for (and I am not making this up) Apollo and Bang and Olufsen! The payoff was ease of acceptance and strategic options for early adopters. That’s a lesson that Steve needs to learn. It’s not about how many developers would adopt OS X to code their Java, it’s about how many Apple will lose because they can’t.

Thufir

@freejak

you’re somewhat incoherent.  So, since Oracle will ultimately abandon the mac, there will never be Java for the Mac?  Apple wants everyone to learn Objective C, so…they won’t.  Not really sure what your point is.

sleepygeek

I’m no expert, but I think the issues with OS integration are mainly to do with client side user interface integration. These aspects are irrelevant for enterprise server-side Java, so relying on third party implementations of Java is simply not a problem. Unix certification (which Leopard has) is much more important for enterprise acceptance, isn’t it?

Microsoft doesn’t support Java either.

I think Apple needs server-side Java (which isn’t going away IMO), and client-side HTML5. Pushing HTML5 as hard as possible is what will give a stable universe where no-one (including Apple) can do again what Microsoft did to the industry.

jon-stewart

Apple might know what it’s doing by targeting its core audience, but it does seem a pity not to take care of professional developers who use Macs as their development platform.  This is especially so for people targeting other platforms, because that helps widen the Mac world.  It’s not just the risk of losing those developers: developers are influential when advising friends and family.  They are more likely to recommend Macs and be willing to do inevitable small jobs on them for other people if they use them themselves.

I’ve always liked the idea of the Mac.  I used them in their early days and I thought they were a stunning advance in personal computing.  Later, pressures of finding work as a professional developer nudged me in the DOS and Windows direction. Recently I’ve been thinking of thinking of putting a toe back in the Mac waters, since my wife’s Windows laptop is due for replacement.  My enthusiasm has risen through having Unix under the hood and support for Java.  This helps make the Mac useful beyond the immediate world of Apple and has been drawing me towards getting a Mac for myself as well. 

As it is, I don’t really want to pick up any more maintainance jobs on a machine I’m not getting properly familiar with.  I know from experience elsewhere in my family that the Mac picks up as many maintenance jobs as other machines.  So for now, I’m thinking that the next laptop purchase will be Windows this time.

This might not be the end for Java on the Mac.  New releases might even be available more quickly if Oracle pick them up.  But for the moment, as I say, I’m going to wait and see. 

Regarding VMs: as write I have three VMs running on different boxes around my desk.  I do it because it helps replicate server environments on inexpensive hardware for development purposes.  There is an overhead.  I wouldn’t consider maintaining one just so I can run Windows or Linux on a Mac!

MacKeeper_fan_Mod

There are some conflicts between two lecterns on our faculty. Our lectern studies C++ and our opponents study Java. So, we constantly discuss which language is better ‘cause nobody doesn’t want to study unuseful stuff. This event once again confirms that C++ is better than Java and now I have some more reasons to laugh at them.

Of cause, I don’t want to offend that guys who program on Java, that’s only my own opinion and for my mind if Apple withdraw it’s support, the company will lose very much.

freejak

Thufir - Not the first time I’ve been incoherent… wink

My points were - Oracle’s track record is that they’ll do Java (or whatever) if, and only if, there’s money in it for them. This doesn’t bode well for Java on the Mac if Apple has already abandoned it.

I think Steve’s ego or sense of ‘if we build it they will come’ led him to make a poor decision in this case. Developers develop for the Mac using Objective C because they have to. Maybe not because they want to. Apple’s our way or the highway mindset will bite them if they indeed do abandon Java support in OS X.

GMan

Let’s face it: it does not sit well with Apple that its platform is used for developing apps for the competing platform (i.e. Android).

The developer in me feels that this is very unfortunate, my pragmatic side says that this makes business sense, and the hopeful side says if someone (Oracle) cares, they will maintain it like Sun did for Microsoft.  Given how closed up Apple is, doubt the latter will happen.

Like all good things, this has to end as well: stable and safe OS/hardware + excellent development language/platform.

vpndev

Given how closed up Apple is, doubt the latter will happen.

Don’t forget though that Steve and Larry are long-time friends. That could move things along quite quickly.

Bosco (Brad Hutchings)

Don?t forget though that Steve and Larry are long-time friends. That could move things along quite quickly.

Wishful thinking. If you really want perspective on this, see what Scott McNealy had to say to PostgreSQL developers. The short version on Java is that Oracle’s suit against Google is to figure out if they can actually monetize Java to an extent that’s worth any continued effort. Same applies to the MySQL price hikes. Same probably applies to OOo.

If there was any intention or plan to get Oracle to actually take control of Java on the Mac and commit to it for the future, it would have been worked out before the deprecation announcement—if for no other reason that to reassure customers who depend on Java, of which there are obviously many. Look, margins on Macs alone to populate 20 decent sized computer labs would pay for a small team dedicated to keeping Java up to date on the Mac. Maintenance cost is a drop in the bucket. If it could survive 2004-2007 without anyone questioning it, it could survive now unless one crazy CEO has an agenda.

Tod

It is interesting that being a programmer on the Mac now equates to specifically developing for MacOS X only, as if programmers who target web development, or cross platform code, do not favour Apple computers.  The message I see coming from blogs like your own is that Apple computers should not be used for programming, unless specifically targeting Apple hardware only.

Of the three heavyweight web development platforms, .Net is obviously best coded on a Windows machine, but Java EE and PHP were open to Mac users without discrimination.  Now there’s a very real possibility only PHP will remain.  Over the last couple of weeks I’ve noted a steady stream of unhappy blogs and tweets from Java EE programmers on Mac saying they’ll have to move to Windows.

Apple seems to be fostering an isolationist policy as far as programmers go—Apple vs The Rest of the World.  Programmers on non-Apple kit cannot target Apple platforms because cross-compilation/cross-platform tools either don’t exist, or are rendered impotent via license agreement.  Now programmers on Apple kit will find it harder to target non-Apple platforms due to lack of tool support.  As Churchill might have said, “an iron curtain has descended…”

The last time Apple tried to be an island it didn’t end too well.  With Android gaining market share like it is, I wonder whether this is a good time to insist programmers choose: do you want go with Apple, or the Rest of the World?  I think Apple fanboys may be disappointed how many programmers will go with the latter, even if it means putting up with Windows.

Log-in to comment