Exhaustive List of Everything That’s New in AIR 2.0

This morning, I was going to start making videos demoing some of the new features in AIR 2.0 when I realized that I should probably start with a list of everything that’s new. Below is an exhaustive list of everything that we’re planning on including in AIR 2.0. I use the word planning because even at this relatively late stage, things can change. Consider yourself warned.

Feel free to post questions in the comments.

  • Multi-touch: Touch events are similar to mouse events, but on multi-touch enabled devices, you can track multiple touch points simultaneously.
    • Multi-touch support:
      • Windows 7 and beyond.
      • Requires multi-touch enabled hardware (obviously).
  • Gestures: Applications can listen for multi-touch events, or gesture events (not both at the same time). Gestures are the synthesis of multi-touch events into a single event.
    • Gesture support:
      • Windows 7 and beyond.
      • Macs running 10.6 and beyond with multi-touch trackpads.
    • Type of gestures we support:
      • GESTURE_TWO_FINGER_TAP (tapping with two fingers)
      • GESTURE_PRESS_AND_TAP (holding one finger down, then tapping with another — convention on some Windows devices for bringing up context menus)
  • Open Files With Default Application: The new File.openWithDefaultApplication API lets you open a file instance with whatever application it happens to be associated with. This is a good cross-platform way to integrate with other applications since you don’t have to know what applications are installed, or where.
  • OS Download Security Dialog: The new File.downloaded property lets you indicate that a file was downloaded from the network and the OS should prompt the user with a confirmation dialog before opening it.
    • Supported platforms:
      • Windows XP SP2 and later.
      • Mac OS 10.5 (Leopard) and later.
      • (No Linux support because Linux doesn’t have this concept.)
  • Storage Volume Detection: The new storage volume APIs let you listen for the mounting and unmounting of storage volumes, list accessible volumes, and get information on storage volumes such as the file system type, whether it’s removable, whether it’s writable, the drive letter, and the drive label.
  • Native Processes: Launch and communicate with native "out-of-band" processes. Bundle your own native executables, or call executables that you know are already on the machine. This feature requires that your application be installed with a native installer rather than though a .AIR file (we provide tools for building native installers).
    • Types of installers:
      • OS X: DMG
      • Windows: EXE
      • Linux: Debian and Red Hat Package Manager
  • File Promises: File promises let users drag and drop files that either don’t exist yet (because you want to generate them on-demand), or that exist on a remote server. We provide an implementation that will automatically download remote files for you and save them to the drop location, and we provide an interface for you to implement if you want to generate files on-demand.
  • Server Sockets: The new ServerSocket API let you listen on a socket so that you can implement inter-application communication, P2P applications, advanced network protocols like FTP, etc.
  • Datagram Sockets: In addition to TCP sockets, AIR 2.0 will now support UDP sockets.
  • Encrypted Sockets: Sockets can now be encrypted using TLS/SSL.
  • New Socket Properties:
    • Socket.localAddress
    • Socket.localPort
    • Socket.remoteAddress
    • Socket.remotePort
  • IPv6 Support.
  • Access to Low-Level Network Information: The NetworkInfo object lets you enumerate network interfaces on the machine and get access to properties such as whether they are active, their IP address, and their display name.
  • Bind Sockets to Specific Network Interfaces: The new Socket.bind function can be used to bind to a specific network interface (discovered through the NetworkInfo API) rather than always binding to the default. This can allow you to pick the best network connection for your particular application.
  • DNS Resolution: Use DNSResolver to look up the following types of resource records:
    • ARecord (IPv4 address for a host)
    • AAAARecord (IPv6 address for a host)
    • MXRecord: mail exchange record for a host
    • PTRRecord: host name for an IP address
    • SRVRecord: service record for a service
  • Configurable HTTP Idle Timeout. URLRequest.idleTimeout and URLRequestDefaults.idleTimeout let you specify the amount of time (in milliseconds) that a connection will remain open before it receives any data. This is useful for things like long polling.
  • Local Audio Encoding: Access audio data directly from the microphone. You used to have to send the data to a server and access it from there, but now you can do it entirely on the client.
  • Global Error Handling: Global error handling lets you handle all uncaught errors (both synchronous errors and asynchronous error events) in one place in your code. (More information on Global Error Handling.)
  • Accessibility: AIR 2.0 will have the same level of support for screen readers as Flash. (More information on accessibility in AIR 2.0.)
  • NativeWindow and Bitmap Size Increases: The maximum size of a NativeWindow and Bitmap instance used to be 2880×2880. In AIR 2.0, it will be 4095×4095.
  • Improved Printing.
    • Vector printing on Mac (already in FP 10).
    • Complex transparency support.
  • Nested Transactions. SQLite will now support nested transactions.
  • Exiting Event on Shutdown. In AIR 2.0, you will be able to handle the Event.EXITING event when the computer is shutting down so you will have an opportunity to save any unsaved work or data.
  • WebKit Upgrades:
    • Nitro JavaScript Engine (SquirrelFish Extreme).
    • CSS3 Module support (2D transformations, transitions, animations, etc.).
    • Scrollbar styling.
    • Break up text across columns.
    • Latest Canvas enhancements.
  • General Optimizations:
    • Lower CPU utilization when idle.
    • Lower memory consumption.

I think that’s everything. A beta of AIR 2.0 will be on Adobe Labs late this year, and we hope to release in the first half of 2010. Questions?

53 Responses to Exhaustive List of Everything That’s New in AIR 2.0

  1. Ben Farrell says:

    Is the multi-touch/gesture stuff JUST in AIR? Is it not available for Flash 10.1 without using AIR?

  2. KJ says:

    Fantastic. Exiting Event on Shutdown, I didn’t know that one. That’s the most exhaustive list I’ve seen yet. Thanks for sharing.

  3. Eric Dolecki says:

    It would be nice to do multi-page printing like this: myBrowser.htmlLoader.print(); and have it print the entire width of the HTML Browser component, and do paging automagically. If the instance was really wide, perhaps there could be a scaleToFit param would could pass the .print method?I don’t know. All I know now is that printing in AIR is no fun.

  4. Isn’t there some memory leak fixes too?

  5. Awesome stuff Christian. I personally don’t have use for some of it, but it’s great that the support is there. Who knows what sort of work I’ll be doing next year!Thanks for the information.

  6. Thanks so much for posting this. Am interested to read more about “File Promises” and what that is.

  7. christian Cantrell says:

    Ben,Multi-touch and gestures are going into Flash, as well.Christian

  8. Could the limit of BitmapData be removed or somehow be revised so the end user gets a warning or something. I wrote a workaround for the bitmap limit so really usefull is the limit not anymore: http://martijnvanbeek.net/weblog/79/flash_player_bitmap_limits_again.htmlFor displaying the limit is ok I think but for image processing it’s very limiting.

  9. radley says:

    Any word on larger application icons? 128×128 is really small in Coverflow. This should be an easy fix… ^_^

  10. Christian Cantrell says:

    Phillip,I tried to capture memory leak fixes in “lower memory consumption.”Christian

  11. Thank you for sharing this. I have to admit though – the “OS Download Security Dialog” feature is one I’ll avoid. I’ve yet to find one person who appreciates OSX always reminding them that they downloaded an app from the net. It bugs the -heck- out of me. 🙂

  12. Elliot Rock says:

    Looking forward to the beta like mad.I am interested to see how the event capturing of multiple gestures works. I can see issues with long Gestures that are part of smaller ones. Reminds me of the un-resolved MouseEvent.DOUBLE_CLICK with MouseEvent.CLICK on an object, the event management sucks.Chaining these complicated gesture events is my suggestion (its how my own DOUBLE_CLICK method works), so you get events dispatch for sub-gestures that are part of longer sequences. This way you can record the progression rather than just the COMPLETE.Good work though!Questions: How many inputs can the multiple touch points record?And how many multiple gestures are part of this?Peace.

  13. milo says:

    Christian,a great list of new/improved features, many thanks for posting.but i still miss some:- serial communication- better and easier control of integrated *.pdf(talking to embeded javaScript inside the pdf over theHTMLLoader is a real hassle)-milo

  14. Scott says:

    Encrypted Sockets: Sockets can now be encrypted using TLS/SSL.Will this make it into 10.1 as well? I’m using a custom implementation of this now, but I’d love native support.

  15. Nathan says:

    WOW.. This is an excellent list.AIR Team rocks.Thanks to CC for sharing this wonderful news.

  16. oizo says:

    Christian, can i set headers (accept-langauge for example) not only for the first request in HtmlLoader in Air2.0? Currently i can set for all requests into the instance of HtmlLoader only the user-agent header :((

  17. Christian Cantrell says:

    Hey, Ray. I don’t disagree. I find them annoying, as well. But at least now you have a choice! 🙂

  18. Christian Cantrell says:

    Elliot, the MultiTouch class has a maxTouchPoints property that indicates the max number of touch points supported by the hardware. So as far as I know, Flash/AIR will support as many as the system supports. I’ve found the limit on the iPhone to be 5 (reasonable given the number of fingers most of us have), but I don’t know what other systems’ limits are.Christian

  19. dvr man says:

    will it be possible to implement a secure native video player while the UI would be in Air and communciate via the new native apis or via sockets ? I understand this require native installer and code to communicate with native processes.

  20. Oscar says:

    Will we also see improved multi-page printing support for HTML/Javascript on AIR?

  21. Well you know all of these changes are great, but without some kind of spell check support in AJAX apps on mac os x, all of these changes don’t make a difference because people don’t want to use apps that don’t have spell check. Especially when it’s natively supported by the OS.

  22. Hendrik says:

    Thanks for sharing these insights. Looking forward to see the new performance improvements – my macbook gets quite noisy when running air / flash apps :-/

  23. Kamil Trebunia says:

    And how about global hotkeys, Christian? I guess it’s a common need. Because many of the Air apps are like Twitter apps (for example) – designed to be quick and easy to use and I can imagine that global hotkey that could bring the app to front out of system tray would be very convenient to the end-user. There’s a workaround – user can manually set a hotkey to run the app (there’s many ways to do this) and then we can capture it (just as we can handle event when our app is executed twice), but it limits the solution to only one hotkey and user needs to do it manualy (or I didn’t found a better way?). So, any news regarding native support for global hotkeys?But even if there will be no support, then, if I understand correctly, we will be able to write a module that does that in any other language and compile it as .dll and then use it in the app – am I correct?

  24. Kamil:We’re not doing global hot keys for AIR 2, but we will look at this feature for future releases. This isn’t the first time I’ve seen it requested. In the meantime, you’re right — you can use native code to do it.Thanks for the feedback.Christian

  25. Bjorn:We recently released a free spell checking solution on Adobe Labs called Squiggly:http://labs.adobe.com/technologies/squiggly/Some of the “lower-level” classes can be used through script bridging from JavaScript. The only thing that’s missing the visual treatment — the squiggly line in the textarea and the context menu.Christian

  26. michael corbridge says:

    Also, did I hear that AIR 2.0 will have access to USB ports?

  27. bsantos says:

    Christian,I believe I read somewhere else that Flash 10.1 will include some GPU support. Won’t AIR 2.0 include it to?Thanks,B.

  28. Paul says:

    I’m currently trying to implement my custom DRM for FLV videos. I have a zip file which my AIR application decodes and extracts the FLV video for playback in an arbitrary directory. Is there a way in AIR 2.0 which can help me with making the arbitrary location more secure while still allowing AIR to play the video?Thanks!

  29. diox76 says:

    hi everyone!adobe air will be available to desktop applications….or only for web applications?thx for your air!br.

  30. Gerard says:

    I am looking forward playing with the new features, especially the server socket API.I hope that we will be able to implement real FTP functionality, the momentary socket implementation cannot be used anymore (since 9,115) beacuse of the socket policyfile which a “normal” FTP-Server will not provide.

  31. David says:

    Any idea if there will be anything significant provided with an updated webkit? It’s really a pain for me in that there is no showModalDialog object (why?) in the current 1.5 version.Also, the whole html/htmlhost/htmloader concepts are really kludgy, not well thought out. Some improvements here so you could actually build functional front ends to “legacy” web apps.

  32. maliboo says:

    Keeping fingers crossed for socket progress in AIR2.0 (http://blogs.adobe.com/cantrell/archives/2009/10/introducing_urlrequest_idletimeout.html#c2105056) because without it “advanced network protocols like FTP” will be just a buzzword :(Is this functionality varies much from ProgressEvent.PROGRESS dispatched by FileReference? FileReference should (?) rely on system socket output buffer as HTTP protocol didn’t send any additional info to client while receiving its POST request? Or am I wrong?

  33. In the current version of AIR, it locks the debug log file so that if you have an AIR app open, a regular “Flex” app can’t write debug messages. It can be annoying at times. Have you noticed this and can it be fixed for the next version? Thanks!

  34. Yuku says:

    I’m very happy to hear about executing custom EXE files, and especially the native installer! I hope in this way we can run and deploy AIR apps that does not need admin previledges to install. This really blocked deployment.

  35. I was hoping to see support for geolocation and acceleration along with these other cool platform awareness features. Any chance they’ll be in this version as well?

  36. nanu says:

    Launch and execute native processes – I think this is the feature I’ve been waiting for!It would be great if it had the exec methods like those defined in java.lang.Runtime!!!And hope it has access to stderr, stdin and stdout streams for error checking…

  37. Vadim P. says:

    Very nice list!Already trying out AIR 2.0 but don’t really have the apps to test it on.

  38. Max Howell says:

    Your platform needs to be able to install apps from DMGs without installation. Otherwise it will never be OK for most people on Mac.

  39. Giorgoc says:

    That’s a great list! It’s good to see that Adobe believes in AIR and they will not ignore it.I have posted somewhere else the fact that I’d love to see a CFML Engine in a future release of Adobe AIR. Remeber that AIR is to help web developers bring the Apps to the desktop. I don’t believe that there are web developers today that are not using at least one of the most famous scripting platforms (CFML, PHP, JSP, ASP).Why not getting a small CFML engine into AIR?

  40. Igor Kovalchuk says:

    > Datagram Sockets: In addition to TCP sockets, AIR 2.0 will now support UDP sockets.Will be there some kind of ServerSocket for UDP ?Thanks!

  41. jfedor says:

    So, does document.print() work?

  42. Christian Cantrell says:

    @jfedor: document.print() is not currently hooked up, though it’s something we’re looking at doing in a future version. In the meantime, the workaround is to use the PrintJob APIs.

  43. Sooooooooo awesome. AIR is the greatest thing to happen to web developers since Firebug.Is there any way to do video screen capture to go along with the new microphone support in Air 2? That’s something I’d love to see. The ability to capture video at a programmatically-determined framerate of a programmatically determined portion of the screen and write it to the local hard drive instead of a remote server. How about webcam capture?Great work Air team. SO. EXCITED.

  44. Eric Wilson says:

    I would like to do SQL to Oracle or MS SQL server or any/all of the standard Multi-User database systems. That would make AIR a real desktop-like environment. The great advantage of using AIR then would be to share a least some of the code (the user interface) between Web Flex apps and AIR Flex desktop apps. A company could make AIR/Flex apps and eventually port the user interface part to the browser. That is a big advantage. Since the desktop applications are easier to write, one could write most code as desktop and them later, if time and business force permit–port them to the Web/Browser still using Flex. This seems like an obvious big advantage. I hope the people at Adobe agree.Thanks for considering my opinion.

  45. ATIF says:

    Hi Christian,You have show in your video how to call native executables. Can we also call External dll’s from AIR 2.0 as well ?thanks.

  46. ATIF says:

    Hi christian Cantrell,can we call dll’s from AIR 2.0 as well ?

  47. Don Kerr says:

    Christian,Love the multi-touch in Air 2! In some of the multi-touch videos I’ve seen, the user can flick/throw an image/object from one place on the screen/wall to another place. The faster they throw it, the further it goes. Is this using Flash physics engine? If so, what are the plans for integrating this type of capability into Air? Any suggestions or basic examples of how to do this in Air 2?Thanks,Don Kerr

  48. Jean Michel says:

    I’m missing the new printing UI contro capabilities, centered around PrintJob.start2 and PrintUIOptions in your list. I know those aren’t in the public beta, but they are in the docs, and I really hope to see them in the final AIR 2 release (or the next beta, if any)

  49. Robert says:

    OMG..PLEASE put css text-shadow in air 2.. Pretty PLEASE.

  50. Brian says:

    Hey Christian.Thanks for the list. I am excited to begin evaluating 2.0.I had spoken with you at MAX a few months back, though am now just a wee late in following up.What my team and I would really like to see in regard to the HTML control is the exposing of more innards (events/properties/methods):1) An HTML download event we can catch. In AIR 1.5, when using the HTML control, currently there is no way of catching if a user clicks on a link that a file resides behind. Or, for example, if the clicking of a link causes the server to send a file stream. Not sure I explained that correctly, but another example would be if I am viewing gmail in the AIR HTML control and I click on an attachment link, nothing happens. I’d love to be able to register for such an event, so then I could initiate the related download.2) MOAR http request header control. I’d love to be able to catch and alter if desired each HTTP request that eminates from the HTML control. (Is this a flex library as opposed to AIR?)3) The initial request from the HTML control adds a refer tag with the name of the SWF file. I would love to be able to overwrite/modify this. Any thoughts?All for the moment.I look forward to any insight or direction you can provide.Sincerest Thanks!Brian

  51. Don Kerr says:

    Christian, have you done any Air 2.0 examples of UDPsocket applied to Multi-touch? I’m trying to learn how to get touch data from a video reactive system into Air 2.Thanks,Don Kerr

  52. krishna says:

    Hi All,I am presently using Adobe Air 1.5 Framework and i want to update the Air 2 Beta version. Help me in setting the same.As in my application, it uses TLF which doesn’t supprot IME. But as i came to know the features from AIR 2 Beta it provides.Can you help me for the same in implementing the feature “IME API and IME Text Input Enhancement” with some samples or examples.Thanks in advacne.Krishna

  53. Daniel Lopez says:

    Spending development time on frivolous and mostly unrequested and unneeded features such as multi touch is silly.There are more fundamental and more requested features such as global hotkey assignment that should be handled first.Although not as sexy and possibly more tedious and more difficult to implement cross platform, i think its very necessary. Some sort of attempt should be made, and I was expecting this feature to be in the Air 2.0 release.