JavaOne Desktop Report: A BIG web started deployment of a BIG banking app.
It's JavaOne 2005, Monday afternoon, and I'm drifting around Sun's
booths on the tradeshow floor. Moscone's meeting halls are two
stories tall and underground; it's a basement palace. The cavernous
space used by the tradeshow Pavillion must be a quarter of a mile long
and a hundred feet high and it's abundantly and artificially lit.
It's like being in an aircraft hanger that's inexplicably buried two
stories below street level. So I'm ambling around with the same
glazed expression I wear in casinos and supermarkets, when one of my
colleagues buttonholes me. She's been talking to a
developer/architect who's been thinking about building and deploying a
large web started Swing banking application. It was to be deployed to
about 5000 desktops and naturally the developer was interested to know
about other financial institutions who'd already done the same thing.
I've always tried to pay attention to what desktop developers are
doing with Java and so this was, in theory, my moment to shine.
Unfortunately the accumlated stress of preparing for JavaOne and my
lack of Moscone underworld acclimatization had drained most of the
charge from my brain. There are many examples of large financial
institutions with web started desktop app deployments but sadly I was
unable fire enough neurons to deliver the message. If I'd had a full
charge, I would have directed the developer to the technical session
on Wednesday called "Large Scale Client Deployment Using Java Web
I attended this session myself and made some notes. The presenter
was Matthias Schorer who's the Technical Chief Architect at
FIDUCIA IT AG
in Germany. The presentation was an excellent introduction to using
Java Web Start for big deployments of big real-world applications.
I wanted to record a few of the highlights so that the next time
I'm dumbstruck, I can point developers to my blog.
FIDUCIA is the largest IT-Fullservice provider for the German
cooperative Banks. They provide comprehensive software solutions
to 920 banks. The service includes both desktop and server
side applications and they run data centers for the latter. Managing
about 38 million accounts (2.3 billion transactions/year!) requires
lots of big iron. They've got nearly 1000 server machines and 138
terabytes of (SAN) storage. The desktop software is deployed on
106,500 PC desktops.
And it's all Java. Desktop and server. All Java.
Fiducia's web started desktop banking application, "Banking Work
Place", is a big one. It's 10 million lines of Java, developed by 640
engineers, and it provides 553 user accessible functions. The
complete set of application jars weighs in at a healthy 120M. The app
runs on desktops with Windows, Linux, OSX, and even OS/2. It's also a
great looking Swing application! I've appended some low resolution
screenshots from Matthias's talk below. We'll get a
item with a bigger set of full resolution screenshots out shortly.
The focus of the talk was the practical aspects of deploying such a
large application to over 100,000 desktops. The developers at Fiducia
have extensive experience with desktop Java. They deployed their
first home banking applet in 1996, and they've been delivering web
started apps based on the Java Banking Framework (JBF) since 2002.
One of the biggest obstacles the developers had to overcome was that
although branch banks typically have high speed LANS, they often have
relatively low speed internet connections. The other problem was that
individual banks wanted to be able to control what version of the app
was deployed and when.
All web started applications are cached and updates can be delivered
as small deltas (jardiff). So, in many cases even very large web
started apps can be deployed on the internet with a minimum of fuss,
once the initial app download is taken care of. To accomodate low
bandwidth connections, Fiducia puts a caching proxy on each bank's
LAN, in between the Fiducia IT-Center download servers and the bank's
desktop users. Download proxy servers (a single Java process) run on
a bank file server and cache application jars as well as all of the
jardiff differential downloads. Fiducia updates the proxy servers at
night time, "because at night, nobody is in the bank".
The proxy download server also helps with deploying different versions
of the app. The application's JNLP file is actually a template that's
expanded at request time to create a custom app definition based on
the source of the request. The expanded JNLP file is passed along to
the standard JNLPDownloadServlet which takes care of delivering the
jar files and deltas.
Interestingly, not only is the proxy download server written entirely
in Java, it's also web started!
The "Large Scale Client Deployment Using Java Web Start" technical
session was inspiring and informative (many developers asked about getting
the proxy download softare for their own applications!). Here are some
low resolution screenhots of the app in action, look for more in a
Swing Sighting preview on