This post originated from an RSS feed registered with Java Buzz
by Norman Richards.
Original Post: From Java to Objective-C
Feed Title: Orb [norman richards]
Feed URL: http://members.capmac.org/~orb/blog.cgi/tech/java?flav=rss
Feed Description: Monkey number 312,978,199
I tried to get started with Objective C last year when I got my iBook.
I bought Learning Cocoa with Objective-C
and got a couple chapters into it before I got distracted learning Ruby.
I thought that Ruby would be easier to learn and would be just as good
for Mac programs using the Ruby/cocoa bridge. I thoroughly enjoyed
learning Ruby, but I decided that it would be better to stick with
Objective-C for my Cocoa work.
This last week, I finally got back into it and have almost worked my way
through the whole book. As I've gone through it, I've been amazed both
by what a great language objective C is and what a great GUI development
environment Apple brings to the table with interface builder, xcode and
cocoa. Although I'm not stranger to UI work, I've shunned Java UI work.
I never liked AWT or swing, and anyone who things SWT is the answer
is missing the bigger picture. Since I don't do full time GUI work, I'll
steer clear of the technical arguments and simply say that cocoa and
objective C make UI work fun. While most Java developers dread touching
GUI code, working on a cocoa UI is fast and fun.
From a pure nerd factor, objective C has been a bigger surprise.
I recall hearing of objective-C 10 years ago before I learned C++. I
knew that objective-C and C had both made their appearance around the
same time in the in the mid 80's. C++ had all the hype and nobody but
those weird NeXT guys seemed to know much about objective-C, so
naturally I paid attention to the language most likely to get me a
job. In reality, I paid even less attention to objective-C than that.
It was just some fringe language that I knew little more than the
name of.
10 years later, I'm finally discovering objective-C and I wonder
why C++ went maintstream and objective-C got left behind. I was never
really a huge fan of C++. I never felt C++ provided any real value
over plain old C. It felt like a hack and I was rather disillusioned
by OO the OO hype until I discovered Java. To me, Java accomplished
the goal of being the try OO successor to the C/C++ line.
But I wonder what Java would be like now in some alternate
universe where objective-C took hold and Java borrowed from that more.
A language with message passing semantics, selectors, categories and
maybe even the funky Tcl/lisp like message messaging syntax.
As AOP concepts push the limits of Java, I wonder if maybe we wouldn't
have been able to afford a lot more dynamic runtime possibilities if it
weren't for the limitations of the C/C++ heritage.
Perhaps objective-C has it's dark side too. It certainly feels
old and clunky in places. Afterall, it's really just an extension to
C in the same way C++ was. And, working with it makes me appreciate
working in a garbage collected Java environment. But still, there's a
certain elegance to it that I can't quite shake. All I can say is
that if you are a Java guy and are feeling a little bored with Java,
take a step "backwards" and try some objective-C for a bit. If
nothing else, it will give you a great perspective on where Java (or
it's successor) could go.