Professional Documents
Culture Documents
Resúmen
Este artículo pretende ser una lectura sobre los conceptos básicos, la historia y las diferentes versiones y
ediciones disponibles de Java. Intenta acercar al programador, y al interesado en estas tecnologías, a conocer con
mayor profundidad lo que representa el mundo de Java.
Tabla de contenidos
¿Qué es Java?
Características de Java
El recolector de basura
La plataforma virtual Java
El lenguaje de programación Java
Otras observaciones
¿Cómo surge Java? Historia de la tecnología Java
Primeros proyectos en que se aplicó Java
Resurgimiento de Java
Java en código abierto
¿Cuáles son las diferencias entre JRE y SDK?
¿Qué ediciones de Java tenemos a nuestra disposición?
Versiones de Java
IDE's
¿Qué es Java?
Java es toda una tecnología orientada al desarrollo de software con el cual podemos realizar cualquier tipo de
programa. Hoy en día, la tecnología Java ha cobrado mucha importancia en el ámbito de Internet gracias a su
plataforma J2EE. Pero Java no se queda ahí, ya que en la industria para dispositivos móviles también hay una gran
acogida para este lenguaje.
La tecnología Java está compuesta básicamente por 2 elementos: el lenguaje Java y su plataforma. Con
plataforma nos referimos a la máquina virtual de Java (Java Virtual Machine).
Java también es un lenguaje de programación. En la actualidad es un lenguaje muy extendido y cada vez cobra
más importancia tanto en el ámbito de Internet como en la informática en general. Está desarrollado por la
compañía Sun Microsystems con gran dedicación y siempre enfocado a cubrir las necesidades tecnológicas más
punteras.
Características de Java
Una de las principales características por las que Java se ha hecho muy famoso es que es un lenguaje
independiente de la plataforma. Eso quiere decir que si hacemos un programa en Java podrá funcionar en
cualquier ordenador del mercado. Es una ventaja significativa para los desarrolladores de software, pues antes
tenían que hacer un programa para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc. Esto lo
consigue porque se ha creado una Máquina de Java para cada sistema que hace de puente entre el sistema
Página 1/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
La independencia de plataforma es una de las razones por las que Java es interesante para Internet, ya que
muchas personas deben tener acceso con ordenadores distintos. A su vez, Java está desarrollándose incluso
para distintos tipos de dispositivos además del ordenador como móviles, agendas y en general para cualquier
"cosa" que se le ocurra a la industria. Lo que favoreció el crecimiento y difusión del lenguaje Java es su capacidad de
que el código funcione sobre cualquier plataforma de software y hardware. Esto significa que nuestro mismo
programa escrito para Linux puede ser ejecutado en Windows sin ningún problema. Además es un lenguaje
orientado a objetos que resuelve los problemas en la complejidad de los sistemas, entre otras.
Esto agiliza el proceso de desarrollo substancialmente, suponiendo que usted va a lanzar un producto para
diversos sistemas operativos(Windows,Linux,AIX,Solaris) y procesadores( Sparc, x86(Intel), HP-UX , Alpha )... el
realizarlo para cada combinación posible sería una magna obra de Ingeniería, si utiliza Java puede concentrar sus
esfuerzos unicamente en un producto, y debido a que existen diversos JRE: Para Linux, Solaris, Windows y otros
sistemas operativos, deja los detalles específicos de Plataforma (JVM) al JRE y concentra sus esfuerzos en un solo
producto.
El recolector de basura
Un argumento en contra de lenguajes como C++ es que los programadores se encuentran con la carga añadida
de tener que administrar la memoria solicitada dinámicamente de forma manual:
En C++, el desarrollador puede asignar memoria en una zona conocida como heap (montículo) para crear
cualquier objeto, y posteriormente desalojar el espacio asignado cuando desea borrarlo. Un olvido a la hora de
desalojar memoria previamente solicitada puede llevar a una fuga de memoria, ya que el sistema operativo
seguirá pensando que esa zona de memoria está siendo usada por una aplicación cuando en realidad no es así.
Así, un programa mal diseñado podría consumir una cantidad desproporcionada de memoria. Además, si una
misma región de memoria es desalojada dos veces el programa puede volverse inestable y llevar a un eventual
cuelgue. No obstante, se debe señalar que C++ también permite crear objetos en la pila de llamadas de una
función o bloque, de forma que se libere la memoria (y se ejecute el destructor del objeto) de forma automática al
finalizar la ejecución de la función o bloque.
En Java, este problema potencial es evitado en gran medida por el recolector automático de basura (o automatic
garbage collector). El programador determina cuándo se crean los objetos y el entorno en tiempo de ejecución de
Java (Java runtime) es el responsable de gestionar el ciclo de vida de los objetos. El programa, u otros objetos
pueden tener localizado un objeto mediante una referencia a éste (que, desde un punto de vista de bajo nivel es
una dirección de memoria). Cuando no quedan referencias a un objeto, el recolector de basura de Java borra el
objeto, liberando así la memoria que ocupaba previniendo posibles fugas (ejemplo: un objeto creado y únicamente
usado dentro de un método sólo tiene entidad dentro de éste; al salir del método el objeto es eliminado). Aún así,
es posible que se produzcan fugas de memoria si el código almacena referencias a objetos que ya no son
necesarios?es decir, pueden aún ocurrir, pero en un nivel conceptual superior. En definitiva, el recolector de
basura de Java permite una fácil creación y eliminación de objetos, mayor seguridad y puede que más rápida que
en C++.
La recolección de basura de Java es un proceso prácticamente invisible al desarrollador. Es decir, el programador
no tiene conciencia de cuándo la recolección de basura tendrá lugar, ya que ésta no tiene necesariamente que
guardar relación con las acciones que realiza el código fuente.
Debe tenerse en cuenta que la memoria es sólo uno de los muchos recursos que deben ser gestionados.
Java es una plataforma virtual de software desarrollada por Sun Microsystems, de tal manera que los programas
creados en ella puedan ejecutarse sin cambios en diferentes tipos de arquitecturas y dispositivos computacionales
( "Diferentes plataformas").
Página 2/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
El lenguaje es parecido a C y C++, aunque su modelo de objetos es más sencillo, y fue influenciado también por
Smalltalk y Eiffel. El lenguaje mismo se inspira en la sintaxis de C++, pero su funcionamiento es más similar al de
Smalltalk que a éste. Incorpora sincronización y manejo de tareas en el lenguaje mismo (similar a Ada) e incorpora
interfaces como un mecanismo alternativo a la herencia múltiple de C++.
Los programas en Java generalmente son compilados a un lenguaje intermedio llamado bytecode, que luego son
interpretados por una máquina virtual (JVM). Esta última sirve como una plataforma de abstracción entre la
máquina y el lenguaje permitiendo que se pueda "escribir el programa una vez, y correrlo en cualquier lado".
Usualmente se usa un compilador JIT. También existen compiladores nativos de Java, tanto software libre como
no libre.
Otras observaciones
A fines del siglo XX, Java llegó a ser el lenguaje de mayor acogida para programas de servidor. Utilizando una
tecnología llamada JSP (similar a otras tecnologías del lado del servidor como ASP de Microsoft o PHP), se hizó muy
fácil escribir páginas dinámicas para sitios de Internet. Sumado a JSP la tecnología de JavaBeans, permitía
adaptar al mundo web el patrón MVC (modelo-vista-controlador) que ya se había aplicado con éxito a interfaces
gráficas.
Java llegó a ser extremadamente popular cuando Sun Microsystems introdujo la especificación J2EE (Java 2
Enterprise Edition). Este modelo permite, entre otras cosas, lograr una separación entre la presentación de los datos
al usuario (JSP o Applets), el modelo de datos (EJB), y el control (Servlets). Enterprise Java Beans (EJB) es una
tecnología de objetos distribuidos que pudo lograr el sueño de muchas empresas como Microsoft e IBM de crear
una plataforma de objetos distribuidos con un monitor de transacciones. Con este nuevo estándar, empresas
como BEA, IBM, Sun Microsystems, Oracle y otros crearon nuevos "servidores de aplicaciones" que tuvieron gran
acogida en el mercado.
Además de programas del servidor, Java permite escribir programas de interfaz gráfica o textual. También se
pueden correr programas de manera incorporada o incrustada en los navegadores web de Internet en forma de
Java applets, aunque no llegó a popularizarse como se esperaba en un principio.
Con la evolución de las diferentes versiones, no sólo se han producido cambios en el lenguaje, sino que se han
producido cambios mucho más importantes en sus bibliotecas asociadas, que han pasado de unos pocos cientos
en Java 1.0, a más de tres mil en Java 5.0. En particular, se han añadido APIs completamente nuevas, tales
como Swing y Java2D.
En los primeros años de la década de los noventa, Sun Microsystems decidió intentar introducirse en el mercado
de la electrónica de consumo y desarrollar programas para pequeños dispositivos electrónicos. Tras unos
comienzos dudosos, Sun decidió crear una filial, denominada FirstPerson Inc., para dar margen de maniobra al
equipo responsable del proyecto.
La tecnología Java se creó como una herramienta de programación en una pequeña operación secreta y anónima
denominada "the Green Project" en Sun Microsystems en el año 1991.
El equipo secreto ("Green Team"), compuesto por trece personas y dirigido por James Gosling, se encerró en una
Página 3/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
oficina desconocida de Sand Hill Road en Menlo Park, interrumpió todas las comunicaciones regulares con Sun y
trabajó sin descanso durante 18 meses.
Intentaban anticiparse y prepararse para el futuro de la informática. Su conclusión inicial fue que al menos en parte
se tendería hacia la convergencia de los dispositivos digitales y los ordenadores.
El resultado fue un lenguaje de programación que no dependía de los dispositivos denominado "Oak" (roble en
inglés).
Entonces inicialmente Java se llamó Oak, aunque tuvo que cambiar de denominación, debido a que dicho nombre ya
estaba registrado por otra empresa. Se dice este nombre se le puso debido a la existencia de tal árbol en los
alrededores del lugar de trabajo de los promotores del lenguaje.
Para demostrar cómo podía contribuir este nuevo lenguaje al futuro de los dispositivos digitales, el equipo desarrolló
un controlador de dispositivos de mano para uso doméstico destinado al sector de la televisión digital por cable. Por
desgracia, la idea resultó ser demasiado avanzada para el momento y el sector de la televisión digital por cable no
estaba listo para el gran avance que la tecnología Java les ofrecía.
Pero poco tiempo después Internet estaba listo para la tecnología Java y, justo a tiempo para su presentación en
público en 1995, el equipo pudo anunciar que el navegador Netscape Navigator incorporaría la tecnología Java.
Java fue diseñado como software para dispositivos electrónicos de consumo. Curiosamente, todo este lenguaje fue
diseñado antes de que diese comienzo la era World Wide Web, puesto que fue diseñado para dispositivos
electrónicos como calculadoras, microondas y la televisión interactiva.
1. Creciente necesidad de interfaces mucho más cómodas e intuitivas que los sistemas de ventanas que
proliferaban hasta el momento.
2. Fiabilidad del código y facilidad de desarrollo. Gosling observó que muchas de las características que ofrecían C o
C++ aumentaban de forma alarmante el gran coste de pruebas y depuración. Por ello en los sus ratos libres creó un
lenguaje de programación donde intentaba solucionar los fallos que encontraba en C++.
3. Enorme diversidad de controladores electrónicos. Los dispositivos electrónicos se controlan mediante la utilización
de microprocesadores de bajo precio y reducidas prestaciones, que varían cada poco tiempo y que utilizan
diversos conjuntos de instrucciones. Java permite escribir un código común para todos los dispositivos.
Por todo ello, en lugar de tratar únicamente de optimizar las técnicas de desarrollo y dar por sentada la utilización
de C o C++, el equipo de Gosling se planteó que tal vez los lenguajes existentes eran demasiado complicados
como para conseguir reducir de forma apreciable la complejidad de desarrollo asociada a ese campo. Por este
motivo, su primera propuesta fue idear un nuevo lenguaje de programación lo más sencillo posible, con el objeto
de que se pudiese adaptar con facilidad a cualquier entorno de ejecución.
Basándose en el conocimiento y estudio de gran cantidad de lenguajes, este grupo decidió recoger las
características esenciales que debía tener un lenguaje de programación moderno y potente, pero eliminando todas
aquellas funciones que no eran absolutamente imprescindibles.
El proyecto Green fue el primero en el que se aplicó Java, y consistía en un sistema de control completo de los
aparatos electrónicos y el entorno de un hogar. Con este fin se construyó un ordenador experimental denominado *7
(Star Seven). El sistema presentaba una interfaz basada en la representación de la casa de forma animada y el
control se llevaba a cabo mediante una pantalla sensible al tacto. En el sistema aparecía ya Duke, la actual
mascota de Java.
Más tarde Java se aplicó a otro proyecto denominado VOD (Video On Demand) en el que se empleaba como
interfaz para la televisión interactiva que se pensaba iba a ser el principal campo de aplicación de Java. Ninguno de
estos proyectos se convirtió nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java
primitivo.
Página 4/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
Una vez que en Sun se dieron cuenta de que a corto plazo la televisión interactiva no iba a ser un gran éxito,
instaron a FirstPerson a desarrollar nuevas estrategias que produjeran beneficios. Entre ellas se encontraba la
aplicación de Java a Internet, la cual no se consideró productiva en ese momento.
Resurgimiento de Java
Aunque muchas de las fuentes consultadas señalan que Java no llegó a caer en un olvido, lo cierto es que tuvo
que ser Bill Joy (cofundador de Sun y uno de los desarrolladores principales del sistema operativo Unix de
Berckley) el que sacó a Java del letargo en que estaba sumido. Joy juzgó que Internet podría llegar a ser el campo
adecuado para disputar a Microsoft su primacía en el terreno del software, y vio en Oak el instrumento idóneo para
llevar a cabo estos planes.
Para poder presentarlo en sociedad se tuvo que modificar el nombre de este lenguaje de programación y se tuvo
que realizar una serie de modificaciones de diseño para poderlo adaptar al propósito mencionado. Así Java fue
presentado en sociedad en agosto de 1995.
Algunas de las razones que llevaron a Bill Joy a pensar que Java podría llegar a ser rentable son:
* Java es un lenguaje orientado a objetos: Esto es lo que facilita abordar la resolución de cualquier tipo de problema.
* Es un lenguaje sencillo, aunque sin duda potente.
* La ejecución del código Java es segura y fiable: Los programas no acceden directamente a la memoria del
ordenador, siendo imposible que un programa escrito en Java pueda acceder a los recursos del ordenador sin que
esta operación le sea permitida de forma explícita. De este modo, los datos del usuario quedan a salvo de la
existencia de virus escritos en Java. La ejecución segura y controlada del código Java es una característica única,
que no puede encontrarse en ninguna otra tecnología.
* Es totalmente multiplataforma: Es un lenguaje sencillo, por lo que el entorno necesario para su ejecución es de
pequeño tamaño y puede adaptarse incluso al interior de un navegador.
Java se ha convertido en un lenguaje con una implantación masiva en todos los entornos (personales y
empresariales). El control que mantiene Sun sobre éste genera reticencias en la comunidad de empresas con
fuertes intereses en Java (pe IBM, Oracle) y obviamente en la comunidad de desarrolladores de software libre.
La evolución basada en un comité en el que participen todos los implicados no es suficiente y la comunidad
demandaba desde hace tiempo la liberación de las APIs y librerías básicas de la JDK.
En diciembre de 2006, Sun está en pleno relanzamiento de su plataforma Java bajo la licencia GPL de GNU.
Cuando este cambio de licencia haya terminado.
Además de la amplia terminología individual que existe en Java, existen diversos componentes ("KITS") que
agrupan estas funcionalidades, y son estos componentes con los que se trabaja "día a día" en proyectos Java.
JRE ("Java Runtime Environment")
Página 5/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
Como su nombre lo indica este ambiente ("KIT") es utilizado solo para ejecutar ("Runtime") programas en Java.
Esta situación se da cuando empresas de Software diseñan alguna interfase gráfica o aplicación en Java para su
producto. Cabe mencionar que muchos productos que utilizan Java para su interfase gráfica o instalación ya
incluyen un JRE para evitarle la molestia de instalarlo, uno de estos es Oracle ; sin embargo, muchos productos
requieren que usted posea este ambiente, si se pregunta: Porque me hacen que obtenga forzosamente este JRE
? Una de las principales razones es costo ya que las empresas deben pagar a Sun por distribuir este ambiente en
su producto.
"Java Development Kit"(JDK), "Standard Development Kit" (SDK) y "Java 2 Standard Edition" (J2SE) son nombres
para el mismo componente e incluyen: El API de Java, el JRE ( JVM ), compilador de Java y otras funcionalidades
definidas por Sun. Si no esta familiarizado programando en Java, el API de Java es un conjunto de clases que es
utilizado para generar programas básicos en el lenguaje; utilizando una analogía, estas clases tienen la misma
funcionalidad que las funciones|clases estándar utilizadas en otros lenguajes C,C++, Perl (Esto es precisamente
la definición de API ("Application Programming Interface")).
Partiendo de estas clases (API de Java) se generan TODOS los programas,interfaces y elementos programados
en Java, inclusive a partir de estas clases usted puede definir otras clases especificas que serán utilizadas por su
programa o producto. Una vez que defina sus programas|clases en Java aún es necesario compilarlas para
producir lo que es denominado byte-code o class files (este byte-code puede ser comparado con un binario), y es
este byte-code el que interpreta el JRE("Java Runtime Environment").Este byte-code es el que directamente
ofrece la interoperabilidad de Java o el afamado "Write once run everywhere" (Escribalo una vez ejecutelo en
todos lados).
Es una cantidad razonable de trabajo la que realiza el JDK|SDK, y por el hecho de incluir tanto el compilador,API
Java y el JRE existen diversas implementaciones de JDK: JDK's de Sun (o J2SE) y JDK's de IBM.
Existen varias Ediciones de Java, cada una de ellas diseñada para cierto ambiente en particular. Estas ediciones
son:
Java Standard Edition es la edición que se emplea en computadoras personales (desktops y laptops). Se le conoce
también como Java Desktop (escritorio) y es la versión que tienes que instalar para poder programar en Java en tu
computadora, aunque tus programas estén destinados para alguna de las otras ediciones. Java Platform,
Standard Edition o Java SE (conocido anteriormente hasta la versión 5.0 como Plataforma Java 2, Standard Edition
o J2SE), es una colección de APIs del lenguaje de programación Java utiles para muchos programas de la
Plataforma Java. La Plataforma Java 2, Enterprise Edition incluye todas las clases en el Java SE, además de
algunas de las cuales son útiles para programas que se ejecutan en servidores sobre workstations.
Java Micro Edition es la edición que se emplea en dispositivos móviles, tales como los teléfonos celulares. Es una
versión recortada del Java SE con ciertas extensiones enfocadas a las necesidades particulares de esos tipos de
dispositivos.
La plataforma Java Micro Edition, o Java ME (anteriormente J2ME), es una colección de APIs en Java orientadas a
productos de consumo como PDAs, teléfonos móviles o electrodomésticos.
Java ME se ha convertido en una buena opción para crear juegos en teléfonos móviles debido a que se puede
emular en un PC durante la fase de desarrollo y luego subirlos fácilmente al teléfono. Al utilizar tecnologías Java
el desarrollo de aplicaciones o videojuegos con estas APIs resulta bastante económico de portar a otros dispositivos.
Java Enterprise Edition es la edición que se emplea para hacer aplicaciones. Incluye a toda la Standard Edition y
Página 6/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
Java Card es la versión de Java enfocada a aplicaciones que se ejecutan en tarjetas de crédito con chip. Es una
versión muy recortada de Java. Una Java Card es una tarjeta capaz de ejecutar mini-aplicaciones Java. En este tipo
de tarjetas el sistema operativo es una pequeña máquina virtual Java (JVM) y en ellas se pueden cargar
dinámicamente aplicaciones desarrolladas específicamente para este entorno.
Versiones de Java
Java 1
Java 2
Página 7/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
IDE's
Mientras un JDK|SDK ofrece las herramientas para compilar y ejecutar programas en Java éste no ofrece un
ambiente de trabajo para proyectos complejos, esto es, si usted compila una o dos clases quizás el comando
javac ofrecido en los JDK es suficiente, pero si su proyecto estará compuesto por 100 o 200 clases, javac sería
muy deficiente. Los IDE's (Integrated Development Environment) ofrecen un ambiente gráfico en los que se tiene
acceso a mayor número de herramientas no ofrecidas en los JDK's: Debuggers más elaborados, check-points
dentro de la compilación,creación de WAR's (Web-Archives), "Wizards" para acelerar desarrollo, entre otras cosas.
Conclusiones finales
Actualmente, luego de cumplidos 10 años de existencia, la plataforma Java ha atraído a cerca de 4 millones de
desarrolladores de software, se utiliza en los principales sectores de la industria de todo el mundo y está presente
en un gran número de dispositivos, ordenadores y redes de cualquier tecnología de programación.
De hecho, su versatilidad y eficiencia, la portabilidad de su plataforma y la seguridad que aporta, la han convertido
en la tecnología ideal para su aplicación a redes, de manera que hoy en día, más de 2.500 millones de dispositivos
utilizan la tecnología Java.
Página 8/9
Java, su historia, ediciones, versiones y características como plataforma y lenguaje de programación @ Club Desarrolladores
* Además de sintonizadores, impresoras, web cams, juegos, sistemas de navegación para automóviles, terminales
de lotería, dispositivos médicos, cajeros de pago en aparcamientos, etc.
Hoy en día, puede encontrar la tecnología Java en redes y dispositivos que comprenden desde Internet y
superordenadores científicos hasta portátiles y teléfonos móviles; desde simuladores de mercado en Wall Street
hasta juegos de uso doméstico y tarjetas de crédito: Java está en todas partes.
Bibliografía:
Sobre el autor
Página 9/9