Entorno del lenguaje JAVA
Enviado por osman21416 • 29 de Octubre de 2014 • Examen • 1.772 Palabras (8 Páginas) • 238 Visitas
Entorno del lenguaje JAVA
En muchos lugares se dice que Java es un lenguaje de programación seguro, pero, ¿qué quiere decir esto en realidad? Para contestar esta pregunta, es necesario entender las maneras en que un lenguaje de programación puede causar vulnerabilidades en las aplicaciones, las comunicaciones o en la integridad de datos. Prácticamente todos estos problemas están relacionados con el acceso a memoria. Para solucionar estos problemas el lenguaje Java se diseñó eliminando algunas características presentes en otros lenguajes de programación como C++ (que es del que se partió para el diseño inicial) y añadiendo otras.
Algunos de los métodos incorporados al lenguaje Java para corregir los problemas relacionados con los accesos a memoria ilegales son:
• Eliminación de la aritmética con punteros. Java la elimina por completo la aritmética con punteros, que es una de las mayores fuentes de accesos ilegales a memoria en otros lenguajes. De cualquier forma, esto no quiere decir que Java no disponga de la noción de puntero, la incluye dándole el nombre de referencia. Usando referencias podemos definir estructuras dinámicas complejas como listas, colas, árboles, etc. igual que en otros lenguajes.
• Comprobación de rangos en el acceso a vectores. En Java se controlan todos los accesos a vector y se lanza una excepción cuando intentamos un acceso fuera de rango. En los lenguajes que esto no se hace, el programador puede acceder a memoria que está más allá de la reservada para el vector y modificar valores de otras variables de forma no controlada. De hecho, el intentar provocar estas salidas de rango en los buffers empleados en las aplicaciones es uno de los sistemas empleados para romper la seguridad de los programas.
• Definición del comportamiento de las variables sin inicializar. En otros lenguajes los valores de las variables no inicializadas están indeterminados, por lo que si accedemos a ellas antes de darles un valor podemos obtener resultados impredecibles. Esto en Java no es así, toda la memoria del heap se inicializa automáticamente, y la memoria de la pila, que es la que emplean las variables locales, debe ser inicializada por el programador (si en un programa se intenta usar una variable local antes de asignarle un valor el compilador genera un error).
• Eliminación de la liberación de memoria controlada directamente por el programador. En otros lenguajes, cuando un objeto creado dinámicamente deja de ser necesario el responsable de liberar la memoria que tiene asignada es el programador. Es evidente que, de algún modo, es obligatorio el liberar la memoria, ya que si no lo hacemos, nuestra aplicación consumiría mucha más de la necesaria en un momento dado. El problema de esta liberación es que nos podemos equivocar y liberar objetos que aun necesitamos (con lo que, al acceder a ellos, ya no están y leemos datos de otros objetos o simplemente basura) e incluso intentar liberar más de una vez la misma memoria (según el lenguaje, compilador y sistema esto puede liberar memoria empleada por otros objetos, causar la muerte del programa, etc.). Java elimina este problema no proporcionando funciones de liberación de memoria; cuando las variables u objetos ya no son referenciadas la memoria que ocupan es liberada por un sistema de recolección de basura automático (garbage collection), que es parte del sistema de ejecución.
Además de lo anterior también se deben mencionar otras características del lenguaje que contribuyen a escribir código seguro como:
• El sistema de verificación de tipos en tiempo de compilación, que garantiza que las variables son de los tipos correctos.
• Los niveles de acceso a los miembros de las clases, que permite controlar la visibilidad de atributos y métodos.
• El modificador final, que permite impedir que se definan subclases cuando se aplica a una clase o que se puedan redefinir atributos cuando se les aplica a ellos.
Programación en JAVA
El significado de java, tal y como se le conoce en la actualidad, es el lenguaje de programación y un entorno de ejecución de programas escritos en java. Al contrario de los compiladores tradicionales , que convierten el código fuente en instrucciones a nivel de máquina, el compilador java traduce el código fuente java en instrucciones que son interpretadas por la máquina virtual de java (JVM, Java Virtual Machine). A diferencia de C y C++ en los que está inspirado. Java es un lenguaje interpretado.
Aunque hoy en día java es por excelencia el lenguaje de programación para Internet y la World Wide Web en particular, java no comenzó como proyecto Internet y por las circunstancias es idóneo para las tareas de programación de propósito general y, de hecho muchas de la herramienta java están escritas en java.
Estructuras de Programación y Clases
En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:
• De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else)
• De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case)
• Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While)
• Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until)
• Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
Todas las estructuras de control tienen un único punto de entrada y un único punto de salida. Las estructuras de control se puede clasificar en: secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programación se rija por los principios de la programación
...