[Adobe just released and new way to package Flash Lite Applications for S60 and WindowsMobile: this announcement, if linked to the announced Google native client, the Adobe Alchemy product and other industry initiatives is an indication of where the desktop and mobile development are going. Blogger Thomas Menguy tries to bring some coherence to these seemingly uncorrelated initiatives].
At one time application developers were targeting OSes: Windows, MacOS, Unix.
At one point the target began to move towards runtimes (or Application Environments as discussed in this earlier article): the web browser, Flash player (inside the web browser), Java VMs, .NET, and more recently Java FX, Silverlight, AIR…
In all cases each runtime is imposing its own development environment, tools, SDK and above all a development language (Java for the Java VMs, Action script for Flash/Air, Javascript for the web browser, C# for .net).
And of course the runtime has to be installed on your final target, BEFORE deploying your application or content.
But the lines between tools, languages and runtimes are now blurring, as evidenced by several industry moves:
Mobile Open OS are all offering solid and robust application and content management (the Mobile Application Store syndrome). A runtime sandboxing its dedicated content from the rest of the system is seen like an unnatural way and bad user experience for handling content.
Google has a framework (GWT: Google Web Toolkit) to develop for the web browser runtime … except that the development language is NOT javascript
You develop in Java
In Eclipse or NetBean
You can use a RAD
The Java code is compiled in Javascript and will run in a browser not a javaVM (except for development)
This brings a kind of unified approach for the client and the server
OpenLaszlois a great RIA development platform …without a specific runtime :
You develop in the OpenLazlo language : LZX, a specific XML + Javascript
You compile your code for flash or DHTML (a Java version exists but doesn’t seem to be supported anymore) so you can select your runtime!
.Net /Silverlight
You can choose you development language VB#, C# or action script
All are compiled to the .NET bytecode runtime
Microsoft is releasing its “Expression” line of tools to bring ease of development to the designer/developer
Adobe AIR
You can develop in Flash/Flex/Action Script or … in AJAX (Javascript)+HTML
The Air runtime is in fact an aggregation of a Web Runtime (Webkit) and a standalone Flash player
Your applications are deployed …nearly like any other application on the underlying platform. The ‘nearly’ is important because the AIR runtime installation is still visible, as is the application air packaging
Adobe is releasing Catalyst, a very nice WYSIWYG application prototype IDE targeted to designers with strong links to CS4
Allows to develop and reuse C/C++ code … in the browser
use a raw GCC toolchain (and so the browser plugin has certainly to embed an OS independent dynamic loader…reminds me something we are doing for years at Open-Plug 🙂 )
Haxe:
An Action script like language you can compile to … php, C++, java and of course ActionScript
Unification of the client and server development
The adobe Alchemy project (for the techies, explained here):
Compile any C/C++ code to ActionScript byte code to be run in a flash player (examples of Doom, here, and Quake running in Flash are now famous)
And the announcement triggering this analysis: Adobe Mobile Packager
Development in CS4, with CS3 device central
Flash Lite Application is packaged in a “standard” .CAB file for Windows Mobile or an .SIS file for S60, with everything needed to make your application run
Flash Lite applications are no more second class citizens, you don’t have to open the Flash runtime anymore to launch such applications
SonyEricsson Capuchin
… is at the end the way to package flash lite application in a java jar file.
All those examples are depicting underlying trends:
We see, more and more a decorrelation between the development environment and the targeted runtimes
Many development languages are popping out, and we won’t have a “one language fits all”: developers will tend to use
What they know , and it’s even easier now with all those tools
Reuse legacy code as much as possible
What fits best for a particular task
What can help with client/server development
Ease of development and tooling seems to be key, especially looking at Microsoft and Adobe strategies
The on device final Application Management is left to the underlying platform/OS and will be more and more abstracted for the developer that is targeting multiple platforms with a single application development environment.
From what I see today, I tend to think that Adobe is getting it right, little by little, especially thanks to their very strong tooling offer (CS4/FlexBuilder/Catalyst)…and we may see other initiatives from other players like Nokia or even Google to accelerate the development and deployment of services (web or not).
Interesting times for a developer!
Looking forward to your comments.
Thomas
Commentaires