1.1. Introduccion A Java
1.1. Introduccion A Java
Página 1 de 6
Universidad Tecnológica de El Salvador
Programación III MSc. René Alberto Castro Velásquez
CPU como controladores. El problema es que la mayor parte de los lenguajes de cómputo están
diseñados para compilarse con un destino específico. Por ejemplo pensemos en C++.
Aunque es posible compilar una página de C++ para cualquier
tipo de CPU, para ello se requiere un compilador completo de
C++ orientado a ese CPU. Sin embargo, el problema es que los
compiladores son caros y su creación requiere mucho tiempo.
En el intento de encontrar una mejor solución, Gosling y sus
otros compañeros trabajaron en un lenguaje portable y de
plataforma cruzada que pudiera producir un código que se
ejecutara en diversos CPUs bajo entornos diferentes. Este esfuerzo culminó en la creación de Java.
Por la época en la que se trabajaba en los detalles de Java, surgió un segundo factor que resultó
más importante y que desempeñaría un papel crucial en el futuro de Java. Por supuesto, esta
segunda fuerza fue world wide web. En el caso de que la web no hubiera tomado forma casi al
mismo tiempo en que se dio la implementación de Java, este último habría conservado su utilidad
pero se habría mantenido como un lenguaje oscuro para la programación de los aparatos
electrónicos antes mencionados. Sin embargo, con el surgimiento de la web, Java fue impulsado al
primer plano del diseño de lenguajes de cómputo, debido a que la web exigía también programas
portables.
La mayoría de los programadores aprenden al principio de su carrera que los programas portables
son tan evasivos como deseables. Mientras que el desafío de hallar una manera de crear
programas eficientes y portables (independientes de la plataforma) es casi tan antiguo como la
propia disciplina de la programación, dicho desafió había pasado a un segundo plano en relación
con otros problemas más relevantes. Sin embargo, con el surgimiento de internet y web, el viejo
problema de la portabilidad volvió para tomar revancha. Después de todo, internet es un universo
diverso, distribuido y poblado con muchos tipos de computadoras, sistemas operativos y CPU.
Hacia 1993 resultó obvio para los miembros del equipo de diseño de Java que los problemas de
portabilidad que comúnmente surgen cuando se crea un código para controladores incrustados,
surgen también al momento de tratar de crear un código para internet. Este descubrimiento logró
que el centro de atención de Java cambiara de los aparatos electrónicos para el consumidor a la
programación para internet. De este modo, aunque el deseo de desarrollar un lenguaje de
programación de arquitectura neutral constituyó la chispa inicial, internet fue el que finalmente
condujo al éxito de Java a gran escala.
Página 2 de 6
Universidad Tecnológica de El Salvador
Programación III MSc. René Alberto Castro Velásquez
más importante sea que, debido a sus similitudes, C, C++ y Java definen un marco de trabajo
conceptual común para el programador profesional. Los programadores no enfrentan mayores
fisuras cuando cambian de un lenguaje a otro.
Una de las filosofías centrales de C y C++ en cuanto al diseño es que el programador es la persona
que tiene el control. Java hereda también dicha filosofía. Con excepción de las restricciones
impuestas por el entorno de internet, Java le proporciona al programador un control total, por lo
que si programa bien se verá reflejado en sus programas pero si programa de manera deficiente
también se verá reflejado en sus programas.
Java cuenta con otro atributo en común con C y C++: fue diseñado, probado y afinado por
programadores reales y en activo. Es un lenguaje surgido de las necesidades y la experiencia de la
gente que lo concibió. En este sentido no existe una mejor manera de producir un lenguaje
profesional de altos vuelos.
Debido a las similitudes entre Java y C++, sobre todo en el soporte que brindan a la programación
orientada a objetos, resulta tentador pensar en Java como la simple "versión de C++ para
internet". Sin embargo, ello sería un error pues Java tiene importantes diferencias prácticas y
filosóficas. Aunque fue influido por C++, no es una versión mejorada de este (por ejemplo, no es
compatible ni hacia arriba ni hacia abajo con C++). Por supuesto las similitudes con C++ son
significativas; por lo tanto, si usted es un programador de C++ se sentirá como en casa con Java.
Otro punto: Java no fue diseñado para reemplazar a C++ porque fue diseñado para resolver un
cierto conjunto de problemas, mientras que C++ fue diseñado para resolver otro conjunto
diferente. Ambos coexistirán durante muchos años más.
Página 3 de 6
Universidad Tecnológica de El Salvador
Programación III MSc. René Alberto Castro Velásquez
SEGURIDAD
Como seguramente ya lo sabe, cada vez que descarga un programa
"normal" se pone en riesgo de una infección por virus. Antes de Java, la
mayoría de los usuarios no descargaban programas ejecutables con
frecuencia, y quienes lo hacían revisaban que estos no tuvieran virus antes
de su ejecución. Aun así, la mayoría de los usuarios se preocupaba todavía
por la posibilidad de la infección de sus sistemas con un virus o por permitir
que programas malintencionados se ejecutaran libremente en sus sistemas (un programa
malintencionado puede recolectar información privada como números de tarjetas de crédito,
saldos de cuentas bancarias y contraseñas al revisar el contenido del sistema de archivos de su
computadora). Java responde a estas preocupaciones al proporcionar un firewall entre una
aplicación en red y su computadora.
Cuando usa un explorador web compatible con Java, es posible descargar applets de Java de
manera segura, sin miedo a una infección por virus. La manera en la que Java lo logra es mediante
la confinación de un programa de Java al entorno de ejecución de Java y el impedimento que
impone de acceder a otras partes de la computadora. La capacidad de descargar applets con la
confianza de que no dañarán la computadora cliente constituye el aspecto más significativo de
Java.
Página 4 de 6
Universidad Tecnológica de El Salvador
Programación III MSc. René Alberto Castro Velásquez
PORTABILIDAD.
Como se analizó antes, muchos tipos de computadoras y
sistemas operativos están conectados con internet. Para que
los programas se descarguen dinámicamente a todos los
tipos distintos de plataformas se necesitan algunos medios
para generar un código ejecutable que sea portable. El
mismo mecanismo que ayuda a establecer la seguridad
también ayuda a crear la portabilidad.
Página 5 de 6
Universidad Tecnológica de El Salvador
Programación III MSc. René Alberto Castro Velásquez
Por lo general, cuando se interpreta un programa se ejecuta de manera sustancialmente más lenta
de lo que se ejecutaría si se compilara en código ejecutable. Sin embargo, con Java la diferencia
entre ambos códigos no es muy grande: el uso de un código de bytes permite que el sistema de
Java en tiempo de ejecución ejecute el programa mucho más rápido de lo que se esperaría.
Aunque Java se diseñó para la interpretación,
técnicamente nada impide que compile al vuelo el
código de bytes en código nativo. Por tal motivo se
proporcionó su tecnología HotSpot poco después del lanzamiento inicial de Java. HotSpot
proporciona un compilador JIT (Just In Time, justo a tiempo) para el código de bytes.
Cuando un compilador JIT es parte de la JVM, compila (traduce en tiempo real
el código de bytes en código ejecutable) parte por parte, de acuerdo con la
demanda. Es importante comprender que no es posible compilar todo un
programa de Java en código ejecutable de una sola vez debido a que Java
realiza varias comprobaciones que sólo pueden realizarse en tiempo de
ejecución. En cambio el JIT compila el código conforme se requiera durante la
ejecución. Más aún, no todas las secuencias del código de bytes están
compiladas (sólo aquellas que se beneficiarán con la compilación). El código restante simplemente
se interpreta. Sin embargo, el método de justo a tiempo proporciona una importante mejora en el
desempeño. Aunque la compilación dinámica se aplica al código de bytes, las características de
portabilidad y seguridad todavía aplicarán pues el sistema en tiempo de ejecución (el cual realiza
la compilación) estará aún a cargo del entorno de ejecución.
Información tomada del libro Java The Complete Reference Ninth Edition (Herbert Schildt).
También puede obtener información adicional sobre este tema en las direcciones siguientes:
1. https://en.wikipedia.org/wiki/Java_(programming_language)
2. http://www.javatpoint.com/java-tutorial
3. http://www.javatpoint.com/history-of-java
4. http://www.javatpoint.com/features-of-java
5. http://www.javatpoint.com/cpp-vs-java
Página 6 de 6