While tidying up my library in the past days I've found some very old books I've used to study my first topics in the multimedia/web development filed.
I've discovered a book on Director 5, Perl, HTML 3 and the follwoing Macromedia Flash books: Flash 3 Web Animation (by Coriolis Press), Flash Web Design by Hillman Curtis, Flash 4 Magic (by New Riders), and Complete Flash Remoting (by Wiley).
Only today I've discovered that Goolge added support to Java for its App Engine. This is a great news for the Java community. From the Google announcement:
This release includes an early look at our Java runtime, integration with Google Web Toolkit, and a Google Plugin for Eclipse, giving you an end-to-end Java solution for AJAX web applications. Our support for the Java language is still under development and we're eager to get your help and input.
Unfortunately at this stage there are several things you can't do using APP engine with Java. I found this interesting list on byteonic's blog:
1. Cannot write to the filesystem. Must use Data Store for persistence.
2. Cannot open a socket or access another host directly.
3. Cannot spawn a sub-process or thread.
4. Cannot make other kinds of system calls.
5. Cannot create a new java.lang.ThreadGroup nor a new java.lang.Thread. However, operations against the current thread, such as Thread.currentThread().dumpStack() is allowed.
6. The features of the java.lang.System class that do not apply to App Engine are disabled.
7. The System methods such as: exit(), gc(), runFinalization() and runFinalizersOnExit() do nothing.
8. Cannot directly invoke JNI code
9. Application is allowed full, unrestricted, reflective access to its own and JRE classes. However, An application cannot reflect against any other classes not belonging to itself, and it can not use the setAccessible() method to circumvent these restrictions
Context menus that are activated on objects on the stage
Context menus associated with icons in the system tray or dock bar
Menus associated with windows and menus of the application itself
AIR applications also allow you to create pop- up menus . These are native menus like all the other ones you’ve seen so far—the only difference is that pop- up menus aren’t natively associated with any element on the interface of the application. It’s up to the developer to define and implement the logic and the way in which a pop- up menu can be activated. An AIR application can have any number of pop- up menus. You can show a pop- up menu anywhere on the stage. It can be activated in the following ways: if the user clicks a button, if the mouse rolls over any object, if the user presses a combination of keys, and on any other condition you want for your application.
Activating pop- up menus
The NativeMenu class has the display() method to activate a pop- up menu. Every time this method is called, the pop- up menu appears at the specified coordinates. The display() method requires the three following arguments: Destination stage : Specifies which stage has to display the pop- up menu. If the AIR application is on only one NativeWindow- type window, the destination stage is automatically the window that displays the application. If you’re making a multiwindow application, you will have to specify the stage of the window you want to display the pop- up menu on. Coordinate (X axis) : Specifies the position on the X axis of the pop- up menu. This coordinate specifies the position from the top left corner of the menu. The coordinate will apply to the stage you’ve specified as a first argument of the function. Coordinate (Y axis) : Specifies the position on the Y axis where you want to display the pop- up menu. This coordinate specifies the position from the top left corner of the menu. The coordinate will apply to the stage you’ve specified as a first argument of the function.
Spring is one of my favourite frameworks. It's an open source framework that helps the developers'
life. Thanks to the Inversion of Control (IoC) pattern that Spring uses, it will save a lot of time in developing. In fact there are some factors you have to consider when you
develop a Java application.Using the standard JEE approach
you'll tend to write a lot of unuseful and repeatedly code or
implementing J2EE design patterns that are workarounds for technology
limitations rather than real solutions to a problem. The Inversion of control - also known as IoC - is a
concept, and an associated set of programming techniques, in which the
control flow is inverted compared to the traditional interaction model
expressed in imperative style by a series of procedure calls. Thus,
instead of the programmer specifying, by the means of function calls, a
series of events to happen during the lifetime of a programme, they
would rather register desired responses to particular happenings, and
then let some external entities take over the control over the precise
order and set of events to happen (from Wikipedia).
That's why is important to have the possibility to easily integrate Spring to Flex applications.
Luckily SpringSource and Adobe started a partnership with the goal of making easy the integration between Spring and BlazeDS. Child of this partnership is the Spring BlazeDS Integration project,
which allows you to integrate BlazeDS with
robust server-side Spring services.
I've just found this interesting review by James Ford from the FlashMidlands event. The Flash Catalyst and Flex 4 presentation was given by Adnrew Shorten and he showed some of the Flex 4 new features:
As a Flex developer, you'll no doubt come across repetitive problems
every day in your work—wouldn't it be nice to have a library of
solutions to turn to, to solve these problems quickly and easily? Well,
this book provides just that, with over 100 solutions to common
problems in one easy volume, all fully updated and revised for Flex 4.
I'm deciding these days the revisited table of contents for the Flex 4 Solutions book thinking whether add any chapter on Flash Catalyst and architectures (Cairngorm, PureMVC, Mate ...).