Why Adobe AIR ? Let me tell you about the Features


#1

Little follow up on an earlier post Why Adobe AIR ? Let me tell you why

So I was browsing some archives (from around 2011)
and I stumped upon 2 interesting things


Browser vs. application

original: http://www.adobe.com/products/air/comparison/ (web archive)

The browser has become the preferred way to deliver many applications because it enables easy deployment across operating systems and simplified application maintenance. Plus, the modern programming languages used in the browser enable rapid application design and development.

The Adobe® AIR® runtime complements the browser by providing the same application development and deployment benefits while adding device integration, local data access, and enhanced branding opportunities. An emerging design pattern for rich Internet applications (RIAs) is to deliver a browser-based version of an RIA in the browser for all users and an RIA on the device (such as desktop or smartphone) for more active users.


Those are basically the main features why you would go with Adobe AIR vs a browser app.

Some of them or all of them can be a pivot point of why you would either way.

But let refresh them a little:

  • Installation
    If before building a small .air package was nice and provided an easy install
    today we are more into building installers with captive runtime,
    eg. we want the AIR runtime fully embedded (and not seen as a 3rd party runtime)
    also today the “marketplace” also known as app stores have expanded,
    here the principal ones:
  • Application updates
    If you already publish an installer with captive runtime,
    you can just publish another one with an updated version but …
    with AIR we have another alternative, you can update almost as if it was a web app
    eg. having a main SWF (launcher) that launch an app.swf you can just update the app.swf (it depends of the app, what you update etc, but in most case you can publish quick updates this way on Desktop)
  • Multiple platform support
    officially only Windows and macOS are supported for AIR desktop
    but you can still publish an “old” AIR 2.6 for Linux, yeah it will take extra efforts but possible
    on mobile still iOS and Android, more CPU architecture: ARM, Intel; and more bits with 64-bit support, with another addition the TV apps with tvOS or Android TV (it is a niche but still you can target those with AIR)
    And now, let me add yet another option: CLI or command-line apps
    yeah OK it will not work for all kind of apps, let’s say you’re publishing a “weather app”, you could easily also add a weather app for the command-line for let’s say Linux users, will certainly not be the most downloaded but it can bring some love from those users who will not feel ignored anymore
  • Programming languages
    AS3 can be enough for most things, and yeah you can use some JS too in an HTML window etc. but if you’re publishing a captive runtime you can also take advantage of native process, and add quickly some functionalities reusing the command-line, for ex: find out the name of the logged in user, just sayin’ adding a bit of Batch and Bash is often underestimated.
    Now since AIR 3.0 you can pull the big guns and go with an ANE and add almost anything (well except under Linux which support only AIR 2.6).
    The other thing not well known is you can reuse JS into your AS3 code, anything that can compile to ES3 you will be able to compile it with the compiler option -ES and use it alongside your AS3 code.

Let’s just say that these list of features from 2011 is still valid today, even if you want to be extremely conservative and publish only on Windows and macOS desktop, most of what you need is probably already there in the AIR API.

And yeah AIR is not perfect, there are flaw too and the biggest one are the installers part, it will take you some time to get organised to build those but it is a required step that all applications has to go through, personally I advise to use a captive runtime and spend the time building those installers in an automated way.


Adobe AIR features

original: http://www.adobe.com/products/air/features/ (web archive)

on the archived page if you click the tab “all features” you will get a loooooot of features, and remember this is from 2011, it is only AIR 2.6, since then many more features were added

iOS 4 support for iPad, iPhone, and iPod touch ENHANCED (in AIR 2.6)

Take advantage of new features in iOS 4 like multitasking, retina display for higher screen resolutions up to 960x640, and front and back camera support. Capture audio with the microphone and build applications with an integrated development process when packaging to the IPA format.

Compatibility with Android 3 NEW (in AIR 2.6)

Conveniently debug applications on an Android™ device through a USB connection with no Wi-Fi setup required. Android USB drivers for Microsoft® Windows® are now included with the Adobe® AIR® software development kit (SDK).

Geo location support (where applicable) NEW

Build GPS applications or applications that utilize a device location to deliver customized content based on location.

Accelerometer support (where applicable) NEW

Receive acceleration values in X, Y, and Z axes from native device accelerometer sensors to ActionScript®. Developers can even specify the rate of accelerometer updates to conserve battery life.

Camera and video support* NEW

Capture pictures and video onto your device’s media gallery (camera roll). Applications can utilize the camera roll to display images or upload to a server (for example, you can take a picture or video and instantly upload and view it on Facebook).

*Front and rear camera support for iOS 4.

StageWebView ENHANCED (available for iOS in AIR 2.6)

Display web links inside an application to quickly access web content without having to leave your application. No need to switch to your web browser (for example, use your Facebook application to access all your information instead of having to open a web browser).

Screen orientation support (where applicable) NEW

Control screen orientation and control games by shaking or rotating.

Custom URI NEW

Start up an application within the browser or native Android application.

Screen dimming (where applicable) NEW

Disable auto-lock and screen dimming on the phone to prevent applications from going to sleep (useful, for example, in a video streaming application that doesn’t require frequent user input).

Virtual keyboard NEW

Select text in a text field and see a menu for text operations like cut, copy, paste, and input method.

Performance improvements ENHANCED

Run faster applications and use system resources more efficiently with a smaller runtime, reduced CPU usage (30% reduction in some applications) for idle applications, and reduced memory usage without requiring application recompilation (Android OS with H.264 video decoding at 30fps and GPU-based animation and games at up to 50fps).

Native process API NEW

Create native installers that allow you to launch and communicate with native processes using standard input and output. Using the native process API, communicate with native libraries built using Java™ and .NET and native applications such as grep for file searching. You can also create operating system–specific installers (native installers). Applications that use the native process API must be deployed using a native installer.

Native document handlers to open documents NEW

Open documents in popular file formats like PDF, PSD, DOC, PPT, and MP3 using the native application associated with that file. For example, opening an MP3 file will launch iTunes on systems where iTunes is the default application for MP3 files.

Local microphone API NEW (available for iOS in AIR 2.6)

Record audio locally on your device without the need for a server.

UDP networking support NEW

Take advantage of runtime support for the User Datagram Protocol (UDP) to build time-sensitive, real-time networking applications such as multiplayer games.

WebKit with HTML5/CSS3 support NEW

Benefit from new capabilities such as CSS transforms, animations, and canvas support.

Sophisticated printer interaction ENHANCED

Control how content is printed from an Adobe AIR application, including choice of printer, paper size, and number of copies. New APIs allow developers to retrieve additional printing information, such as printable area, whether the printer will print in color, and whether the print job is currently active. Also print without displaying the print dialog box.

Global error handler NEW

When an unexpected error occurs within an application, capture the error or error event in a single location and present useful information to the user, such as instructions on how to report the issue or restart the application.

Security improvements ENHANCED

Set the execution bit on a file. Take advantage of encrypted TLS sockets and access to the MAC address.

Support for screen readers NEW

Enable applications built using Adobe Flash® software or Flex to be enabled for screen-reading software, including JAWS (Windows only).

Cross-platform vector printing NEW

Enjoy printing support across Mac, Windows, and Linux® platforms.

Custom filter and effects with Pixel Bender

Create and share high-performance, real-time effects using Adobe Pixel Bender®, the same technology behind many filters and effects in Adobe After Effects® software.

Browser code reuse

Reuse HTML, JavaScript, Flex code, and ActionScript between web applications and desktop applications deployed on Adobe AIR.

Local embedded database

Manage structured data within a local database using synchronous and asynchronous APIs.

Traditional desktop application behavior

Enable traditional desktop application behavior for AIR applications running on Windows, Mac OS X, and Linux. During installation, an AIR application is connected to all the operating system hooks for native applications, including the task manager, program files, and Start menu or Dock.

Native menus

Applications deployed on Adobe AIR can create native menus for each operating system.

Enhanced HTML security

The WebKit engine has been updated to provide additional security for HTML applications on the desktop. These enhancements reduce the potential exposure of applications to common web vulnerabilities such as cross-site scripting and code injection.

Drag-and-drop data sharing

Applications deployed on Adobe AIR can use drag and drop to share data with the local operating system or other applications.

Multimedia content protection

Enjoy robust protection for multimedia content including video and audio. Content protection supports usage models including per-user licensing and ad-supported content.

Network content sandbox

Adobe AIR provides a sandbox for all network content, similar to the browser sandbox, that restricts network content from accessing the full capabilities of the runtime.

Adobe Flash Professional CS5 integration

With the Adobe AIR extension for Adobe Flash Professional CS5, build rich media applications and deploy them on the desktop as easily as they are deployed to the browser. The extension provides application debugging and packaging.

Adobe Flash Builder 4 integration

Take advantage of built-in support for Adobe AIR in Adobe Flash Builder™ 4 software. Using the Eclipse™ based IDE, build, debug, profile, and deploy Flex projects on the desktop or to the browser.

Ability to run at startup

With the ability to run at startup or user login, applications such as IM clients can run automatically in the background from startup.

3D effects and Drawing API

Create more engaging interfaces using built-in support for 3D effects. Enhancements to the Drawing API add the z-dimension, real perspective, textured meshes in 3D space, and a retained graphics model, while improving rendering performance and developer productivity.

Encrypted database

Protected by industry-standard AES encryption, the zero-configuration, encrypted local database provides a more secure place to store sensitive information.

Reduced application latency

All application files are installed locally, eliminating the need to make server roundtrips and increasing application response time.

Adobe Dreamweaver CS5 integration

With the Adobe AIR extension for Adobe Dreamweaver® CS5, build HTML-based applications and content and deploy them on the desktop as easily as they are deployed to the browser. The extension provides application testing and packaging.

User interface control

After installation of an application on Adobe AIR, the entire user interface is controlled by the application. AIR applications can be nonrectangular, transparent, or semitransparent, or they can include a fully dynamic layout.

Native window chrome

To provide a more traditional look and feel, AIR applications can choose to use native windows of the local operating system. This also allows the operating system to provide controls for minimizing, maximizing, and closing the window.

Rich media and video

Adobe AIR provides the same audio and video codecs as those supported by Adobe Flash Player 10.1 software, including VP6, Sorenson, and H.264.

Seamless installation process

Flash Player allows Adobe AIR and AIR applications to be installed directly from a customizable badge on a website. The badge detects whether the AIR runtime is already present on the user’s computer. If necessary, the runtime is included in the installation process.

USB debugging for Android NEW (in AIR 2.6)

Conveniently debug your applications on an Android device through a USB connection with no Wi-Fi setup required. Android USB drivers for Windows are now included with the AIR SDK.

Hardware graphics acceleration NEW (in AIR 2.6)

Maximize graphics rendering performance for Android and iOS by taking advantage of the device’s graphics hardware acceleration.

Native custom mouse cursors NEW

Simplify the development of animated mouse cursors by moving the task to the operating system. Enable an enhanced user experience and improve performance.

Automatic soft keyboard support NEW (in AIR 2.6)

Simplify the development of multiscreen applications when soft keyboards automatically appear when required. Desktop applications originally designed for physical keyboards are more easily optimized for mobile devices when you don’t have to modify the content or application to display the soft keyboard.

Multitouch and gestures NEW

Build entirely new types of applications using multitouch (Windows 7, Android, BlackBerry Tablet OS, and iOS) and gestures (Windows, Mac OS, Android, BlackBerry Tablet OS, and iOS).

Remote control support (TV devices) NEW

Access remote control input methods that are common for television-style devices with consistent views for buttons such as pause, play, stop, rewind, fast forward, and more.

2D hardware acceleration (TV devices) NEW

Leverage 2D graphics acceleration using the underlying hardware acceleration systems that exist on TV platforms. Achieve high-performance interfaces by focusing on 2D and bitmaps that are accelerated directly by the TV hardware.

StageVideo (TV devices) NEW

Render Blu-ray quality H.264 video all on powerful hardware video decoders on TV hardware, allowing you to free up system resources to provide expressive interactivity on top of video.

Faster JavaScript engine ENHANCED

Enjoy 50% faster running of JavaScript code without any code changes to the application using the new SquirrelFish Extreme JavaScript engine. The updated WebKit supports JavaScript profiling.

Mass storage device detection NEW

Detect when mass storage devices such as cameras and USB flash memory drives are available to synchronize files such as photos, videos, MP3 files, or other files.

Enhanced drag-and-drop support NEW

Copy files to the local machine by dragging them out of the AIR application and onto the desktop. This enables new user interaction possibilities for applications such as content management systems or online stores.

Socket servers and peer-to-peer applications NEW

Build peer-to-peer applications or local servers that make it easier to communicate with other local applications or remote applications over the network.

TLS/SSL sockets NEW

Connect to a server that requires TLSv1 or SSLv3 for socket communications.

Large maximum window size ENHANCED

Enjoy support for large screen displays that can display windows up to 4095x4095 pixels.

IME API and IME text input ENHANCED

Benefit from better text input handling with IME software. The new API enhancements are designed to use with the new Flash Text Engine.

Content protection (DRM) NEW (desktop only)

Enjoy support for a wide range of business models, including video on demand, rental, and electronic sell-through, for streaming media as well as downloaded content. (Output protection for Windows only; requires the Adobe Flash Access® 2 SDK.)

New Linux DEB and RPM installers NEW

Take advantage of these alternatives to current BIN installers that support new Linux runtimes. Such capability is required for native process applications.

IME (Input Method Editor) API NEW

Easily build input support for complex characters and symbols (such as Chinese and Japanese characters) using your standard keyboard or input devices.

IPv6 network support NEW

Take advantage of support for the next-generation Secure Internet Protocol.

Flash Player 10.2 virtual machine

Adobe AIR includes the high-performance, open source Tamarin virtual machine for processing ActionScript 3.0 bytecode.

Browser collaboration

Applications deployed on Adobe AIR can exchange messages in real time with web applications running in the browser.

File extension registration

Applications deployed on Adobe AIR can be associated with a file extension so that when a file of that type is opened, the application is invoked.

Digitally signed applications

All applications deployed on Adobe AIR must be digitally signed using industry-standard certificates. Security decisions are made based on information in these digital signatures.

Enhanced text

Get complete control over text layout to flow text and sophisticated typographic elements (like ligatures) across multiple columns, around inline images, bidirectionally, vertically, or chained together in multiple text flows. Create multilingual rich Internet applications using device fonts that can now be anti-aliased, rotated, and styled, or build your own unique text components.

Ajax framework support

Use most major frameworks to build AIR applications. Supported frameworks include jQuery, Dojo, Ext JS, and Spry.

Browser and operating system independence

The WebKit engine, Flash engine, and local embedded database are managed independent of the operating system and any web browser.

Free Adobe AIR SDK

Get the tools to package, test, and debug applications deployed on Adobe AIR in the free Adobe AIR SDK.

Custom window chrome

Applications deployed on Adobe AIR can feature customized window chrome, or no window chrome at all, enabling innovative, branded designs.

Integrated HTML and Flash

JavaScript and ActionScript in Adobe AIR support cross-scripting to enable method invocation, event handling, and parameter access between scripting languages. HTML and rich media content are displayed using the same rendering pipeline.

Web launcher

Applications deployed on Adobe AIR can be launched from web pages. If a user chooses to launch an AIR application from a website, the AIR application will run on the desktop.

Application updating

Adobe AIR provides APIs that make application updates easy for developers and users.

Network detection

Adobe AIR enables applications to detect when they are connected to a network. When offline, data input can be stored locally and then synchronized with the server upon reconnection.

PDF file rendering support

Adobe AIR uses Adobe Reader® software to enable viewing of PDF content within AIR applications.

Complex windowing support

Applications deployed on Adobe AIR can detect and change the z-order, height, width, and visibility of windows, enabling complex applications that use multiple windows to present information.

Sound APIs

Dynamically generate audio and create new types of audio applications such as music mixers and sequencers, real-time audio for games, or even audio visualizers with enhanced sound APIs.

WebKit HTML engine

Applications can be deployed on Adobe AIR using HTML as the native language. The WebKit HTML engine is a proven, full-featured HTML engine that supports JavaScript, XML, and other languages.

Local file system access

Applications deployed on Adobe AIR can read and write local files on the user’s computer. Standard operating system security restrictions apply.

Universal application installer

With applications deployed on Adobe AIR, the same installer file can be used across operating systems. This simplifies deployment and installation for both the business and its users.

Cross–operating system runtime

Adobe AIR runs on Mac OS X, Windows, and Linux.

Trustworthy installation process

The installation process for all Adobe AIR applications verifies that the application is signed and provides information about its source and capabilities.

Clipboard access

Applications deployed on Adobe AIR can read and write to the system clipboard, enabling communication within and between applications.

Encrypted local store

Adobe AIR provides an encrypted local store using the Advanced Encryption Standard so that applications can store sensitive information such as passwords or keys.

Runtime configuration management

Manage runtime configuration to disable runtime updates, prevent installation of untrusted applications, and prevent application updates.

Runtime auto-update

By default, Adobe AIR is configured to look for automatic updates to the runtime on a regular basis. If an update of the runtime is required, the update is downloaded and installed (after user authorization).


That’s a lot … that’s more than 80 feature points (85 exactly)

from there you add the list you can find here on Flash Player and Adobe AIR feature list, that list all the features from AIR 3.0 to AIR 32.0

and well … you can add as much
so yeah Adobe AIR can easily list 200 unique features (more or less)


Just sayin’, Adobe AIR pack a bunch, it keep simple things easy and allows more advanced things if you need to, the sad state of things few complaining people focus way too much on what they don’t have yet and ignore the enormous features they already have, they are there but they just don’t use it.

And stupidly enough they use that excuse to predict AIR death.


#2

For CaptiveRuntime for macOS, Windows 32 bits and Windows 64 bits, you can use my free and opensource project: https://github.com/SolidSoft-Lda/AIR-AutoUpdate

It allows me to develop only on macOS, publish a simple zip to the server and update a xml version.
The user opens the App, no matter on macOS, Windows 32 bits (even Windows XP is supported) or Windows 64 bits and get the update instantly done and automatically.


#3

I disagree with what you wrote on the frontpage of the project

What’s the issue with Captive Runtime:

  • You have to do a separated build on a macOS (if you want to provide that);
  • You have to do a separated build on a Windows (if you want to provide that);
  • Every single update, comes with the overloaded runtime;
  • You have to handle the updates your self.

I would advise to do the exact opposite

by avoiding the operating system installers and updates mechanisms you shoot yourself in the foot, a dev should go trough the learning experience of “how to build a pkg/dmg for macOS”, “how to build a exe/msi for Windows”, etc.


#4

I’m confuse with your statement.
Do you mean, that is bad automate the update mechanism ?

The goal of this project is the opposite, allowing the developer to focus on the business logic of the App and not the installers and make the user’s life easier.

You have several desktop applications, working exactly like that (for instance, spotify).


#5

I didn’t say that

but I do say you should ignore the specifics for a particular platform
if Windows expect you to provide an .exe or .msi to install an app then you do provide that
and that also mean yeah you do a specific build for Windows

any install/update if part of the user experience when they use your app

and I say it again, in my opinion it is a bad advice, the developer should focus too on the installers
because the users will use installers to install apps and they expect to work like any other installers for other apps, you can not change those rules

if you go there https://www.spotify.com/fr/download/other/

the mac download which is just a .zip file just show how much Spotify doesn’t know how to build a mac installer, so whoopiwoo I download 1MB of zip file so I can extract a Install Spotify.app so their app do the 300MB download in my place … yeah they could as well build a .dmg or .pkg

the windows download shows a SpotifySetup.exe, there they took the time to build an installer for Windows

the Linux download redirect to https://www.spotify.com/fr/download/linux/
and shows that there too they took the time to build a snapcraft installer or a debian package

It is one thign to have your update mechanism to updates assets and stuff like that,
but this does not replace a real installer that integrates tightly with the system following the rules of the system.


#6

OK, I think I understand your point of view now.
Perhaps you mist understand the goal or the github page is not clear enough for everybody.

The goal is not to replace the installer user experience or override the OS rules.
With this project you continue to have the need to provide a starting point setup to the specific OS (a exe ou msi for Windows and a dmg or pkg for macOS).
Than and only after that you can use this project as an auto update mechanism.
This avoids to run a setup every time that there is an update.

For air files you have this out-of-the-box but for captiva runtime not and this project aims to fill that gap !


#7

That illustrates the problem

if you already take the time to build an installer for the “first install”

when you “override the OS rules” you mess with the system

eg. first install “myapp 1.0.0”
later update “myapp 1.2.0”

if you override the OS rules, you break the “link” between the system and your app

with Windows, when you install an app it get listed in the control panel
“Windows Settings / Apps / Apps & Features”

there you can select the app, you see the icon, the version, the date/timestamp
and more importantly an uninstall button

this is what users expect

if you upgrade your app to “myapp 1.2.0” overriding the OS rules
then in that control panel your app version still show as “myapp 1.0.0”

now, you already build an installer for your “first install”
then recompile the updated app and republish another installer for the newer version that’s it

what do you do for people who want to install the latest version of your app?
are you telling them “oh you first need to install v1.0.0 with the installer then the app will update itself”
it is much less confusing to have a direct link for the latest installer

www.foobar.com/download/myapp/latest  -> MyappSetup_1.2.0.exe
www.foobar.com/download/myapp/1.2.0  -> MyappSetup_1.2.0.exe
www.foobar.com/download/myapp/1.1.0  -> MyappSetup_1.1.0.exe
www.foobar.com/download/myapp/1.0.0  -> MyappSetup_1.0.0.exe
etc.

And it get worse if you try to publish on the Microsoft Store because there you have no other choices than to follow the rules and it work more or less like iOS app store or Google play store.

So if you had a proper installer for Windows 7 / 8.1
then you can convert it to Windows 10, push it on the store and have the store sign it for you
it cost something like $15 to get a dev account, it make your app show in the store listing, it got tons of advantages.

macOS is more or less the same thing, even if you don’t publish your app through the mac app store, if you install with a .pkg it will create system files for the name of the package and the version, which you can then reuse to uninstall the app completely (eg. without leaving behind some conf files)


#8

Yes, in fact you will see on control panel the starting version forever, even if you got 100 updates along the time !
This process may not feet the usual Desktop App developer.
The think is, this “auto updater” was develop in mind for SaaS Desktop Apps.
You may not realize but this is used in a lot of “Internet Applications”.
For me there is no version 1, 2, …
I release on update in an average of 1 update per week and the user of this kind of application use it for years and don’t want to run setups.
All users have the same version (the latest one).
For this reasons I don’t use (and I don’t want to) macOS App Store or Windows Store.