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)
      • GESTURE_PAN
      • GESTURE_ROTATE
      • GESTURE_SWIPE
      • GESTURE_ZOOM
  • 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?