Cappuccino 0.6 Released
cappuccino.org
cappuccino.org
Unfortunately, I haven't really found any deep technical information about Objective-J or Cappuccino. I've read about the what and the why, but I'm really curious about the how. Anyone know of any resources?
http://cappuccino.org/discuss/2008/12/08/on-leaky-abstractio...
If you're looking for details on how we built it, there best available information is the source code :). I don't believe we've published a lot of in depth material on specific technical developments, though if I had the time I think it would be a great thing to do.
That's what I was afraid of :-)
I'm not building a big serious web app, so I have no real reason to learn Cappuccino that deeply. I also have no end of curiosity, so I am explicitly avoiding downloading the source code for fear of the time sink that would cause.
I was hoping for a blog post or two detailing some of the techniques and machinery involved with creating the compile-free Objective-J constructs. It would also be really interesting to hear what sort of effort was required in porting Cocoa. I'm not looking for "talk to me like I'm a 3 year old". I'm looking for "here's the gist of it", hacker to hacker. From where I am sitting now Objective-J is a pretty freaking impressive magic trick. I'd just like a peek behind the curtain, but I don't really want to see the schematics.
I'm sure you guys are even busier than I am, but if you do get a spare moment, I'd really appreciate it if you shared. I think it would probably also drive adoption. If it seems like an impressive magic trick to me, it probably seems like evil black magic and sorcery to others.
I have been doing web app dev for quite a while now and never took time to learn javascript outside of using tutorials and jquery.
What are the requirements or good-to-knows before beginning to learn objective-j? Also, more tutorials on working with rails would be nice.
All JavaScript code is valid in Objective-J, but typically you won't use the prototypal inheritance stuff, since Objective-J adds classical inheritance (which is entirely what Cappuccino uses). Likewise, a large portion of the Objective-J language is just JavaScript (all of the operators, variables semantics, built in types and functions, etc).
The major additions are code importing (@import <FrameworkName/FileName.j> or @import "relativePath/FileName.j"), class definitions (the "@implemention" keyword and method declarations like "-(ReturnType)methodName:(ArgumentType)argument"), and method calls/message sending ("[myObject methodName:argument]")
My suggestion for learning Objective-J would be to pick up Crockford's book, "JavaScript: The Good Parts", and skip the parts about inheritance (unless you also want to learn that). It's a short book anyway. The nice thing about this particular book for learning Objective-J is it only covers the language, not the browser's APIs like the DOM, which you should never really need to know when using Cappuccino. (though I would recommend "JavaScript: The Definitive Guide", aka "The Rhino Book", as well to anyone doing JavaScript in browsers)
Once you have a feel for the core of the JavaScript language then it's just a few more syntax additions for the main features of Objective-J I listed above.
I'm curious about payload. Looked to be close to 160K for the "runtime"? How is the objective-j parser done?
The two frameworks that make up Cappuccino weigh in at about 800k uncompressed, and about 150k total compressed. It's not a trivial amount, but its equally not very unusual. We're also not adding any html or css size to that, since you don't use either when using Cappuccino.
Edit: I'm checking out the demos... this is sick. Silverlight won't kill Flash/Flex, Cappuccino will.
Here's the Flickr demo shown on the Cappuccino site reimplemented using jQuery, with improvements to boot: http://www.brokendigits.com/2008/09/05/cappucinos-flickrdemo...
http://google-code-updates.blogspot.com/2008/12/google-web-t...
Then I tried hitting refresh and hanged the instance. When I checked the memory it was leaking.
*update: if it's helpful, the exact version is 7.05730.11 running on Windows x64
Try GWT, it has wonderful i18n support.
However, if you copy and paste from another application you'll see the underlying framework handles it fine.
The reason 280 Slides doesn't do this correctly is because it implements its own text editor by intercepting all keypresses. Unfortunately, there's not enough information in the JavaScript key event mechanism to properly handle internationalization this way. We'll eventually be removing this custom text editor in favor of a more standard approach.
Separately, while there's not currently anything built in for localization in Cappuccino, there will eventually be the same system that exists in Cocoa, which makes it trivial to do "i18n" with little or no actual coding.