Database system designers have traditionally had trouble with the default s
ervices and interfaces provided by operating systems. In recent years, deve
lopers and enthusiasts have increasingly promoted Java as a serious platfor
m for building data-intensive servers. Java provides a number of very helpf
ul language features, as well as a full run-time environment reminiscent of
a traditional operating system. This combination of features and community
support raises the question of whether Java is better or worse at supporti
ng data-intensive server software than a traditional operating system coupl
ed with a weakly-typed language such as C or C++.
In this paper, we summarize and discuss our experience building the Telegra
ph dataflow system in Java. We highlight some of the pleasures of coding wi
th Java, and some of the pains of coding around Java in order to obtain goo
d performance in a data-intensive server. For those issues that were painfu
l, we present concrete suggestions for evolving Java's interfaces to better
suit serious software systems development. We believe these experiences ca
n provide insight for other designers to avoid pitfalls we encountered and
to decide if Java is a suitable platform for their system.