Dojo 1.7 Released!

Dojo 1.7 is now available and ready for your web app. The second major release towards our plans for 2.0, we’ve undergone substantial improvements while preserving existing APIs and capabilities. The Dojo community has come together to dramatically improve the performance and modularity of the toolkit, a popular theme in the world of AMD (asynchronous module definition), JavaScript loaders, and microtoolkits.

Dojo Nano: Less than 4KB gzipped!

Dojo 1.7 provides substantial improvements for building desktop and mobile apps using open web technologies. In addition to a wide variety of features and changes, Dojo has been significantly improved to deliver a foundation that’s ideal for building your applications in any environment (web, desktop, mobile, server-side). Starting with less than 4KB (gzipped), you include just the features you need in your application, from Dojo, your source code, and plug-ins hosted by Dojo, GitHub, and others.

Get Dojo

Overall Vision: Separation of Data and User Experience

You will often hear us talk about separation of concerns. Your users typically want access to relevant data and information, in a variety of different contexts and experiences (desktop web, mobile, tablets/pads, television, automobiles, and much more).

With this understanding in mind, Dojo provides:

  • Tools to mix and match to create your app
  • Simple APIs to seamlessly separate data from UI logic
  • Modularity for very simple projects that’s flexible and consistent enough to handle the most challenging, feature-rich web apps

By truly separating data from your user experience, you can efficiently deliver amazing results to the users of your applications. In a world of many diverse platforms, the separation of data and user experience is key to giving your users access to the data and information they want, in an experience that’s ideal given the context (device, task to be conducted, etc.). It’s definitely a concept that’s gaining popularity, for example the experimental model-driven views library from Google.

Getting There: Compatibility and API Changes

One of our major goals with the Dojo Toolkit is that your application should be easy to upgrade between point releases, e.g., 1.5 to 1.6, and we only make major, incompatible API changes when changing major version numbers, e.g. 1.0 to 2.0. In order to guarantee this API compatibility and consistency, we need time to make sure our APIs are stable and solid. The changes in Dojo 1.6 and 1.7 represent a major refactoring of Dojo for 2.0, while preserving compatibility with previous versions of Dojo. Thus, there are a flurry of new APIs that you should consider to represent Dojo 2.0 alpha or beta, while still being able to safely use existing APIs that may be deprecated in 2.0.

We will discuss many of these changes in more detail through blog posts, tutorials and web site updates in the near future. Here’s a brief summary of the major changes.

Optimized Resource Loading: Asynchronous Module Definition

Module and resource loading has become extremely popular as more application developers have discovered the need for powerful management of larger JavaScript code bases. AMD arrived in Dojo 1.6 and has been completed for Dojo 1.7.

Dojo Toolkit developers have played a major role in helping define the AMD specification. These are excellent innovations in JavaScript which do not necessarily require Dojo and can encourage interoperability across projects. In fact, the RequireJS project is a Dojo Foundation project that’s popular in the jQuery community for working with modules and AMD. And AMD is also gaining support in newer versions of jQuery, MooTools and many other projects.

Key Considerations in working with AMD include:

  • Package Management
    • Modularity of code as well as ease of cross-project sharing, while reducing side effects and testing complexity
  • Optimization: reduced size balanced with number of requests
  • Feature Detection and user-agent optimized builds: has.js and optimized builds for common user agents
  • Reconstitution: easily combining modules from Dojo, your work, and other projects across the web

The amazing new async loader dramatically improves the performance of your AMD application. For reconstitution of modules outside of Dojo, we have a package distribution system that makes it easy to deploy packages and their dependencies. It is the work in progress CommonJS Package Manager platform, which works well with Dojo and many external projects.

dgrid

Of particular note is the new dgrid module, a lightweight grid redesigned for performance and modularity.

Core refinements

Dojo 1.6 introduced the new Dojo Object Store API, based on the HTML5 IndexedDB recommendation. It provides an incredibly intuitive and simple way to include arbitrary data in your user interfaces, with simple APIs for getting and setting data. More advanced constructs like real-time updates with Dojo Socket, validation, caching, and more are simply added through lightweight wrappers. Refinements and stability improvements to this have been added in 1.7.

As announced previously, the event and query systems have been refactored to improve performance, simplify the API, and add modularity. For example, you can now use a very lightweight query system, or include the full Dojo Acme, jQuery Sizzle, or MooTools Slick query engines within your application.

Other major improvements

  • “Baseless Dojo”, with far lighter dependencies throughout the Dojo codebase. Expect more efforts in this area towards Dojo 1.8.
  • _TemplatedMixin/_WidgetsInTemplateMixin, and _setXXXAttr API refinements
  • dijit/focus, dijit/place, dijit/popup, and dijit/registry
  • CalendarLite
  • ComboBox/FilteringSelect, with native dojo/store support
  • Zoom/pan/data interactions
  • BIDI text support
  • Gauges, Geo, and GFX improvements, especially for mobile
  • Support for Blackberry 6 in Dojo Mobile.
  • Dijit support for touch and gesture events on mobile platforms.
  • Application controller and MVC, and an updated Dojo Boilerplate.



Mobile Modularity

The other Dojo Foundation mobile projects, Wink Toolkit and EmbedJS, have adopted AMD as well. See Wink and Dojo used together in the Dojo Community Connections demo.

Testing and Compatibility

In total, we’ve resolved more than 1000 issues since Dojo 1.6. The DOH test suite of tens of thousands of tests passes in all officially supported browsers:

  • Chrome: 8.x and newer
  • Firefox: 3.6.x and newer
  • Internet Explorer: 6, 7, 8, and 9
  • Opera: 11.x and 12.x
  • Safari: 5.0.x and 5.1.x

Dojo is also tested with popular mobile browsers including iOS 4.x and 5.x, Android 2.x, 3.x, and 4.x, and Blackberry 6, and passes for all supported features in Dojo Mobile, and most features throughout Dojo. Work is planned for supporting Blackberry 7 and QNX, and Windows Phone 7.5.

Use Direct from the CDN, or Download

Get the Dojo release that’s right for you. Choose from CDN, optimized builds, or source versions with full demos and utilities. Please note that if you are upgrading from 1.6 or earlier, we no longer make a distinction between dojo.js and dojo.xd.js (all versions work cross-domain with the new loader), so update your URLs to refer to dojo.js.

Get Dojo

Documentation

Many improvements have been made to the Dojo documentation. The dozens of Dojo Tutorials are being updated for 1.7, in addition to the reference guide and API documentation. Expect these updates to be completed by the end of 2011.

Roadmap

Work on Dojo 1.8 is already underway. We’re anticipating a 1.8 release in Q1 2012, and 2.0 in mid-late 2012.

Release Notes

Read the complete Dojo 1.7 release notes for full details on everything that has changed with Dojo since 1.6.

Browser-compatibility Releases

In the coming weeks, and as a new policy going forward, we plan to issue point releases more regularly for 1.5.x and newer, rather than just for the most current release. The goal with these updates is to fix compatibility issues with new browsers that are released. This will allow you to use Dojo with new browser releases without as much risk in the upgrade cycle. Expect a 1.5.2 release in the near future with support for Firefox 4+ and IE9, and a 1.6.2 release as well with minor updates. Because new browsers are released with increasing frequency, this should help many Dojo users keep their apps running properly with new browser releases. While we’re moving more of Dojo to feature detection, there are still no guarantees that everything works as expected in new browsers, especially when changes are as dramatic as IE8 to IE9 for example.

Thanks!

And as always, we appreciate your interest and usage. If you find an issue with Dojo, have a suggestion, or see anything on the site or within the documentation that you think should be better, please register for a Dojo Foundation account and open a ticket.

25 thoughts on “Dojo 1.7 Released!

  1. Good work! I’m looking forward to working with 1.7 even more.
    Will the web builder be optimised for the use of 1.7 anytime soon?

  2. Pingback: #RWX2011
  3. Congrats to you and the entire Dojo team, Dylan. Looks like a great release; I’m looking forward to deploying it on our project at work.

    When can we expect to see 1.7 hit the CDNs?

  4. Great job guys!, the advances in the dojo mobile is quite impressive.
    There are some things which i would have changed in the toolkit, especially in the dojo.data. but in general this toolkit has proven itself in the projects and foundations i used it.

    well done!

  5. A tutorial on using Dojo 1.7 with AMD would be nice. The step from provide/require to define() is not always easy. Is there something planned?

  6. Please correct the release notes at http://dojotoolkit.org/reference-guide/releasenotes/1.7.html
    Instead of “Many widgets which used to extend _Templated now extend _TemplatedMixin. If you have custom widgets that extend standard widgets, and use widgetsInTemplate: true, you may need to also mixin dijit._WidgetsInTemplate”

    Should read “Many widgets which used to extend _Templated now extend _TemplatedMixin. If you have custom widgets that extend standard widgets, and use widgetsInTemplate: true, you may need to also mixin dijit._WidgetsInTemplateMixin”

  7. Hey,
    Just one query regarding 1.7. I am trying to integrate the new dgrid widget with Dojo 1.7 but I am not able todo it. The way I am trying to do it is by downloading the dgrid’s zip code and keepingit in a seperate folder as dgrid on the same level as dojo,dijit,dojox and util however what I have observed is the onload function called collectively with the reuire calls using the function require() are not getting fired. Any specific reason for this or I am packaging the dgrid module in wrong manner, I also tried putting the dgrid module in dojox but all in vein, please suggest a way to overcome this.I am using IE7

    Thanks in Advance

    Regards,

    Yogesh

      1. We’re working on a response and cleaning up the docs. It should work, provided you have all of the dependencies as siblings, or use cpm. The dgrid depends on two other modules as well, so you’ll need to have those in place to get things working.

        If that’s not the issue, I’d suggest posting an example to jsfiddle.net and send us the link, and we’ll look into it.

        1. Hi Dylan,
          Thanks alot for the prompt response. Pardon me if I seemed too impatient to wait for response as this being my first post. I was trying to run the example simple_grid.html from dgrid. I have posted the same html on jsfiddle.net at the following location
          http://jsfiddle.net/vzeVa/.

          I think the issue is with loading the dgrid module with AMD. I suppose that is not working as Grid.js for dgrid is not getting loaded, also I have added the folders put-selector and xstyle on the same level as dgrid.
          Thanks
          Yogesh

          1. Hi Dylan,
            The issue got resolved. Actually I was adding the dependencies of dgrid in folders named as put-selector and xStyle hence xstyle was not getting picked.

            Thanks alot for your help. and yeah the lightweight grid and Dojo 1.7 rock :):)

            Thanks,
            Yogesh

  8. Hi all,

    Ver 1.7.2 is out… with Web Builder (1.7.2)

    Can anyone prove a step by step procedure for a simple Mobile (dojox) example to produce a build.

    I guess there is no Tutorial how to use the Web Builder tool.
    build.dojotoolkit.org

    Thanks in advance

  9. Hi,

    does somebody know a tutorial for using dojo.rpc.JsonService in AMD Format. I already searched in the documentations of the dojotoolkit:

    href=”http://dojotoolkit.org/reference-guide/1.7/dojo/rpc/JsonService.html#examples
    Any Idea?

    Thanks

    sinjab

  10. Hi every one, i have a question for dojo version 1.7, this version is compatibility on IE 11 ?

Leave a Reply to Anonymous Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.