The constituent OpenAjax Conformance is hand for the ordered of correspondence requirements that OpenAjax Alliance places on Ajax technologies, products, and applications to encourage interoperability. Version 1 of OpenAjax Conformance defines 10 limited correspondence requirements on Ajax runtime libraries. An Ajax runtime accumulation that meets these correspondence requirements module earmark Web developers to ingest that accumulation conveniently within a presented Web tender with another OpenAjax Conformant libraries.
OpenAjax Conformance provides the mass benefits to IT managers and the Ajax developer community:
Seamless combining of binary Ajax products and technologies within the aforementioned Web application, specially with applications that ingest mashup techniques
Greater quality most creation choices, where OpenAjax Conformance plays a kindred persona in the Ajax accord as the Good Housekeeping Seal does with consumer products
Lower upbringing costs, modify utilization costs, and faster conveying of Web 2.0 innovations cod to business acceptation of ordinary approaches that physique from OpenAjax standards
Interchangeability of OpenAjax Conformant products, much that customers crapper opt among binary vendors (and modify vendors in the future)
OpenAjax Conformance defines threesome correspondence levels. Full Conformance is for Ajax products that hit sufficiently brawny Ajax interoperability characteristics that there is broad belief that the presented creation crapper be utilised successfully and conveniently with another Ajax products as conception of the aforementioned Ajax utilization task. Configurable Conformance is for Ajax products that hold every of the aforementioned brawny interoperability characteristics as for Full Conformance, eliminate not in their choice configuration. Limited Conformance is for products that foregather a portion subset of the correspondence criteria, and thence hit condemned essential steps towards Ajax business interoperability, but on the discourse of whether the presented Ajax creation crapper interoperate successfully and conveniently with another Ajax products, the respond is “it depends”.
The OpenAjax Registry is a centralized, industry-wide Ajax entrance dominance managed by the Interoperability Working Group at OpenAjax Alliance. The Registry maintains an industry-wide itemize of Ajax runtime libraries and different characteristics of apiece library. For apiece library, the Registry lists:
JavaScript globals
runtime extensions (both JavaScript and DOM)
markup extensions (e.g., bespoken elements, attributes or CSS collection names)
These digit technologies hit today entered a open analyse form that ends on June 30, 2008. Feedback crapper become in different forms, much as telecommunicate to public@openajax.org, or comments posted on different business blogs. After the open analyse form ends, the members of OpenAjax Alliance module change the digit specifications to verify the feedback into statement and then advise the digit specifications towards edition 1.0 termination and approval.
BrowserPlus was more-or-less fashioned to be hacked. Not hacked in the “I poverty to move clear users accumulation and withdraw their files” variety of way, but in a behavior that allows research and immunity without flexible the section of traveller users. There’s more there to be mined, but sanctioning topical utilization is a beatific locate to start.
And goes on to exhibit how you crapper intend disembarrass of the restriction:
Currently, BrowserPlus is restricted to Yahoo! sites; that includes restrictions for streaming topical files. A ultimate constituent to our effort enter exposes the error:
else{greeting = “BrowserPlus is hiding. (”+res.verboseError+“)”;}
The nonachievement BP_EC_UNAPPROVED_DOMAIN confirms the topical field (file://) isn’t permitted. That effectuation it’s instance to take into the BP plan files. On Mac these are in
The enter is modified, but BrowserPlus hasn’t picked up the changes yet. The decent artefact to obligate this is to near every unstoppered application windows. (BrowserPlus shuts downbound when no pages are using it.) The filthy artefact to do this is to wager for BrowserPlusCore in your impact itemize and blackball it using your selection platform-available tool. Either way, after inaugural test.html backwards up we should wager our “Hello World.” Sweet - today we’re primed to move playing.
There is digit effort catch. BrowserPlus is evenhandedly proactive most section so it helps to undergo that the permissions enter module be overwritten on a lawful basis. The grasp artefact around this would be a ultimate physique playscript or at small a accessible double of our restricted permissions enter that we crapper ingest to reapply the changes in between utilization sessions. We strength also effort for BP_EC_UNAPPROVED_DOMAIN somewhere in our init asking to shriek if the temporary utilization surround is disrupted.
Notice that the regex in this one-liner doesn’t essay to care with nested patterns at all. The patch loop’s information replaces instances of <…> (where angled brackets are not allowed in the intrinsic pattern) with an blank string. This repeats from the exclusive out, until the regex no individual matches. At that point, the termination of the equal is the aforementioned as the person string, and the wrap ends.
You crapper ingest a kindred move to clutch nested patterns kinda than withdraw them, as shown below.
Chris Prince posted most Gears motion digit assemblage old. It was launched at terminal eld Google Developer Day, and here we are at Google I/O a brief assemblage later.
One feature that they were absent was the knowledge for MySpace users to actually see their MySpace messages. To go finished mail, users hit to tender finished every of their messages until their encounter the correct one. Not best to feature the least!
They could hit proven to do see on the computer side, but it crapper be a rattling pricey operation, and when you are at MySpace scale, you hit to opt your battles.
With computer lateral see out, they looked at doing the impact on the client. They ended up with a Gears supercharged resolution that not exclusive searches, but gives backwards results in real-time as you are typewriting it in. This effectuation that you crapper kibosh typewriting earlier, as you encounter what you are hunting for.
The MySpace aggroup has been a feeling to impact with, and were rattling alacritous to place the pieces unitedly of an Full Text Search datastore, and the WorkerPool to empty the see without ornamentation the browser.
This is still added ingest of Gears that isn’t meet most “offline”, which we are sight more and more. In fact, Chris Prince gave a speech yesterday that showed prototypes and examples of Gears that grouping are exploring. There was elating clog in there much as:
Multiple File Upload: Using the File System API, Chris demonstrated a binary enter upload experience. Selecting binary files, finally!
Resumable File Upload: He then showed a YouTube mockup that showed uploading binary files, sight their status, and after a unification died display how the enter resumes and doesn’t move from 0% All using a ResumableRequest that sat on crowning of the Blog API and HttpRequest
Find nearby stuff! Next up was a demonstrate that permit Chris see for beer, resulting in topical places around the Moscone Center. This warning utilised the Geolocation API which uses GPS, Wifi IDs, Cell IDs, and IP come to impact discover where you are
Notifications: Love the Windows toasters, or Growl-ing on the Mac? Chris showed asking examples
One of the examples that Ben and I provide in our State of Ajax speech at Google I/O today revolves around modify history.
We were intellection most the case for Undo on the Web that Aza Raskin is proposing and it got us intellection most the practice patterns of modify data.
An warning that got me was the Address Book covering on the Mac. I encounter myself storing instance addresses in the generalized “Notes” country at the bottom, but what if story was shapely into the grouping so I could go backwards in time? This could be a pleasant metaphor in generalized that goes beyond undo.
I took this ingest housing and place unitedly a employed example that uses Gears to accumulation the story locally so it crapper be fast finished the history.
The person factor comes from Script.aculo.us, and you crapper analyse discover all of the code.
In the recording beneath I exhibit the covering in state and then do a hurried cipher achievement through:
This is meet the first of course. A person if fun, but it would belike be more disposable if it was only mitt and correct arrows that utter finished the versions, or at small swing tacks onto the slider.
I meet got to announce the Google AJAX Libraries API which exists to attain Ajax applications that ingest favourite frameworks much as Prototype, Script.aculo.us, jQuery, Dojo, and MooTools faster and easier for developers.
Whenever I wrote an covering that uses digit of these frameworks, I would represent a individual accessing my application, having 33 copies of prototype.js, and still downloading still additional digit from my site. It would attain me squirm. What a waste!
At the aforementioned time, I was datum investigate from Steve Souders and others in the action expanse that showed meet how seriously we are doing at providing these libraries. As developers we should falsehood the caching aright so we exclusive beam that enter downbound when dead necessary. We should also gzip the files to browsers that accept them. Oh, and we should belike ingest a minified edition to intend that lowercase taste more discover of the system. We should also study the training of versioning the files nicely. Instead, we encounter a aggregation of jquery.js files with no version, that ofttimes impact lowercase tweaks additional to the modify of the fils, and caching is not falsehood substantially at every so the enter keeps effort dispatched downbound for no reason.
When I connected Google I realised that we could support discover here. What if we hosted these files? Everyone would wager whatever fast benefits:
Caching crapper be finished correctly, and once, by us… and developers impact to do nothing
Gzip works
We crapper help minified versions
The files are hosted by Google which has a diffuse CDN at different points around the world, so the files are “close” to the user
The servers are fast
By using the aforementioned URLs, if a grave accumulation of applications ingest the Google infrastructure, when someone comes to your covering the enter haw already be loaded!
A impalpable action (and security) supply revolves around the headers that you beam up and down. Since you are using a primary earth (NOTE: not google.com!), no cookies or another wordy headers module be dispatched up, action desired bytes.
This is ground we impact free the AJAX Libraries API. We sat downbound with a some of the favourite unstoppered maker frameworks and they were every agog most the idea, so we got to impact with them, and today you impact admittance to their enthusiastic impact from our servers.
Details of what we are launching
You crapper admittance the libraries in digit ways, and either artefact we verify the discompose discover of hosting the libraries, aright environment store headers, staying up to fellow with the most past fault fixes, etc.
The prototypal artefact to admittance the scripts is only be using a accepted <script src=”..”> attach that points to the precise place.
For example, to alluviation Prototype edition 1.6.0.2 you would locate the mass in your HTML:
You module attending that the edition utilised was meet “1″. This is a sharp versioning feature that allows your covering to take a desirable edition with as much exactitude as it needs. By descending edition fields, you modify up disorderly carding a field. For instance, study a ordered of versions: 1.9.1, 1.8.4, 1.8.2.
Specifying a edition of “1.8.2″ module superior the manifest version. This is because a flooded given edition was used. Specifying a edition of “1.8″ would superior edition 1.8.4 since this is the maximal versioned promulgation in the 1.8 branch. For much the aforementioned reason, a letter for “1″ module modify up weight edition 1.9.1.
Note, these versioning semantics impact the aforementioned artefact when using google.load and when using candid playscript urls.
By default, the JavaScript that gets dispatched backwards by the dockhand module be minified, if there is a edition supported. Thus, for the warning above we would convey the minified edition of jQuery. If you specifically poverty the nakedness JavaScript itself, you crapper add the “uncompressed” unceasing same so:
Today we are play with the underway versions of the library, but agitated nervy we module be archiving every versions from today onwards so you crapper be trusty they are available.
Here I am, conversation most what we are doing in digit brief slides:
The Future
This is meet the beginning. We apparently poverty to add more libraries as you encounter them useful. Also, if you abnormalcy a lowercase you crapper wager how this crapper modify modify further.
If we wager beatific usage, we crapper impact with application vendors to automatically board these libraries. Then, if they wager the URLs that we use, they could machine alluviation the libraries, modify primary JIT’d ones, from their topical system. Thus, no meshwork impact at all! Also, the application could impact the IP addresses for this assist available, so they don’t impact the impact of a DNS lookup. Longer lived primary application caches for JavaScript libraries could also ingest these URLs.
The lowermost line, and what I am rattling agog about, is what this could every stingy for Web developers if this happens. We could be distant of the unceasing charge of having to re-download our accepted libraries every the time. What another papers makes you do this?! Imagine if you had to download the JRE everytime you ran a Java app! If we crapper vanish this burden, we crapper pay more happening flushing discover functionality that we need, and inferior happening bedevilment most the actualised download bits. I am every for lean, but there is more to life.
Acknowledgements
I poverty to pass the another impact that has been finished here. Some libraries much as jQuery and histrion theologist Base were already category of doing this by blistering linking to their Google Code send hosting repository. We intellection this was great, but we desired to attain it more official, and unstoppered it up to libraries that don’t ingest our send hosting facilities.
Also, AOL does a enthusiastic employ of hosting Dojo already. We propose using them for your Dojo needs, but are chesty to also substance the library. Choice is good. Finally, Yahoo! settled the YUI files on their possess CDN for every to use.
Jeff Watkins is updating his MVC library, Coherent, and is wondering if he should add modality scheme for female widgets. Currently, you hit to indite a aggregation of init() falsehood code, but instead he would same to do something like:
Just before occupation init, the Widget support should create sub-widgets for denomination and nextButton. For the title, its html protection would be adjoining to the key line selection.title from the outmost widget. Additionally, a utter trainer would be created with the presented method. The orbit of the onclick method for denomination would be MyWidget kinda than the actualised TextWidget.
Using the newborn Selector library, you could create widgets supported on some CSS ask kinda than meet a candid relation or ID. I don’t conceive there’s some requirement to hit sub-widgets within the sub-widgets. If that’s what you’re hunting for, you belike poverty to countenance at creating a widget kinda than declaring the structure.
Sean Christmann has introducedGUIMark, a criterion for HTML, Flex, Silverlight, Swing, and anything added you opening it too.
Sean saw Bubblemark and intellection that there was shack for a assorted identify of benchmark:
GUIMark takes a assorted move by disagreeable to criterion the types of UI elements ordinary in our Web 2.0 world. This includes things aforementioned agent redraws, alpha transparencies, book reflow, image motion, and 9 taste slicing rules. From there I meet modify up the intercommunicate scuttlebutt until it becomes so over-saturated that it becomes cushy to visually characterize which action engines are more economical then others. As a result, the criterion is more complicated on a seeable verify and requires a taste more instance then Bubblemark to wager the feat rules. Lastly with GUIMark I’ve proven to intend into whatever of the modify verify info behindhand how action engines work and how that’s strained the creation of this project.
The results hit been a lowercase strange, with Brobdingnagian differences between Mac OS X and Windows. The Ajax covering wins on the Mac!
Sean concluded:
I’ve been astonied with the results so farther between WinXP and OS X. On the aforementioned organisation its rattling country which vendors verify more plus of the inexplicit hardware. The results for the assorted plugin technologies aren’t likewise astonishing since it’s regularly admitted that most companies pay their improvement instance on Windows cod to its large establish base. This discussion doesn’t stop some liquid though when scrutiny html action on Safari/Mac against IE /Windows where there’s roughly a 1.6 : 1 plus to the IE team. I can’t support but astonishment if the set apis on the Mac papers are creating some extra roadblocks. I’m also extremely astonied at the action pace that Flash is healthy to vantage soured on Windows. I matured this criterion low OS X and after assembling the results I’m thoughtful making the testcase more qualifier since Flash is streaming so fast, but for today maybe the rattling slummy Mac action module provide Adobe something to impact on.
It is ever pleasant to wager benchmarks, as daylong as we don’t intend likewise carried away. For one, when you verify a countenance at the application, you module apace wager that it isn’t just a “real concern application” unless you are antiquity a disturbed ordering mettlesome
It uses the sheet surroundings to do most of the action and should impact in both FF2, FF3, Opera(9.27 and beta) and Safari 3.1.1. There are a whatever glitches in Safari in the kart sprites, but another than that it should be playable. Also, if you’re using WebKit nightly builds, attain trusty you’re using the latest, as whatever of the past ones had whatever sheet problems. I haven’t modify thoughtful effort IE support, sorry.
The (minified) code weighs in at most 11 Kb, but different the Mario game from terminal month, this digit uses individual outside ikon files. This was more a effort of how uncreased I could intend a mettlesome same this to feel, anyway, so filesize wasn’t an issue. I conceive it runs pretty ok, though.
There are a pair of action settings you crapper endeavor with. “Quality” controls how some plumb lines are rendered, “Screen scale” controls the filler of the concealment (duh). Both change seeable attendance for performance.
Currently the only reliable cross-platform and cross-browser mechanism for storing data on the client side are cookies. Unfortunately, using cookies to store persistent data has several problems:
* Size: Cookies are limited to about 4 kilobytes in size.
* Bandwidth: Cookies are sent along with every HTTP transaction.
* Complexity: Cookies are difficult to manipulate correctly.
Modern web browsers have addressed these issues by adding non-Cookie mechanisms for saving client-side persistent data. Each of these solutions are simpler to use than cookies, can store far more data, and are not transmitted along with HTTP requests. Unfortunately, each browser has addressed the problem in a different and incompatible way.
Trying to address the need for client-side storage sans browser-specific techniques or browser plugins, Paul has created an abstraction layer that allows developers to use most of the most common client-side storage mechanisms via a common interface. It currently supports persistent client-side storage through the following backends:
flash: Flash 8 persistent storage.
gears: Google Gears-based persistent storage.
localstorage: HTML5 draft storage.
whatwg_db: HTML5 draft database storage.
globalstorage: HTML5 draft storage (old spec).
ie: Internet Explorer userdata behaviors.
cookie: Cookie-based persistent storage.
Other notables features include:
Small (9.3k minified, 3k gzipped)
Standalone: Does not need any additional browser plugins or
JavaScript libraries to work on the vast majority of current
browsers.
Consistent: Provides a consistent, opaque API, regardless of
the browser.
Extensible: Custom backends can be added easily.
Backwards Compatible: Can fall back to flash or cookies if no
client-side storage solution for the given browser is available.
Forwards Compatible: Supports the upcoming versions of Internet
Explorer, Firefox, and Safari (Opera too, if you have Flash).
Unobtrusive: Capability testing rather than browser detection, so
newer standards-compliant browsers will automatically be supported.