I start with an aside; This must be the most un-Adobe website I have ever seen. Below is the entire website for the Open Screen Project:
As the site says, the details are in the press release which says:
The Open Screen Project is working to enable a consistent runtime environment — taking advantage of Adobe Flash Player and, in the future, Adobe AIR — that will remove barriers for developers and designers as they publish content and applications across desktops and devices, including phones, mobile Internet devices (MIDs), and set top boxes. The Open Screen Project will address potential technology fragmentation by enabling the runtime technology to be updated seamlessly over the air on mobile devices. The consistent runtime environment is intended to provide optimal performance across a variety of operating systems and devices, and ultimately provide the best experience to consumers.
The cool part of all of this, is the fact that the old restrictions on the SWF and FLV specifications are now in the past. The restrictions used to say that if you read the SWF spec, you couldn’t build something that would run SWF files. So, could build an editor, a tool, but not a runtime in anyway.
This has just changed by:
Removing restrictions on use of the SWF and FLV/F4V specifications
Publishing the device porting layer APIs for Adobe Flash Player
Publishing the Adobe Flash Cast protocol and the AMF protocol for robust data services
Removing licensing fees - making next major releases of Adobe Flash Player and Adobe AIR for devices free
With news of OpenJDK coming at JavaOne next week, we will see changes with the most deployed runtimes out there. Just the beginning of the path towards an open source Flash.
I keep thinking of the JVM playing FLV/SWF, and the Flash player grokking .class files!
Ryan Stewart of Adobe and I got to give a joint talk this morning that covered Adobe AIR, Gears, and how you can build offline and desktop applications right now.
Obviously, Ryan gave an overview of AIR, and I did the same for Gears. We also discussed reasons to be excited about Web development, some of the ideas that are out there in the community, and how AIR and Gears can be seen as complementary.
We had some requests to put the slides online, so here they are below. I know it is hard to peruse slides without the talk over, but just think of it as a fun exercise to wonder what we said :)
Adobe AIR for JavaScript developers provides an introduction to Adobe AIR for developers using interested in building AIR applications using JavaScript, HTML and CSS. The book has been updated for the latest and greatest, and is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Yup, the book is free.
It is written by members of the AIR team itself, so you know that the information will be correct. Very smart of them to release it to the public like this. Congrats on finishing it guys!
Adobe continues to expand its support for the Linux platofrm by announcing the release of the Adobe AIR runtime for Linux. This expands the ability to deploy AIR desktop applications to the three major operating systems (Windows, OS X & Linux) while still using the standard web technologies developers have become accustomed to.
This release of AIR for Linux will be supported on the following distributions:
RedHat Desktop Linux 4
RedHat Enterprise Linux v5
Novell Desktop Linux 9
SUSE Linux Enterprise Desktop 10
Ubuntu 6.06
and the following features are available with this release:
Runtime/Application Install/Update and Uninstall.
HTML Loader with JS support to render HTML within AIR applications.
Local Database APIs
File system support with support for user folders like Desktop/Documents etc.
Desktop Integration with Drag and drop, clipboard support
Windowing support with System chrome none/standard
Basic transparency
Menu support with context menu, menu bar, pop up menus and menu events.
Networking
Network change detection (Event.NETWORK_CHANGE )
System wide idle detection (userIdle Event)
NativeApplication APIs
Capabilities (OS) API
Mouse events
Detection of running application (InvokeEvent.INVOKE)
Adobe has posted a FAQ to provide detailed information about this new product release.
Adobe Joins Linux Foundation
In addition to releasing AIR for Linux, Adobe has also joined the Linux Foundation to “collaborate on the advancement of Linux as a leading platform for rich Internet applications (RIA) and Web 2.0 technologies.
“Adobe’s decision to join the LF is a natural extension of its commitment to open standards and open source, which demonstrates its leadership and foresight in the software industry,” said Jim Zemlin, executive director at The Linux Foundation. “Adobe’s membership will contribute to our goal of increasing even more application development on Linux with a specific emphasis on Web 2.0 applications.”
“Adobe delivers key RIA technologies for Linux users, such as Adobe® Flash® Player and now Adobe AIR™, to deploy RIAs in the browser and on the desktop,” said David McAllister, director of standards and open source at Adobe. “The Linux Foundation is a valuable resource, providing a forum where we can work with the community to ensure Adobe RIA technologies are compatible across the Linux software platform.”
This announcement further solidifies Adobe’s commitment to the linux community, having already released server-side products that work natively on the Linux platform.
The launch of Adobe Photoshop Express has been much anticipated. We are seeing the move of a large software company going from desktop to Web for a major application.
I am a big fan of Picnik and for awhile was using it quite regularly, so I wanted to see how they compared.
It seems like Photoshop Express is pretty limited and seems very much focused on taking images, putting them online, and doing little touch-ups. One of the things that I am always doing is taking a picture and adding text and shapes to it, and this isn't available, so I kinda don't know when I would use this other than for simple cropping and resizing.
The interface is sleek and Flash-y but somehow doesn't feel as nice as Picnik to me.... I don't know why.
We all have bits of reusable code that we store in some fashion. These snippets prove to be invaluable at helping to not "reinvent the wheel" so storing them in a safe and convenient place is important.
The MooTools team wants to make it easy for you to store your snippets easily through the use of their new Adobe AIR application, Snippely. Using the MooTools JavaScript library and the AIR SDK, Valerio Proietti and Tom Occhino created a desktop application that allows easy storage of both code snippets and notes about the code.
When we were thinking about what type of application to make our AIR playground, we tried to think of something that we'd want to use ourselves. Valerio and I are notorious for storing countless bits of code in all sorts of different languages all over our hard drives, and thought it would be nice if we had a central place to store and organize those bits of code. We came up with the idea of 'snippets', and an application called Snippely.
The nice thing about this is that they've designed Snippely so that you can organize snippets by groups and that a snippet entry can consist of multiple snips or notes.
Finally, those looking to get into AIR development will certainly benefit from the fact that the Moo team has released the app as an open source project under an MIT license. The code for Snippely is hosted on Google Code and is available for you to review.
The intersection is where Kevin answers about Silverlight going offline:
Well, what about an offline Silverlight capability? Would that do it?
In order to do it well, your heart has to be in it. And if you look at what we're doing right now with our technologies like Flash and AIR, we're making sure they work reliably across operating systems. So that means Mac and Windows, but also Linux. We're releasing Flash Player now simultaneous for Mac and Windows. It took us a while to get their and now we're doing that, and it's the same core code.
If you look at what Microsoft is doing with Silverlight, they're not actually building the Linux version off the same code base. It's a new code base, which is unlikely to be compatible with the other code bases because it's just not built the same way. So there'll be different idiosyncrasies and we know that will be a problem. So we're really taking a passionate approach to reliability across OSes. And you really have to have that as the core essence of what you're doing or it won't really work that well.
Microsoft says it is coming:
Microsoft does not currently have specific plans to bring offline capabilities to Silverlight, but it's something it will eventually do, said John Case, general manager in Microsoft's developer division.
"It's something that we will want to do," Case said in an interview on Monday. "Eventually, customers will expect us to do it."
Darryl has a lot more meat in his article which asks:
As far as AIR deployment, why not just put it in Flash?
But isn't the Flash Player only about a 500K download? Couldn't you just up that a little, as you said bandwidth is increasing?
When are you planning to, or are you in fact planning to, open-source Flash?
So you said Tamarin was a first step. Does that mean you're going to do a second, third, fourth step and so on until Flash is fully open source?
I've watched this ongoing competition between Adobe and Microsoft. What do you think they need to do if they want to one-up AIR?
Well, what about an offline Silverlight capability? Would that do it?
So how do you address the criticisms about security with AIR?
You mentioned support for Linux with AIR. Can you expand on the importance of Linux for you guys and where you're headed with it?
Who is better at designer/developer workflow, Microsoft or Adobe? Do you concede that to them?
What's the status of the Adobe relationship with Google about Google Gears?
The value of this document is that it gives hints to us Ajax folk as we develop applications running on AIR. The main message is that the security sandbox that AIR gives you has subtle side effects that you need to be aware of.
For example, note the function(){} wrapper in the AIR-specific code:
There are other small issues such as not having eval() available post-load that you can see in the changeset. If you run into something as you develop your Ajax application in AIR, you have another resource to check (as well as the Adobe resources of course).
As well as making changes to get Dojo working in AIR, SitePen also added support for some of the AIR APIs themselves, including:
AirFileStorageProvider
The AirFileStorageProvider store the data in flat files in the app-storage directory. For example, a key of “MyKey”, value of “Hello World!”, and namespace of “MyNamespace” would create the file app-storage:/__DOJO_STORAGE/MyNamespace/MyKey which contains the text “Hello World!”. This storage provider allows for large amounts of data to be stored. Not only can strings be stored, but also objects thanks to AIR's serialize/de-serialize functionality. On the downside, data is not encrypted on disk. It would be trivial however to encrypt the information using dojox.crypto before storing the data.
AirDBStorageProvider
The AirDBStorageProvider leverages AIR's embedded database. When the provider is initialized, a database file is created in the app-storage directory and the Dojo storage table is created. The table holds the namespace, key, and value. This provider is similar to the AirFileStorageProvider in which it can store large amounts, but it cannot store serialized objects because there is no way to de-serialize them due to eval() being unavailable post-onload. The database file is not encrypted, but you could encrypted the data using dojo.crypto prior to storing the data. One advantage of the AirDBStorageProvider is there is only one file written to disk whereas the AirFileStorageProvider writes a file for each key/value.
AirEncryptedLocalStorageProvider
The AirEncryptedLocalStorageProvider uses AIR's encrypted local data store functions. Data, such as passwords, will be encrypted when being stored and decrypted when being retrieved. Similar to the AirEncryptedLocalStorageProvider, objects cannot be stored because they cannot be
de-serialized with an eval(). One limitation of the AIR's encrypted local data store is it does not provide a way to enumerate keys. To solve this, the AirEncryptedLocalStorageProvider creates a registry using AIR's encrypted local data store to track the namespaces and keys.
Dojo adds it's name to the list of Ajax frameworks that are ready for AIR work. Since Dojo has a large coverage of features (especially via the dojox.* components) it can be well suited for larger desktop apps.
After recently installing Snitter, I have to say I've become a bit of a fanboy of Jonathan Snook. The guy just produces some good stuff. So when I saw that he announced a new AIR application, I had to get it installed and checked out.
While Snoto (ya know, Snook, Snitter, Snoto) isn't as polished as Snitter, it's not meant to be. Jonathan has released this as a foundation for those that want to understand how to build AIR applications.
The goal of this is not to create a Flickr client that "does it all". It was put together as a reference application for anybody interested in learning more about Adobe AIR. Snoto has been released under a Creative Commons license, so it's available for you to take and extend how you wish. The link to the source code is included at the bottom of the Snoto page.
This is a great help to many developers as interest in Adobe AIR has skyrocketed since the release of AIR v1.0. MooTools developers should be especially pleased with the fact that Snoto was built using the MooTools JavaScript library, specifically because of the ease with which AIR applications can be developed without jumping through hoops. While other JS libs are now updated to work with AIR's security model, MooTools was the first to be compatible even during the beta process.
Again, the biggest benefit is to those that want to learn about working with the AIR API:
From the AIR API, I haven't gone hogwild but rather kept it simple. You can see use of nativeWindow, context menu and EncryptedLocalStore.
Having access to Webkit made styling the interface very straightforward. Like Snitter, it's a combination of background images, PNG images, and some CSS3/border-radius to round things out.
The Snoto page has been setup with an AIR install badge which should make it easy to check it out.
Expanding on the project, Ted Patrick, Adobe technical evangelist, said the technology would allow for cross-compiling existing code from C, C++, Java, Python, and Ruby to ActionScript. This would enable components written in those languages to be integrated into a larger project, Patrick said. "That code becomes perfectly portable into our application platform," he said.
For example, an alternative PDF renderer providing a lighter version of PDF could be cross-compiled, and the Flash Player could read it and display PDFs.
"Right now, everything has to be written in ActionScript or our lower level byte code languages," said Patrick.
In Flash Player, everything has to compile down to SWF byte code, Patrick said. The byte code language inside SWF is called ActionScript byte code.
Of course, this has been talked aboutquite some time ago. As Tamarin grows up and becomes a solid VM, we are likely to see the polyglot come to being in full force.
To coincide with the release of Adobe's AIR v1.0, the Ext team released v2.0.2 of the Ext framework with enhanced support for the new AIR runtime. The Ext and Adobe teams collaborated during the AIR beta process to ensure that support for the updated AIR API and security sandbox would be available to Ext users from day one.
To demonstrate Ext's AIR capabilities, founder Jack Slocum went about updating the Simple Tasks application he initially created during the early AIR beta process.
Making extensive use of the newly updated AIR API, the Ext team enhanced the Ext.air package to handle such functionality as:
Managing native windows, event listeners and automatic state management for the windows.
Use of the new synchronous database access introduced in AIR beta 3.
Native drag and drop and clipboard access.
Playing sounds.
Minimizing AIR applications to the system tray.
Adding an icon to the system tray is now a trivial task as can be seen in this code sample:
In addition to demonstrating AIR apis, Simple Tasks v2 also includes several advanced samples to demonstrate creating custom Ext components. These samples include:
ListTree - Allows for a hierarchical list of options, similar to a treeview, but within a drop-down listbox
Custom Grid Columns - Allows for grid columns to be represented as buttons or menus
Switch - Provides a collection of buttons, one of which can be “pressed” at a time. This is used as an alternative for radio buttons.
Continuing their march into the RIA space, Adobe announced today the official release of AIR v1.0 and Flex 3.0.
Adobe has taken the beta off of the wrapper as their have released both AIR 1.0 and Flex 3.0.
As Ajax developers, Adobe is trying hard to get us developing applications, not just Flash folks. They have a place for us to start with AIR:
The new Adobe AIR runtime enables Ajax developers to build rich Internet applications (RIAs) that deploy on the desktop. AIR applications run across operating systems on the WebKit HTML engine and are easily delivered using a single installer file. With Adobe AIR, Ajax developers can use their existing skills and code to build responsive, highly engaging applications that combine the power of local resources and data with the reach of the web.
The AIR runtime and SDK has gone through an especially long beta cycle (since June 2007) to ensure that both security and compatibility with existing frameworks was achieved. Some key new and/or updated features include:
Enhanced Desktop Fucntionality: Drag and drop to the operating system, copy and paste between applications, launching of AIR applications from the desktop or the browser, and run in the background with notifications.
Data Access: Adobe AIR now provides both synchronous and asynchronous access to the local file system, as well as structured data within a local database. This database is implemented using the open source SQLite database.
JS Library Support: Most major Ajax frameworks can be used to build AIR applications. Supported frameworks include jQuery, Ext JS, Dojo, and Spry. Adobe AIR integrates JavaScript and ActionScript to allow cross-scripting between the two languages, and integrated rendering of Flash and HTML content.
Security: Applications built on Adobe AIR can only be installed through a trustworthy install process that verifies that the application is signed via industry standard certificates, providing users with information about the source and capabilities of the application.
Adobe's Flash-based RIA development platform, Flex, continues to mature and has been picking up steam in both the corporate space as well as sites such as blist and Scrapblog who have embraced Flex whole-heartedly. Some of the new features in Flex 3.0 include:
Intelligent coding, interactive step-through debugging, and visual design of user interface layout
New capabilities for creating RIAs and building applications on Adobe AIR
Integrates with Adobe Creative Suite® 3 making it easy for designers and developers to work together more efficiently.
New testing tools, including memory and performance profilers and integrated support for automated functional testing, speed up development and lead to higher performing RIAs.
One of the most compelling parts of the Flex announcement is the fact that Adobe has released the Flex SDK under the open source Mozilla Public License.
Adobe Open Source Site Launch
Finally, Adobe announced the launch of their new Adobe Open Source site which aims to "presents the definitive view into open source activities at Adobe, including details regarding projects that Adobe participates in and hosts."
The new...website is designed to keep you up to date on Adobe open source activities, within Adobe as well as with the larger world. It will also be the point of entry to our source code contributions, including Flex, BlazeDS and others. We'll post news items, tell you where to see us, and keep you in touch with some of our favorite bloggers.
Currently, the site houses the Flex SDK, BlazeDS and Tamarin projects, all of which have been open-sourced by Adobe.
Aptana has coordinated the release of their AIR plugin that includes support for Jaxer which allows you to write AIR apps that run on the desktop that include server-side code, written in JS, that can run on your backend server.
Hitting a "1.0" release is a big deal (as is a 1.0.1 ;), so congratulations to the entire Air team. Adobe is working hard to raise the bar in the RIA space by giving developers more tools with great functionality. 2008 is panning out to be an interesting year in web development.
Ben and I are at Adobe Engage today, and hope to find out more about Adobes plans in the coming year. We are live twittering using the #engage hash tag.
To end with something a little fun, and since it was the Oscars tonight:
NOTE: Rey and I both wrote a post on this big release. This post is a conjoining of both posts into one
Mike and the Air team have announced that the Adobe Bus tour is moving to europe, just without the bus. Instead, they will be doing it like the europeans do, and jumping on the train. Far better for the environment :)
As you may have noticed, we have just updated the on AIR tour website, with new cities, dates and information for the European leg of the tour.
Each event is a free full day event where you can learn everything you need to know to start building applications for Adobe AIR using Flash, Flex, JavaScript and HTML.
I will be joining the other great speakers by showing them my home town in London, and also visiting Brussels and Dublin. If there are Ajaxians at those locations, I hope to see you out there!
I met this really nice bloke at the first Ajax get together, put on a few years back, by O'Reilly and Adaptive Path. Ben and I were arguing about something or other and this guy politely told us that we were totally wrong. It turned out to be Kevin. He is a really nice chap, and is really interesting to talk too. You delve into his technical background and it is deep. Really deep. Ever play with the Newton?
Well, Kevin has been promoted to become CTO of Adobe. The press release positions it as "marking an increasing significance for Rich Internet Applications across Adobe’s business".
All I care about is that we have a real techie who does the right thing in a more powerful position at Adobe. Hopefully Flash will be open sourced soon huh Kev? Congrats.
In this new position, Lynch will oversee Adobe’s experience design and core technology across business units. As part of this role Lynch will continue to drive Adobe’s technology platform for designers and developers, which includes Adobe Flash Player, Adobe Flex, and Adobe AIR, the new cross-operating system application runtime that bridges the computing power and data capabilities of the desktop with the real-time dynamic capabilities of the Web.
Adobe Dreamweaver isn't know for it's JavaScript support let alone coding help for the popular JavaScript libraries and frameworks. Up to now, developers and designers who've used DW for their client-side work have been left out of the fun of other IDEs such as Eclipse and Komodo . That's all changed now that to a couple new extensions for Dreamweaver have been built. Chris Charlton, Community Manager for RMI, has created extensions for Dreamweaver versions 6-9 (MX-CS3) that offer support for jQuery 1.2 and Prototype 1.6 development.
The jQuery API extension seems to be the farthest along offering code completion, code hints, code coloring, and a bunch of snippets that early beta users liked. The Prototype API extension only has basic code completion but is due for an update in the next few weeks to offer extended code hints. The code hints appear when editing a JS document and XTND.us has a short video of an extension in use. The demo video and downloads are freely available at http://xtnd.us. We use