Differences between Adobe AIR development approaches? - air

The Adobe Air introductory documentation and samples seem to separate Air development into 3 different categories:
HTML/Ajax
Flash
Flex
I've read the tutorials and examined some of the code, but I'm not totally clear what the differences between them are, and more importantly why you would choose one approach over the other. Sorry for asking such a basic question (please bear in mind I come from a Windows development background).

I will answer this myself since I've done the research. Here's a summary:
HTML/Ajax, Flash, and Flex are
different approaches to developing
web apps. These technologies can be
combined in a single web app.
Adobe AIR is a runtime which allows you to take those web technologies and run them as a desktop app instead of in the browser. You can combine them in the same app.
Flash is a runtime that was originally created to provide a rich UI to browser based apps. AIR brings the Flash runtime to desktop apps.
Flash runs compiled SWF files and is scripted via ActionScript. Flex is a tool
(SDK, MXML schema for defining UI, etc), which makes it easier to create apps that run on the Flash runtime (it generates SWF files).
Further details see: Adobe AIR FAQ, Adobe AIR (Wikipedia), Adobe Flash (Wikipedia), Adobe Flex (Wikipedia).
As for deciding which approach(es) should be used when developing for AIR, I think that should be based on the experience and preferences of the developers working on it. I don't think Adobe gives any guidance here, because their goal is simply to provide the same options for desktop developers that web developers already have.

I haven't used Flex myself, but I know that you can use it to interact with HTML elements, rather than providing the interface itself via Flash. I'm not clear on what Flash vs. Flex is though.

Related

Developing apps for Symbian OS v9.1, UIQ 3.0

I'm very new to Symbian application development. I'm googling some beginner tutorials about Symbian development. As there are many versions and many phone vendors, I like to ask you guys who are already have experiments in Symbian development..
My target is to develop small apps for sony ericsson w960i phone that uses Symbian OS v9.1, UIQ 3.0.
The goal of application is to save all incoming/outgoing calls/messages as a backup somewhere (txt file or isolated storage) inside the app.
For example: If I call to someone, my app should receive the events of number/contact name so I can save it to somewhere else.
Can someone help me to suggest to achieve this?
Can I use Nokia Qt to develop apps for "sony ericsson w960i"? If not, which SDK should I use it for my app?
Can Nokia Qt be used to access call triggers/messages? I read that Qt can't access the internal OS stuffs but not sure whether accessing calls/message can be considered as internal OS stuffs.
Thanks in advance.
Are you absolutely sure about UIQ? This is even more dead than Symbian.
Wiki link
BTW, you can also use Symbian code in Qt application.
Well, the main issue here is that neither Sony Ericsson nor UIQ don't even exist anymore.
Sony swallowed the first and the second went bankrupt after Nokia acquired Symbian itself.
So, whatever you end up doing won't be officially supported.
You can still develop applications for the w960i using JavaME but that doesn't have a telephony API so it won't help you with the kind of application you described.
Qt is not available at all on the w960i.
In order to develop applications using Symbian OS C++, you need the UIQ3 SDK. Since you can't download it from any official source anymore, you will have to google for places online where other people have uploaded it. Hopefully, you can find one with a legitimate untouched SDK.
The documentation in the SDK will help you create the UIQ-specific GUI for your application.
For the engine of your application, generic Symbian OS C++ will do. If you are a true beginner, my admittedly biased advice would be to procure a copy of Quick Recipes on Symbian OS since what you need to learn basically amounts to reading several chapters of that book. The code examples in the book will work on the w960i and will show you how to use the Symbian telephony and messaging APIs.

Desktop Application upon Gecko/Mozilla or WebKit

How can I develop an installable desktop application on top of the Mozilla Engine or the Webkit engine.
We want to have best of both worlds, ease of development with DOM+Javascript+RenderingEngine+ContinuedImprovements in a Browser and user's control as in a desktop app
I looked at using C++ XPCOM for Mozilla but it seems to be quite complicated, Is there any other way to code like a WebApp using Javascript but burn it into the browser and dress it to give a feel of a desktop app. Also I require that javascript is compiled into native so that one cannot sneak into the source code
Are there any examples of desktop applications done this way ?
Web apps are fine but there are concerns of piracy, privacy, security and version control. The moot point is that in a web app the control lies with the software vendor, moreover the data is also with the vendor. Not only these, any changes to the application may also necessitate another around of training. What we want is that once the customer buys a version he is sure of what he owns and that he is in total control of it and we as software developer do not exposed our source code.
The issue is we have expertise in Web App development and we want to utilize that to develop a Desktop App
Your last point is that :
The issue is we have expertise in Web App development and we want to utilize that to develop a Desktop App
Well then BowLine can be an option though it requires Ruby, so you need to consider that. You can also take a look at WebKitDotNet if you are with .net Background.
Use XUL for the user interface and code your functions using JavaScript. You problably only need C++ to expose native functionality not yet available in Gecko. Examples of software that works this way: Komodo IDE, Songbird, Firefox and Thunderbird.

Software protection dongle vs. Adobe Air

This looks like an extremely silly question even to me, but anyway, I'm curious:
Is there a way to protect an Adobe Air application with hardware key (aka Software Protection Dongle)?
I'm looking into developing a certain application that would require such key as a protection from being pirated (I can't change that fact), and it looks like that using Adobe Flash is the easiest way to write what this particular application should do.
If you are writing purely in Flash then you could use a product like SWF Studio (or Zinc ) which encrypts the flash file and produces and executable file. It needs to be encrypted because in a standard flash executable file the swf data can easily be extracted. Then you can protect this executable file using a Shell wrapper which ties it to a dongle. I did this using SWF Studio and Dinkey Dongles with my flash executable and it worked very well.
Links:
SWF Studio
Dinkey Dongles
AIR applications have no support for hardware dongles and don't even possess decent protection from decompiling. I imagine the dongle can be detected with some helper application called with NativeProcess, but this will require different helper for each OS. Also, without obfuscation all this will be pointless. See Trillix SWF Decompiler for decompilation and SecureSWF for obfuscation.

Is WebKit gaining any traction in non-web applications?

I spoke to the boss of a major music software company a few years ago. He told me that if they were going to start again from the ground up, they might look at WebKit for their UI. This totally surprised me. But I'm wondering if other folks are thinking and acting this way. Is webkit working its way in to truly non-web software?
RealPlayer, iTunes, and many other applications are using it, so are some non-"web" apps such as desktop widget programs:
http://trac.webkit.org/wiki/Applications%20using%20WebKit
Designing "web-apps" with HTML/Webkit UI is beneficial for Mobile users, since many devices have Webkit built in. Even if it is currently only used on a PC, you would have the possibility of hosting it on the web or local network later, with less work to convert it.
Gwibber, a Gnome twitter client that ships with Ubuntu, uses WebKit for displaying timelines (although it uses normal GTK+ widgets for the surrounding UI).
I would consider WebKit a viable option for many pieces of UI, particularly if the program shell exposes appropriate hooks into the surrounding platform to do things like launch a real browser or hook in to system notifications. You run the serious risk, however, of building an application that doesn't fit well in the UI conventions of the user's operating system.
It's not WebKit, but building a UI on a rendering engine is essentially what Mozilla does - Firefox, Thunderbird, etc. are built in XUL rendered with Gecko.
Anything you can do on webkit can be wrapped as an application easily with PhoneGap or other tools.
For example, store.sonyentertainmentnetwork.com could be wrapped as an OSX app, an Android app, and still act as a regular website very easily.
Also: https://products.sel.sony.com/opensource/source_webkit.shtml

in which programming languages can we develop applications for adobe air?

In which programming languages can we develop applications for adobe air ? java ?
You can use HTML & AJAX (HTML is a markup language and AJAX utilises JavaScript) or you can use ActionScript from within Adobe Flash and Adobe Flex.
Adobe AIR Developer Centre
ActionScript
http://www.adobe.com/devnet/actionscript/
Air is in fact a "non-web web browser". IOW, the runtime has WebKit (HTML+SVG+JavaScript) + Flash (ActionScript 3 + Flex library); but instead of an URL field to type an address, it opens a downloaded package.
So, to answer your question:
you can write as a modern Ajax-Heavy web app; with the advantage of not having to support a variety of browsers.
you can write Flash applications, either with or without Flex; which is a nice GUI library.
The best way to develop RIA application is Adobe Flex
You can see some RIA application in Tour de Flex