OS X Software Development
Q. I am looking forward to developing some simple OS X applications, the kind where one person can do. I am a technologist that is very rusty at programming. The question:
If you were going to develop new applications for OS X only, would you choose:
a). Apple OS X Interface Builder, Project Builder, AppleScript Studio (and Java/Objective C) (Cocoa)
OR
b) REALBasic 3.5, a drag&drop cross
platform RAD tool that creates windoz, carbon apps for classic and OS X using OO Basic language. The benefit here is ease, speed
and cross platform. Minus, exec speed, OO Basic(?).
Seeking advice from OS X developers for someone new getting into OS X development.
Thanks a lot and have a happy new year.
If you were going to develop new applications for OS X only, would you choose:
a). Apple OS X Interface Builder, Project Builder, AppleScript Studio (and Java/Objective C) (Cocoa)
OR
b) REALBasic 3.5, a drag&drop cross
platform RAD tool that creates windoz, carbon apps for classic and OS X using OO Basic language. The benefit here is ease, speed
and cross platform. Minus, exec speed, OO Basic(?).
Seeking advice from OS X developers for someone new getting into OS X development.
Thanks a lot and have a happy new year.
Comments
IMHO, RealBasic has been so-so with OSX development. The apps I've seen made with RB have had interface problems and a fair bit of code-bloat. Of course, some of that could easily be the fault of the programmer.
Now, don't completely abandon Carbon just because people think Cocoa is so much better. Use the right tool for the right job. Cocoa is best for OO whereas Carbon is best for procedural. Many things can be written better and easier in Carbon rather than Cocoa. Carbon just gets a bad wrap because there are so many shabby Carbon ports... *cough* Finder *cough* QuickTime *cough* PlayerPRO *cough* MS Media Player.
[ 01-01-2002: Message edited by: starfleetX ]</p>
I like CodeWarrior when I was using 9, but once I switched to X I tried to keep up with ProjectBuilder. My Cocoa experience is limited, but with Carbon (specifically OpenGL) ProjectBuilder was great. In fact I migrated my projects from CW to PB and don't regret it one bit.
Now about Real Basic. Its a great tool for prototyping interfaces and one can write incredibly powerful applications with it. However it is non-standard and I've found that while I can save time with it, I spend more time fighting with the Basic language than getting work done. Now don't get me wrong, I've quickly written usefull and fully functional applications in Real Basic, but if I was planning on releasing a real application I would not write it in RB.
So there.
<strong>I am a developer and have used most major development environments, including: CodeWarrior, ProjectBuilder, and Real Basic.
I like CodeWarrior when I was using 9, but once I switched to X I tried to keep up with ProjectBuilder. My Cocoa experience is limited, but with Carbon (specifically OpenGL) ProjectBuilder was great. In fact I migrated my projects from CW to PB and don't regret it one bit.
Now about Real Basic. Its a great tool for prototyping interfaces and one can write incredibly powerful applications with it. However it is non-standard and I've found that while I can save time with it, I spend more time fighting with the Basic language than getting work done. Now don't get me wrong, I've quickly written usefull and fully functional applications in Real Basic, but if I was planning on releasing a real application I would not write it in RB.
So there.</strong><hr></blockquote>
Thanks XTool. I spent some time checking out the X Development architecture and have decided that I will focus new application development with Cocoa and implementing methods in Java (even though the App and Foundation kits, the Cocoa/NextStep kits, are implemented in Obj C). I don't want to learn a new language or superset variant of C so will work with Java in methods and use IB/PB for Cocoa development, UI, etc.
It seems that Carbon is the bridge to both worlds but I want to focus on the new direction and NeXT was renowned for its development and Model View Controller paradigm (and smalltalk).
I think you are right about RealBasic. It was pretty incredible to do that much prototyping with complilation but OO Basic was a non-standard lang. I have also heard that it creates very large application sizes.
After reviewing, is there any reason *not* to implement methods in Java versus Objective C???
Thanks alot
MacOS X Developer's Guide, c2002 (Jesse Fieler):
"Cocoa is written in Objective-C. a mechanism called the Java bridge exists to let you call Objective-C code from Jave (and vice versa). The bridge is so effective that you may not really notice it at all ..."
"The second occasion when you need to worry about the Java bridge is when you need to call a Cocoa framework method or use a Cocoa class and you do not have documentation for it in Java. Most of the Cocoa documentation is provided both in Java and Objective-C, but there are some lacunae."
That said, the book seems to be mostly an overview and I didn't find it to be very instructive (probably because that isn't its purpose).
[ 01-03-2002: Message edited by: Skipjack ]</p>
<strong>You might not have to choose.
MacOS X Developer's Guide, c2002 (Jesse Fieler):
"Cocoa is written in Objective-C. a mechanism called the Java bridge exists to let you call Objective-C code from Jave (and vice versa). The bridge is so effective that you may not really notice it at all ..."
"The second occasion when you need to worry about the Java bridge is when you need to call a Cocoa framework method or use a Cocoa class and you do not have documentation for it in Java. Most of the Cocoa documentation is provided both in Java and Objective-C, but there are some lacunae."
That said, the book seems to be mostly an overview and I didn't find it to be very instructive (probably because that isn't its purpose).
[ 01-03-2002: Message edited by: Skipjack ]</strong><hr></blockquote>
Here is something from a person on Cocoa Developer List at Apple: (I found it highly useful)
Read On:
I was myself in a very similar position one year ago. Unfortunately, I was
not so smart as you are, and didn't take advice. So I made the wrong
decision, and learned Java. Six months later I just gave up and now I
really enjoy programming Cocoa with Obj-C.
Let me give you some details:
1/ Java is a great language, with wonderful features, in particular when
related to Internet applications. But it is not intended to build
non-internet applications, and makes life difficult to programmers when
doing so. That's particularly clear when doing GUI-based apps. Swing, the
Java GUI, is far from being as good as Java itself. Cocoa with Java is
even worse. So if you intend to make great apps on Mac OS X, with a slick
user interface, use Cocoa the way is has been intended to be used: from
Obj-C.
2/ Obj-C has a strange syntax (a little bit disgusting for a C, C++ or
Pascal programmer), but when you get used to it, it is really a pleasure
to use it (in combination to Cocoa classes). It helps a lot, and never get
on your way (something Java does frequently). Also it is much faster and
easier to learn than Java, even taking into account the retain/release
trick (which has its own advantages, and I don't find it difficult at all)
.
3/ You can't learn Java in isolation. You will have to learn at least some
part of the standard Java Frameworks. Then you have to learn Cocoa
frameworks. Both have different logics, different usages. You will get
confused. (The picture is different if you already know Java, obviously).
4/ If you already know C++ (or some parts of it), you can use it
(partially or not) in complete interaction with Obj-C: that's named Obj-C+
+. It is just C + the syntax extensions of Objective C + the syntax
extensions of C++ (which are orthogonal, fortunately).
I would like to add that you are completely wrong when stating that Obj-C
is fading away. First the Obj-C language get a strong support from
Obj-C++, because C++ is widely used, and you can learn the former from the
latter in three hours. (Java requires much more study.) Second Java is in
a difficult position because, as you certainly know, it is challenged by a
large company whose name begin with Mi and ends with soft (though it is
hard). It is somehow in the position of Netscape six years ago. Hmm. Do
you remember Netscape? Third Obj-C is deeply nested inside Mac OS X, and
there is absolutely no reason for Apple to remove it (would be a lot of
efforts for gaining what?). So it will probably continue to exist as long
as Mac OS X itself. We all hope that will be a long time, don't we?
Someone else here told you that most student courses are given in Java.
This is completely right. Ten years ago, the same courses were given in
Pascal. Pascal was a great language, but who is using it now? I myself
wouldn't certainly use Obj-C as a teaching language (would be quite a
short course ;-), but I recommend it to real developers on Mac OS X.