Skip to main content

JavaOne Desktop Report: 20M Brazilians File Tax Returns with Swing Application

Posted by hansmuller on July 15, 2005 at 6:23 PM EDT

JavaOne 2005, Moscone Hall in San Francisco, Thursday at 2:30.

It was the very end of a very long week. A week that ended on June 29th and began in March. Chet Haase and I had just debuted the GUI Puzzlers technical session and despite some lunch and wandering around, we were both exhausted. We took our seats for the last desktop session on the last day of the conference. Weaker men would have nodded off to sleep. If only those Moscone Hall seats had been a little more comfortable.

Late last year I attended the JavaPolis conference in Belgium. It's held in a large cinema multiplex and sessions are held in the individual theaters. It's really the perfect venue for holding a conference save for one tragic flaw: the seats are really comfortable. The perfect storm of jet-lag, soft lighting, a reclining seat (with a beverage caddy!), and a speaker who's beginning to drone a little, can have tragic consequences. At one point, I woke up to discover that my entire row had nodded off.

At any rate.

While waiting for the session to begin, I might have submitted to the urge to just catnap, just for a second, if I hadn't been distracted by a strange vision. Striding purposefully towards the stage, wearing a green cape and cradling what appeared to be a large parrot puppet, was Bruno Souza. I was probably the only person on the Java planet who didn't know Bruno. He's part of the contingent of Java developers from Brazil; the contingent that conference keynoters relied on for a rousing shout, whenever a burst of enthusiasm was called for. The session wasn't due to start for a few minutes and Bruno filled the time by talking to the crowd with the puppet. It was a little surreal and very entertaining. I stayed awake.

Bruno is a good speaker and he launched the "Desktop Java Technology on a Massive Scale: Brazil's Swing-Based Income Tax Application" session. Bruno pointed out that Brazil is larger than the continental US, however there are only 170M inhabitants. About 42M Brazilians paid tax electronically last year, which is 95% of eligible individuals and 100% of corporations.

The IRPF desktop Tax Reporting application was created in Java/Swing by a company called Serpro that handles data processing for the Brazilian government. It is used by all Brazilian tax payers to file their returns electronically - over the internet. Brazil has been supporting online tax returns for some time:

  • 1991 - MSDOS "clipper" app written with DBase
  • 1996 - New version is Delphi1 based
  • 2002 - Win32 version based on Delphi2; still in use today
With each of these versions there were concerns about long-term vendor lock-in. There's a strong desire to enable alternative desktop platforms, notably Linux. In fact the Brazilian government is providing tax incentives to companies that sell PCs with Linux for less than $500.

The current version of tax reporting app was built entirely in Java, with a Swing GUI. Development started in September 2003, beta release was December 2004, and the app was deployed and used by about 20 million tax payers in April 2005. Next year the old Win32 app will be retired and all tax returns will be delivered with Java.

All of the work, from UI to docs, was done by about a dozen developers. Linux, Windows, and OSX are officially supported although, ironically, most of the development was done on Windows! As it turns out the app actually landed on more than 15 different platforms. That explains the need for platform independence and it's a nice indication that Java really is succeeding at "run anywhere". The Java platform deployed in Brazil is J2SE 1.4 and JGoodies FormLayout was used extensively for the GUI.

Bruno's colleague Serge delivered the second half of the session, which focused on the architecture of the application. The engineering team created an app framework called PGD that supports data binding and forms and so on. Completed tax returns are compressed and encrypted and transmitted back to the Secretaria de Receita SRF tax collectors over the internet. The server "Receitanet" that handles incoming returns is also written in Java.

Futures:

  • More tax specialized forms
  • Web Start next year!
  • Transmission with digital certificates (e-CPF and e-CNPJ)
  • A multiuser version
  • Target open source JVMs

In conclusion Serge reported that their experience building the application had been very good:

  • From a user standpoint: performance (no complaints!), installation
  • For the developer GUI development was fast
And best of all: it runs better than the Win32 version.

Related Topics >>