Scientific programmers have traditionally programmed in entirely sequential languages such as Fortran, C or Pascal and it could be argued that object-orientation is not a concept that they would need. Yet computer science departments that give courses to scientists and engineers would like to consider teaching them in Java, rather than in one of the older languages. This paper addresses the dual issues of how Java can best supply everything that the older languages do, and then what it can meaningfully give in added value, especially in the networking and parallel area. Experience with developing solutions in Java to some fifty typical numerical problems has led to a coherent object-oriented approach and a couple of essential support classes for teaching and production work.