ZXing (“Zebra Crossing”)

ZXing (pronounced “zebra crossing”) is an open-source, multi-format 1D/2D barcode reader library implemented in Java. Our goal is to support decoding of QR Codes, Data Matrix, and the UPC family of 1D barcodes. It will provide clients for J2ME, J2SE, and Android.

Why? There are several great readers out there, and there are bits of open-source code already for decoding, but not both at the same time. We want everyone to have access to some great source code to play with, so we decided we’d try an experiment, and open up our in-progress effort. Maybe some of it will be useful to you — maybe you can help improve it.

Will this be the best reader ever? Well we hope it gets quite good. Things are far from perfect, and it’s hard to top some of the great (native-code) readers out there. No, we primarily hope to provide a solid base of code from which people can derive other implementations, and to which people can submit new, better code. If this helps raise the quality of readers everywhere we’ve all done our job.

Featured Downloads




Imagine that you call your computer to read back your e-mails, instructing it to call you back when an expected mail arrives. Further more imagine your car telling you how many kilometers the fuel left in your tank will cover, then displaying a map of local service stations within that range. It would be wonderful if your personal weighing machine can instruct in voice about your extra pounds and advise you about the ways to shed them out. The foundation for these kinds of applications is being laid today with the emergence of new specifications such as SALT that have fostered the kind of broad industry support necessary to take speech technology and its related benefits to a much broader audience, to a wider range of devices, with a wider range of service capabilities.

“SALT is a speech interface markup language. It consists of a small set of XML elements, with associated attributes and DOM object properties, events and methods, which apply a speech interface to web pages. SALT can be used with HTML, XHTML and other standards to write speech interfaces for both voice-only (e.g. telephony) and multimodal applications.”

Microsoft announced SALT-based Microsoft Speech Platform, which includes an enterprise-grade speech-recognition engine developed by Microsoft. Launched in May 2004, MSS 2004 R2 is built on .NET technologies and is the first product in its class to allow companies to deploy telephony-only DTMF (dual-tone multi-frequency, or touch-tone keypad) applications, speech-enabled telephony applications, and multimodal (mixed speech and visual) applications. As a Speech Application Language Tags (SALT)-based solution, Speech Server follows the Web application deployment model, using an ASP.NET-based Web server as the application server. The two main components of the MSS platform are the Telephony Application Services (TAS) and Speech Engine Services (SES), which include Automatic Speech Recognition (ASR), Text-to-Speech (TTS) and prompt manager. In August 2005, Microsoft announced that as part of its continued efforts to help make speech mainstream, it is expanding its speech technology efforts beyond the call center and interactive voice response markets into the broader enterprise unified messaging market by integrating speech technologies into a future release of Microsoft Exchange Server.

More information about speech here

The SALT Forum

A tutorial on character code issues

If you are looking for some quick help in using a large character repertoire in HTML authoring, see the document Using national and special characters in HTML.

Several technical terms related to character sets (e.g. glyph, encoding) can be difficult to understand, due to various confusions and due to having different names in different languages and contexts. The EuroDicAutom online database can be useful: it contains translations and definitions for several technical terms used here.


-> tutorial <-


Welcome to Android!


The Android platform is a software stack for mobile devices including an operating system, middleware and key applications. Developers can create applications for the platform using the Android SDK. Applications are written using the Java programming language and run on Dalvik, a custom virtual machine designed for embedded use which runs on top of a Linux kernel.

This site provides a variety of documentation that will help you learn about Android and develop mobile applications for the platform.

An early look at the Android SDK is also available. It includes sample projects with source code, development tools, an emulator, and of course all the libraries you’ll need to build an Android application.

Download the SDK

EJB 3 Tutorial

This is an EJB 3 tutorial to help you learn about EJB 3 differences and understand how it can be used. By reading this EJB tutorial you will learn the main concepts, work with EJB 3 source code examples. The EJB 3 videos and demonstrations make this EJB3 tutorial easy to follow. EJB source code is available to download.

Access tutorial here

10 Commandments for Java Developers


There are many standards and best practices for Java Developers out there. The article 10 Commandments for java Developers outlines ten most basic rules that every developer must adhere to and the disastrous outcomes that can follow if these rules are not followed. Briefly summarizing the 10 commandments:

  1. Add comments to your code. – It is true comments do not literally contribute to the functionality of a program. But time and time again you return to the code that you wrote two weeks ago and, for the life of you, you cannot remember what it does!
  2. Do not complicate things.Developers tend to come up with complicated solutions for the simplest problems. We introduce EJBs into applications that have five users. We implement frameworks that an application just does not need. We add property files, object-oriented solutions, and threads to application that do not require such things. For those who do not know any better, I recommend reaching out to the more experienced programmers for advice.
  3. Keep in Mind – “Less is more” is not always better. Code efficiency is a great thing, but in many situations writing less lines of code does not improve the efficiency of that code.
  4. No hard coding please. Developers often forget or omit this rule on purpose because we are, as usual, crunched for time. But maybe if we had followed this rule, we would not have ended up in the situation that we are in. How long does it take to write one extra line of code that defines a static final variable?
  5. Do not invent your own frameworks.There are literally thousands of frameworks out there and most of them are open-source. Many of these frameworks are superb solutions that have been used in thousands of applications. We need to keep up to date with the new frameworks, at least superficially. One of the best and most obvious examples of a superb widely used framework is Struts. This open source web framework is a perfect candidate to be used in web-based applications.
  6. Say no to Print lines and String Concatenations. I know that for debugging purposes, developers like to add System.out.println everywhere we see fit. And we say to ourselves that we will delete these later. But we often forget to delete these lines of code or we do not want to delete them.
  7. Pay attention to the GUI. No matter how absurd it sounds; I repeatedly observe that GUI is as important to the business clients as functionality and performance. The GUI is an essential part of a successful application. Very often IT management tends to overlook the importance of GUI. Many organizations save money by not hiring web designers who have experience in design of “user-friendly” applications. Java developers have to rely on their own HTML skills and their limited knowledge in this area.
  8. Always Prepare Document Requirements. Every business requirement must be documented. This could be true in some fairy tale, but it is far from that in the real world. No matter how time-pressed your development is, no matter how tight the deadlines, you must always make sure that every business requirement is documented.
  9. Unit-test. Unit-test. Unit-test. I am not going to go into any details as to what is the best way to unit-test your code. I am just going to say that that it must be done. This is the most basic rule of programming. This is one rule that, above all, cannot be omitted. It would be great if your fellow developer could create and execute a test plan for your code, but if that is not possible, you must do it yourself. When creating a unit test plan, follow these basic rules:
    1. Write the unit test before writing code for class it tests.
    2. Capture code comments in unit tests.
    3. Test all the public methods that perform an “interesting” function (that is, not getters and setters, unless they do their getting and setting in some unique way).
  10. Remember – quality, not quantity. – Do not stay late (when you do not have to). I understand that sometimes production problems, urgent deadlines, and unexpected events might prevent us from leaving work on time. But, managers do not appreciate and reward their employees because they stay late on regular basis, they appreciate them because they do quality work. If you follow the rules that I outline above, you will find yourself producing less buggy and more maintainable code. That is the most important part of your job.

Web 2.0 portals for the enterprises

Portlets are a feature from Web 2.0 whereby users customize their web dashboard to their convenience.

An excerpt from Silicon

Portals are homepages which users can tailor to hold a host of different applications – or ‘portlets’ – which can then be accessed through the page.

Speaking at Gartner’s ITxpo in Cannes, Gartner analyst Gene Phifer said demand for these services in business will increase as the new generation of workers – or ‘digital natives’ – come into the workplace.

With Social networking and several other Web 2.0 features emerging as a staple diet for the next generation of IT workers, enterprises have to ensure that they are well equipped to make the best use of Web 2.0 technologies for businesses.

Support for portals is critical to enterprises to bring the best of Web 2.0 to the organization.