Project of the Month, October 2007

By Community Team

October 2007: Barcode4J

Project Leader:

Jeremias Maerki
Jeremias Märki
Age: 33
Occupation: Independent software developer and consultant
Education: Mostly autodidactical
Location: Lucerne, Switzerland

Key developer:

Dietmar Bürkle
Age: 38
Occupation or experience: Software Engineer
Education: Diploma in Computer Science, University of Karlsruhe, Germany
Location: Rastatt, Germany

Quote about

SF provides great infrastructure for all sorts of open source projects. You get everything you need.

Why did you place the project on

It was the most popular place back when I open sourced the package. It seemed to have everything I needed.

How has helped you?

By providing reliable and functional infrastructure for the project (code repository, mailing lists, file distribution, issue tracker, Web site hosting, and so on).

The number one benefit of using is:


Description of project

Barcode4J is a flexible generator for barcodes written in Java. It is published under the Apache License v2.0, which makes it easily usable in a commercial environment. It lets you generate all sorts of popular 1-D and 2-D barcodes, including DataMatrix and PDF417, in various output formats, including SVG, EPS, bitmaps, and Java2D — and you can easily add your own output format. There are plugins for various applications, including most importantly Apache FOP (Formatting Objects Processor). Some users deploy Barcode4J as a servlet.

Trove info

  • Development Status : 5 – Production/Stable
  • Intended Audience : Developers, Healthcare Industry, Information Technology
  • License : Apache Software License
  • Operating System : OS Independent (Written in an interpreted language)
  • Programming Language : Java
  • Topic : Graphics, Point-Of-Sale, Printing
  • Translations : English

Why and how did you get started?

I started the package back in 2001 when I worked on projects that used Apache FOP to generate invoices and had to add barcodes to those invoices. Barcode fonts were too inflexible for my taste. When I later left my employer, I was fortunate that I could open source the barcode package. I registered a project in 2003. It became part of the Krysalis Community Project, which was a group of people with backgrounds in the Apache Software Foundation, and the package was called Krysalis Barcode. But with the slow death of the Krysalis Community Project I decided to rename the project Barcode4J and go independent.

What is the software’s intended audience?

The audience is quite varied. Software developers integrate Barcode4J as a Java library into their applications. Users of Apache FOP can add Barcode4J to the classpath and add barcodes as fo:instream-foreign-objects in their XSL-FO documents. Thanks to the command-line interface, anyone can generate barcodes as SVG, EPS, or bitmap files.

How many people do you believe are using your software?

I can only guess. Let’s look at the number of downloads:
Barcode4J 1.0: more than 16,000 downloads
Barcode4J 2.0 alpha 2: more than 7,000 downloads

What are a couple of notable examples of how people are using your software?

One of my former employers is still using Barcode4J today in conjunction with Apache FOP to generate thousands of invoices and delivery forms each year. An Italian colleague told me he’s used Barcode4J to generate barcode stickers for all sorts of items his metal carpentry company produces. They use them to keep track of all their orders. RealObjects has integrated Barcode4J into its product PDFreactor, an HTML/XML+CSS to PDF converter.

What gave you an indication that your project was becoming successful?

I started seeing the number of downloads go up.

What has been your biggest surprise?

I guess the nomination to become project of the month; to have Barcode4J listed beside projects like Inkscape, FreeMind, Azureus, and JasperReports.

What has been your biggest challenge?

That was the implementation of the DataMatrix specification. DataMatrix is quite complicated, and the ISO specification (for which you have to pay, unfortunately) is difficult to interpret in some places. The DataMatrix implementation is still in the final stabilization phase.

Why do you think your project has been so well received?

Because it just works for most people. Add it to FOP’s classpath and start producing PDFs with barcodes. Deploy the WAR file in your favourite Web container and generate barcodes over HTTP. It’s also quite well documented (although that could always be improved, of course). And finally, the liberal license is an important factor.

Where do you see your project going?

We’re working (although slowly) toward version 2.0, which includes the new 2-D barcode symbologies: DataMatrix and PDF417. The betas are already over half a year old, but that’s mostly because I’ve had other priorities. Still, I’m confident that we’ll have 2.0 final ready by the end of the year. After that, we’ll see. New ideas keep coming up.

What’s on your project wish list?

On my wish list I have additional postal symbologies and support for QR Code (which is mostly popular due to “2-D tagging” on blogs and advertisements). I also want to improve performance by optimizing the architecture a bit.

What are you most proud of?

That Barcode4J works for so many people. I was very happy to realize how many users Barcode4J has.

If you could change something about the project, what would it be?

I would like to find a way to attract more committers, but so far I haven’t been very successful there.

How do you coordinate the project?

Having only two active developers right now, not much coordination is necessary. I try to apply the same community rules to Barcode4J as I know from the Apache Software Foundation. Regression testing is important to make the package stable. Every bug is first reproduced using a unit test and then fixed.

Do you work on the project full-time, or do you have another job?

My main focus is normally Apache FOP. Barcode4J is a byproduct and a fun project for me. I work on Barcode4J whenever I have free time or when I have a client who requests a new feature.

How much time would you say you spend, per week, on it?

That changes from month to month. It can be as little as 30 minutes or as much as the whole week. During the last six months I had very little time, but that should change in the coming months.

What is your development environment like?

Custom-built system with Intel Core 2 Duo E6600 on Windows XP SP2. Eclipse 3.3 as IDE. I use all sorts of different JVMs for testing, including IKVM and Apache Harmony. Checkstyle, JDepend, EclEmma, OxygenXML, and others as invaluable tools. There’s an Ubuntu installation for testing on a virtual machine run on Parallels.

How can others contribute?

People can help improve the documentation or the code, as they like. They can send patches to the project through the infrastructure. Even just helping users on the mailing list is a great way to contribute. People who make regular contributions can get elected to become a committer, as with the Apache Software Foundation. The best thing is just to subscribe to one of the mailing lists and ask how we can work together. Help is always welcome.


  • 2001: Initial work on the package
  • February 2003: The package became open source as Krysalis Barcode
  • May 2003: Release of Krysalis Barcode 0.9 (first release)
  • November 2004: Release of Barcode4J 1.0
  • Late 2007: Release of Barcode4J 2.0 final

Check out our previous projects of the month.

Leave a Reply

Your email address will not be published. Required fields are marked *