Cocoa-Like JavaScript Framework Announced
TwilightSentry writes "Ars Technica reports that a group of developers has created an Objective-C-like extension to JavaScript along with a class library mirroring Cocoa. They've used these to release an impressive demo app called 280 Slides. The article notes, 'Whereas SproutCore seeks to "embrace the platform" by giving a Cocoa-like development model for developers already using HTML, CSS, and JavaScript to make a web app, Cappuccino and Objective-J take an entirely different approach. "Since Cappuccino runs entirely on the client, at run time, we're never actually generating HTML or CSS," says Boucher. "When you build an application in Cappuccino, you don't need to ever deal with HTML or CSS. All of your interface is designed in Objective-J and Cappuccino. Cappuccino focuses on application architecture more than anything else, like building applications that know how to save and open documents, or copy and paste. We also built a powerful graphics engine into Cappuccino, so you can make rich applications like 280 Slides."' The developers plan to release the framework and preprocessor as open source. No mention is made of a specific license."
A couple of weeks ago one of the developers of 280 slides was interviewed by Leo Laporte and Amber MacArthur on their net@night podcast.
http://www.popularculturegaming.com -- my blog about the culture of videogame players
I've played with and written interpreted langaugesand for decades I've hels the fervent belief that the further away from C you go the worse the bloat.
And "hello world" is how many bytes in this pig?
Need Mercedes parts ?
To extend the meme, now I'll start development of C-Objective Kernel Editor (COKE). that will be followed by Linux Apache Tkl/Tcl Extensions (LATTE) which, of course, demands Folding On AMD Machines (FOAM). Sorry, but I'm too tired to come up with an acronym for marshmallows. ~
Invenio via vel creo
Slashdotted already. Don't you people have better things to do?
The higher the technology, the sharper that two-edged sword.
Who wants to bet how long it will be before Google buys up the guys who made that presentation app?
It could certainly be a bit faster, but it's still damn impressive.
-- If you try to fail and succeed, which have you done? - Uli's moose
This is a seriously good piece of software.
If they can do the same for Word and Excel then MS is going to be out of business.
This is not a signature.
Since it's Cocoa-like, we have to rename it Carob. Quick, somebody get their acronym generator going!
Too slow! Already taken.
Invenio via vel creo
Well, the nice thing about Objective-J is that it's a strict superset of JavaScript. At any time you can simply write pure JavaScript and it will run just fine. You don't even technically need to use Objective-J to use Cappuccino (our framework), but it makes it MUCH easier. As far as using Ruby or anything else, everything we do in the application is pure client side. The only interaction with the server is via XMLHTTPRequests. We'll be able to distribute Cappuccino/Objective-J as a simple download.
Traditional web apps are slow, because of all the chatting with a server. But well made AJAX, and frameworks like this one and OpenLazlo, http://www.openlaszlo.org/ are changing that.
Makes me wonder... Maybe soon(ish) a lot of apps which are now strictly in the desktop domain will really be viable through a browserlike environment?
I've been quite skeptical myself, but every time I see something like this it makes me wonder if I'm just not seeing the true possibilities...
.: Max Romantschuk
You are missing the acronym that best describes a combination of Cocoa and Java(Script):
CAFE MOCHA - Cocoa-Alike Framework Extension Mirroring Objective C for HTML Applications
We work okay with Opera. Especially the latest 9.5 release. There are a few minor issues though, especially with regard to text scaling.
Just WOW!!
As someone who is just learning Cocoa, and finding it though since it's my first real programming language, I am amazed at what 3 guys in a college dorm have cooked up.
Apple need to drop that spruotCore thing like a rock and make happy with these guys. I read that they worked for Apple before spinning this out...
Perhaps if they get offered much better paid positions with Apple they might come back. This is some seriously cool shit they're doing. That web-app required no knowledge at all of HTML & CSS!!
You could even probably write code for OS X and "port" it to the web in minutes!! If Apple get in on this, they could seriously bring about a shift from Flash and horrible media plugins like that silverlight crap, to something everyone can use, even iPhones and Blackberry's.
Words fail to describe how awesome that demo app is.
I was dreading getting to the point of having to learn me some java so I can do web-apps eventually. They've actually managed to make me interested!! Programming is hard and I'm finding it tough, but now I really want to master Cocoa and start on Objective-J and Cappuccino.
WAY TO GO!!!!!
The truth shall always be free: Boris Floricic is Tron.
But may I say wow, that is a very impressive web-app. It really does feel like an office application and not a web-app.
// MD_Update(&m,buf,j);
After I closed keynote, not thinking, I hit command-n to get one more look and 280 Slides opened it's new presentation theme picker- and for a sec I thought it was keynote.
In the end I say yay for competition!
Unfortunately there's a lot JavaScript can't do. The main one is "be consistently quick across platforms", something Flash has managed to achieve with its offerings. I'm not saying JavaScript is terrible - it's not - it has many uses, and I use it all the time on my sites. The only problem is it's simply not implemented to do this stuff. The 280slides website, for me at least, was painfully slow. Shoe-horning a UI somewheres it doesn't belong is not necessarily a great thing, and definitely not a great thing when it runs like a 1-legged dog uphill.
i was disappointed to find out that SproutCore projects are created with RUBY and that you touch javascript very little, if at all.
You don't need ruby when deploying, and the code you write is javascript. Sproutcore uses ruby to make life more convenient while developing, but it is a pure-javascript framework.
I've been playing with XULRunner quite a bit lately and though I haven't yet applied it to a "real" application, I have to say it's pretty nice and convenient to be able to design a cross-platform GUI for a local application using HTML and CSS. The trouble of course is that your application looks like a web page. (This is getting less important now that it supports native widgets of course.)
If this is open-sourced in a license-compatible manner with XULRunner, it might make for some very interesting, user-friendly (i.e., pretty), and completely cross-platform local applications.
Works in Safari. Breaks in places in Firefox. Can't even load in Konquerer. Again, I'll use XUL which seems to be being used by Amazon, IBM and alot of others large name companies and is alot further along than reinvent the wheel with a bloated lubrary.
This is my sig. There are many like it but this one is mine.
-tom
Flash isn't as bad as you make it out to be. ActionScript 3 (now fully ECMA-compliant) is phenomenally fast, and highly portable. It works great on Linux, Windows, OS X, and when Flash Lite gets updated to AS3 (it's AS2 at the moment), you'll have your phones covered, too. JavaScript is very useful, but this is not a great use for it. Flash (or, rather, Flex), to me at least, seems like the elegant method. Support, speed, simplicity.
Just to clarify, Sproutcore is something completely different. Cappuccino and Objective-J have no relationship with Sproutcore or Apple.
I had a quick go with 280Slides. The interface was impressively slick.
Then I tried to enter some non-English text, and it totally freaked out on me. When I pressed the keyboard combination to switch input methods, 280slides inserted three capital 'A's with acute accents. When I tried to type a simple Japanese phrase, 280slides inserted a single lower-case 'a' with a little circle over it.
This is the 21st century. We live in an increasingly globalised world. Applications that can't handle Unicode and multiple input methods have no place in this day and age. Back to the drawing board, guys, and don't come back till your nice slick interface has some basic i18n features, please.
Where can I download it?
I keep hearing how phenomenal this is, but I can't find it and objective-j.org says 'coming soon'.
Come, don't push a website if it doesn't exist.
I wish what you say was true - but it's not.
CSS, even if you have compliance to recent specs (which we don't) fundamentally lacks the kind of layout options that you need to create truly slick interfaces.
Browser DOM support differs substantially across the major browsers - so much that you would be insane to build a complex app without some kind of framework or library to abstract away the differences.
Now - I do agree that using HTML and CSS can be a good foundation for delivering apps - but eschewing the use of frameworks to help do it is insanity.
A lot of mediocre programmers seem to complain about Objective-C syntax and Cocoa and whatnot. I can tell you, after 14 years immersed in C++, Cocoa/Objective-C was a breath of fresh air. I picked up the language in about a day and the basics of Cocoa in a few more. Obviously getting really comfortable with it takes a while longer but after doing Cocoa solidly now for 5 years I'd find it very hard to give up. If you've yet to see the advantage then you're probably not doing anything seriously with it. The dynamic dispatch alone simplifies things in a way that C++ can only dream of.
As for MFC, it's a total joke compared to what you can accomplish in Cocoa with a fraction of the code and with a result in another league in terms of stability and quality.
I'm not a rabid fanboi or whatever I'll probably get accused of, but after using a number of languages and frameworks over the years (including developing my own general purpose framework in C++ for Mac) I can tell you that in my experience Cocoa is the best there is right now, and that has been the case for a while.
It's not new (it predates Java), and it wasn't implemented by Apple. It is technology that Apple inherited when they bought NeXT Computer, and it is arguably one of the most important factors in the resurgence of the Mac platform.
You're just not familiar with Smalltalk syntax yet. I went through the same process; it's a seemingly big deal that melts away pretty quickly. You'll come to appreciate the syntax once you start passing around method selectors like textView:willDisplayToolTip:forCharacterAtIndex:. Of course, you don't pass around method selectors in C++ and Java, but it's absolutely key to way things are done in Cocoa. The big stumbling block, especially for C++ developers, is to understand Cocoa design and how to take advantage of Cocoa's and Objective-C's unique features. You have to unlearn C++, and if you happen to like (or think you like) C++ then that can be a frustrating but ultimately rewarding and enlightening process. And then you'll understand why someone would create "Objective-J" for Javascript.
It was Mac developers who ultimately decided to adopt Cocoa. Back in 2000 one of the open questions with OS X was whether developers would adopt Cocoa and Objective-C. Apple offered their C-based Mac APIs for existing Mac developers, they offered Cocoa bindings for Java developers, and they offered plain old Cocoa. Despite its learning curve, Cocoa eventually won over the existing Mac developers. Most importantly, Mac users have come to demand Cocoa applications and are generally hostile towards most Carbon apps (as well as Qt and Java Swing apps, of course).
I can't help but think of .NET in same context, a development platform I generally like. Will Windows users ever demand .NET applications in the way Mac users demand Cocoa applications? (Windows users will never demand WinForms apps, but if Windows developers embrace WPF, another unique approach to GUI development with a significant learning curve, then I think the answer will be yes).
ENDUT! HOCH HECH!
I completely disagree with you on how readable ObjC is. I find that embedding the parameters directly within the method names to be extremely concise when trying to figure out what the call will do. Putting the parameter DIRECTLY next to the relevant descriptive text in the method name makes sense.
[containerTarget putElement: anElement intoStorageNamed: storageName];
is much clearer to me in an overview than something like:
containerTarget->putElementIntoStorageNamed( anElement, storageName );
In my mind, the call convention of ObjC forces you to write good method names and disambiguates the order of the parameters explicitly. It just reads like a sentence, which is wonderful.
Culture is more than commerce