topleft
topright
PureMVC Now Supports ExtJS, MooTools, Objs, Prototype... What's Next?
Sunday, 13 March 2011

ImageIf you've followed the PureMVC project from its origins in AS3, you know that the overarching portability concept has been to port to a language, not to a platform. Thus the AS3 'reference implementation' served Flash, Flex and AIR equally well. We use the simplest possible language constructs so as to avoid reliance on language specific 'magic', and we avoid third-party framework dependencies altogether.

 

These decisions about portability were ironically made because of JavaScript and it's uncertain future in the early days of PureMVC design. At that time, it appeared that ActionScript 3 was going to be the next version of JavaScript. Adobe had built AS3 to a 'proposed' ECMAScript standard one rev ahead of JavaScript. That move made it seem certain that JavaScript would soon have classes and inheritence and so forth. Of course, that didn't happen. The proposal wasn't ratified and JS remains classless. Not that classy things can't be done with it mind you :)

 

Fast forward to the time that PureMVC is stable, and the 'proposed' ECMAScript standard AS3 was based on has been discarded. JavaScript still doesn't have classes. So filling that void are a growing number of frameworks for class simulation. Unfortunately but predictably, they aren't all compatible. It looks like PureMVC isn't going to be possible for JavaScript. Which sucks because so many people use it.

 

Then, PureMVC was ported to JavaScript by Frederic Saunier, and it depended on his own, perfectly sound, but not very well known at the time framework called Objs. In order to use PureMVC with JavaScript. He has done the previously unthinkable. Ported an OOP framework to a language without classes. Bravo, Frederic. He even ported the classic PureMVC EmployeeAdmin demo, but like many of us, at that moment, he didn't have the time to support Objs with docs and push the framework into the general memespace. This hampered adoption of the framework by the greater JavaScript community. 

 

Enter Justin Wilaby, who writes a whole new port from scratch, depending on the extremely popular MooTools class simulation and UI framework. And he delivered an eye-popping demo called BoxSplash. It was a tough decision to make, but the Objs port was deprecated in favor of the MooTools port. It was a matter of attempting to serve the greatest possible audience. That didn't end it, though.

 

Hot on the heels of Justin, Tony DeFusco contacted me and had ported Justin's MooTools port over to Sencha's ExtJS, which has been gaining popularity with HTML 5 and mobile developers.

 

Clearly it is time for the PureMVC JavaScript port to embrace the reliance on third-party frameworks for class simulation. Consequently, the JavaScript port and its demos (EmployeeAdmin and BoxSplash) have had their repositories reorganized into branches. The port still has a single Trac site, but it has multiple branches for each supported class-simulation framework; currently ExtJS, MooTools and Objs. You can visit that site, and the downloads area contains separate zip files for each branch of the framework, and the latest release for each branch has been tagged, so you can connect directly with your SVN client. The EmployeeAdmin demo has an Objs and MooTools branches, and the BoxSplash demo has MooTools and ExtJS ports.

 

JavaScript isn't going away, but also the world is never going to agree on one class-simulation framework for it, so PureMVC is adapting. So, we welcome the ExtJS community, and if anyone out there feels like  porting PureMVC to another popular class-simulation framework bring it on. We're ready.

 

UPDATE

Frederic Saunier has now ported PureMVC for use with the Prototype JS framework. He has also produced both Standard and MultiCore versions. For those unfamiliar with PureMVC MultiCore, it affords modular progamming by using Multitons in place of the Standard version's Singletons. Frederic has also produced a full set of unit tests, included in the download.

 

No sooner were the Standard and MultiCore Prototype JS ports announced, (seriously the tweets were no more three hours apart) Frederic produced a MultiCore version of the Objs port which he uses frequently and intends to support.

 

And coming soon, David Foley of Trinity College in Dublin has produced a PureMVC JavaScript 'native' port, which doesn't rely upon any class-simulation framework - in parallel with Frederic. We're just reconciling the implmenentation details of the two ports to provide the highest quality code, and normalizing the unit testing and minification tools for production. Stay Tuned!

 

The PureMVC JavaScript Port (all branches and versions):

http://trac.puremvc.org/PureMVC_JS

 

 Cheers,

-=Cliff>

Delicious
Technorati
Reddit
Furl it!
NewsVine
YahooMyWeb
Stumble
blogmarks
Digg
co.mments
connotea
 

Who's on PureMVC.org

We have 29 guests online

OReilly PureMVC Book

PureMVC Book

PureMVC on the Web

PureMVC Blog-o-Sphere
PureMVC on Google+
PureMVC on Facebook
PureMVC on Twitter
PureMVC on Delicious
PureMVC on LinkedIn

Supporters of PureMVC

PureMVC on the Web

João Pescada has produced a nice PureMVC / AS3 demo - a searchable image gallery. 
 
Photo Search with PureMVC - Article  -  Code  -  Demo

 

 
Jonathan Campos has put together a nice introductory PureMVC article with an example built around the Netflix API.
 
Netflix API with PureMVC Article

 
The guys over at Pyjamas (a Python port of GWT) have made their compiler so efficient that it can take virtually any Python library and it will compile to Javascript. They loved the look of PureMVC Python, and decided to do a couple of demos that use it.
 

Pyjamas Project

• EmployeeAdmin Demo: Original / Pyjamas  

Pyjamas PureMVC Timesheet Demo

 
Chandima Cumaranatunge, co-author of the O'Rielly book AS3 Design Patterns, and long-time PureMVC community member recently created a simple Flash/AS3 MultiCore demonstration application accompanied by an informative article that's an excellent introduction to the benefits of working with MultiCore.
 
Who Moved the Cheese? - Demo / Source / Article

ActionScript 3 Design Patterns

 

Ahmed Nuaman has published a well conceived and received AS3/PureMVC tutorial at FlashTuts.com. It's a good place for the learner to get their feet wet, and goes into the difference between using PureMVC with Flex as opposed to Flash or pure AS3.

 

Understanding the PureMVC Open Source Framework

FlashTuts Website
Ahmed's Website

 

 

Recent Project Activity

The PureMVC MultiCore framework for  Native JavaScript is now available. It has no dependency on other frameworks and provides its own optional namespace and class simulation.

 

 

 

PureMVC Standard Version for Perl 1.0  has been released, complete with unit tests and online documentation.

 

PureMVC Standard Framework for Perl

 

Release 1.3 of the AIR DesktopCitizen Utility which allows applications to remember their window size, position and maximized/minimized state each time it is launched. It also provides a facility for requiring confirmation (or executing some shutdown process) before the application window closes.

 

AS3 / AIR Desktop Citizen Utility

CodePeek Demo

 

The classic PureMVC EmployeeAdmin Demo has been ported to yet another language! Although PHP is usually thought of as a server language, using PHP-GTK, Sasa Tarbuk recreates th a desktop app. 

 

 
Version 1.0.8 of the PureMVC Java MultiCore port is now available. It supports JavaFX and handles threading properly.

 

 
Copyright © 2006-2008 Futurescale, Inc.