Thursday, March 24, 2011

No Mac Java: are you kidding?

Jesus Christ. I just heard about Mac deprecating Java.

Java is English. Not the best language, but a pretty okay language that a lot of the world (like Android and, recently, InPulse) speaks pretty well. Shutting out English is misguided at best and a calculated ploy at worst.

I find myself sometimes trying to articulate to non-programmers why Mac is increasingly evil and why my next computer will be Linux, and the best I can come up with is: As the Apple programming world becomes more separate from the rest of the programming world, developers will increasingly have to choose between learning Apple/iPhone/iPad and everything else. Apple entices users to its walled garden with shiny toys. Apple entices developers to its walled garden by having lots of users. (especially lots of rich users.)

And once developers are Apple wizards (at the expense of their non-Apple skills), they're at Apple's mercy. They have to play by the rules of the App Store, like it or not. They have to deal with ridiculous languages and frameworks, no matter how they change, like it or not. And so, consumers: with Apple you get shiny toys in the short term, but in the long term developers gets stifled, squeezed and bled dry. And then nobody wins except a certain black-turtlenecked figurehead.

God damn. I'm so glad that I've spent the past 2.5 years working for a company that is actually making the world a better place.

5 comments:

Gary Bernhardt said...

I think that the idea of cross-platform software has mostly failed. The only software I use that runs on more than one OS is Transmission (which has exhibited crazy UI bugs that would never happen in a native app).

It makes me a little sad, because there was a long time when I wanted the cross-platform thing to work. But today all I want is (1) software that runs on my OS and just works, free or not, and (2) a Unix underneath that I'm fully exposed to. There's only one place to get those together. If either goes away, so will I, but until then I'll happily pay the Steve tax. :)

Dan said...

Hey man, web apps!
... which Apple treats as second class citizens.

When trying to write code on mac recently, I've run into at least:
- MacOS ships with some weird implementation of sed that chokes on tab characters
- I need 32-bit java 6 to work with this inpulse watch... for which I have to resort to this open source port called SoyLatte I guess?
- the default software to work with the Neurosky Mindset EEG on Mac OS is a .bundle, for which I guess I have to use XCode?
I know you develop more than I, so you've probably found ways around lots of stuff like this. But "you can work around it" is the same argument Linux users use. I want to develop in a way that just works.

Also, remember that time we wrote a mobile app, and had to just write it twice? Sure, you'll probably always have to write some layer in iphone/android specific ways, but it'd be nice if you could abstract some portion of that and just run the same code underneath. Mandating different languages makes this difficult.

Sarah said...

I'm not quite sure how you go from "Apple isn't shipping Java with Macs anymore!" to "Apple is turning evil!" You can still install Java yourself. I don't work in Java or on Java so I don't think I can comment as well on it as someone who does, but I do know that one of the reasons we try to pare things down is to try to achieve higher quality products. Sometimes we fail, but I think that's more "lack of time to work on everything" rather than "haha we want to make some people second class citizens!". At least in my group, people at Apple are just super passionate about making things that work really well. In order to make good products, you have to be willing to cut out things that you can't finish on time or that you don't think will work with your product as a whole.

Dan said...

Hmm, you're right, "Apple is increasingly evil", and the last sentence zinger of this post, are a little over-the-top. Sorry about that!

First on the specific Java issue: I don't know much about JRE versions either except sometimes I don't have one and I google around until I get one. The thing is, downloading them from Oracle for mac... apparently doesn't exist? Apple's been making their own JRE's and shipping with them. So it's not an issue of "not shipping with java", it's an issue of "can't even get java" (without resorting to like openjdk or something, which works, but it's like saying "well this thing on linux works if you use wine")

Second on the issue of Apple as a whole: okay, nobody at Apple is probably evil. Nobody wants to cause harm, nobody explicitly wants to screw anyone. Everyone wants higher quality products, everyone wants to pare things down, everyone is super passionate about making things that work really well, everyone has to cut out things that can't be finished. These are all straw men, or whatever you call it when you have an argument that everyone agrees with.

I just think that Apple's goals are misaligned with the best world. The world where iOS has 90% market share kinda sucks (because I have to use mac/xcode/objective-C to develop, I have to submit to the app store's whims, I have to run on iphones/ipads which I can't root, etc). The world where Android has 90% market share is pretty good.

Do you know game maker Danc? He gave a great talk (or at least a great slide deck) about games and why facebook's closedness is going to screw game developers. http://www.lostgarden.com/2011/03/gdc-2011-game-of-platform-power.html
The more cross-platformey a developer can write stuff, the more power a developer has. When developers have more power, no one company has everyone by the (ahem) throat, and therefore everyone wins.

yincrash said...

Yeah. I think the biggest issue is that Apple has been maintaining the OSX build of Java since forever now. They had the expertise for the implementation. All that institutional memory is gone now.That combined with Oracle's lackluster view toward Java makes me worried that the next version of Java on OSX will be subpar compared to other platforms.

ALSO, when Apple made the implementation, they had the power to use secret OSX apis to let Java have deeper hooks than other applications. I think graphics will probably be the biggest sufferer.