Without Regard for the People Who Care
John Gruber of Daring Fireball fame, who I have mucho respect for, linked to an article about how the Java support in the lastest version of Mac OS X is terrible. He then makes a very irresponsible statement:
“I fail to see why anyone (other than Java developers themselves) would care.”
The problem with this statement is that you should care. Why? Well, because you are a Mac user. It will take a bit to explain. Humor me.
There are many upon many businesses out there that support the Mac platform ONLY because their Java applications will run on a Mac. But this isn’t the complete reason. Hear me out.
Now, these businesses aren’t Google, Microsoft, or IBM. You probably haven’t heard the names of these businesses, let alone the names of the software they provide. They certainly aren’t household names, and your mom and dad aren’t using their applications. But they do represent a significant base of development energy. These are the guys that make it possible for the little guys and the medium guys to do business.
I am a partner in one such development company that provides applications for both Mac and Windows. Our user base is approximately 20% Mac users with the rest being Windows users. That is a pretty significant Mac audience considering we are primarily serving Windows users. Regardless of our growth as a company, this OS division has remained steady for the past 5 years. Our primary application is web-based. However, we provide several client applications that supplement the functionality provided over the web. Just one example application is a batch upload tool that provides background FTP transfers and integration with our main application’s metadata system. Users now find these tools invaluable during the course of their work day. In fact, when we unintentionally break one, it is guaranteed that we hear from almost the entire user base within a few hours. (Sorry can’t specify how many tens of thousands of users call in… 😉
At the onset of starting our thick client tools, we knew cross platform is the only way to go. The only practical cross platform option was building something on Java Swing or Eclipse JFace. The other options out there we didn’t choose because one of the following reasons:
– A non-popular platform with out of date tools and lack of a large developer community
– ugly, non platform-integrated UI
– C/C++ based where our expertise and infrastructure is Java.
Whether we chose Swing or JFace is not pertinent for this discussion as they are both Java and both “supported” on Windows, Mac, and Linux.
These days there are two questions you first ask when starting to develop a thick client application:
– Do we want to embrace the Mac community?
– Do we want to embrace the Linux community?
That’s it. There is never a question of supporting Windows. You just do it. Sure, there are companies and indy developers galore that only create applications for Mac. And they make good money doing it. But if you are at all business oriented with a goal of holding more than a fraction of market share, then you cannot limit yourself to the Mac platform. You are fighting the market if you try to run a business without support for PCs.
And just to be clear, for anybody with preconceptions of business apps and how they don’t belong on Macs, business oriented does not equal spreadsheets and Excel. It is allowing companies to become more efficient at what they do. Just like Panic’s Transmit allows an individual to become more efficient at file transfers, we are pushing that concept out to an entire group of people.
Now, if you choose no to both of the questions above, your technology platform is easy:
– Microsoft Windows
– Microsoft Visual Studio
Boy that is simple a decision! (Why not MVC or another non managed runtime language? It is simply faster to develop an application in something like C# compared to C++/MVC. For instance, in a competitive market, you choose MVC while your competitor chooses C#. I don’t have to tell you that is a stupid mistake. In 6 months when your competitor releases a complete, version 1.0 application while you just finished your prototype, you will understand.)
Back to the story at hand. If you checked yes to either of the two above, then you need to consider a whole raft of other options. But the only business viable option is a Java related technology. But, how can I say that? Easy:
– How hard is it to find good developers proficient in non java, cross platform UI applications? Very.
– Are we as a company also developing a complimentary or non related server side application? Yes? Well, what technology will that be in? If we are a company wishing to build its business around a sound foundation, Java is it. PHP, Perl, Python, Ruby are all not viable technologies to build an application with a lifespan of at least 5-10 years where the importance of scalability and maintainability are paramount.
Now, if I am already building a web application in Java, I’m probably going to leverage other Java related technologies for the same simple reason that if my wife is already making a ham sandwich for lunch, I’ll have her make two instead of firing up the barbecue for my burger. It’s just easier to go with the flow. I won’t disrupt her cold-meat sandwich making inertia with considerations of ignition, flame height, temperature, and duration per side.
For us, when we built our thick client applications, the overwhelming consensus was to not develop clients for each supported platform. And honestly, how could it not be? No one outside of an established fortune 200 company can afford to hire extra developers for each platform to maintain code in different programming languages. It just doesn’t make sense.
So that gets back to me making my point. Whether people like to realize it or not, lots of business is made on the java platform. In the case of Apple dropping first class support for a cross platform technology… Apple’s users loose, not Java developers. If a company needs to adopt an unfamiliar technology, not to mention, maintain entirely separate code bases just to support the Mac platform… how can I say this with enough emphasis… IT IS NOT GOING TO HAPPEN.
The worst part is not the immediate effect of a broken java platform. It is all of the yet to be built software by companies that would never have dreamt of building software for the Mac until they discovered the platform and all of its loyal users simply by leveraging what Java has to offer. Even within my own company, it wasn’t until I pushed out the initial proof of concepts on OS X and people started playing around, that the Wow Factor hit them. Not just the developers, but the business drivers who would laugh at Macs in the past were suddenly talking about pursuing more initiatives on the Mac. None of this would have happened if it weren’t for Java.
The outward appearance of Java becoming a 3rd rate platform on the Mac is disturbing. More than making it difficult for companies like mine to support Apple, it tells me that they are hoisting up a barrier against the rest of the world. It gives the appearance that they believe Apple is now self sufficient and that Apple and its Users don’t need me and my software.
As a developer who wishes to support all platforms equally, I am truly saddened by this.