Es importante comprender que la gotoconstrucción es remanente desde los días que los programadores programaron en código máquina y lenguaje ensamblador. Debido a que esos lenguajes son tan básicos (como en cada instrucción hace solo una cosa), el flujo de control del programa se realiza completamente con gotodeclaraciones (pero en lenguaje ensamblador, se denominan salto o ramificación instrucciones de ).
Ahora, aunque el lenguaje C es de nivel bastante bajo, puede considerarse como un lenguaje ensamblador de muy alto nivel: cada declaración y función en C se puede dividir fácilmente en instrucciones en lenguaje ensamblador. Aunque el C no es el lenguaje principal para programar computadoras hoy en día, todavía se usa mucho en aplicaciones de bajo nivel, como los sistemas integrados. Debido a que la función de C refleja tan estrechamente la función del lenguaje ensamblador, tiene sentidogoto esté incluida en C.
Está claro que Java es una evolución de C / C ++. Java comparte muchas características de C, pero abstrae muchos más detalles y, por lo tanto, simplemente se escribe de manera diferente. Java es un lenguaje de muy alto nivel, por lo que simplemente no es necesario tener características de bajo nivel, como gotocuando hay más construcciones de alto nivel como funciones, para, para cada uno, y mientras los bucles hacen el flujo de control del programa. Imagina si estuvieras en una función e hicieras ungoto una etiqueta en otra función. ¿Qué pasaría cuando volviera la otra función? Esta idea es absurda.
Esto no responde necesariamente por qué Java incluye la gotodeclaración, pero no lo deja compilar, pero es importante saber por qué gotose usó en primer lugar, en aplicaciones de nivel inferior, y por qué simplemente no tiene sentido ser utilizado en Java