Cocoa-Like JavaScript Framework Announced 188
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."
Podcast interview with the developers (Score:5, Informative)
We always find fault on /. (Score:3, Interesting)
Feh (Score:2, Interesting)
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?
Re:Feh (Score:4, Interesting)
That's probably true, but sometimes optimizing for programmers' convenience is more important than reducing every ounce of bloat to the bare minimum. RAM is cheap enough and reusable; programmers' time isn't either.
If you're not trying to write a high-performance scalable computing cluster app, or an operating system, or a fancy computer game, then bloat really isn't an issue.
Re:Feh (Score:5, Insightful)
" If you're not trying to write a high-performance scalable computing cluster app, or an operating system, or a fancy computer game, then bloat really isn't an issue."
Spend 20(+) years fixing other peoples code then get back to me on that one.
Re:Feh (Score:4, Insightful)
Did you even try the demo? On my dual-core Opteron with 4 gigs of RAM it was *painfully* slow. I can run Windows in Qemu, then run Office inside of that, and it would seem really fast compared to their demo. A little bloat here and there isn't an issue. When an app is so bloated and slow that it's unusable for anything practical, it's a real problem.
If I wanted to feel like I was building a presentation on an ancient 286, I would just dig one out of my closet
Also, until you're volunteering to buy the RAM for me, you can kindly shut the fuck up about how cheap it is. Thanks.
Re: (Score:2)
Did you even try the demo? On my dual-core Opteron with 4 gigs of RAM it was *painfully* slow
I wonder how much of that is client-side and how much server-side? As for the client-side issues: What browser were you using?
I tried the demo on a pretty standard desktop machine -- my guess is that it was about as beefy as yours (probably less, in fact) -- in a university computing lab (I can post back later with exact specs if you'd like) running some 2.x version of firefox, and I thought it ran reasonably fast.
That said, I do tend to agree with you. When we resort to running applications in a web brow
Re: (Score:2)
What browser I'm using shouldn't be relevant. That's the whole fucking point of the internet and "web applications". If I have to download a specific browser or use a specific operating system, I might as well just download a native excutable and be done with it. Suffice it to say that I'm using the latest version of a modern browser that isn't Firefox.
That's not saying much.
Re:Feh (Score:4, Insightful)
What browser I'm using shouldn't be relevant.
Well, it does. The "300% increase in javascript speed" browsers like to advertise with new versions actually means something. It's akin to a site using SVG or CSS3--except it does work with every browser, it's just slow.
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
That's probably true, but sometimes optimizing for programmers' convenience is more important than reducing every ounce of bloat to the bare minimum.
For prototypes yes. For most other things no. Depends on what you mean by a bare minimum though.
RAM is cheap enough and reusable; programmers' time isn't either.
Neither is the user's time. And there are usually a lot more users than programmers.
If you're not trying to write a high-performance scalable computing cluster app, or an operating system, or a fan
Re: (Score:2)
"If you're not trying to write a high-performance scalable computing cluster app, or an operating system, or a fancy computer game, then bloat really isn't an issue."
That leaves what exactly? Dinky web apps that are not used by many people, so performance doesn't matter? Internal apps?
People care about performance not because *all* or even *most* applications need high performance but because the most *interesting* ones do. Also, complexity analysis is core to computer science.
Now, you don't need to throw a
Re:Feh (Score:4, Informative)
I agree with you: Javascript is not technically the best solution to write such an application (for now, let's see when JS2 comes out and will be implemented by all major browsers).
It would be much better written with a non-HTML GUI toolkit, but porting all kind of applications to the Web has some advantages that locally executed apps don't have. Thus we have to see if the benefits outweight the downcomes, and for some the "bloat" is acceptable if the application is online, does not need to be installed and so on.
One of the other, not so obvious benefits (imho) of having all kinds of apps online in javascript is that those applications usually are cross-platform, pushing the OS every day a bit more in the background, and forcing windows on less and less people (if you remember the Netscape days, that was exactly the reason Microsoft tried (and succeeded) to crush them - or at least that was what the press was saying at the time). I think most people that run windows still have to run it because of some arcane app that only runs on that platform, and locking that user right in. If this becomes a trend, more and more applications will become cross-platform and less and less users will be forced to use one specific platform. And if that day comes, maybe javascript v3 will become better suited for rich GUI Apps.
Re: (Score:2)
>but porting all kind of applications to the Web has some advantages that locally executed apps don't have.
That is not what I was thinking while flying 35000 feet above the Atlantic ocean last night.
I was however able to write some code and compile it with my locally executed copies of vim, gcc and cygwin.
Re:Feh (Score:4, Funny)
Quick, beam me up. I want to live in your floating habitats too.
Re: (Score:3, Interesting)
This framework is all in javascript and locally executed, however; with HTML5 local storage you should be able to run it as well as any server app once it's loaded.
If you haven't tried the demo you should, it's really quite superb, just the initial load is rough now that it's been slashdotted.
Re: (Score:2)
Re: (Score:3, Funny)
So, in other words, I can download this app and run it locally? For free (and Free)? Wow! That really sounds just ... like ... openoffice?
The funny thing is, OpenOffice takes about the same amount of time to load.
(At first, the above sentence was intended as a joke; then I realized, sadly, that it was actually true -- at least before the site got Slashdotted.)
Re: (Score:3, Interesting)
If you have the google gears plugin installed, google docs works offline. Offline support is not an inherent advantage of native apps. The only truly insurmountable advantage native apps have over web apps is performance, but with today's vastly overpowered multi-core machines, performance has faded into the background, and it's going to become less relevant as the browser upgrades get rolled out (javascript 2, faster layout engines, hardware-accelerated graphics api's, ...).
Re: (Score:2)
What about privacy/security concerns?
Re: (Score:2)
What about them? Local is local. Google gears has a security model whereby only the app that put the data locally can access that data again. There's no practical difference with local native apps security- or privacy-wise.
Re:Feh (Score:4, Insightful)
>>I agree with you: Javascript is not technically the best solution to write such an application
And how exactly does JavaScript fall short?
A lot of programmers look down on it because of its poor start but in its current state its a perfectly capable programming language, even without superfluous v2 features. The biggest problem with web apps is supporting IE 6.
Re: (Score:2)
its great for a large number of applications but it certainly isn't like anything else.
Re: (Score:3, Informative)
Re: (Score:2)
Re: (Score:2)
Re:Feh (Score:4, Insightful)
I agree with you: Javascript is not technically the best solution to write such an application (for now, let's see when JS2 comes out and will be implemented by all major browsers).
Why?
Because JavaScript doesn't (yet) support classes?
If that is the answer, then with all due respect I thoroughly disagree. JavaScript is an OO language, it just uses differential (or prototype-based) inheritance, rather than class-based inheritance. It's quite possible to write fully featured GUI apps using a language that adopts a differential inheritance model. I did that for many years on the Newton, using NewtonScript.
The Newton OS APIs (object prototypes) that went with NewtonScript worked just fine, and provided a GUI that was in a number of ways more advanced than Cocoa. Gave very decent performance on an extremely limited platform.
Personally I have yet to be convinced of the wisdom of including classes in JavaScript2 - it feels unnecessary to me.
Re: (Score:2)
I agree with you: Javascript is not technically the best solution to write such an application (for now, let's see when JS2 comes out and will be implemented by all major browsers).
Why?
Because rich GUI apps are IMHO quicker to write, more responsive, have more features, are better maintainable with a GUI toolkit like for example SWING, GTK, QT, Winforms or wx instead of HTML + Javascript. I have nothing against Javascript, but I really would not like to work with a Javascript CAD application. Or Maya. Or a programming IDE. For now. Maybe in a few years things will be different, but as things are today Javascript apps just feel very sluggish and "incomplete" to their non-javascript antagon
Re: (Score:2)
Re: (Score:2)
[Not in reply to your comment, but since you seem to be one of the authors ...]
The $64K question for me is what is / will the license be? Will it be properly open source? All parts or some parts?
Rich.
Re: (Score:2)
I'm using Firefox 2 on Gentoo, Athlon 64 3000+, 1.5GB RAM. Every click, I'm waiting for seconds, watching it draw and fill every graphical element. It's really unusable.
Re:Feh (Score:5, Informative)
Re: (Score:2)
Yeah, if I go back into the same thing, it's pretty good. Looks like it's mostly initial loading. Which, unfortunately, is the worst-case scenario for people wanting to poke around the thing off a Slashdot link.
Re: (Score:2, Informative)
Re: (Score:3, Informative)
I assume you're one of the authors? Just thought I'd add a comment that the performance must be fairly variable between OS/browsers at the current stage. I have absolutely no complaints under Safari and Webkit nightlies (which stands to reason I suppose)--seems fast.
Win2k3 IE7 took substantially longer to load initially, but then seemed fairly fast (not quite as fast as safari it seems)
Win2k3 FF2 was in between IE7 and Safari.
Really awesome app--I'm inspired to finally pick up some more Cocoa!
Caffeine Theme (Score:5, Funny)
Re: (Score:2, Informative)
And where are my mod points when I need them!
+1 Funny (Unofficial). FurtiveGlancer FTW.
Re:Caffeine Theme (Score:4, Funny)
Re: (Score:2)
Re: (Score:3, Informative)
You'll never know until you try one. Good luck ordering one at Starbucks, Caribou, etc.
Re: (Score:2)
Mocha Theme (Score:4, Funny)
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
Re: (Score:2)
Re: (Score:2)
Damn ... (Score:5, Funny)
Re:Damn ... (Score:4, Funny)
Don't you people have better things to do?
*holds up mirror*
Re: (Score:2)
Re: (Score:2)
Great, but now where's the linky to that mirror?
RTFA (Score:2)
Anyone even remotely interested should read the article. There is some interesting discussion below it in the comments section between commenters and the developers.
SproutCore - it relies on ruby (Score:2)
i took a look at SproutCore since i'm familiar with some Cocoa ideas, like data-interface binding, which would be great in javascript. i was disappointed to find out that SproutCore projects are created with RUBY and that you touch javascript very little, if at all.
just how important is ruby to sproutcore? go to their download link and they tell you to "sudo gem install sproutcore"
very disappointing for a javascript programmer. i suspect this will be the same.
javascript is the turkey lunch meat of programmi
Re:SproutCore - it relies on ruby (Score:5, Informative)
Re: (Score:3, Interesting)
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.
Re: (Score:3, Informative)
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.
Taking bets (Score:5, Insightful)
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.
Frighteningly good demo (Score:3, Insightful)
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.
I've Got It! (Score:3, Funny)
Too slow! Already taken. [continuent.org]
Will web apps eventually dominate software? (Score:3, Insightful)
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/ [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...
Re: (Score:2)
That way regardlesss of whether a user on your system logs in to your web page or in to your application via an SSB from their desktop, you still control all their priveleges the same
Re: (Score:2)
Re: (Score:2)
And I take no offense to the PHP jk. The PHP community brings it on itself. Too many bad developers out there in PHP who have no formal training. Plus the language does nothing to enforce good development styl
Re: (Score:2)
Re: (Score:2)
Sad but true. I've actually been considering converting to Java. The only reason I keep developing the framework in PHP is because I can help people develop in MVC better and now with XUL, I can give them an all-in-one framework for development and integration.
Wow!! Just damned Wow!! (Score:4, Funny)
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!!!!!
should be interesting in combo with XULRunner (Score:3, Interesting)
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.
Re: (Score:2)
I've been often using XULRunner as a way of hosting some native widgets with an embedded HTML-driven interface. Obviously XUL can do more than that, it's just how I've been using it.
Reinventing XUL... BADLY (Score:3, Insightful)
Re: (Score:2)
XUL extensions can modify parts of the user interface outside the displayed window or website, access local files, even run local unsandboxed code.
This is implemented entirely in Javascript, so runs inside the sandbox.
Re: (Score:2)
Re: (Score:2)
My point is that it's solving a different problem than XUL, so it's not "reinventing XUL". For the things Objective-J is designed to do, you couldn't use XUL, and for the things XUL is designed to do, you couldn't use Objective-J. There's no point of contact, other than the fact that they're both using ECMAscript. You might as well compare Konfabulator and Flash, and complain that Flash isn't standalone and doesn't let you save local state, or that you can't embed Konfabulator widgets in a web page.
Re: (Score:2)
However... in XUL, you just build the VIEW in XUL and then have the OPTION to build the model and controller however you wish. For instance, in PHPulse, it has integrated XUL support so your existing PHP mod
Re:Reinventing XUL... BADLY (Score:4, Interesting)
Re: (Score:2)
Impressive, but broken (Score:3, Interesting)
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.
Re: (Score:3, Informative)
It's a proof of concept. Give them some slack!
Re:Impressive, but broken (Score:4, Informative)
Re:Impressive, but broken (Score:5, Interesting)
Why would the browser need to tell you about a non-English input method? In my experience of I18N of web apps, this is completely unnecessary, since the input method is invisible to the application (rather like switching keyboard layouts) - all that's needed is for the web app to support Unicode etc. Since JavaScript uses Unicode natively, I can't quite see how 280 North has managed to break Unicode support like this.
2 questions (Score:2)
1. How can you not be generating CSS or HTML if the interface requires it?
we're never actually generating HTML or CSS
I am assuming that they mean they only generate Javascript, that then generates the HTML and CSS as necessary, but that is not to say you're not dealing with HTML or CSS entirely. It would be great if they abstract those elements away completely, but as is so often the case, when something isn't right and you have to fix it, one must resort to jumping over those barriers and hacking their way to where they can accomplish what is need.
Re: (Score:2, Informative)
Re: (Score:2)
Re: (Score:2)
Not trying to start a flamewar either, but why are you even using PowerPoint on a Mac when Keynote is so much better anyway?
Re: (Score:2)
Re: (Score:3, Insightful)
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!
Re: (Score:2, Informative)
Re: (Score:3, Insightful)
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Interesting)
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Interesting)
Re: (Score:2)
Re: (Score:2)
You do realise that in this day and age, C/C++ programmers are by far the minority? So the gain is to make the toolkit attractive to other devs, and the mess that is C++ isn't the best bet for that.. That being said, Objective C has been around for ages, so meh. C++0x would be ok, but that doesn't have the same track record as Objective C and isn't ready anyhow.
Re:Impressions (Score:4, Interesting)
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.
Re: (Score:3, Informative)
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.
Re: (Score:3, Insightful)
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 );
I
Re: (Score:2, Insightful)
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
Re: (Score:2)
The point wasn't to create a Keynote clone. The point was to demonstrate the toolkit.
What are you doing on /. anyway?
Re: (Score:2)
The point wasn't to create a Keynote clone. The point was to demonstrate the toolkit.
There are lots of Javascript-based presentation packages. So what does writing another one demonstrate?
What are you doing on /. anyway?
Waiting for my experiments to finish. What about you?
Re: (Score:2)
they're demonstrating a general-purpose framework for building any GUI web application you might think of.
And why would I pick their framework over any other framework now? What does their "demonstration" actually show?
Re: (Score:2)
Because it's just a proof of concept app? It's not the app itself that's the story here, but the technology behind it.