Why Cocoa?


Call me confused, but this has been on my mind for some time?
If Carbon apps include support for multi threading, pre-emptive multitasking
and all the new jazz, then what does Cocoa applications bring forth?

I guess my question really is: What's the difference?

Cocoa is a true, fast and very powerful Object Oriented Environment.

This means Cocoa apps are far easier to code, uses less ressources and uses all MacOS X features (services, core services, etc... like live smooth fonts).
Carbon is an intrem step. Apple made it so that developers could resuse their old code and, with only small modifications, port their program to os X. Also carbon will run on both os x and os 9 ( and os 8.6?).

When every one is up and running with os x and later, developers will start taking advantage of all that Cocoa has to offer. Basically Carbon is for old applications that need to be ported to osx and Cocoa is for all new applications. I think eventually every one will end up rewriting the stuff for objc and cocoa. This would be a HUGE task for stuff like MS Word. Hopefully apple will make it easier to incorperate existing C++ code into Cocoa Apps.

Cocoa apps interact more smoothly with the unix side of the OS. A cocoa
application can be viewed as a process, can be sent standard unix signals
and expected to know what to do with them. All carbon applications simply
show up as "LaunchCFMApp"; the only thing you can do is kill them, and you
have to guess at which is which to even do that.

Carbon apps are also subject to some rather obsolete limitations. Most
notably, they only know how to deal with 31 characters of filename, even
though everything else about the environment is fine with considerably more.

Cocoa apps seem to interact with the system as a whole better than carbon apps. They use the system dictionary for spell-checking, emacs style quickkeys, they respond to scroll-wheel enabled mice, etc.