I don't know what you mean by "complete," but Java is used for much more than "programs for the web."
The one thing it can't do is directly access hardware. For that you need to use a language like C or C++, but you can provide JNI wrappers to those functions--the result is just not platform-independent.