Enterprise Flex and Java RIA with Clear Toolkit Framework

Clear Toolkit Magazine

Subscribe to Clear Toolkit Magazine: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Clear Toolkit Magazine: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

Clear Toolkit Authors: Yakov Fain, Victor Rasputnis, Anatole Tartakovsky, Shashank Tiwari

Related Topics: Java Developer Magazine, Clear Toolkit Magazine

Java Developer : Article

Comparing the syntax of Java 5 and ActionScript 3

In some cases these languages are identical

From Farata Systems flexblog

Below is a short comparison table of major elements/concepts of these two languages for a quick reference.

You can read this table either left-to-right or right-to-left, depending on what’s your primary programming language is today.

This list is not complete, and your input is appreciated.

Concept/Language Construct

Java 5.0

ActionScript 3.0

Class library packaging




class Employee extends Person{…}

class Employee extends Person{…}


Variable declaration and initialization

String firstName=”John”;

Date shipDate=new Date();

int i;

int a, b=10;

double salary;

var firstName:String=”John”;

var shipDate:Date=new Date();

var i:int;

var a:int, b:int=10;

var salary:Number;

Undeclared variables


It’s an equivalent to the wild card type notation *. If you declare a variable but do not specify its type, the * type will apply.

A default value: undefined

var myVar:*;


Variable scopes

block: declared within curly braces,
local: declared within a method or a block


member: declared on the class level


no global variables

No block scope: the minimal scope is a function


local: declared within a function


member: declared on the class level


If a variable is declared outside of any function or class definition, it has global scope.


Immutable, store sequences of two-byte Unicode characters

Immutable, store sequences of two-byte Unicode characters

Terminating statements with semicolons

A must

If you write one statement per line you can omit it.

Strict equality operator



for strict non-equality use


Constant qualifier

The keyword final


final int STATE=”NY”;

The keyword const


const STATE:int =”NY”;

Type checking

Static (checked at compile time)

Dynamic (checked at run-time) and static (it’s so called ‘strict mode’, which is default in Flex Builder)

Type check operator


is – checks data type, i.e. if (myVar is String){…}


The is operator is a replacement of older instanceof

The as operator


Similar to is operator, but returns not Boolean, but the result of expression:


var orderId:String=”123”;

var orderIdN:Number=orderId as Number;

trace(orderIdN);//prints 123



byte, int, long, float, double,short, boolean, char

all primitives in ActionScript are objects.
Boolean, int, uint, Number, String


The following lines are equivalent;

var age:int = 25;

var age:int = new int(25);


Complex types


Array, Date, Error, Function, RegExp, XML, and XMLList

Array declaration and instantiation

int quarterResults[];

quarterResults =
new int[4];



int quarterResults[]={25,33,56,84};


var quarterResults:Array
=new Array();


var quarterResults:Array=[];


var quarterResults:Array=
[25, 33, 56, 84];

AS3 also has associative arrays that uses named elements instead of numeric indexes (similar to Hashtable).

The top class in the inheritance tree




Casting syntax: cast the class Object to Person:


Person p=(Person) myObject;


var p:Person= Person(myObject);


var p:Person= myObject as Person;


class Xyz extends Abc{}

Abc myObj = new Xyz();


class Xyz extends Abc{}

var myObj:Abc=new Xyz();

Un-typed variable


var myObject:*

var myObject:


package com.xyz;

class myClass {…}

package com.xyz{

class myClass{…}


ActionScript packages can include not only classes, but separate functions as well

Class access levels

public, private, protected

if none is specified, classes have package access level

public, private, protected

if none is specified, classes have internal access level (similar to package access level in Java)

Custom access levels: namespaces


Similar to XML namespaces.

namespace abc;

abc function myCalc(){}



 use namespace abc ;

nsole output


// in debug mode only



import com.abc.*;

import com.abc.MyClass;

import com.abc.*;

import com.abc.MyClass; 

packages must be imported even if the class names are fully qualified in the code.

Unordered key-value pairs

Hashtable, Map

Hashtable friends = new Hashtable();






String bestFriend= friends.get(“best”);

// bestFriend is Bill

Associative Arrays

Allows referencing its elements by names instead of indexes.

var friends:Array=new Array();




var bestFriend:String= friends[“best”]


Another syntax:

var car:Object = {make:"Toyota", model:"Camry"};

trace (car["make"], car.model);

// Output: Toyota Camry



Compiler moves all variable declaration to the top of the function, so you can use a variable name even before it’s been explicitly declared in the code.

Instantiation objects from classes

Customer cmr = new Customer();

Class cls = Class.forName(“Customer”);

Object myObj= cls.newInstance();

var cmr:Customer = new Customer();

var cls:Class = flash.util.getClassByName("Customer");
var myObj:Object = new cls();

Private classes

private class myClass{…}

There is no private classes in AS3.


Private constructors

Supported. Typical use: singleton classes.

Not available. Implementation of private constructors is postponed as they are not the part of the ECMAScript standard yet.

To create a Singleton, use public static getInstance(), which sets a private flag instanceExists after the first instantiation. Check this flag in the public constructor, and if instanceExists==true, throw an error.

Class and file names

A file can have multiple class declarations, but only one of them can be public, and the file must have the same name as this class.

A file can have multiple class declarations, but only one of them can be placed inside the package declaration, and the file must have the same name as this class.

What can be placed in a package

Classes and interfaces

Classes, interfaces, variables, functions, namespaces, and executable statements.

Dynamic classes (define an object that can be altered at runtime by adding or changing properties and methods).


dynamic class Person {

var name:String;


//Dynamically add a variable // and a function

Person p= new Person();



p.printMe = function () {

trace (p.name, p.age);


p.printMe(); // Joe 25

function closures

n/a. Closure is a proposed addition to Java 7.

myButton.addEventListener(“click”, myMethod);

A closure is an object that represents a snapshot of a function with its lexical context (variable’s values, objects in the scope). A function closure can be passed as an argument and executed without being a part of any object

Abstract classes



Function overriding


Supported. You must use the override qualifier

 Function overloading
 supported not supported


class A implements B{…}

interfaces can contain method declarations and final variables.

class A implements B{…}

interfaces can contain only function declarations.

Exception handling

Keywords: try, catch, throw, finally, throws


Uncaught exceptions are propagated to the calling method.

Keywords: try, catch, throw, finally


A method does not have to declare exceptions.

Can throw not only Error objects, but also numbers:


throw 25.3;


Flash Player terminates the script in case of uncaught exception.


Regular expressions



More Stories By Yakov Fain

Yakov Fain is a Java Champion and a co-founder of the IT consultancy Farata Systems and the product company SuranceBay. He wrote a thousand blogs (http://yakovfain.com) and several books about software development. Yakov authored and co-authored such books as "Angular 2 Development with TypeScript", "Java 24-Hour Trainer", and "Enterprise Web Development". His Twitter tag is @yfain

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.