Apple Freezes Java Support for Cocoa 154
Nice2Cats writes "A little message on Apple's Developer Connection tells us that Cocoa for Java will get no new features after 10.4. The full text is:
'Features added to Cocoa in Mac OS X versions later than 10.4 will not be added to the Cocoa-Java programming interface. Therefore, you should develop Cocoa applications using Objective-C to take advantage of existing and upcoming Cocoa features.' Is this bad for Java, or bad for Apple, or bad for both, or doesn't anybody give a damn anyway?"
Toolkits (Score:3, Interesting)
How? (Score:5, Informative)
I would expect the impact to Java developers on OS X to be quite low. Most probably use Swing or SWT for cross-platform support, so the impact of this decision should be negligible.
Re:Toolkits (Score:2)
Cocoa Java frozen.
I have to wonder how will this affect the OpenOffice.Org port NeoOffice/J.
C++ is not a replacement (Score:4, Insightful)
With all due respect, have you tried Objective-C? It's far easier to learn than C++, and in some ways far more powerful. Objective-C is a dynamic (late-binding) language. The Cocoa framework could not have been written in C++ -- many, many decisions are made at run-time.
Don't get me wrong, I'm not one for "language wars"; I'm just saying that C++ is not a replacement. I'm not sure what is, given that Objective-C is fully compatible with C code -- all pointer and bit-twidling nonsense -- and dynamic.
Objective-C coders don't use the language grudgingly.
Re:C++ is not a replacement (Score:3, Interesting)
Since learning Objective-C, it's become my favorite C-type language. It's not something I have to use, it's something I like to use.
Re:C++ is not a replacement (Score:4, Interesting)
IMHO, it's far more elegant than C#, VB, or Java, used by millions (and loved by less). Certainly moreso than C or C++. It's not as elegant as Python, but few things are.
Most Objective-C programmers love the language a great deal and tend to be (at least on the Mac side) very vocal about it.
Re:C++ is not a replacement (Score:2, Interesting)
C# and Java are both clearly more elegant designs, as is C really. C++ has a lot of syntax, and rather wacky semantics in parts, but it manages a lot of power with a few very important concep
Re:C++ is not a replacement (Score:2)
Re:Toolkits (Score:3, Informative)
If you know C, a very small language, and are comfortable with objects, then you are an afternoon away from knowing Obj-C. The runtime delivers amazing flexibility, the reason why all the apps on OS X are so feature rich. The GNUStep implementation needs
Re:Toolkits (Score:2)
i know and use C as well as C++, and i'm quite comfortable in C++ (though Java is still completely foreign to me). i've been wanting and begging to learn Obj-C and C# to broaden my skillset, but non-.NET-specific resources on C# are disappointingly thin and i've been unable to find any books, turorials, or references on Obj-C anywhere. i've spent hours per day looking and have turned up very little.
Re:Toolkits (Score:3, Informative)
The Apple stuff [apple.com] is well done, and much applies to GNUStep. The Apple community is the most active, of course.
Re:Toolkits (Score:2)
Re:Toolkits (Score:2)
http://www.bignerdranch.com/products/ [bignerdranch.com]
Re:Toolkits (Score:2)
What's good about getting rid of non-portable extensions? Some people lke Java as a general-purpose programming language, and want to use it, even when they are doing non-portable things.
ID-10-T Error (Score:3, Insightful)
What does this mean for WebObjects? (Score:5, Interesting)
Now, of course, it seems as though Apple Doesn't Want You To Use Java Anymore. Does this mean that WO6 will drop Java support, or at least bring back Objective-C?
Re:What does this mean for WebObjects? (Score:2, Redundant)
Re:What does this mean for WebObjects? (Score:2, Insightful)
This doesn't mean Apple doesn't want you using Java, it means they don't want people using Java for Cocoa applications after 10.4.
Re: (Score:2)
Re:What does this mean for WebObjects? (Score:5, Insightful)
Not. Really. It indicates that Apple wants you to use Java for Web services and Objective-C for applications. As previous poster already mentioned they are merely killing support for the Cocoa-Java API so I don't see there being much of an issue: I worked on a number of custom OS X apps at my last gig: this announcement would not have influenced any of our projects then and certainly wouldn't impact anything moving forward.
I'd be interested in hearing from an actual developer who *is* impacted by this.
Re:What does this mean for WebObjects? (Score:4, Informative)
Hello! I'm here!
I'm doing some development using Cocoa-Java, and this could impact me, although as the information is extremely brief, I haven't figured out yet how or how much it will affect my work.
I'm in the situation where I already have a very large Java library which was written on other platforms (which has taken ~8 man-years of development effort, and has been heavily debugged and tested int hat time), but works flawlessly on OS X. The Swing application built atop it works on OS X, but many portions of its basic design don't work too well on OS X in terms of UI integration (it works, but it really looks like it was designed for another platform).
As such, to better support the Mac community, I decided one evening to create a Cocoa version using Cocoa-Java. It took me only about 2 hours of effort, and I had a native Mac version of my application that looks and acts like an OS X application, supporting all of the standard OS X controls and menu items.
Yes, Apple says I should just use Objective-C, but honestly I have years and years worth of work that has been put into the Java library and engine code. It's completely multi-platform, and is used on multiple platforms. Rewriting it in Objective-C isn't feasible from either a time standpoint, or from a platform availability standpoint (even if I did have years to rewrite and retest all this code in Objective-C, it would then only compile and run on OS X, and perhaps Linux if I was very careful). So it's not going to happen.
As such, I'm quite possibly impacted by this decision. However, the wording of the "annoucement" leaves much to be desired. Presumably based on their wording, they aren't dropping Cocoa-Java completely -- only that new Cocoa features won't be bridged. The GUI needs for my application are well served by the existing Cocoa-Java bindings, so if Cocoa-Java continues to be installed as a part of OS X, at least my application won't be unusuable before it is released to the public.
I am a bit surprised in some ways, however. With the announcement a few weeks ago of the move to Intel-based processors, I thought they might actually work to improve Cocoa-Java, due to its immediate cross-platform benefits (although Xcode 2.1 won't generate Universal Binaries for Cocoa-Java projects).
I'm holding out hope that OS X 10.5 and 10.6 don't drop the existing level of Cocoa-Java support. To be honest, I don't expect every feature of Cocoa to be made available to Java (as it doesn't always make sense to do so), so not putting anything new in, while disappointing, doesn't bother me a whole lot. It's the concern that at some point in the next few years Cocoa-Java could be dropped altogether that worries me.
Yaz.
Re:What does this mean for WebObjects? (Score:3, Informative)
Re:What does this mean for WebObjects? (Score:2)
Ok, then write the controller part of the app using Objective C, and keep the model in Java. Problem solved. If you need some help
Re:What does this mean for WebObjects? (Score:2)
Re:What does this mean for WebObjects? (Score:3, Informative)
I am. We ship a commercial app for OS X which is Java/Cocoa. We wanted to have a good, native look and feel so we isolated the UI specific portions using a Model-View-Controller setup and have it running ontop of Cocoa and Swing. Swing does not provide a good enough Mac experience for a commercial app and SWT is not quite right either (the menu bar tends to go wonky, there's no support for sheets...)
Re:What does this mean for WebObjects? (Score:2)
That's what the announcement looked like to me as well. I just wanted clarification.
Thanks for all the responses.
Re: (Score:3, Insightful)
This only affects one app that I use... (Score:5, Interesting)
Re:This only affects one app that I use... (Score:2)
Re:This only affects one app that I use... (Score:3, Informative)
Re:Isn't NeoOffice/J written for Cocoa/Java? (Score:2)
Probably not a big deal (Score:5, Informative)
Fact is, Java apps will still work. Still look like MacOSX apps (at least as much as they do today). I don't see how this is much news really.
If they did have an interface to use these features, it would break cross platform compatibility anyway as they are bound to be Mac specific UI elements.
Re: (Score:2)
To clarify... (Score:5, Informative)
Good idea? As far as large software makers go, it probably doesn't matter. Adobe's Mac developers have all learned Objective C already. This does significantly raise the barrier of entry for hobbyist coders, though. Seems like a typical Apple decision, certainly.
Re:To clarify... (Score:2)
The biggest issue is in order to write Cocoa applications using Java you have to learn Cocoa. If you're going through that effort it is a lot simpler to spe
Re:To clarify... (Score:4, Insightful)
This line of reasoning bugs me, because it presupposes that you're building an application from scratch.
However, what if you have a large and specialized existing Java library that has taken years to write and has been very strenuously tested, and want to use it inside a Cocoa application? Cocoa-Java was excellent for this -- it took me less than an hour to build a Cocoa interface atop such a Java library, giving me much better integration with OS X's UI than Swing with an Aqua L&F ever would, with a lot less coding.
Yes, if you're building an application from scratch, Objective-C is a better option (I've developed some Obj-C Cocoa applications as well). But if you have an existing library which has taken you years to write in Java, why would you want to re-do all of that work in Objective-C, when you can just use Cocoa-Java?
I'm hoping we few of the Cocoa-Java community can convince Apple to release the Cocoa-Java framework to the Open Source community so we could contain to maintain and update it. The only consoltaion I'm gaining from the current "announcement" (if you can call it that) is that it looks like future versions of OS X will support Cocoa-Java -- they just won't be adding anything new to Cocoa-Java past 10.4. So at least my existing Cocoa-Java application (which is only in limited release at the moment) won't be completely obsolete the day it is released.
Yaz.
Re:To clarify... (Score:2)
Re:To clarify... (Score:2)
Or, you can write a Swing or SWT app instead of using Cocoa/ObjC.
Re:To clarify... (Score:4, Insightful)
How?
Objective-C is not the traditional point of entry for a hobbyist coder... AppleScript and Perl generally are. If I was going to recommend a programming language for such a person, it would be Java, on the strength of the API documentation alone, but certainly not Objective-C.
Who reads macslash anyway? Their headline for this article is Apple: You Can't Develop In Java Anymore , which besides being inflammatory is incorrect.
Macslash makes PowerPage seem like ArsTechnica.
Re:To clarify... (Score:2)
And therefore eliminating the Java option raises the barrier to entry for Cocoa! We're basically agreeing, so I don't understand what you're objecting to.
Macslash makes PowerPage seem like ArsTechnica.
Well, these days Ars Technica seems a lot like Slashdot [slashdot.org]...
Re:To clarify... (Score:2)
Is Perl really the hobbyist point of entry? Why?
I am, for all practical purposes, a Perl fanatic. I love the language. The combination of power and breaking all "normal" language rules is, in a word, fun!
But to really learn the culture etc, was more work than when I learned assembly (68k, regular though) and C in the .. hrm, let us say -- a long time ago.
The disadvantage to Wall's linguistic influences i
Re:To clarify... (Score:2)
I think you answered your own question in the next paragraph....
I am, for all practical purposes, a Perl fanatic. I love the language. The combination of power and breaking all "normal" language rules is, in a word, fun!
But to really learn the culture etc, was more work than when I learned assembly (68k, regular though) and C in the .. hrm, let us say -- a long time ago.
If you mean a long time ago, Perl wasn't even an option. Also note that I'm talkin
History reconstructed (maybe) (Score:4, Insightful)
I haven't had much to to with NeXTSTEP/OS X since then, but your comments make me reconstruct the Java/Cocoa story as follows: after adopting NextSTEP as the basis for OS X, Apple management decides Objective C as a fringe language, and that Java, which was then being hyped as the language of the future, was an easier sell. But, as always, the developer community went with the tools it knew how to use, so Objective C never lost its dominance in OS X development. This latest move is just management bowing to that reality.
Re:History reconstructed (maybe) (Score:4, Interesting)
Yeah, well, it's worth remembering that back in 1997, Netscape's new browser was going to be written in Java, Corel were going to sell an office suite written in Java, and everyone was going to run 'thin client' systems based on Java. The great Java hype machine was just winding down.
Re: (Score:2)
Re:History reconstructed (maybe) (Score:2)
Microsoft must have had that in mind when they decided that .NET would suppor
Apple has been advising against integration for so (Score:4, Interesting)
What about SWT? (Score:2, Interesting)
Re:What about SWT? (Score:3, Informative)
Ob Homerism (Score:5, Funny)
Re:Ob Homerism (Score:2)
Re:Ob Homerism (Score:2)
Its really not a big deal (Score:4, Insightful)
People wanting this functionality in the future will still be able to do so by just writing a little JNI to handle it - though I'm really not sure its worth the effort.
Re: (Score:2)
swt (Score:3, Insightful)
Where does this leave the NeoOffice/J project? (Score:2)
Re:Where does this leave the NeoOffice/J project? (Score:4, Informative)
From the NeoJ Forum [neooffice.org]
The Java that's used within NeoJ is "pure" Java, AWT and Java 2D at present, and perhaps some Swing in the future. Anything that's using OS X specific frameworks is written in either C++ or Obj-C. Since the majority of the application is already C++ based, we just call the frameworks directly. There's no need for us to add an extra layer with the CocoaJava language bridge and never will be.
To put this in perspective: (Score:5, Insightful)
+1 mod points to everyone who spotted this is neither anti-java or anti-Cocoa, in fact, it is pro Java because no Java developer wants to be bogged down with much non-portable code or mac only code.
I would wager than Apple was even nudged by some Java developers who said, yes, this was nice, but look, not much interest in it, we can use our own libraries and keep it cross platform.
This is GOOD for Apple, as this 'embrace the non-proprietary cross platform Java' rather than using Java Cocoa fixated programming, will mean more Java developers will target the Mac. Oooops! But they already do because Java is cross platform. Oh Hahah I am funny.
Now, sometimes you do want to access proprietary extensions, and in yesteryear, the extremely small quirky devices would give some benefits for being able to access their split bars, or their dialogue classes, so each platform had their own set of 'device API's', nothing too wrong with that, but with great power come great erm, device abstraction. Go spidey.
Why did anyone use it in the first place? (Score:2)
Java is a good language but restricting it to Cocoa destroys the cross-platform compatibility, which is pretty much why you'd use Java in the first place. I would understand if Cocoa were garbage and the Java class library was needed as an alternative, or if Objective-C were a complicated language to learn. But Cocoa is a great API and Objective-C is just a small and ele
Re:Why did anyone use it in the first place? (Score:5, Insightful)
I can think of one reason for using it. If you have an existing Java application and want to release if for the Mac, it makes a good choice. If you run a Swing or SWT Java app on OS X without any changes, it will look native, and it will almost feel native, and that almost is enough to really irritate users (including me). Replacing the original GUI with one drawn in IB (so you get the HIG spacing guide lines) and with controllers written in Java as a thin wrapper around the existing model code would be a significant benefit in terms of usability.
Re:Why did anyone use it in the first place? (Score:2)
That's still possible. What's not possible is to use your cross-platform Java code, draw a GUI in IB for it, and then extend it with post-Panther additions to Cocoa in Java. Big deal: if you did, your code would cease to be cross-platform anyway.
Re:Why did anyone use it in the first place? (Score:2)
I've no idea. I think it was created because Apple was concerned that Objective-C would be too alien and would be rejected. So they created Cocoa-Java, sort of a comfy security blanket insulating the programmer from Objective-C.
Around the time of the Apple/NeXT merger, there was even some thought given to redoing Objective-C to have a Java-like syntax. Thankfully, they d
Re:Why did anyone use it in the first place? (Score:2)
Exactly. It's much easier for Objective-C to call Java than vice versa because all ObjC method calls are resolved at runtime. (Which allows an ObjC proxy object to take the invocation and transparently forward it to a Java object). Note that more dynamic languages can be better integrated w
Re: (Score:2)
Not a big deal (Score:3, Informative)
It really isn't a big deal. Few people use Cocoa-Java to build apps, and it hasn't ever been very well supported or documented.
It doesn't effect cross-platform Java, won't effect WebObjects (which is 100% Java).
Bad for Cocoa-Java... very few give a damn anyway. (Score:4, Insightful)
Who writes programs like that ? Very few people, it turns out. I'm sure there are excellent examples of Cocoa-Java programs out there. In fact, I know there are. But really, they are neither highly portable, nor are they fully native code. It's entirely like having a Java program with an ActiveX interface. It's neither native nor cross-platform, it's a mix of technologies, and has the advantages and drawbacks of both, oddly enough.
Apple has, for some time, been moving away from full Cocoa-Java support. If you're shocked by it going away, you haven't been paying attention. If you want a multi-platform Java application, use multi-platform libraries, i.e. Swing. If you want a native application code program, write one- if you don't want use Objective-C because you'd like to port it more easily ( GNUStep aside ) , use C++. But if you want to use Java, well... use Swing. Seriously. It's not as bad as you've been told.
Then again, having native binary projects designed for their respective platforms has it's advantages, too.
Don't get me wrong. I've always thought Cocoa-Java was neat. But mostly in a 'cool trick' sort of way, not in a "I'm going to use this all the time" sort of way. If I want a chunk of code that just runs on any JVM-supported system, I'm not going to use Cocoa-Java, I'm going to use Swing and avoid having more than one build. If I want a native Mac OS X program, Objective-C is easy. Cocoa-Java fit some in-between requirements space that I guess I never really fully understood.
You are completely wrong (Score:2)
no, no, no. Cocoa-Java is a way to write native Mac OS X applications using the Java programming language. The Java platform (i.e. java.lang.*), never enters into it.
Instead of using javax.swing.JFrame, you use com.apple.cocoa.NSWindow (the exact package name escapes me, but you get the idea), and you compile it into native code using Xcode, not bytecode using javac.
Reading articles such as t [apple.com]
Re:You are completely wrong (Score:5, Informative)
That's better advice for your response, as opposed to the grandparent post.
That's not true. All of the java.lang.* classes are available. In fact, you can even make calls to javax.swing.* classes (although you have to be really careful in terms of event threads, so it's dangerous to do so). Cocoa-Java still uses java.lang.Class, java.lang.Object, java.lang.String, java.lang.Classloader, and any of the other java.lang classes.
That is also not true. Cocoa Java bundles include the JAR files for their Java components. Only a small stub is compiled natively. Just view the package contents of any Cocoa Java application and you'll find the JAR file. Or build a Cocoa Java application in Xcode, and see something like the following in the build log (with lots of snippage...):
Sorry, but you're talking out of your ass, and have no idea what you're talking about.
Yaz.
(Cocoa-Java Developer).
Re:You are completely wrong (Score:3, Insightful)
Look, I don't want to make you sound silly, Yaztromo already did a fine job of that [slashdot.org], but when Apple says that the Cocoa-Java NSObject [apple.com] "inherits from Object", exactly what "Object" class do you think they're talking about ?
Hint : it's in the package you don't have to import in the Java language.
Further hint: NSObject [apple.com] in Objective-C ( native Cocoa as opposed to Cocoa-Java, I suppose ) doesn't inherit from anything else, it's a root class.
It's hard
Incompletely wrong... (Score:2)
On faster machines I'm sure it's a lot better, and I would assume that they'd run
Re:Incompletely wrong... (Score:2)
You're right there- if you're running on a machine with a non-hardware-acceleration graphics card, you really do need to try the turn-off-the-eye-candy tricks ( disable bouncing dock icons, window and sheet effects, etc ), and if you're on an early G3, ouch. Tiny delays imposed by Objective-C message passing are just that- tiny.
Java just gave it that little extr
Re:Incompletely wrong... (Score:2)
Having to take these extra steps defeats the object of a cross-platform UI library. The library should be handling this stuff. If it can't, then
Hmmm... Java/Tk? (Score:2)
Maybe they need to provide Java bindings for Tk, because it does a pretty good job of providing a compatible look and feel on any platform, including automatically putting the menu bar in the right place on Mac and Windows.
Jonathan Schwartz ramblings (Score:4, Funny)
Shocking, I know.
Oye vey...
--
http://joshstaiger.org/ [joshstaiger.org]
Re: (Score:2)
How about NeoOffice/J ? (Score:2)
Or is this announcement something similar to the recent pronouncement that with 10.4, APIs were frozen, so developers would no longer have to target a morphing platform?
I believe that either the same or a similar situation exists with Camino.
Re:How about NeoOffice/J ? (Score:2)
Camino has nothing to do with Java -- it uses a native Cocoa to wrap the C++ Gecko innards in.
Never saw the point (Score:3, Insightful)
But I don't think either of those advantages are great enough to make it worth Apple's while to spend money on maintaining Cocoa bindings for Java. Objective-C is really not difficult to learn, and has plenty of syntactic sugar to keep you happy - especially if you're using Apple's runtime. And reference counting isn't perfect, but it's also almost brainless to use after a few days of really getting used to it.
Much better in my opinion for Apple to put their Java efforts into trying to keep the JRE on OS X up to date, and possibly to put a bit more effort into getting it to run well.
Re:Never saw the point (Score:2)
C# anyone?
Interface Builder/Obj-C/Cocoa's supposed advantage is building first-class applications (native look-and-feel) in a "modern" environment (not raw C with Pascal-interface APIs).
"Modern" (moving away from the solution domain towards the problem domain and letting the coder ignore details like memory management that the computer
Re:Never saw the point (Score:2)
I would argue that Objective-C has a higher overall score for those three features than Java. But moving on, if I were looking for a truly high-level language for my app development (which I am), I wouldn't want ObjC or Java. ObjC is n
Third party bridge (Score:5, Informative)
this is really a shame. (Score:2)
Re:this is really a shame. (Score:2)
When Java was fresh on my memory, I tried to write a Cocoa-Java app to learn Cocoa. The Java parts weren't hard, but few Cocoa frameworks are available because there's sizable effort in making your frameworks work with Cocoa-Java. I ended up having to learn Objective-C and
Cool.... (Score:2)
(ducking from flying tomatoes)
I you decided to use Java for your Cocoa apps... (Score:2, Interesting)
It's about time (Score:2)
The Java version of Cocoa was never very well supported (lots of features not available) and the documentation always sucked. Plus, it was hard to use, as Java and ObjC have a lot of big differences which made using Cocoa APIs from Java very awkward. You pretty much had to learn the Objective C version of Cocoa first anyway, before trying to use the Java version, in order to really get it. And at that point you might as well just write your program in Objective C. (Unless you were just trying to put a
Re:Java scares the crap out of people! (Score:4, Insightful)
Re:Java scares the crap out of people! (Score:2)
Re:Java scares the crap out of people! (Score:4, Insightful)
Java scares companies like Microsoft and Apple because it has the potential to make their closed platforms irrelevant.
Ok... now tell me how supporting java applications, including cross platform applications, but dropping cocoa bindings (largely irrelevant or even a hindrance to cross-platform java applications) is indicative of Apple being scared that java will enable people to move away from their platform? They are freezing support for cocoa bindings, not the java API in general.
One of the main reasons I prefer OS X over most other platforms for most tasks is all the added benefits from the OS. The system services that are usable across all applications, for example, like the spell checking in this text field (and all other native text presented by applications and the OS). Cross-platform apps and java apps are weak because they have to reinvent the wheel for everything every time because they can't count on the OS offering all the useful features. It's fine for little games and whatnot, but for the most part, it is just not as good.
Re:Java scares the crap out of people! (Score:3, Insightful)
Re: (Score:2)
Re:Java scares the crap out of people! (Score:5, Funny)
Did you just get off the boat from 1996 or something?
Re: (Score:2)
Re:Java scares the crap out of people! (Score:2)
Here, I'll repost my response. It's already +5 Funny. Maybe I can double score on it.
Java scares companies like Microsoft and Apple because it has the potential to make their closed platforms irrelevant. If the promise of Java did take off - people would be free to choose their platform without having to worry about buying all new apps or learning new look-alike apps. Did you just get off the boat from 1996 or somet
No, actually, it won't bother many developers (Score:2, Insightful)
Lack of Java support = more anger
Are Apple just trying to piss off their loyal developer base?
Most developers are happy to see the move to x86 as it will simplify the performance-optimization stage of software development or software porting. But that's another arguement for another time.
This announcement has nothing to do with Java support in general. Apple and Sun are going to continue supporting Java on Mac OS X just as they always have. If you want your Java app to look like a nativ
Nope... (Score:2)
It's just because maintaining it is too much work considering how few people use Cocoa-Java.
Java itself will still be available.
Re: (Score:2)
Java is blazing on Intel (Score:2)
For thread/throughput intensive applications, SPARC may win vs. P4 or Xeon (especially the multi-core SPARC models), but against Opteron or Itanium it's probably going to be a wash.
Generally we look at SPEC benchmarks when capacity planning, there is no inherent CPU advantage on the Sun JVM on Intel vs. Solaris (though the Solaris VM does hav
Re:Sun refusing to license/port Java to Apple+Inte (Score:2)
Not likely.
Apple and Sun are really in two very different market segments.
Sun has really cool hardware tricks that make their servers popular. Apple has really cool software tricks that make their Desktops popular.
People are not likely to switch from Apple to Sun or vice-versa in any major numbers. The Apple folks and Sun folks are coming from very different perspectives.
What this is is nothin
Re: (Score:2)