Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Cocoa-Like JavaScript Framework Announced

Posted by Soulskill on Sun Jun 29, 2008 12:03 PM
from the more-coffee-names dept.
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."
+ -
story

Related Stories

This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • by bigbigbison (104532) on Sunday June 29 2008, @12:14PM (#23991611) Homepage
    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 [twit.tv].
  • 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)

      by FooAtWFU (699187) on Sunday June 29 2008, @12:36PM (#23991763) Homepage

      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)

        by rs79 (71822) <hostmaster@open-rsc.org> on Sunday June 29 2008, @05:38PM (#23993997) Homepage

        " 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)

        by jlarocco (851450) on Sunday June 29 2008, @06:25PM (#23994287) Homepage

        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:Feh (Score:4, Insightful)

              by Doogie5526 (737968) on Monday June 30 2008, @12:16AM (#23996823) Homepage

              Which browser were you using?


              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)

              So it sounds like maybe you're using IE then which is notoriously bad at javascript compared to FF or Safari. Or maybe you're using Opera in which case I don't know anything about it or it's performance in javascript. It shouldn't matter what browser you are using but when some of them suck at standards compliance or some have bad js interpreters then it does matter for now. Also, the site is likely being hosted on a single server because the company is only 3 guys in their 20s who just launched it. You
      • 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:Feh (Score:4, Informative)

      by Simon (S2) (600188) on Sunday June 29 2008, @12:39PM (#23991775) Homepage

      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:Feh (Score:4, Insightful)

        by mattkime (8466) on Sunday June 29 2008, @01:46PM (#23992325)

        >>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:3, Informative)

        Surely using Flex would make more sense than JavaScript. It has all the benefits you mentioned, plus it performs a hell of a lot faster, and is far more cross-platform, as JavaScript implementations are still far from standardised across all platforms and browsers.
      • Re:Feh (Score:4, Insightful)

        by Archibald Buttle (536586) <steve_sims7&yahoo,co,uk> on Sunday June 29 2008, @02:07PM (#23992513)

        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:Feh (Score:4, Funny)

          by dnwq (910646) on Sunday June 29 2008, @01:09PM (#23991977)
          Because everyone spends all their time flying 35000 feet above the Atlantic ;)

          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.

            • 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:Feh (Score:5, Informative)

            by rboucher (1316519) on Sunday June 29 2008, @01:08PM (#23991969)
            There may be some initial delays when you open up new UI elements (since we delay loading to improve initial performance). Our images are taking longer than usual to load. If you use the app for more than a few minutes (i.e. after you've initially loaded most of the UI), does the issue persist? It shouldn't. The best explanation I could offer is that Firefox 2 on Linux does have some performance issues of its own. FF3 would probably help a lot. That being said, I use it on my macbook pro with FF2 all the time without issue.
                • 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!

  • 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. ~
  • Damn ... (Score:5, Funny)

    by ScrewMaster (602015) on Sunday June 29 2008, @12:16PM (#23991635)
    Slashdotted already. Don't you people have better things to do?
  • Anyone even remotely interested should read the article. There is some interesting discussion below it in the comments section between commenters and the developers.

  • Taking bets (Score:5, Insightful)

    by moosesocks (264553) on Sunday June 29 2008, @12:37PM (#23991765) Homepage

    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.

  • by ehack (115197) on Sunday June 29 2008, @12:48PM (#23991851) Journal

    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.

  • Since it's Cocoa-like, we have to rename it Carob [living-foods.com]. Quick, somebody get their acronym generator going!

    Too slow! Already taken. [continuent.org]
  • 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...

  • by Wizard Drongo (712526) on Sunday June 29 2008, @01:43PM (#23992295)

    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!!!!!

  • by radarsat1 (786772) on Sunday June 29 2008, @02:24PM (#23992627) Homepage

    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.

  • by Foofoobar (318279) on Sunday June 29 2008, @02:28PM (#23992651)
    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.
  • by Haeleth (414428) on Sunday June 29 2008, @03:26PM (#23993101) Journal

    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!

    • by rboucher (1316519) on Sunday June 29 2008, @03:45PM (#23993229)
      Unfortunately browsers don't provide much (or really any) information about many non-english input methods. On the plus side, copy/paste does work with any unicode character (if it's any consolation). This is definitely a problem, and a shortfall of one of our earlier design decisions. We're working on revamping our text system to resolve this, and other issues.
      • by Cato (8296) on Monday June 30 2008, @12:44AM (#23996951)

        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.

    • by rboucher (1316519) on Sunday June 29 2008, @01:03PM (#23991935)
      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.
      • 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.

    • It's you. They're stealing Apple's motif, but I have no quarrel with that!


      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:3, Insightful)

      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
        • Re: (Score:3, Interesting)

          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.
    • Re: (Score:3, Interesting)

      You managed to fit quite a lot FUD in one sentence.
      • Cappuccino and Objective-J aim to completely abstract away the inconsistencies of the browser DOM (JavaScript the language itself is fairly consistent across browsers)
      • Objective-J brings classical inheritance to JavaScript, which has much more familiar semantics to most people than JavaScript's prototypal inheritance
      • Regardless of Objective-C's syntax, have you seen some of the syntactical hoops JavaScript programmers jump through to get pseudo-classical
    • Re:Impressions (Score:4, Interesting)

      by GrahamCox (741991) on Sunday June 29 2008, @11:05PM (#23996419) Homepage
      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.
    • Re: (Score:3, Informative)

      I still think it was foolish for Apple to implement a key technology in a language that is largely unknown by most C/C++ developers

      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.

      Having working in C and C++ for 20 years, I find Objective C code very difficult to read and impossible to understand with just a glance like C/C++.

    • 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