Archive for the ‘JAVA’ Category
Bubblemark has added a JavaFX version of his bubble animation test that spans now all of the RIA technologies out there. Bubblemark is a great site and has been a great site for comparing animation in the browser. Alexey Gavrilov has kept the site up to date on all versions of Silverlight since when it was WPF/E and it is a nice quick baseline test to check FPS performance across these new vector toolkits and scripting.
My results are very similar to Bubblemarks tests:
JavaFX — 14 fps
Firefox + Flex — 62 fps
Adobe AIR — 62 fps
Firefox + Silverlight (CLR) — 99 fps
Silverlight is not final and is quite light compared to Flex (I wonder if a vanilla Flash9/AS3 export has been done or if it would perform any different), but if Silverlight has a lead on FPS, where FPS is really success of any kit in RIA or vector, then it could be a rough battle. Flash/Flex is really far far ahead due to the browser penetration and the development community but the better performance is always a good indicator of possible success. Plus, Microsoft controls the desktop market and any “benefits” it might give their own kit which includes distribution and performance in preloading or caching.
Sun has launched JavaFX using JavaFX Script which is a RIA kit for Java. I will have to look further into this for a few specifics like 3d support but there is another great Java library for effects called processing. But an RIA tool using Java applets may seem mid-ninties-ish but Java applets have been having some success online including many 3d viewers, games like runescape, mini apps, financial tools and ftp toolkits on their limited desktop and web usage.
This seems to confirm that the market is currently headed towards RIA applications with the three big development companies introducing new toolkits for RIA and interactive web apps (Microsoft Silverlight, Flash9/AS3, now Sun JavaFX).
This RIA kit is Open (Source) for Business
Additional Competition Possibly
I like this because its open source and because it will put pressure on the competition of Adobe vs. Microsoft possibly. Adobe will be launching Flashlite 3 soon with FLV video support which is quite a race on the mobile side. Most importantly, Java has a full consistent package now which may help its adoption since it spans mobile, tv, web, desktop. Historically Java kits have been all over the place. Adobe may eventually be pressured into opening up Flash at some point if this gains traction and advances quickly. Or this could be a dying flare thrown up in Java’s demise. Personally now that it is open, I think that Java has only just started and gaining a second wind.
If you are not familiar with the Gang of Four (GoF) patterns, there are many books and sites on the subject. These patterns are a set of logical designs that have been successful and provide a bit of arichtectural building blocks when considering the design of a framework or class library in .NET, Java, etc. They are largely influenced by OO and Java especially. Although these patterns you can see in many frameworks of today. These allow a communication of design so that understanding can be embedded into certain modules of a system.
Here is the list of dofactory.com (GoF site):
|Abstract Factory||Creates an instance of several families of classes|
|Builder||Separates object construction from its representation|
|Factory Method||Creates an instance of several derived classes|
|Prototype||A fully initialized instance to be copied or cloned|
|Singleton||A class of which only a single instance can exist|
|Adapter||Match interfaces of different classes|
|Bridge||Separates an object’s interface from its implementation|
|Composite||A tree structure of simple and composite objects|
|Decorator||Add responsibilities to objects dynamically|
|Facade||A single class that represents an entire subsystem|
|Flyweight||A fine-grained instance used for efficient sharing|
|Proxy||An object representing another object|
|Chain of Resp.||A way of passing a request between a chain of objects|
|Command||Encapsulate a command request as an object|
|Interpreter||A way to include language elements in a program|
|Iterator||Sequentially access the elements of a collection|
|Mediator||Defines simplified communication between classes|
|Memento||Capture and restore an object’s internal state|
|Observer||A way of notifying change to a number of classes|
|State||Alter an object’s behavior when its state changes|
|Strategy||Encapsulates an algorithm inside a class|
|Template Method||Defer the exact steps of an algorithm to a subclass|
|Visitor||Defines a new operation to a class without change|
We will be writing samples of each pattern and real world usage. In actuality patterns are great and will make you understand programming architecture. However patters at times can be overkill and more deep than necessary and possibly cutting off junior level understanding. The dofactory rates patterns and their frequency of usage or usability. I think that patterns are very important but also a low entry point into code libraries is very important. Simple interfaces to the logical blocks like patterns is common in frameworks like the .NET framework or Java runtime.