Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

April 14, 2008

Merapi says "Hello World" - 1.0 Framework nears completion

Merapi Project: Extending AIR the way God intended!This weekend proved to be quite interesting for the Merapi Project. Adam took advantage of the warm weather in Denver and found the motivation to crank through a lot of the items on the project checklist to get the Merapi framework close(er) to being releasable as Open Source.

Merapi has gotten a lot of attention since Adam (and the rest of the team: Alex MacCaw, Andrew Powell, Louie Penaflor, Rhazes Spell, Rich Tretola, Juan Sanchez and myself.) announced that we'd be picking up where "Artemis" fizzled out. We've been contacted by folks from across the globe who are interested in leveraging Merapi for more robust application development with Adobe AIR.

What is it? If you are reading this post, you probably already know. If you are scratching your head wondering what Merapi is all about, you can check out this previous post that gives an overview of the project.

For you that know about Merapi (and who landed here searching for it, or for Adobe AIR and OS/device integration) things are brewing extra hot, and we wanted to get the news out that the initial alpha framework is nearing completion. Once things are buttoned up and we've got some more things fleshed out, we will take the cover off, and fully Open Source it.

Until then, check out what Adam has put up today, the first "real" example of Merapi doing it's thing using a classic "Hello World".

Oh what the heck, I've embedded his video here as well, but you really should head over to Adam's Blog to learn more about this most recent news.

Merapi "Hello World" Example


Some other Stuff - "Localing" and AMF3 Support


One cool feature of Merapi will be to allow developers to do something that we have started calling "reverse remoting"... or for lack of a better term, "localing".

Don't get stuck on the term, but feedback on the concept would be great!

In Flash remoting, an application can call out to query the server application to get info on the state of a variable, object, etc.

Instead of only being able to call out to the server (as in Flash remoting), Merapi will allow your Java application to call "into" your AIR application to get the status just the same.

Also... Another cool thing that has surfaced is that Merapi will leverage some of the open source code from Adobe's Blaze DS, which will provide for full AMF3 support, which means efficient binary data flowing between AIR and your local Java code.

Now, that's pretty cool!

For more information on Merapi's explosion of RIA goodness...

March 31, 2008

Adobe AIR on Linux! More Cross-Platform Goodness...

For years, one of the decisions every team embarking on a mission to create desktop software has been faced with a common challenge: Determining which operating system(s) should be targeted for their application.

Remember the early promise of Java?: "Write once, deploy cross platform". The thought at the time was that applications written in Java, including Java Applets would be the holy grail of software deployment, finally eliminating the need for businesses to choose Mac or Windows or Unix/Linux. In theory, Java is a solution to this problem, however time has shown that Java applications are far better suited to run cross-platform "on the back end" than as end-user GUI applications.

A lot of software designers and user experience professionals would probably agree that Java for cross-platform GUIs failed, in part, due to the cumbersome process that end-users had to go through to ensure that their installed Java runtime would allow the application to run. Also, java applications of this nature just didn't, couldn't, wouldn't perform as well as required and weren't stable enough for a real takeover in the consumer market. The latter is most often blamed directly on the decisions made by the folks at Microsoft in their effort to combat the threat posed by Sun and the possibility of a Java-based operating system.

A lot has changed since back then! While Windows is still the dominant operating system for both business and personal users, there has been a huge gain in market share by Apple, as well as with Linux. While it used to be a satisfactory decision to "just make an application for Windows", more and more companies are now thinking about "cross-platform" as a necessity and no longer just a "nice to have".

Today, Adobe jammed their flag in the ground, staking claim to next generation cross-platform desktop applications. They Announced Adobe AIR (Alpha) for Linux!

This announcement means that countless Linux (Ubuntu, Debian, SuSe, etc) users are now able to play along in the "Rich Desktop Client" reindeer games enjoyed by both Mac and PC users since the public release of Adobe AIR.

In addition to the release of the AIR runtime, Adobe also announced that the Adobe Flex Builder IDE was also available for Linux!

So, it seems as if Adobe has defined the first stable, freely available, and truly cross-platform solution for desktop application development. Why is this really a big deal?

(I do realize that technologies like Python also run cross-platform, but we are talking about something much more adoptable by end-users with AIR).


In my opinion, this is interesting for three primary reasons. Reason number one is that this means that software development teams (and business folks that pay them) no longer need to cut Linux users out when bringing applications to market.

Secondly, and less obvious, Adobe's acknowledgement of Linux moves the operating system one step closer to being the preferred OS for many folks that were disappointed by the range of desktop software available that has traditionally been available.

Hardcore Linux users will disagree with me on this point. I am sure that it wouldn't be too hard to find people who'd passionately debate this and stand strong in their belief that Linux is, and has been, the greatest thing since sliced bread (or inkjet printers). I don't disagree with the fact that Linux is a powerhouse of an operating system.

I must point out, however, that after many attempts by different companies pushing Linux distributions (Redhat, SuSe, Mandrake, etc, etc) as well as hardware vendors and retailers trying to sell Linux-based desktops or laptops, that the general public has shied away from the platform.

It isn't only the common everyday users that have found Linux to be less optimal than Windows or Mac's OS X. Even industry insiders and RIA thought leaders like Adobe's Ryan Stuart admit that the reason they haven't made the full-time switch to Linux is due to the lack of quality software applications or choice of applications that they have.

Let's face it, Linux is a wonderful system, however for the untrained user, can be unwieldy to say the least.

I suspect with the newfound popularity of the Ubuntu Linux distribution, and with the new ability for AIR applications to run on the platform, more and more folks will be stimulated to give Linux another shot as their OS of choice.

Now that Adobe is releasing Flex Builder for Linux, is it possible that they will follow suit with their other software tools (Dreamweaver, Flash, CS3, etc?) If that is the case (total speculation), it only adds support to software/web design professionals' desire to take Linux more seriously.

Lastly, having been involved in the strategy, design and development of many different software projects, I can attest how unrealistic it really is to try to develop different instances of a software product to run on different operating systems, while still maintaining quality and brand identity (not to mention plain old usability). The primary OS always gets the funding, and the secondary platform (usually Mac OS) typically suffers.

Need an example? Have you used Microsoft Office on a Mac lately?

Moving on...

One major challenge to this entire argument (and one I am sure I will hear!) is the fact that Adobe AIR still runs inside it's own security sandbox, and that applications developed to run on the AIR platform still don't have the "real power" of traditional desktop applications. In short, to prevent the ability for AIR applications to take over your computer or execute malicious code, they are limited in what they can or can not do.

The primary limitations of AIR applications is that they don't have system-wide file access, can't connect natively to external devices, and rely on the Adobe framework to do what they need to do. Having talked to the folks on the AIR team about this, it is clear to me that they realize this deficiency and leave me with the assumption that down the road, the AIR platform may become more robust, enabling more and more integration directly with the end-user's operating system.

Until then, there is Merapi. As a member of the Merapi project, the release of AIR for Linux is terribly exciting. We've created Merapi in anticipation of this, and because it is developed in Java, Merapi is designed to run cross-platform, alongside the Adobe AIR framework.

The concept is that developers could create their application using the Adobe AIR runtime, and package it up with Merapi, utilizing the Merapi API and plugin architecture to do things that AIR isn't able to do by itself. For more information on Merapi, check out this recent post or hop on over to Adam Flater's blog where he's been making updates until we get the Merapi Web site and SVN repository online.

All in all, it is going to be one very exciting year in the world of next-generation thin-client applications, cross-platform software design and development and the adoption of Linux by users who were previously scared away by its lack of support from major software manufacturers like Adobe.

For more information on this announcement and Adobe AIR/Flex on Linux, check out the following:

March 15, 2008

It's a volcano! It's a framework! It's amazing! It's MERAPI

I have to credit my good friend Adam Flater for giving me the opportunity to write this post. He's the brainchild of my topic, and the reason that I've gotten myself fully involved with the Open Source project for Mirapi.

Some Background

To understand why Mirapi has the potential to impact the development (and user-value) of hybrid web/desktop applications. We've all been struggling for a while to think of a new buzzword that is the 2008 equivalent to earlier "client-server" or "thin client" applications.

Adobe has made the first move to really have an impact in this space with the release of the Adobe Integrated Runtime (AIR), giving less-technical "web" developers a solid platform to create desktop software applications using the technologies and tools that they are familiar with. (It isn't that designers and developers that build for the Web are a bunch of dummies, quite the contrary!) Desktop software development just takes different skills to do well, including the download, install, update and removal processes required to get your Warez out to market and onto users' computers.

The benefits of this new generation of application are varied, and when most industry folks talk about why take this approach, you typically get the following:

  • Can work online or offline
  • Can store data locally
  • "Feels" like software
  • Allows you to store assets locally so you can re-use them in the user experience (video for example)
  • Provides for local file system access
  • Easy installs and upgrades for users
  • Some OS Integration (Via AIR API)
This is all great, and having worked on a variety of well known publically available AIR applications, I am sold on recommending the whole concept for projects that would benefit from it.

Solving the Problem of Adobe AIR and OS Integration

There is, however, one thing that I (and many others including my pal Adam) think is missing is the ability for the AIR application to access the operating system and utilize it the way that a desktop application "should" be able to. I don't blame Adobe for not cooking full OS integration into the platform. They would be crazy to do so. It is all about security. While AIR doesn't have the limited sandbox that the flashplayer has, it still has pretty strict boundaries around what you can or can't do. When you compare it to a pure desktop application, AIR seems a bit limited.

What are these things you speak of?

Allowing your AIR application to:
  • Integrate with external devices (such as a plugged in cell phone, or any other USB or serial device)
  • Offload data crunching to the Operating System
  • Integration with other software applications (plugins, etc)
  • Did I say integration with external devices? :)
To really be used for serious desktop software, AIR applications need to be able to do these thing (or things like them).

Now that we've gone this far, let's back up to "pre-AIR" times, when Adobe first launched the "Apollo" platform. Apollo was, of course, the code name for AIR when it was in development (and a greek god... get to that in a minute)

At the time Apollo was released, I was part of the team working on a project with Adobe and the folks at eBay. This project was the first iteration of what is now publicly available as "eBay Desktop." As with all projects, when kicking around strategy talk, you start thinking about the future and "out there" user scenarios. With the promise of Apollo and with an interesting model like eBay's you can imagine the thoughts flying around and landing on white-boards.

Also at the time of Adobe's release of the first alphas of Apollo, the community started talking about other potential uses for AIR. This is where Adam nailed a pretty cool concept.

Adobe "Apollo" needed a helping hand. In mythology, Apollo's twin sister was named Artemis. Adam got to work, pulled in the help of some friends and an open source project named Artemis was born.

With the release of Adobe AIR, the same folks behind Artemis have started a new branch that is designed to work with the release of the fully-baked Adobe Integrated Runtime. This evolution takes on the name Mirapi. In true geek fashion, the name comes from a powerful volcano on the island of Java.

Mirapi: So, what the hell is it?

Mirapi is a java companion to the Adobe Integrated Runtime. It runs in tandem on a user's machine, providing a direct bridge between applications built to run in AIR and the power of the underlying operating system. At it's root, it's the ability to make AIR apps that run like desktop applications.

Based on a very flexible plugin architecture, developers can leverage the OS by writing java plugins to Mirapi, and build their Flex, Flash and AJAX applications for Adobe AIR, and utilizing Mirapi to make them do things that AIR just can't do by itself.

We are working to get the first public development release out the door, as well as putting up a Web site, FAQ, and all that other good stuff. I wish the whole Mirapi team had more time right now, but we are all working on projects of one kind or another and up to our ears in existing stuff. No fear though! Mirapi will be available soon, and with the excitement created by the announcement at the On AIR event in Atlanta, it looks as if the community is going to get behind the project and really help us mix up the Rich client desktop battle!

Some of the current projects that members of the Mirapi project are working on:

  • USB device connectivity: Using a Web Service-Connected AIR Application to connect to, communicate with, dignose and repair mobile devices

  • "Piano Hero" - The title says it all. Piano battling over the Web using USB keyboards

  • Connecting a line of Robot Toys via bluetooth or USB to send and recieve data in order to connect physical toy robots with the online game environment (this one's patented folks!)
I am sure that once the site is up and online (meaning that the Mirapi team gets a couple days of free time over the next couple of weeks), we will have more information and details to share.


For more information, check Adam's post announcing the birth of Mirapi and this post about the death of Artemis and rise of Mirapi.