Skip to content

A sketch of Adobe Flex Architecture capabilities

I am evaluating Adobe Flex technology to do rich internet applications. Sometimes a picture is worth a thousand words: so in the following I sketched an overview of Flex programming capabilities.

Diagram focuses on how to create a Flash Application (compiling MXML and Actionscript files using the free Flex SDK) and on what kind of interactions a Flex-made application can perform with external systems.

Flash.png

Some starting (and incomplete) references:

  • Protocols
    • AMF (Action Message Format) used for serializing objects [link]
    • RTMP (Real Time Messaging protocol) used for messaging [link]
  • Project & Products
    • Adobe Flex Data Service (renamed in Adobe Lifecycle Services) [link]
    • Open AMF [link]
    • Red5 Flash Server [link]

Ubuntu Gutsy (7.1) on a Toshiba Satellite A100-022


As holiday geek-fun I installed Ubuntu 7.1 (aka Gutsy Gibbon) on my Toshiba Satellite Laptop A100-022 (a laptop which surprisingly is difficult to find information online). It was a great pleasure for me to note that Ubuntu is the first 100% (or 99%:) laptop friendly Linux distribution. Most of laptop functionalities worked out of the box and I had to do only minor tweaks for having a production-ready development system.

As someone wrote Ubuntu has mitigated most of linux geeky edges while polishing it for the desktop. I used Linux since 1995 (Slackware 1.0) and during the years I used several distributions on servers and on desktop machines. Every distribution I have used didn’t perform progresses that I got with Ubuntu 7.1. This is the first desktop-distro that has satisfied all requirements and desiderata of a laptop mobile user (mine at least …).

Following table show functionalities working at the moment and a brief description of tweaks that I needed to do:

Feature Status How
Video WORKING Out of the box
Audio WORKING Out of the box
CPU Frequency Scaling WORKING Out of the box
Hibernate WORKING Out of the box
Standby NOT WORKING Not yet tried to fix it
Networking (Ethernet and WiFi) WORKING Out of the box
Touchpad (with tap-scrolling features) WORKING Out of the box
LCD Brightness WORKING Some hack needed
Laptop buttons NOT WORKING Not yet tried to fix it
External Monitor NOT TESTED YET -
LID Management WORKING Out of the box
Bluetooth WORKING Some hack needed
Bluetooth PAN (for UMTS/HSDPA) WORKING Some hack needed
3D Graphic effects WORKING Out of the box
VMWare WORKING Some hack needed

Continue reading ›

5-minute guide to start developing with OSGi in Eclipse

In this tutorial I propose a quick step-by-step guide to start developing your OSGi bundles using Eclipse IDE and a standalone Equinox implementation.

  1. Download latest Equinox distribution and unpack it
  2. Configure Eclipse Target Platform
  3. Create an OSGi Project for your bundle
  4. Develop your bundle
  5. Run or Debug your bundle inside Eclipse
  6. Deploy your bundle

Step 1. Download latest Equinox distribution and unpack it

Download latest Equinox release from: http://download.eclipse.org/eclipse/equinox/

  • I suggest to unpack it into <your_root_dir> (default Equinox unpacked directory is called eclipse. I suggest to rename it in equinoxruntime).
  • In my case I have unpacked in /home/pc/Documents/MySrc/equinoxruntime
  • pc@ubuntulaptop:~/Documents/MySrc/equinoxruntime/$ ls -la
    total 44
    drwxrwxr-x 4 pc pc  4096 2007-12-31 00:54 .
    drwxrwxr-x 3 pc pc  4096 2007-12-30 22:42 ..
    -rw-rw-r-- 1 pc pc 16536 2007-10-24 02:14 epl-v10.html
    drwxrwxr-x 4 pc pc  4096 2007-12-30 22:38 features
    -rw-rw-r-- 1 pc pc  6506 2007-10-24 02:14 notice.html
    drwxrwxr-x 3 pc pc  4096 2007-12-30 22:38 plugins
    pc@ubuntulaptop:~/Documents/MySrc/equinoxruntime/$
    

Step 2. Configure Eclipse Target Platform

A target platform specifies the Equinox version that should be used to compile and run your OSGi bundles. We want to develop components for the previously unpacked Equinox distribution (which at the moment is 3.1.1).

Under Window -> Preferences -> Plugin-Development -> Target Platform we point the location of Equinox binaries (in mycase are: /home/pc/Documents/MySrc/equinoxruntime)

1sc.png

Step 3. Create an OSGi Project for your bundle

In Eclipse create a new Plug-in Project (Plug-In Development->Plug-In Project) and assign it a name.

  • I suggest using the same Eclipse convention of using package name as your bundle name (For example org.eclipse.runtime.core or org.eclipse.equinox.http). Change the target environment to Equinox.
  • Generally Eclipse offers a set of template for assisting in Bundle creation. For the moment you can ignore them.
  • In my case I have created a bundle called info.pierocampanelli.hello

1sc.png

Step 4. Develop your bundle

At this point you can code your bundle inserting your logic and your desired functionalities. OSGi API is not the focus of this tutorial. So for simplifying the process I created a trivial bundle that will print a message when it is started or stopped:

package info.pierocampanelli.hello;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {
  public void start(BundleContext context) throws Exception {
    System.out.println("Hello STARTED");
  }  

  public void stop(BundleContext context) throws Exception {
    System.out.println("Hello STOPPED");
  }
}

Crucial point is that you can exploit Eclipse facilities and tools to simplify development. In particular you can use:

  • Editing support of the Manifest.FM file. You have not to write manually the Bundle specification file. Eclipse provides a set of textfields, comboboxes and listfields that help in editing Manifest.
  • 1sc.png

  • Dependency Tracking. Right clicking on a Bundle will automatically show all dependencies of that bundle. In the following screenshot for example Eclipse tells me about dependencies of the Jetty HTTP bundle (org.eclipse.equinox.http.jetty). Imagine for a moment what kind of benefits you can have with a large project of more than 50/100 bundles and an automatic dependency tracker that assists you…
  • 1sc.png

Step 5. Run or Debug your bundle inside Eclipse

Now it's time to run the bundle.

  • Choose “Run …” entry from Run menubar
  • Create a new runtime configuration right clicking on Equinox OSGi Framework
  • Select your bundle that you want to run
  • Remember to click Add Required Plug-ins to automatically insert dependent bundles
  • Run it !

Eclipse creates a new JVM process running an instance of Equinox running selected bundles. The same steps can be followd for debugging.

1sc.png

Step 6. Deploy your bundle

At end is the deployment step. Again eclipse offers you a wizard that assist in the creation and expor of coded bundle to a target directory.

  • Right click on your bundle and select Export. Choose “Plug-in Development->Deployable Plugins and Fragments”.
  • Select destination folder (for example /home/pc/Desktop)
  • Click “Finish”

At end of the process you’ll find your bundle in /home/pc/Desktop/plugin. You can now copy your bundle in an OSGi compliant engine.

1sc.png

Worth Printing #1: REST introduction

Worth Printing is a new series of posts dedicated to technical articles and blog stories which are worth of printing for easy reading and relaxed brainstorming. My goal is to propose some pills of good information from the whole mess of the Web.

In this first post I suggest an interesting introduction of REST made by Stefan Tilkov.

Link: http://www.infoq.com/articles/rest-introduction

Technology Mindmap 2007

I like to maintain mindmaps about large fields of knowledge. It helps me to keep context and to stay focused on whatever I do or I like to do.

I made a Technology Mindmap which contains - according my opinion - most used technologies / projects used in IT field in these months.

Maybe I am missing some piece or I made some mistake in categorizing stuffs. I am sorry. Hope to see some suggestions on how to extend or to correct this map.

Click image for more . . .

summatechnologies.png

Lotus Symphony based on Eclipse RCP

I installed the latest Office Productivity Pack announced by IBM and called Lotus Symphony. It contains a word processor, a spreadsheet and a presentation program.

I was very impressed by the fact that it has been implemented on Eclipse RCP. In other words its architecture is based on OSGi and Java. Probably it is not 100% Java because a few OSGi bundles reference native dll libraries (IBM proprietary and/or Openoffice components).

It is an interesting proof of the sounding architecture of OSGi and Eclipse RCP for large and complex desktop applications.

Ubiquitous Programs and Data on an USB key

My programs and my data (work and personal) are stored on an USB key which I plug indifferently where I need: home, work and mobile. It is gratifyng to have my working environment in whatever site I am and with whatever Windows hardware I am approaching my work.

Several yeas ago I advocated the use of ubiquitous data across different operating systems. After years of experiments I finally think you are more productive if you are able to roam your applications and your application settings too. Roaming applications clearly work in a single operating system: so I choosed Windows flavors as my default working environment. (as it is in 100% of the cases the working environment of my company’s customers).

There are two important requirements that I have accomplished: data’s privacy (usb volume is transparently crypted) and data’s safety (usb volume is automatically backuped on my home server).

My geek’s hearth pulse to show how I have technically organized my environment:

Continue reading ›

Blog Migration

I am migrating my blog to a new publishing platform (cfr. Wordpress).

I am sorry if you can’t access my previous posts about OSGi technology. Hope to publish them soon.

Piero

Status of Opensource OSGi containers

I wrote some tables summarizing status of OSGi opensource containers and their adherence to OSGi standard. In the first table I have compared adherence to the core standard while on the second I have compared adherence to optional services.

For the comparison i considered following opensource implementations: Eclipse Equinox, Apache Felix, Knopflerfish OSGi and Osxa framework.

Update

  • 01-23-06: fixed a mistake with felix and startlevel service; fixed latest developments on Equinox
  • 01-25-06: updated ‘declarative services’ status with Equinox and Felix

Core Standard Status

Continue reading ›

Informal comparison of Java Component Models (Javabeans, EJB 2.x, OSGi)

I made an informal comparison table of three Java component models: JavaBeans, EJB 2.x and OSGi. I considered several point of views without being rigorous on terminology. My goal was to show fundamental features of these component models.

Personally I think that previously used component models (in particular EJB) lack many fundamental features that can help developers keeping their applications mainteneable and easy to develop.

An interesting technology that contains these important characteristics is OSGi which is an interesting enabling technology for designing new systems and applications.

Continue reading ›