Main Content RSS FeedRecent Articles

Java: Open Source Inversion of Control Framework »

PicoContainer is a highly embeddable, full-service, Inversion of Control (IoC) container for components honor the Dependency Injection pattern. The project started in 2003 and pioneered Constructor Injection auto-wiring. It is also Open Source and free to use. The license is BSD and thus you can safely use this with commercial or other open source software.

You could use it as a lightweight alternative to Sun’s J2EE patterns for web applications or general solutions.

What is Dependency Injection? Martin Fowler has a good article from 2003, but here is another view: It is a good design pattern that, for large enterprise applications, facilitates:

  • easy best practice unit testing vs little and difficult unit testing.
  • component reuse vs rewriting through ignorance or perceived needs
  • centralized configuration vs components reading their own config (scattered)
  • clean & declarative architecture vs a nest of singletons that nobody can make sense of
  • maintainability vs developers having difficulties fixing bugs
  • adaptability vs developers not knowing where to start to add features
  • transparency vs lots of framework code, with consequential lock in

Dependency Injection is quite often, but not exclusively, used by Agile practitioners. It counters situations where enterprise applications:

  • have grown to be thousands of classes, with dozens if not hundreds of Singletons
  • draw similarities to Spaghetti, Hairballs or Balls of Mud
  • has made development staff looking after it miserable, and wanting to quit
  • suffers repeated allegations of “it cannot be further developed without complete rewrite”

Despite it being very compact in size (the core is ~260K and it has no mandatory dependencies outside the JDK), PicoContainer supports different dependency injection types (Constructor, Setter, Annotated Field / Method) and offers multiple lifecycle and monitoring strategies.

If you’re trying to understand the difference between PicoContainer and similar libraries, then its best to think of PicoContainer as a map that where add() is for types and implementations, and get() is for instances.

PicoContainer has originally been implemented in Java but is also available for other platforms and languages. These are detailed here.

Java: Open Source Quality Management »

SONAR is an open source quality management platform, dedicated to continuously analyze and measure technical quality, from the project portfolio to the class method.

It is a web application and a maven plugin, meaning most users interact with it through web browsers from any computer.

Using Sonar throughout the whole development project life cycle drastically improves visibility for every stakeholder. This gained visibility allows to manage risks, reduce maintenance costs and improve agility by implementing a real quality first approach.

Sonar enables navigation through the latest measures to enable thorough analysis, to increase quality. But not only that, Sonar keeps historical data in order to see the evolution of measures throughout time.

SONAR leverages the existing ecosystem of quality open source tools (ex. Checkstyle, PMD, Maven, Cobertura …), to offer a fully integrated solution to development environments and continuous integration tools.

It also has a Hudson plugin available.

Open Source Clone System »

Diskless Remote Boot in Linux (DRBL) provides a diskless or systemless environment for client machines. It works on Debian, Ubuntu, Mandriva, Red Hat, Fedora, CentOS and SuSE. DRBL uses distributed hardware resources and makes it possible for clients to fully access local hardware. It also includes Clonezilla, a partitioning and disk cloning utility similar to Symantec Ghost®.

Clonezilla, based on DRBL, Partition Image, ntfsclone, partclone, and udpcast, allows you to do bare metal backup and recovery. Two types of Clonezilla are available, Clonezilla live and Clonezilla SE (server edition). Clonezilla live is suitable for single machine backup and restore. While Clonezilla SE is for massive deployment, it can clone many (40 plus!) computers simultaneously. Clonezilla saves and restores only used blocks in the harddisk. This increases the clone efficiency. At the NCHC’s Classroom C, Clonezilla SE was used to clone 41 computers simultaneously. It took only about 10 minutes to clone a 5.6 GBytes system image to all 41 computers via multicasting!


  • Free (GPL) Software.
  • Filesystem supported: ext2, ext3, reiserfs, xfs, jfs of GNU/Linux, FAT, NTFS of MS Windows, and HFS+ of Mac OS (testing feature provided by partclone). Therefore you can clone GNU/Linux, MS windows and Intel-based Mac OS. For these file systems, only used blocks in partition are saved and restored. For unsupported file system, sector-to-sector copy is done by dd in Clonezilla.
  • LVM2 (LVM version 1 is not) under GNU/Linux is supported.
  • Multicast is supported in Clonezilla SE, which is suitable for massively clone. You can also remotely use it to save or restore a bunch of computers if PXE and Wake-on-LAN are supported in your clients.
  • Based on Partimage, ntfsclone, partclone, and dd to clone partition. However, clonezilla, containing some other programs, can save and restore not only partitions, but also a whole disk.
  • By using another free software drbl-winroll, which is also developed by us, the hostname, group, and SID of cloned MS windows machine can be automatically changed.

If you haved already be familiar with Clonezilla or DRBL, you might be interested in Live USB Helper. It can help you deploy the clonezilla’s image file to the flash drive. Furthermore, it can make the flash drive bootable and it’s multilanguage support.

HP USB Format Tool »

HP  USB Format Tool help formatting any USB flash drive, with your choice of FAT, FAT32, or NTFS partition types.

Optionally you can also make the disk BOOTABLE by specifying a file location. Use the Windows 98 system files available here.

Open Source Partition Manager »

GParted is the Gnome Partition Editor application.

A hard disk is usually subdivided into one or more partitions. These partitions are normally not re-sizable (making one smaller and the adjacent one larger). The purpose of GParted is to allow the individual to take a hard disk and change the partition organization therein, while preserving the partition contents.

GParted is an industrial-strength package for creating, destroying, resizing, moving, checking and copying partitions, and the file systems on them. This is useful for creating space for new operating systems, reorganizing disk usage, copying data residing on hard disks and mirroring one partition with another (disk imaging).

Among all, it supports FAT32, NTFS and Linux ext2 and ext3 file systems.


GParted Live is a small bootable GNU/Linux distribution for x86 machine.

It enables you to use all the features of the latest versions of GParted.

GParted Live can be installed on CD, USB, PXE server, and Hard Disk then run on an x86 machine.

Subversion on HP-UX »

Subversion depots can be downloaded from

Network Performance Benchmark »

Netperf is a benchmark that can be used to measure the performance of many different types of networking. It provides tests for both unidirecitonal throughput, and end-to-end latency. The environments currently measureable by netperf include:

  • TCP and UDP via BSD Sockets for both IPv4 and IPv6
  • DLPI
  • Unix Domain Sockets
  • SCTP for both IPv4 and IPv6

Useful Addon for Internet Explorer »

IE7Pro is an add-on for Internet Explorer which adds a lot of features and extras which make your Browsing faster,More Responsive and Sleek.

IE7Pro includes Tabbed Browsing Management, Spell Check, Inline Search, Super Drag Drop, Crash Recovery, Proxy Switcher, Mouse Gesture, Tab History Browser, Web Accelerator, User Agent Switcher, Webpage Capturer, AD Blocker, Flash Block, Greasemonkey like User Scripts platform, User Plug-ins, MiniDM, Google sponsored search,IE Faster and many more power packed features. You can customize not just Internet Explorer, but even your favorite website according to your need and taste using IE7Pro.

iMacros is an extension for the Mozilla Firefox web browsers and Internet Explorer which adds record and replay functionality similar to that found in web testing and form filler software. The macros can be combined and controlled via Javascript. Demo macros and Javascript code examples are included with the software.

Open Source Utility to Monitor TCP Traffic »

Here are some utilities to monitor TCP traffic


tcpmon is an open-source utility for monitoring the data flowing on a TCP connection. tcpmon is used by placing it in-between a client and a server. The client is made to connect to tcpmon, and tcpmon forwards the data to server along-with displaying it in its GUI.


wsmonitor (Web Services Monitor) is a light-weight SOAP and HTTP traffic monitor. This tool intercepts and logs the SOAP messages and HTTP headers between a sender and a receiver and displays them nicely formatted in a graphical user interface.

There are other utlities like Fiddler, Live HTTP Header to monitor HTTP traffic

Java Serial Communication Library »

If you want to access the serial (RS232) or parallel port with JAVA, you need to install a platform/operating system dependent library. Install either javax.comm from SUN (no windows version as of javax.comm version 3.0) or better install the rxtxSerial and/or rxtxParallel library from (Windows, Linux, Mac OS X).

Java Communications

The Java Communications 3.0 API is a Java extension that facilitates developing platform-independent communications applications for technologies such as Smart Cards, embedded systems, and point-of-sale devices, financial services devices, fax, modems, display terminals, and robotic equipment.

The Java Communications API (also known as javax.comm) provides applications access to RS-232 hardware (serial ports) and limited access to IEEE-1284 (parallel ports), SPP mode.

Implementations of the API are currently available for Solaris SPARC, Solaris x86, and Linux x86.

API serial features:

  • Enumeration of ports (administrator and user configurable port mapping)
  • Port configuration (baud rate, speed, stop bits, parity)
  • Access to EIA232 standard DTR, CD, CTS, RTS and DSR signals
  • Transfer of data over RS-232 ports
  • Hardware and software flow-control options
  • Receive-buffer threshold control
  • Asynchronous event option for notification of:
    • Data available on an RS-232 port
    • Port hardware line level changes
    • Port ownership changes within a single JVM


RXTX is a Java library, using a native implementation (via JNI), providing serial and parallel communication for the Java Development Toolkit (JDK). All deliverables are under the GNU LGPL license. It is based on the specification for Sun’s Java Communications API, though while many of the class descriptions are the same the package used it not, since is used instead. A certain amount of compatibility is intended with API, though this project should be considered as a fork and therefore compatible in spirit, but not in implementation.

Open Source Java SMS Library »

SMSLib is a Java library for sending and receiving SMS messages via a GSM modem or mobile phone. It also supports some bulk SMS operators, by implementing their HTTP interfaces.

SMSLib is licensed under the terms of the Apache v2 License.


  • Supports GSM phones and GSM modems connected via serial port interfaces or IP interfaces.
  • Works with PDU/TEXT protocols.
  • Supports Inbound & Outbound simple text messages.
  • Works with 7bit, 8bit and UCS2 (Unicode) message encodings.
  • Supports Inbound & Outbound big (multipart) messages.
  • Flash messaging.
  • Outbound messages with port information / addressing (16bit addressing only).
  • Outbound WAP PUSH SI messages.
  • Status (Delivery) Report messages.
  • Basic GSM information available: Modem, Manufacturer, S/W revision, Signal level, etc.

Running Java on .NET Platform »

Here are some software which enable you to run Java on .NET platform


IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. It includes the following components:

  • A Java Virtual Machine implemented in .NET
  • A .NET implementation of the Java class libraries
  • Tools that enable Java and .NET interoperability


Ja.NET is an open source project focused on enabling Java-based software on .NET

Java for Mono »

IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. It includes the following components:

  • A Java Virtual Machine implemented in .NET
  • A .NET implementation of the Java class libraries
  • Tools that enable Java and .NET interoperability

IKVM.NET consists of several parts:

  • IKVM.Runtime.dll: The VM runtime and all supporting code. It contains (among other things):
    • Byte Code JIT compiler/verifier: Just-in-time compiles Java Byte Code to CIL.
    • Object model remapping infrastructure: Makes System.Object, System.String and System.Exception appear to Java code as java.lang.Object, java.lang.String and java.lang.Throwable.
    • Managed .NET re-implementations of the native methods in Classpath.
  • IKVM.OpenJDK.ClassLibrary.dll: compiled version of the Java class libraries derived from the OpenJDK class library with some parts filled in with code from GNU Classpath and IcedTea, plus some additional IKVM.NET specific code.
  • ikvm-native.dll: Unmanaged C library that implements a small part of the JNI interface and some platform specific code on non Windows platforms. On Windows this is an optional part, only required when an application uses its own native libraries. This is not needed for pure Java applications. On non-Windows platforms it is required, but it is included with the Mono distribution so it usually doesn’t need to be installed seperately.
  • ikvm.exe: Starter executable, comparable to java.exe (”dynamic mode”).
  • ikvmc.exe: Static compiler. Used to compile Java classes and jars into a .NET assembly (”static mode”) .
  • ikvmstub.exe: A tool that generates stub class files from a .NET assembly, so that Java code can be compiled against .NET code. IKVM.NET understands the stubs and replaces the references to the stubs by references to the actual .NET types.
  • IKVM.AWT.WinForms.dll: Very limited and broken implementation of a few AWT peers. This is a low priority issue for me.

Open Source Microblogging Tool »

Laconica is a open source microblogging tool.

Open Source Computer Vision Library »

OpenCV (Open Source Computer Vision) is a library of programming functions mainly aimed at real time computer vision.

Example applications of the OpenCV library are Human-Computer Interaction (HCI); Object Identification, Segmentation and Recognition; Face Recognition; Gesture Recognition; Motion Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM); Stereo and Multi-Camera Calibration and Depth Computation; Mobile Robotics.

Some useful links taken from the website

  1. Using Visual C++ and OpenCV

  2. Using Eclipse IDE and OpenCV

  3. Using C++ Builder IDE and OpenCV

  4. Using DevCpp IDE and OpenCV

  5. C/C++ interpreter Ch and OpenCV.

  6. How do I compile OpenCV and OpenCV programs in Linux 

  7. Using OpenCV with Visual C++ and Microsoft’s DirectShow

NASA World Wind »

World Wind lets you zoom from satellite altitude into any place on Earth. Leveraging Landsat satellite imagery and Shuttle Radar Topography Mission data, World Wind lets you experience Earth terrain in visually rich 3D, just as if you were really there.

Virtually visit any place in the world. Look across the Andes, into the Grand Canyon, over the Alps, or along the African Sahara.


Particular focus was put into the ease of usability so people of all ages can enjoy World Wind. All one needs to control World Wind is a two button mouse. Additional guides and features can be accessed though a simplified menu. Navigation is automated with single clicks of a mouse as well as the ability to type in any location and automatically zoom into it.

World Wind was designed to run on recent PC hardware with 3D acceleration.

OpenDNS »

OpenDNS is a free, closed-source, DNS resolution service.

OpenDNS provides the following recursive nameserver addresses for public use, mapped to the nearest operational server location by anycast routing:

  • (
  • (

OpenDNS offers DNS resolution for consumers and businesses as an alternative to using their Internet service provider’s DNS servers. By placing company servers in strategic locations and employing a large cache of the domain names, OpenDNS usually processes queries much more quickly, thereby increasing page retrieval speed. DNS query results are sometimes cached by the local operating system and/or applications, so this speed increase may not be noticeable with every request, but only with requests that are not stored in a local cache.

Other features include a phishing filter, domain blocking and typo correction (for example, typing wikipedia.og instead of By collecting a list of malicious sites, OpenDNS blocks access to these sites when a user tries to access them through their service. OpenDNS recently launched Phishtank, where users around the world can submit and review suspected phishing sites.

Open Source Web Services Framework »

XINS is an open-source Web Services framework supporting HTTP protocols such as REST, SOAP, XML-RPC, JSON, JSON-RPC and more.

From the specifications written in simple XML, XINS generates the Client API (.jar), the Java server code template (.war), the WSDL and the documentation of the specification in HTML (with the test forms) or in OpenDocument format.


Java x86 PC Emulator »

JPC is a pure Java emulation of an x86 PC with fully virtual peripherals. It runs anywhere you have a JVM, whether x86, RISC, mobile phone, set-top box, possibly even your refrigerator! All this, with the bulletproof security and stability of Java technology.

JPC creates a virtual computer upon which you can install your favorite operating system in a safe, flexible and powerful way. It aims to give you complete control over your favorite PC software’s execution environment, whatever your real hardware or operating system, and JPC’s multi-layered security makes it the safest solution for running the most dangerous software in quarantine - ideal for archiving viruses, hosting honey pots, and protecting your machine from malicious or unstable software.

  • Cross-Platform - JPC is completely implemented in Java, so it works seamlessly across all major computing platforms, including Windows, Linux and MacOS. JPC even works on non-x86 based hardware like ARM and SPARC.
  • Secure - JPC comes with the assured security of being run entirely within the Java sandbox. This means that the emulated hardware is completely isolated from the underlying hardware and cannot damage or interfere with it in any way.
  • Flexible -With JPC, you have complete configuration control with virtual peripherals and software libraries. And if you mess up, you only mess up your virtual PC. Just delete your disk images and start again.

Open Source Mobility Server »

Volantis Mobility Server™ is a java-based development and runtime platform, allowing web developers to build and run their own mobile Internet applications across over 5,800 devices.  

Volantis Mobility Server is designed to reduce the complexity of managing mobile content, so that developers and content owners can more easily create innovative content and services and users can use the device of their choice to access it.


VMS includes connectors that integrate with a variety of dynamic content sources and Web 2.0 Internet services. Developers specify the connectors in their mobile sites by using simple XML markup tags, reducing the reliance on Java™ programming, automatically ingesting, transforming, bundling and optimizing content across all mobile devices. Standard connectors can be combined to build “mash-up” mobile applications, integrating content from websites, databases, web services, XML documents and popular Web 2.0 services from online applications including Picasa®, Flickr® and Google Docs™.

t includes the Volantis Multi-Channel Server (MCS), Volantis Message Preparation Server (MPS) and Volantis Media Access Proxy (MAP), as well as a significant proportion of the Volantis Device Database and Volantis’ Eclipse-based developer tools.