In the latest update to the technical documentation available from ADC, Apple has published this note: “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”.
I don’t own a Mac, but the last time I used one I installed jEdit (a swing app) on it and noticed that the interface looked more like a Mac application rather than the Swing Metal look. Is this what they are going to stop doing?
no that stays. Its a cute hack.
That wasn’t Cocoa, Java’s Cocoa bridge require(s/d) a Mac. The Mac look is just a look for that.
They’re using Swing. That’s why it looks like that
I don’t know but this is a strange move. Why would they stop keeping it updated after 4 releases?
Do you guys think this is related to the java language itself that apple doesn’t like that much or this is related to the x86 move? Maybe the performances of Java on PPC were acceptable for them but not on the x86?
I really don’t know…
No, it is a Swing theme. And still no close to original.
They are probably dropping it because nobody really uses it.
The only java-coca app I’ve seen is TextEdit and theres even an ObjC port of that floating around. No point in maintaning an API that nobody uses.
>They are probably dropping it because nobody really uses it.
The quite popular Cyberduck and Aquisition are indeed using it.
If your going to use a toolkit like cocoa that ties you to the Mac platform (GNUstep aside), why use java. I hope they use the resources that would have gone to updating these bindings to improve swing or swt support on the Mac.
“If your going to use a toolkit like cocoa that ties you to the Mac platform (GNUstep aside), why use java.”
Because Java is a nicer langauge to work with than Objective-C. No worries about pointer troubles, memory management or endianess issues. Also, having a choice between several languages is always a good thing.
Because Java is a nicer langauge to work with than Objective-C.
Sure stew. We all take your word on that. Everybody is going to drop objective-c for java because of your post.
I wonder what this means for Ruby/Cocoa and Python-Cocoa. Oh well. The java people won’t suffer, because swing apps use native l&f, so a nice swing app is hard to tell from a Cocoa app. Ditto for Tk, actually.
Nothing, since they’re just bindings for ObjectiveC (at least in the case of PyObjC which is the de-facto standard for Cocoa interaction with Python).
Apple hates its customers and that’s why we like Apple. Abused spouse syndrome and all.
I wonder what this entails about WebObjects. Does Apple actually discourage the use of Java, or has experience simply shown that most Java applications are written in Swing anyway?
Do you guys think Apple will provide a real alternative to ObjC after the x86 move? x86 programmers are much more familiar with the other C (C, C++, C#).
For the current MacOS developers, it doesn’t matter. But for the x86 programmers that are going to port some applications to MacOS, it will definately slow them down if they are somewhat forced to use ObjC.
I even know Smalltalk alot and I’ve been working with C since forever but to be honest, I never really had the interest to take a look at ObjC. Except for GNUStep, I think ObjC is a Mac thing 😉
> Do you guys think Apple will provide a real alternative to ObjC after the x86 move?
Two Apple engeneers are known to be working on Cocoa-Sharp (http://www.mono-project.com/CocoaSharp), in their spare time, however.
That would be very, very cool. Anything that will encourage devs to jump ship from Windows, plus code-portability is super important, despite what the Apples and Microsofts say.
Something is wrong with this picture. Apple engineers having “free time”?
Since Objective C is basically C with a few keywords added for object Oriented programming, I fail to see how using C, C++, or C# would help.
Apple goes the Microsoft way more and more. It’s more and more “our way or the high way”.
They should listen a bit more to what the developers say, after all, those people are the ones who create the apps where Apple eventually lives from, because no apps is bye bye osx.
I’m a Mac user, and a Linux user. More and more, I like the openess from Linux over the “ease of use” of a Mac. Mac is only friendly to the ones they like. For instance, after all these years, there’s still no decent support for Nokia phones in their iSync.
For instance, after all these years, there’s still no decent support for Nokia phones in their iSync.
Oh yeah?
http://www.apple.com/macosx/features/isync/devices.html
I think is a good idea. I’m very surprised by the “Virtual machine insanity” that has spreaded in the last years, of course, VM have its uses, but every excess is bad and they also have its disadvantages. If I can choose I allways prefer to use platform native apps.
I think is a good idea. I’m very surprised by the “Virtual machine insanity” that has spreaded in the last years, of course, VM have its uses, but every excess is bad and they also have its disadvantages. If I can choose I allways prefer to use platform native apps.
Really? Think about this : Apple is going to be supporting 2 different architectures at the same time. Objective-C apps are going to break, no matter how well coded. Then they will need to be compiled to “fat” binaries.
The java apps won’t have all these problems, it’s a perfect example of one of the core benefits of java.
“Objective-C apps are going to break, no matter how well coded. ”
What? Ever heard about Rosetta?
“Objective-C apps are going to break, no matter how well coded. ”
What? Ever heard about Rosetta?
See Segio’s answer. Plus Rosetta won’t run all apps, like those that depend on altivec for example. No emulation layer is perfect, much better to have your code written for an unchanging virtual machine.
Besides, my original point was that the java code doesn’t have all the endian issues etc. you have when porting objective-c code to run on both architectures.
“I’m very surprised by the “Virtual machine insanity” that has spreaded in the last years…”
You mean like the WoW virtual machine in Windows 95, the 68K virtual machine in every PowerPC and, of course, ObjC’s own virtual machine…
This was pretty obvious all along: the docs for the actual Java Bridge (the build system used to bridge the frameworks, not the bindings resulting from them) tell that it has been deprecated for a long time. So it wasn’t possible build new bindings (e.g. for your own framework) without using the deprecated stuff.
Also, this technology is not dropped, it’s just not being extended any longer.
It would be interesting to look into adapting JIGS (http://www.gnustep.it/jigs/) as a replacement.
I dont get why people assume that now that apple will use intel that macs will be cheaper, that macs will use other programming languages, that apps will be ported more easily from windows etc etc etc…
ObjC survived the death and acquisition of Next.
Apple already has a lot of useful classes on cocoa – C and C++ have been around for a while – if they wanted to use it, dont you think they would have already done so ? Additionally C# is a .net MS thing, why would apple use it?
Most people are used to C-like languages and just don’t get it. Objective-C (besides being 100% compatible with C, which C++ isn’t and C# only bears the name) is a *dynamic* language. That’s fundamentally different from the static procedural thing C++ (and C# and java) offer you. The result is that Objective-C is an order of magnitude more useful for lots of stuff, and *manageable*. It isn’t just a fad for a weird syntax (literally, C mingled with Smalltalk with all the seams showing).
The Java Bridge was a political maneuver at NeXT and then at Apple.
Do you guys think Apple will provide a real alternative to ObjC after the x86 move? x86 programmers are much more familiar with the other C (C, C++, C#).
For the current MacOS developers, it doesn’t matter. But for the x86 programmers that are going to port some applications to MacOS, it will definately slow them down if they are somewhat forced to use ObjC.
I even know Smalltalk alot and I’ve been working with C since forever but to be honest, I never really had the interest to take a look at ObjC. Except for GNUStep, I think ObjC is a Mac thing 😉
Objective-C is not a Mac thing. Objective-C was a Stepstone and NeXT thing and then a GNUstep thing.
What the hell does C programming have to concern itself with ObjC? ObjC is a superset of C, not another C.
If you feel [syntax:] is forcing you from learning a language then explain how so many C++/Visual Basic programmers are learning C#?
Get off your lazy ass and make some money porting your app to OS X.
The bridge was deprecated with the release of Panther (and new Objective-C APIs in Panther, such as Rendezvous [now Bonjour] were NOT added to the bridge). They simply didn’t announce it very loudly.
Yet CoreData works with Cocoa-Java. How…interesting…
I wonder if this will affect NeoOffice development since they use Java for the GUI?!?!?
> What? Ever heard about Rosetta?
Rosetta is a JIT compiler… just like the “insane” Java.
A Cocoa/Java app is no longer portable so what’s the point of it… may as well be in ObjC. The only problems is I don’t know ObjC but I do know Java.
I suppose I’ll just have to use RubyCocoa.
How does SWT fit into this? Are Eclipse and Azureus affected? Dropping support for Eclipse would be a stupid move.
This has no effect on SWT or swing applications, only those using Cocoa-Java (which really only includes Mac-exclusive applications written in Java).
Objective-C++ is compatible enough from a developer’s standpoint to meet most major goals. Obj-C is C with a few extra features. The C is still there though. So is the C++.
maybe apple will adopt mono ;-p
If I remember right, Aaron Hillegass said that Cocoa-Java was just a hack and really created with the intention of helping people port over apps to NeXT then Mac OS X so you could get it on OSX then write it in Objective-C or Objective-C++. It was never meant to be used as a long term thing for any application.
As far as I can remember he’s discouraged Cocoa-Java because of slower launch times & app performance, but I don’t have his book right in front of me at the moment so I can’t quote him exactly.
Objective-C basically tries to defeer anything it can from compile time to run time thus making Objective-C very dynamic and flexable.
I don’t know why anybody thinks Apple won’t use Objective-C on x86 or upcoming Mac OS X versions. Have most people seriously even tried Objective-C? or are they just whining “oh this looks different than what im used too, im scared…”
Seriously I thought Objective-C had odd styntax and ran weird at first too now I can’t imaging my life without it, it simplifies application development so much.
I couldn’t care less one way or the other. I never use Java to write Mac code. It’s just too cumbersome compared to Objective C. I’m relieved they decided to continue with Objective C rather than try to focus on Java. It’s Objective C’s dynamic features that make Mac OS X possible.
I feel 1000 x more productive with Objective C than I do with Java.
Objective-C is great, but it would be nice to have a language for Cocoa development that is both fast, and completely dynamic. Not a hodgepodge of C and Smalltalk. What makes Cocoa a pleasure is the framework not the language, although Objective-C is an order of magnitude better for application development than C++. It would be cool if in Leopard, or at the next WWDC Apple introduced a language that fits to Cocoa’s semantics, and is completely dynamic with garbage collection. I could see a Smalltalk dialect fitting the bill. Incremental compilation, like lisp would be cool too.
Isn’t this why we have Ruby-Cocoa?
Or CamelBones (for Perl)
Ruby is a great scripting language, but its sloooww. Java and .Net are an order of magnitude faster. Besides anything that isn’t endorsed by Apple and come pre-installed on OS X is largely going to be ignored.
It would be cool if in Leopard, or at the next WWDC Apple introduced a language that fits to Cocoa’s semantics, and is completely dynamic with garbage collection. I could see a Smalltalk dialect fitting the bill.
Steptalk, a Smalltalk dialect, is available for GNUstep and might work on Mac OS X.
I think it’s a good decision to drop the Cocoa Java interface. Objective-C is by far the best and most enjoyable language for developing Cocoa apps. Therefore, it should be at the center of the Cocoa effort. Since people are adopting Objective-C instead of using the Cocoa-Java interface there is no reason for Apple to waste a lot of engineering effort on the Cocoa-java bridge. However, it’s true that having a highly dynamic scripting layer available in Cocoa would be great. The most obvious choice would be to add the F-Script
http://www.fscript.org
environment to Cocoa.
I’ll take it one step further and say that Objective-C is irrelevant. Name a framework to use with it when not on a Mac. It makes zero sense to write ObjC unless you are writing a Cocoa app, which is not exactly a ringing endorsement for a language. If I was writing a cross-platform app for Mac, Linux and Windows I’d be looking at C++ and Carbon long before Objective-C.
So this decision surprises me. If anything, I would have thought Apple would be moving off of ObjC and more towards Java. Of course, even better would be C# and taking on the CLR from Mono, as another poster mentioned.
why would apple move to C# ? It’s a microsoft product.
Why would apple move to mono? It’s an open-source language which they have no control of – which is important when you are developing for your own platform!
For those who don’t remember, back in the days of rhapsody, apple had yellow box for windows NT – you were able to run cocoa apps on windows! If apple wanted to they could have cocoa apps running on windows without any problems. Who knows – maybe apple has kept yellow box on the back burner just like they did with os x on intel.
> It makes zero sense to write ObjC unless you are writing a Cocoa app, > which is not exactly a ringing endorsement for a language.
ObjC w/o Cocoa is still ObjC with all the dynamism, etc. present in the language. The lack of Cocoa takes nothing away it. Your criticism of the language is not well founded.
Just read a post over at the NeoOffice forum for development that says they will be unaffected as they do not use the bridge.
I am so glad. NeoOffice is awesome… getting better.
Very few people know Objective-C. Java is by far the “most popular programming language.”
This is a bad move. Especially in light of the x86 transition.
Regardless, Steve and Apple do what they “want” to do —
Sigh.
Steve Klingsporn
Shantar Miche-al
Ashtar Galactic Command
Here’s an interesting point to consider however, I wonder if WebObjects will do a 180 and go with Objective-C again?
1- Cocoa-Java is a bridge between the Java programming language and the Cocoa Framework – Apple dropping Cocoa-Java has nothing to do with Intel transition, or anything else outside of the fact that maintaining a bridge that only a handful of applications of ever used – was pointless.
2- Cocoa-Java has nothing to do with Java, or Swing or AWT, Apple dropping the Cocoa-Java bridge will have not effect on an Java application, period.
3- Apple dropping Cocoa-Java is good and keeps inline with Sun’s and Java’s cross-platform ideology.
4- Objective-C will stay and with Apple adding ever more to the Cocoa framework will make Objective-C and Cocoa ever more attractive.
5- Objective-C ran on x86 long before it ran on the Macintosh, why would apple drop it when Objective-C and Cocoa goes back to x86?
6- Apple dropping Cocoa-Java does not mean the Apple is dropping Java.
7- By all accounts Cocoa is only possible because of Objective-C and its Dynamic nature, it would be very difficult to develop a Cocoa framework in almost any language that exists today.
8- As for those geniuses claiming Apple should drop Java, Cocoa, and Objective-C for .NET or Mono because of the shift to Intel. Just because Apple changes a processor does not mean that suddenly that Apple will rewrite the Majority of its Applications written in Objective-C, just to please Microsoft lock-ins. A move to .NET or Mono would mean ripping out over 20 years of NextStep and Cocoa development and Frameworks, Like Aqua, Core-Data, Core-Image, Core-Video, iLife, iWork, out of Mac OS X and replacing it with huge chunks of property Windows code OS or a very immature open source project
“Mono” that could be killed by Microsoft in a heart beat through patents.
Apple dropping Cocoa-Java is a non-news event nothing to see move on folks.
Thanks for the only sensical comments related to this “story”. I have never seen so many uneducated comments. This truly was a non-event.
If you want to know about the furture of Objective-C / Cocoa just have a look at the QuickTime Movie of Steve Jobs WWDC Keynote.
Cocoa Apps are (among Java and scripted Apps) most easily to port to x86.
When you dig into Apple’s devloper documentation you will also see that future version of Objective-C (or Apple’s foundation framework) may also have support for garbage collection.
cocoa apps in java are monstrously inefficient.
Stick to the standard java apis if you are doing java, stick to objective-c if you want to do cocoa.
I suspect this will be detrimental to the development of NeoOffice/J, which leverages the Java APIs to provide the graphical interface of OpenOffice.org. Anyone who’s ever tried the plain-vanilla OO.o for Mac OS X will agree that NeoOffice/J is far superior. That’s primarily due to the nice Cocoa-style interface that makes the software a little better integrated with the rest of the OS, and provides better functionality for the clipboard.
I’m no programmer, but I suspect this doesn’t bode well for NeoOffice/J, and they’re already in bad shape due to the change to Intel chips and a development process that leads to a “fat binary.”
I wish them the best of luck – I like the software quite a bit.
Apple is not dropping anything. They are simply not going to include support for future changes to Cocoa in the Java bridge.
Any applications which make use of the bridge will work just fine and you will be able to continue development of applications with Java but you just will not have access to any newer features of Cocoa which appear from this point on.
I hate it when noobs comments on these stories and do nothing but spread a bunch of FUD about a topic they have no understanding of.