@Keith Lang: how does this compare to Sproutcore in general?
I haven't spent a significant amount of time with either, so I'm probably not the best person to answer that. From what I've seen, though, SproutCore is a true JavaScript-based framework using standard JavaScript syntax. SproutCore could potentially be useful to those who already know how to write client-side web apps, whereas Cappuccino and Objective-J would require some knowledge of Cocoa. This is pretty close to what David said above, with the additional note that at least some of SproutCore's API terminology (methods names and such) is taken directly from Cocoa.
Paradoxically, all of this actually gives Cappuccino a bit of leg up in the area of documentation, since a good portion of existing Cocoa and Objective-C tutorials apply here as well.
One other very nerdy point: so far, I haven't seen support for Cocoa Bindings in Cappuccino, but SproutCore features them prominently. It makes a big difference when writing desktop Mac apps, but I'm not sure yet how big of a factor it is here.
would it be possible to write something in Cappuccino and later 'port' it with reasonable ease to Mac OS X?
Sure. Just keep in mind that when moving the code to Mac OS X, you'd want to step back and reevaluate the application design since you have much more available to you in that context.
@Qwerty Denzel: As you say, the frameworks don't directly translate to Cocoa methods. So why bother keeping the C-style functions like the CG... set (CGMakeRect, etc)?
The CG geometry functions are basically identical to the NS geometry functions. So if you're not using CGRectMake(), you're using NSMakeRect() and ending up with effectively the same result. There are some regular C functions even in Cocoa.
But, in general, I do see your point. AppKit provides higher-level drawing abstractions using classes like NSBezierPath. I'm actually not clear yet on how paths work in Cappuccino. There's no mention of classes called anything like CGPath or CPBezierPath, so maybe the details of that are still being worked out.
by Scott Stevenson — Sep 05
I haven't spent a significant amount of time with either, so I'm probably not the best person to answer that. From what I've seen, though, SproutCore is a true JavaScript-based framework using standard JavaScript syntax. SproutCore could potentially be useful to those who already know how to write client-side web apps, whereas Cappuccino and Objective-J would require some knowledge of Cocoa. This is pretty close to what David said above, with the additional note that at least some of SproutCore's API terminology (methods names and such) is taken directly from Cocoa.
Paradoxically, all of this actually gives Cappuccino a bit of leg up in the area of documentation, since a good portion of existing Cocoa and Objective-C tutorials apply here as well.
One other very nerdy point: so far, I haven't seen support for Cocoa Bindings in Cappuccino, but SproutCore features them prominently. It makes a big difference when writing desktop Mac apps, but I'm not sure yet how big of a factor it is here.
would it be possible to write something in Cappuccino and later 'port' it with reasonable ease to Mac OS X?
Sure. Just keep in mind that when moving the code to Mac OS X, you'd want to step back and reevaluate the application design since you have much more available to you in that context.
@Qwerty Denzel: As you say, the frameworks don't directly translate to Cocoa methods. So why bother keeping the C-style functions like the CG... set (CGMakeRect, etc)?
The CG geometry functions are basically identical to the NS geometry functions. So if you're not using CGRectMake(), you're using NSMakeRect() and ending up with effectively the same result. There are some regular C functions even in Cocoa.
But, in general, I do see your point. AppKit provides higher-level drawing abstractions using classes like NSBezierPath. I'm actually not clear yet on how paths work in Cappuccino. There's no mention of classes called anything like CGPath or CPBezierPath, so maybe the details of that are still being worked out.