DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
  1. DZone
  2. Coding
  3. Frameworks
  4. An Introduction to Spring ActionScript

An Introduction to Spring ActionScript

Mitch Pronschinske user avatar by
Mitch Pronschinske
·
Dec. 15, 09 · Interview
Like (0)
Save
Tweet
Share
11.75K Views

Join the DZone community and get the full member experience.

Join For Free

Finding an Inversion of Control (IoC) container for Adobe Flex and Flash projects that fits all of your needs can be difficult.  Cairngorm and PureMVC both impose a certain structure to your Flex applications, and these structures can negate some powerful features in Flex.   Spring ActionScript is a new IoC container that is supported by SpringSource as a Spring Extensions project.  It's more like a toolbox than an actual framework.  Unlike the previously mentioned IoC's, Spring ActionScript doesn't impose structures.  DZone conducted an exclusive interview with Christophe Herreman, the lead developer of Spring ActionScript, to learn more about this emerging framework.  Herreman works on high-end Flex and AIR solutions

DZone: What is Spring ActionScript?  How does it fit into the ecosystem of related technologies?  What motivated the creation of Spring ActionScript and what other technologies influenced it?


Christophe Herreman:
Spring ActionScript is an open source application framework written in ActionScript 3.0. At its core, it is an Inversion of Control (IoC) container. It can be used for Flex, AIR, Flash or pure ActionScript development.

The IoC container is basically an object/dependency factory that provides a centralized and controlled system for creating objects used in an application. Instead of instantiating objects directly with the "new" operator, the developer can ask the container for an object by its name or its type and provide it to the application. This "Dependency Injection" (DI) can be done by providing the dependencies via the constructor of an object (this process is known as Constructor Injection) or via its accessors/setters (known as Setter Injection).

When coding dependencies behind an interface, the application does not need to know beforehand what concrete types it will use. This has the benefit that the developer can replace the objects with any implementation of the interface at any time. Consider an object that is responsible for loading a collection of users. Whether this is done via a Remote Object, a Webservice, a local Sqlite database or any other mechanism should not be known by the application. All the application should know is that it uses a certain "contract", technically in the form of an interface, to load the users. Using this approach, applications are easier to maintain, extend with new functionality and test because all dependencies are kept and controlled in a central location and easily replaceable.

Spring ActionScript can be used with any other framework. It does not impose a strict architecture but provides the developer with building blocks that can be combined to solve problems specific to the application.

The framework was previously known as the Prana framework and is now incubated as a Spring Extension project by SpringSource, the company behind the original Java Spring framework. It is certainly inspired by Java Spring and borrows a lot of the concepts. This makes it easier for Java developers starting with Flex development because the usage of both containers is almost the same.

DZone: Walk me through how someone would use Spring ActionScript.  What things can they use it for?


Christophe: To start, you would need the compiled library which can be downloaded from www.springactionscript.org. Once that is placed in your build path, you can create an "application context" via one of the IApplicationContext implementations (XMLApplicationContext, FlexXMLApplicationContext, MXMLApplicationContext, ...). Such an application context is an instance of the IoC container running in the application.

The application context then needs to be configured with object definitions. These are blueprints for the objects that the container should create and manage. This configuration can be done either via XML or, if you are using Flex, via MXML. The content of the configuration is then parsed to objects that live in the container. Spring ActionScript will then automatically inject objects into view components or other objects if these are annotated with [Autowired] metadata. It is also possible to do the injection yourself and ask the container for the objects it contains.

An application could then be built and configured to run in different contexts. It could for instance be configured to talk to a server backend using remoting or webservices, or it could be configured to use an offline database. Or, during development, stub or fake implementations could be created so no running server is required. This can be very convenient in large projects where separate teams are working on the server and the client parts.

DZone: What is the current state of the project?

Christophe: The currently released version is 0.8.1 and we are finalizing 0.9 at this moment. We are about feature complete and will improve documentation and samples for the 1.0 release.

DZone: How does Spring ActionScript compare to IoCs?  What makes Spring ActionScript unique?

Christophe: Although there are other IoC containers in the Flash and Flex community, Spring ActionScript's mission statement and vision are quite unique. While most other frameworks focus on Flex development, Spring AS can also be used without the Flex framework. It supports both XML and MXML configuration. It does not impose a strict architecture, but contains all the building blocks needed to create flexible MVC-ish solutions which can be tailored to the problem at hand. Some of these building blocks are the Event Bus, the Operation API, autowiring support, etc.

On top of that, it is perfectly possible to use Spring ActionScript in combination with other frameworks like Cairngorm or PureMVC for instance. In fact, we even have extensions for both Cairngorm and PureMVC that allow configuration of applications built with these frameworks.

In conclusion, we provide developers with a lot of choice without forcing a strict coding style or architecture upon them since we believe and know from our experience that no solution fits all problems. We are open to other frameworks and libraries and want to give the developer options to integrate these into our framework and there applications.

DZone: Tell me about the new features coming in the 0.9 release.  When is the 0.9 release?  What are the future goals of Spring ActionScript?

Christophe: The 0.9 release is scheduled for next week. It's often hard to set strict times since all of the development happens after work hours and in our free time. The release focusses on MXML configuration, improved autowiring and module support. We also have a new sample application that will be distributed with the next release.

We don't have a real roadmap past 1.0. I guess it will all depend on what other frameworks and libraries emerge and if we see opportunities to integrate them with Spring ActionScript. We will certainly improve the framework in any way possible.

DZone: Is there anything you'd like to add?

Christophe: Most of the announcements are published at my blog. We have also started another project (with parts of the codebase of the original Prana framework) called AS3Commons. The project aims to provide highly reusable ActionScript 3.0 libraries like reflection utilities, language utilites, a generic XML parser, a logging framework and many more. Spring ActionScript actually uses some of these libraries under the hood. Even if you are not looking for a framework like Spring ActionScript, I think AS3Commons certainly has something to offer to most ActionScript developers.
_____

To download Spring ActionScript, you can visit the project's website.

Spring Framework ActionScript Application framework

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • DevOps for Developers — Introduction and Version Control
  • A Deep Dive Into AIOps and MLOps
  • Test Design Guidelines for Your CI/CD Pipeline
  • Multi-Tenant Architecture for a SaaS Application on AWS

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: