Yes, it can be used to hash streams since it's iterative: you go 512 bits each iteration, and you obtain a new 512 bits block that you can use for the next one.
Here you can find the pseudocode: link. It should be quite easy to implement in Java. You just need to do some padding when you encounter last block and some bitwise operations!
WARNING: the only thing is that usually unsigned ints are needed while Java offers just signed one, you should do some tricks to avoid problems..