When java was created Unicode didn't have the notion of surrogate characters and java decided to represent characters as 16bit values.
I suppose they don't want to break backwards compatibility. There is a lot more information here: http://www.oracle.com/us/technologies/java/supplementary-142654.html