PDA

View Full Version : Apple Dumping Java?




Pentad
Oct 21, 2010, 09:10 AM
If I was a Java developer on Mac I would be feeling uneasy today:

http://www.itproportal.com/portal/news/article/2010/10/21/apple-reportedly-planning-remove-java-mac-os-x/


Then there is this from Apple's Mac Store Guidelines:

2.24
Apps that use deprecated or optionally installed technologies (e.g., Java, Rosetta) will be rejected


I know Steve thinks Objective-C is the greatest thing ever but Java is widely used in many areas. The last think the Mac needs is a JVM that isn't in sync with the current release.

Also, since Apple licensed and did the port of Java on their own in the 90s it really makes a mess if Apple drops support of Java...



lee1210
Oct 21, 2010, 09:23 AM
I guess maybe I see this as glass half full. If you want to talk about sync of java releases, the prior situation with Apple taking a very long time to release updates, release major versions, etc. seems much worse. I guess my hope is that Oracle takes OS X seriously and is better about simultaneous releases than Apple has been.

As for the app store, this is a serious 'meh' for me. I'm guessing the few 3rd party apps I use won't be on there (MS Office, Quicksilver). I haven't used a java application on my Mac since limewire went out of style. I do write some Java code, and if I needed to do it a lot more on my Mac I'd want eclipse, but I can find that fine without the app store.

It is sort of sad that java devs are left out of the app store goodness, but if I was trying to set a bar of consistency I might leave Java out. The L&F is OK when people know what they're doing, but a lot of programs that don't start on the Mac don't have the same polish. Java also misses out on a lot of the cool stuff that Apple is coming up with, so I can understand wanting to limit apps to Apple's "1st class" environment.

-Lee

elppa
Oct 21, 2010, 10:08 AM
The only promising things are:
[1] Apple finally added 32bit Java 6 support in SL.
[2] Apple released a Java update yesterday.*

Apps like Netbeans and Eclipse still run.

This restriction means popular FTP client Cyberduck (http://cyberduck.ch/) will never make it to the app store. That might surprise people, but it actually has parts written in Java.

* Edit: At the time of writing I had just noticed the updates had been released in page two sidebar. I hadn't read any further, otherwise I would have been aware of the more troubling news.

Cromulent
Oct 21, 2010, 10:08 AM
At least it will mean that you can use the same JVM on Linux and the Mac now and thus reduce weirdness in the way that apps behave under different virtual machine implementations on the dev machine and the server machine.

I'm guessing OpenJDK will become the de facto standard for Mac OS X Java.

robbieduncan
Oct 21, 2010, 10:14 AM
This restriction means popular FTP client Cyberduck (http://cyberduck.ch/) will never make it to the app store. That might surprise people, but it actually has parts written in Java.

Doesn't surprise me at all. The (default) Cocoa networking libraries are complex and difficult to use. Bridging across to Java for that is actually very tempting!

GFLPraxis
Oct 21, 2010, 11:28 AM
App store rejecting stuff written in Java makes perfect sense to me. Apple wants certain UI standards that many Java apps tend to lack, and Apple might want to guarantee certain interoperability and that their changes won't break things in the app store.

That said, Java is extremely necessary for many server applications and enterprise applications. I really hope Oracle picks up the slack.

shreddy
Oct 21, 2010, 11:29 AM
I write a cross-platform app using Java (on Eclipse RCP) and I'm getting worked up over this! Now I'm understanding more of the furore of the devs who get their iPhone app submissions rejected...

So how are folks supposed to write apps to run on Windows & Mac OS X? Having two completely separate codebases just isn't the way to go...

lee1210
Oct 21, 2010, 11:33 AM
I write a cross-platform app using Java (on Eclipse RCP) and I'm getting worked up over this! Now I'm understanding more of the furore of the devs who get their iPhone app submissions rejected...

So how are folks supposed to write apps to run on Windows & Mac OS X? Having two completely separate codebases just isn't the way to go...

You're making assumptions. If Oracle says they will not write a JVM for OS X, then you can get worked up. Until then, the only thing you know is that your Java app won't be in the App Store. You will have the same distribution options that you have today for your app.

-Lee

shreddy
Oct 21, 2010, 11:57 AM
You're making assumptions. If Oracle says they will not write a JVM for OS X, then you can get worked up. Until then, the only thing you know is that your Java app won't be in the App Store. You will have the same distribution options that you have today for your app.

-Lee

Yes maybe I'm stressing, but not being in the App Store is surely a missed opportunity for increased sales...

mrbash
Oct 21, 2010, 02:29 PM
Although I am an ardent Java fan, I understand Apple's position on this.

Developing a Java Runtime is expensive, and the certification process must be expensive also. It seems pretty unfair that IBM gets a free ride (in exchange for dropping support for Harmony) and Apple still has to pay for their license.

My guess is that Apple saw that with the OpenJDK project they no longer had to spend their own resources developing a runtime.

I doubt that Oracle would bother producing a runtime for OSX. They just really only care about the enterprise space, and OSX isn't there.

I feel that this is the start of Java's decline. What made it so great is the wide availability of it, and the amazing number of libraries available for it. But Oracle seems to only care about how it can monetize Java.

Blakeasd
Oct 21, 2010, 06:45 PM
APPLE IS NOT GETTING RID OF JAVA!!! This only means the App store won't allow Java applications. You don't have to get your apps through the app store, its just another way to get apps. Nothing to get worked up about.

mrbash
Oct 21, 2010, 07:05 PM
APPLE IS NOT GETTING RID OF JAVA!!! This only means the App store won't allow Java applications. You don't have to get your apps through the app store, its just another way to get apps. Nothing to get worked up about.

Actually they are. Apple will no longer produce a Runtime starting from 10.7. That is, they are getting rid of it from their OS. It is entirely possible another vendor will produce a Java Runtime for OSX, but Apple is getting rid of it from their OS. Just like they are getting rid of Adobe Flash from their OS.

foidulus
Oct 21, 2010, 08:41 PM
You're making assumptions. If Oracle says they will not write a JVM for OS X, then you can get worked up. Until then, the only thing you know is that your Java app won't be in the App Store. You will have the same distribution options that you have today for your app.

-Lee

See, thats the problem, he's making assumptions because Apple has said exactly 0 about the future of Java on OS X other than their VM is deprecated. This doesn't sit well with corporations who like predictability and time to migrate if necessary. This whole "lets be super secret!" games aren't a big problem in the consumer space but they rub corporate types the wrong way. Apple wants to be accepted in the enterprise but isn't willing to give up these stupid secrecy games even one bit. Look at what they did with the XServe Raid. While getting rid of the XServe RAID was the right decision in the long run, the fact that Apple treated it just like it does iMacs upgrades, eg say nothing about it till the day it goes on sale, rubbed a lot of corporate types(including me and the people at my company) the wrong way. If they are going to discontinue a product they better give a fair warning AND give a nice long transition period where we can use either the old or new and decide for ourselves the best way forward.

So now my company has a lot invested on mac Java and we essentially have no idea where it is going. Are the Java Application stubs still going to work? Is Apple going to help port the native look and feel? Are the Apple extensions going to work? These are incredibly important questions that Apple is outright refusing to answer(I'm on the java dev mailing list and the engineers there have been pretty receptive to most technical questions but are remaining mum on this issue). People's livelihoods and reputations with their clients depend on answers to these questions and yet we get nothing from Apple. How am I supposed to plan ANYTHING in advance? Well, besides going to Linux which has its own set of problems but it's INFINITELY easier to plan ahead with. Yes I could port things to Cocoa/Objective-C but given Apple's track record how am I supposed to be sure that they won't just abandon that on a whim?

Steve has let the success go to his head. The same people that helped to make the mac and iwhatever platform what it is are going to abandon him in droves.

robbieduncan
Oct 22, 2010, 04:27 AM
I write a cross-platform app using Java (on Eclipse RCP) and I'm getting worked up over this! Now I'm understanding more of the furore of the devs who get their iPhone app submissions rejected...

So how are folks supposed to write apps to run on Windows & Mac OS X? Having two completely separate codebases just isn't the way to go...

There are two options that the large vendors (Adobe and Microsoft) have gone for. On the Adobe side you have a large common codebase written in C/C++ that provides most of the functionality/heavy lifting and custom front-ends for each platform that use these common libraries. This is an excellent solution that can, if done properly, be very high performance, offer 1:1 feature mapping between versions and integrate perfectly with every platform.

Microsoft with Office maintain two distinct code bases!

The other option is to use something like QT that allows one codebase to compile against multiple platform targets without needing Java.

shreddy
Oct 22, 2010, 05:24 AM
Switching to languages like C/C++ feels like a step backwards from Java...
Trouble is that Java has such a rich library ecosystem, which I'm leveraging, and I have no idea what approach to take with this - i.e. how many wheels will I have to reinvent. I'll have to read up on ObjC/Cocoa to find out more and try to figure out if a port is even realistically feasible (given that my B2C app is developed on top of a full time job).

So if you use C++ libs to do things like XML processing instead of Cocoa APIs then Apple don't care? (yet) As long as all libs are part of your app your safe, right?

Apple's policies mean lots of Java devs might retrain on other languages, at least maybe I'd end up playing with C# again which I hear has been getting some good language improvements ahead of Java. But I just can't help thinking, hell, life is just too damn short...

robbieduncan
Oct 22, 2010, 05:56 AM
So if you use C++ libs to do things like XML processing instead of Cocoa APIs then Apple don't care? (yet) As long as all libs are part of your app your safe, right?

Use C++ libraries are fine: they are part of the reason Apple invented Objective-C++. WebKit is largely C++ and the Safari front-end is Objective-C/Cocoa...

Your XML example is not a good one: if you want to use libxml for parsing I'm pretty sure it's installed on the system so you wouldn't need to include a copy within your app (and desktop Cocoa has pretty good XML support anyway).

shreddy
Oct 22, 2010, 10:15 AM
Yes, straight-forward XML maybe isn't the best example, but I'm using XStream which does a great job of simplifying object serialisation.

AFAIAA Cocoa doesn't provide this kind "here's an object, serialise it" (and vice-versa) support? Not actually sure what would be an equivalent C++ lib, but I bet there is one.

lee1210
Oct 22, 2010, 10:22 AM
Yes, straight-forward XML maybe isn't the best example, but I'm using XStream which does a great job of simplifying object serialisation.

AFAIAA Cocoa doesn't provide this kind "here's an object, serialise it" (and vice-versa) support? Not actually sure what would be an equivalent C++ lib, but I bet there is one.

If you're talking about automatic serialization of any object, that doesn't exist. There is the NSCoding protocol that allows you to lay out how your Object is to be serialized. If you have 100s of your own classes it would obviously be pretty painful, but for a few classes it's pretty easy.

-Lee

robbieduncan
Oct 22, 2010, 11:00 AM
If you're talking about automatic serialization of any object, that doesn't exist. There is the NSCoding protocol that allows you to lay out how your Object is to be serialized. If you have 100s of your own classes it would obviously be pretty painful, but for a few classes it's pretty easy.

-Lee

If your classes are key-value compliant implementing key-value coding isn't too much of a pain I don't think.

shreddy
Oct 22, 2010, 11:45 AM
If your classes are key-value compliant implementing key-value coding isn't too much of a pain I don't think.

Yes, key-value compliant. XStream lets you tag class attributes with a name (or it defaults the name of your variable) and stores the attribute value against it, traversing the object graph. Sounds like one less thing to worry about.

I guess I really ought to read up more on ObjC/Cocoa to make a proper informed decision. What's the quickest way to get a decent overview without going too deep? Unfortunately I don't have time to read a stack of 600 page books! Are the Stanford University videos on iTunesU any good?

robbieduncan
Oct 22, 2010, 12:00 PM
I guess I really ought to read up more on ObjC/Cocoa to make a proper informed decision. What's the quickest way to get a decent overview without going too deep? Unfortunately I don't have time to read a stack of 600 page books! Are the Stanford University videos on iTunesU any good?

The problem is (just like Java) that the language itself is simple and can be learnt quickly. The gigantic class library is what takes the time to get familiar with and no overview can really get you there.