I've been playing with my new iMac all weekend and am getting it set-up to start doing development. I'm a web developer by trade, but a systems developer by education. First let me give you some quick background
- I went to BGSU where we were taught mainly C++
- At University I worked for ResTech developing and maintaining an Intranet written in PHP
- My current side-project is prosper a database abstraction layer written in PHP
- After graduation I went to work for HMB
- I've worked on 2 projects that were ASP.net
- I slung Java for Abercrombie & Fitch for just over a year, doing some web frontend and middleware
- Current project is doing some Java middleware
So my experiences are mostly C-style languages, but I have dabbled from time to time in other languages, ruby, python, haskell, erlang, sql (much more than I would like to with prosper), etc. Being on a new platform though makes you wonder about what makes it tick, I don't particularly have to wonder though as I read Apple's excellent documentation (PDF warning) a few years ago. My subconscious has been mulling over Objective-C development, which looks somewhat interesting, but it has brought up an old friend I was interested in a while ago Objective-J.
A while back I had heard about Cappuccino and the language that powers it, Objective-J. I remember thinking at first how crazy the whole thing was, someone didn't want to bother learning JavaScript so they found a way to make Objective-C compile down to JavaScript. This concern was assuaged some when I read this arstechnica article and realized that anyone skilled enough to write a compiler in JavaScript had to have some vague understanding of its workings. The design decisions behind making Objective-J were sound, they didn't just think my love was ugly.
I've been giving a new look at some of these new web development toolkits, platforms, libraries, etc. They promise to bring desktop quality applications to the web leveraging existing technology. And there are a few I would like to bring to everyone's attention.
- Cappuccino and Objective-J - Its hard to talk about one with the other. Objective-J is a brand new language for client-side scripting in the web. It compiles down to cross platform JavaScript on the client-side and is used to power cool stuff like 280slides and EnStore. One of the best things about Cappuccino and Objective-J is that they remove the burden of implementation. Is the display made up of input elements, divs, one big canvas? Don't worry about it, that's Objective-J's job to figure out the best way to display things in a given browser. Cappuccino provides a great framework to write web applications in, anyone familiar with Cocoa will feel at home. The biggest downside I can find for Objective-J is its verbosity, but maybe Atlas will help with that
- SproutCore - SproutCore got a ton of press when Apple's MobileMe decided to use it as a foundation for their relaunch. A nod from a big player like Apple can help set aside fears that it isn't ready for primetime. Right now SproutCore is gearing up for their 1.0 release, its still in beta but they've been making great strides as of late. SproutCore is maturing quickly and has some core goals I can get behind: Be easy. Be consistent. Be opinionated. Stay small(ish). When working with SproutCore you will write code in JavaScript and also use a host of command-line tools (à la Rails).
- Google Web Toolkit - GWT has a lot of good stuff going for it. It's made by Google (they might know a thing or two about the web), it just hit version 2.0, its the juice powering stuff like GMail and the new Google Wave. With GWT you write your code in Java which then get compiled into fast and cross-browser JavaScript. Ray Cromwell has an amazing write-up of all the new cool stuff in the 2.0 release.
[caption id="attachment_396" align="alignright" width="150" caption="Cappuccino"][/caption]
[caption id="attachment_395" align="alignright" width="150" caption="SproutCore"][/caption]
[caption id="attachment_397" align="alignright" width="100" caption="GWT 2.0"][/caption]
All of these frameworks allow you to create a fully functioning web application without mucking with the guts of the web (HTML, CSS, JavaScript). This is a double-edged sword though.
The up side is that if you already know Objective-C or Java then your learning curve is drastically reduced. As technology changes the library can output the latest and greatest HTML without you having to change any code (hopefully). The Google Wave team has said, you can create much more complex applications leveraging the power of these frameworks.
The down side is that you are spending time and energy learning a framework and not web development. If you learn SproutCore backwards and forwards that doesn't transfer to Objective-J or GWT. The other downside of this is it introduces some magic, if you don't understand the foundations of HTML and JavaScript it can be far more difficult or impossible to fix errors. A corollary of that last point is that applications look similar, Objective-J apps look like Objective-J apps, GWT looks like GWT, it doesn't have to but when the default styling is sufficient or, as is the case with many of these frameworks, actually looks nice, its easy to just keep the default.
Web development keeps moving forward, this internet thing is going to be big. As we move more data to the cloud, as Operating Systems become more Web Centric, and as more and more of our lives our spent looking at the web, these development frameworks will become more and more important. It's an interesting time to take a look at some new takes on web development
No comments:
Post a Comment