cómo funciona el compilador de java