- Primary reason is the intent of the framework developers. Even if this framework fails in terms of mass adoption, going forward something similar will be in use. Failure would not be of the idea. Maybe they are ahead of time and therefore can face sloppy approval. I doubt that will happen though.
- Competition: Some people may be thinking that GWT, ZK etc makes Cappuccino obsolete. I disagree. ZK must be the best amongst the RAD RIA development frameworks but what I never liked about it and the likes is their dependency on the server components. GWT is better in that aspect but requires compiling and lacks rich user interface elements. Cappuccino is a complete UI authoring kit. One can easily (ahem!) develop desktop like applications using it. In fact, current UI elements are similar to Mac.
- Focus: Want to develop rich client side interfaces without getting into intricacies of Javascript, CSS and HTML; Use Cappuccino. Check out following similar applications. First one is written in Cappuccino and second in JQuery by a web enthusiast.
Developer of JQuery example claims to have written it in 45 lines of JQuery with 200 lines of CSS. At least for me, choice is apparent. One notable thing is that of speed. JQuery example is way too smooth as compared to Cappuccino one. But I am certain that these things will be taken care of as development using Cappuccino picks up pace.
I expect following improvements taking place in the framework
- Speed optimizations
- Availability of UI themes (Windows, Gnome etc)
- Tools for rapid development
- Better documenation/tutorials
Peeking inside the Frameworks (download starter kit) folder reveals three folders.
- Objective-J: Contains .js file which is Objective-C's implementation in Javascript.
- Foundation: This folder contains definitions for foundation classes i.e. core building blocks of the framework.
- AppKit: This folder contains classes that are built upon foundation classes. These are the classes that will primarily be used by a developer to create UI elements, event handlers, network calls(pretty much everything). AppKit contains a Resources folder, which hosts the theme elements. Replacing files here will change look and feel of whole application.
Look at the following snippet
import <Foundation/Foundation.j>
import <AppKit/AppKit.j>
import "AppController.j"
function main(args, namedArgs)
{
CPApplicationMain(args, namedArgs);
}
This is the code i.e. being called from the index file.
First two lines loads foundation and app classes. AppController.j is the file which contains a method, which hosts the code responsible for rendering the defined GUI. But as evident, nowhere this code is calling anything from AppController. What is even more baffling is that there is no class in the documentation named CPApplicationMain.
After digging the documentation for some time, I found CPApplication. This explains what's happening but still how is AppController coming in the picture.
App directory also contains a file Info.plist.
<dict>
<key>CPApplicationDelegateClass</key>
<string>AppController</string>
<key>CPBundleName</key>
<string>Hello World</string>
<key>CPPrincipalClass</key>
<string>CPApplication</string>
</dict>
</plist>
This explains everything apart from the fact as to how applicationDidFinishLaunching in AppController is getting called. This method hosts the rendering code. Well, as the name of the key suggests AppController is a delegate class for CPApplication. CPApplication defines a delegate method with the signature
-(void)
applicationDidFinishLaunching:(CPNotification)aNotificationThis clears everything. To put the flow in a picture.
Framework totally lacks documentation. Even the API classes are not properly documented. Lets see how and when power of open source starts showing its magic.
6 comments:
Because cappuccino is modeled after the Cocoa framework, most of the undocumented features can be found in the Apple Cocoa documentation.
http://developer.apple.com/documentation/
The process you just described is exactly the same as what happens in a regular OS X desktop application. So for most OS X programmers using delegate / notification methods like applicationDidFinishLaunching is perfectly normal.
Thanks Joris. You are right but most web application developers are not familiar with development on OS-X and expecting them to learn Cocoa to program in Objective-J would be unfair.
In my opinion, it is good that Cappuccino gives an edge in development to Mac developers but people writing documentation/tutorials should try to write keeping non Mac developers in mind. From their perspective Mac is no where in the view.
but mac developers are TOTALLY in the cappuccino creators' mind.
to know cocoa is mostly to know cappuccino.
@anon
I agree. But that is not correct. Because web developers will never develop something *only for Mac*.
When you write an application for the web, you release it without any platform dependency. As your users are using browsers rather than operating systems.
Platform neutrality at it's best.
Cappuccino is a game-changer. The creators intentionally threw out most of the traditions of web app development to make way for a more powerful approach, that of Cocoa. This is not meant to appeal to people like me who enjoy hand-coding PHP, HTML, CSS, and Javascript. It's meant for people who want a single, abstracted language and set of frameworks for making truly powerful applications. It's going to be easiest for Cocoa and Cocoa Touch developers, but will let them create truly platform-independent apps.
Although I'll be sticking with my PHP, HTML, CSS, and Javascript, I think it's going to be totally awesome to see the radical new apps that come out of Cappuccino.
Hello. And Bye. great site great yes yess.
[url=http://maturepornlist.com] milf [/url]
milf
http://maturepornlist.com
Post a Comment