What is the hash function used by Bitcoin proof-of-work? Probably a simple question, but I believe it is important to state it clearly for the beginners like me out there.

What is the hash function used for the Bitcoin proof-of-work? What implementations are available? Any Java implementation?
Bitcoin uses SHA256d to hash block headers, which is sha256(sha256(x)). 

In anticipation of your next question, it uses a double hash to protect against length extension attacks (source).