Why is Java a platform independent language?