In this chapter we have tried to show that it is quite simple to use HPJava in simple ways. In this section--our last before discussing parallel features--we feel we should issue a couple of disclaimers.
We will be happy if it turns out you find all of HPJava as easy as this introduction, but probably this won't be the case. Parallel programming is fairly hard. HPJava was designed largely to benefit experienced scientfic programmers, who are already aware of the kind of difficult issues that arise (just installing the software to run on distributed memory computers can be frustrating work, compared with installing hpjdk).
The style of this report is to present many elementary examples to illustrate principles of the language. Whether the techniques presented are actually effective in realistic situations depends on many factors. Because parallel programming introduces communication into programs, and because the speed of communication (at least in terms of its latency) lags far behind the speed of other kinds of basic operation on modern computers, it is too easy to ``parallelize'' a program and find it runs orders of magnitude more slowly than the program you started with. This doesn't mean that parallel processing with HPJava ``doesn't work'' (we hope). But it does mean you have to use it in the right way, on the right kinds of problem. Probably only experience and experimentation can help you guess what kinds of problem these are.
Finally, we should mention that the HPJava software is still relatively new. Neither the compiler or the libraries are highly optimized yet, and there are performance penalties because of that. We hope and expect this situation will change with time.
Having said all that, if you are determined to learn parallel programming, we think HPJava is an excellent place to start. And if you are already an expert at parallel programming, we hope you find HPJava a useful new tool.