Is JAVA platform independent and why?