With the Windows release of Moonshine IDE closing in and the next FlexJS version on its way, we started a dialog internally about what makes this project worth pursuing, what the future might hold for FlexJS as a platform, and how this could affect the direction existing Flex developers take to ensure a stable web presence in an age where the Flash Player is now a relic.
Flash Player security and performance.
Starting out as an AS3 developer who wrote applications targeting the Flash Player, I felt the pain firsthand of trying to deploy my applications on the web. It came to a point where in order to even run my applications without clicking through a security dialog I needed to add an exception for my web application to the browser security preferences. This is due to the insecure nature of the Flash Player. Browsers are forced to exclude Flash Player from being able to run automatically upon visiting a web page.
Among the security vulnerabilities of Flash were its performance pitfalls. During my early days with Flash, I wrote mostly graphical applications. Some of them were games, tech demos, or just 2D renderings, but I quickly became familiar with the performance ceiling. Through the help of a wonderful Flash and Flex development community, I was able to find ways to speed up my applications with tricks that were mostly only relevant to the Flash runtime.
Flash isn’t all bad…
Just as a language, AS3 stands well on its own two feet, as does Flex. Though the Flash Player has its issues with performance and security in the web browser I found AS3 to be a very easy language to pick up and start writing in with a reliable API that does just about everything you might need. Being a dialect of ECMAScript, AS3 it has some elements from Java and C, among being a strongly-typed object-oriented language. Why relearn another language and API if you truly don’t need to?
This is where FlexJS comes in!
The whole point of FlexJS is to provide a way for Flex developers to continue writing in Flex, where they can target mobile and desktop environments, and then also target the web browser (or another option is mobile through cordova), where you can run your Flex application in the browsers native languages: HTML, CSS, and JS. The obvious benefit here being you can take advantage of the multi-platforming capabilities of Flex while still maintaining a smooth experience for your web applications; the best part of it being that you don’t need to go off and learn a completely new development stack to do it.
We developed Moonshine with this very idea in mind, that Flex developers can still use the reliable multi-platforming desktop and mobile frameworks while also being able to compile their applications for the web browser natively. FlexJS being in its infancy, driven by volunteers, we decided to dive in head-first by providing an IDE for people to get started on using FlexJS in a simple way that doesn’t require a lot of configuration, clicking, or reading to get to the point of a runnable application (cough Eclipse). Not to mention, there are no other IDEs out there right now with built-in support for FlexJS.
Roadmap for Moonshine
Our hope now that we have released Moonshine on the Mac App store and Windows is that we can drive the FlexJS community forward through the usage of Moonshine as a FlexJS IDE. With the available project options currently being all platforms targetable by Flex (Desktop, Mobile and Web) with the additional option of a FlexJS web project. In addition to the existing project templates bundled with Moonshine we have included a way for users to import Balsamiq mockup files into a FlexJS project, and then compile it as FlexJS to a running application. This is another project we’re working on that involves the use of Moonshine, but I’ll save the show-and-tell of that for future blog posts.
For the Moonshine download and more information, you can visit moonshine-ide.com where you can find documentation and links to the MacOS and Windows builds.
For more information on FlexJS go here: https://cwiki.apache.org/confluence/display/FLEX/FlexJS+FAQ
Information on Balsamiq Mockups: https://balsamiq.com/products/mockups/