Friday, February 20, 2009
New Mailing List Joose Commits
Tuesday, February 17, 2009
A CPAN for JavaScript
In the last days I've been thinking about a new approach to create such a repository while also solving the problem of high performance JavaScript loading at the same time:
- Create a central site (such as an application hosted on Google AppEngine) that does the following things:
- Host any JavaScript file published to it
- Serve as a reverse proxy server for JS files hosted on other web servers
- Provide a simple mechanism to associate dependency and versioning meta data with JS files
- Make any combination of JS files downloadable through a simple URL that serve all data in a single request
What do you think?
Next Steps for Joose
- Nickolay has in a tremendous effort split up the inner workings of Joose into more accesible parts. The basic strategy was to identify those parts which are absolutely neccessary for bootstrapping Joose (make it self-hosting) and then adding features step-by-step in further bootstrapping steps. This will make it easier for other contributors to understand the Joose guts and make their own contribution. The Joose test suite is still passing all tests so their should be no user visible changes.
- Nickolay then continued to improve the module system making is reentrant and stackable. Modules can now be put into one another, can also be classes and can be loaded asynchronously
- Based on this work Nickolay then proceeded to create an asynchronous dependency loader for Joose components and now works on making something that might become a central repository for Joose modules.
Meanwhile me and my team are happily hacking on a large public website that is using Joose to represent models, views and controllers on the client side and my colleagues are using Joose on the server side inside Demandware (which is in turn using Rhino) to build web shops.
Sunday, February 1, 2009
Joose 2.0 "death of parseInt" released
Joose is a self-hosting meta object system for JavaScript with support for classes, inheritance, mixins, traits, method modifiers and more.
Joose makes object-oriented programming with JavaScript easy, declarative and very productive. The Joose meta-object system is multi-paradigm. It supports class-based and prototype-based programming styles as well as class-based inheritance and role-based extention.
The Joose framework has been successfully used in multiple production systems for twelve months now and has been proven to be very stable. Joose is being tested using an automated unit-test suite that is being run in all major browsers (Firefox, IE, Safari, Opera and Chrome).
To get started with Joose we recommend to read the getting started guide.
Major News
Support for types and type coercions in attributes and method signatures
JavaScript purists might find this a little disturbing but Joose now supports type declaration. Joose types, however, are quite the opposite of static types, because they try very hard to convert everything you throw at them to the type you want. parseInt is dead!
Here is the documentation.
News
- Builtin support for turning a class into a singleton
- Support for Rhino without need for special configuration
- The default namespace for types (which used to be experimental) is now Joose.Type
- Experimental support for multi method dispatch. Examples.
- Made integrating Joose with other class builders easier.
- Fixed type checks for arrays (thanks Silvan).
- Fixed an issue when overriding getters and setters defined in a super class.
- Improved error messages when defining properties of classes, etc. but passing null to the property (happens easily when you have a typo in the last part of a name spaced identifier).
- Nickolay implemented a bridge for ExtJS classes
- Malte implemented a bridge to PureMVC
- The Joose 2.0 package (includes examples, tests and the full source, plus merged and minified libraries)
- Just the library
- Minified library
Joose has been carefully tested to play well with other JavaScript frameworks like jQuery, Prototype and YUI and with both browser based and stand-alone/server-sided JavaScript engines. See this page or a full list.
Have fun playing with Joose.
