cómo funciona el compilador en java