|
A principios de la pasada década la compañía Sun creó un grupo de trabajo para desarrollar un sistema para controlar
electrodomésticos y pequeños ordenadores personales (PDAs) que, además,
permitiera la conexión a redes de ordenadores
Su objetivo era crear un hardware polivalente, con un Sistema Operativo
eficiente (SunOS) y un lenguaje de desarrollo denominado Oak, el precursos de
Java. El proyecto finalizó en 1992 y resultó un completo fracaso debido al
excesivo coste del producto, con relación a alternativas similares, tras lo
cual el grupo se disolvió, quedando como resultado del proyecto, únicamente,
el lenguaje Oak.
Es en esta época cuando empieza a aparecer a nivel comercial Internet, con
el navegador Mosaic para acceso al WWW y, gracias a la acertada decisión de
distribuir Oak por Internet, éste se popularizó y consiguió que una gran
cantidad de programadores lo depurasen y terminasen por perfilar la forma y usos
del mismo, de manera similar a lo que está sucediendo con Linux. A partir de
ese momento el lenguaje se difunde a una velocidad vertiginosa, añadiéndosele
más funcionalidad y compatibilidad para TCP/IP, pero gracias a ese gran éxito
hubo que cambiarle el nombre, ya que existía otro con el mismo.
El nombre de Java surgió en una sesión de brainstorming, y no es ningún
acrónimo, simplemente es el nombre de algo que les gusta mucho a los
programadores: una taza de café caliente (java en argot americano). Así que,
Sun lanzó las primeras versiones de este lenguaje a principios de 1995,
fomentando su uso en la comunidad informática, concediendo licencias sin
problemas y extendiendo las especificaciones y funcionalidad del lenguaje.
Java es un lenguaje de desarrollo, orientado a objetos, de propósito general
desarrollado por Sun Microsystems, y como tal es válido para realizar todo tipo
de aplicaciones, aunque es más conocido por un tipo particular de aplicaciones
que ejecutan los navegadores de Internet. Incluye una combinación de
características que lo hacen único y está siendo adoptado por multitud de
fabricantes como herramienta básica para el desarrollo de aplicaciones
comerciales de gran repercusión. Información sobre el lenguaje Java, y unos
buenos tutoriales se puede encontrar en http://www.dcc.uchile.cl/~lmateu/Java/Apuntes/java.htm
, en http://members.es.tripod.de/froufe/introduccion/indice.html
y http://tutorjava.8k.com. Desde esta última dirección se puede bajar un fichero Zip de unos 5.3 MB que
contiene las más de 700 páginas HTML que componen el Tutor, junto con todos
los ficheros de gráficos, de código fuente, de clases, etc.
¿Qué lo hace distinto de los demás lenguajes?
Una de las características más importantes es que los programas
"ejecutables", creados por el compilador de Java, son independientes
de la arquitectura. Se ejecutan indistintamente en una gran variedad de equipos
con diferentes microprocesadores y sistemas operativos.
De momento, es público y puede conseguirse un JDK (Java Developer's Kit) o
Kit de desarrollo de aplicaciones Java gratis en http://java.sun.com/. Permite
escribir Applets (pequeños programas que se insertan en una página HTML) y se
ejecutan en el ordenador que la está visualizando.
Se pueden escribir aplicaciones para intranets, aplicaciones
cliente/servidor, aplicaciones distribuidas en redes locales y en Internet. Es
fácil de aprender y está bien estructurado. Las aplicaciones son fiables.
Puede controlarse su seguridad frente al acceso a recursos del sistema y es
capaz de gestionar permisos y criptografía. También, según Sun, la seguridad
frente a virus a través de redes locales e Internet está garantizada, aunque,
al igual que ha ocurrido con otras tecnologías y aplicaciones, se han
descubierto, y posteriormente subsanado, "agujeros" en la seguridad de
Java que han sido solucionados más tarde.
Java tiene una gestión de memoria automática que reduce la complejidad de
la tarea de programación; la memoria no es accesible directamente, lo que
reduce la cantidad de virus y bugs en el programa. Los navegadores actuales
incorporan los mecanismos para poder conceder permisos extraordinarios a algunos
applets que vengan firmados digitalmente por entidades de confianza.
¿Qué se puede programar con Java?
Java es un lenguaje de propósito general y puede programarse en él
cualquier cosa:
Aplicaciones independientes. Como con cualquier otro lenguaje de
propósito general.
Applets. Pequeñas aplicaciones que se ejecutan en un documento HTML,
siempre y cuando el navegador soporte Java, como ocurre con los navegadores
HotJava y las últimas versiones de Netscape Navigator e Internet Explorer de
Microsoft.
Servlets. Son aplicaciones que se ejecutan en los servidores web para
automatizar tareas y procesar peticiones de los clientes. (La alternativa Java a
las páginas ASP en servidores de Microsoft, pero con ventajas muy
interesantes).
Para el colectivo de programadores que conocen la programación orientada a
objetos, el cambio a Java puede ser realmente sencillo. Es un lenguaje bien
estructurado, sin punteros y sin necesidad de tener que controlar la asignación
de memoria a estructuras de datos u objetos.
Para los programadores en C++ también es sencillo el cambio, ya que la
sintaxis es prácticamente la misma que en este lenguaje. Para todo aquel que no
conozca la programación orientada a objetos, este lenguaje es ideal para
aprender todos sus conceptos, ya que en cada paso de su aprendizaje se va
comprobando que las cosas se hacen en la forma natural de hacerlas, sin
sorpresas ni comportamientos extraños de los programas. A medida que se va
aprendiendo, se va fomentando en el programador, y sin esfuerzo, un buen estilo
de programación orientada a objetos. En realidad, no puede ser de otra forma,
ya que Java impide "hacer cosas extrañas" y, además, no permite
"abandonar" la programación orientada a objetos, como ocurre con
otros lenguajes de programación. Esto es bastante conveniente, de lo contrario,
un programador que está aprendiendo puede sentir la tentación de
"volver" a lo que conoce (la programación tradicional).
Como ayuda, Java dispone de una extensa librería de clases para administrar
el interface de los usuarios, manipular o crear programas, acceso a bases de
datos, para seguridad, establecer comunicaciones, etc.; ésta acelera el
desarrollo del programa, ya que el programador puede utilizar lo que ya está
escrito y funcionando, sin necesidad de hacerlo todo él mismo. Otra gran
ventaja que se manifiesta es que sólo es necesario transferir por la red
programas pequeños, puesto que la librería ya existe en las plataformas Java.
Las Piezas Java (Java Beans) es la norma en la que se basan todos los
componentes Java, y el programador puede crear aplicaciones rápidamente uniendo
piezas ya creadas. El API JavaBeans permite escribir componentes software en
Java, que son unas unidades reutilizables y auto-contenidas que pueden unirse
visualmente en componentes compuestos, applets, aplicaciones y servlets
utilizando herramientas visuales de desarrollo de aplicaciones.
Características del lenguaje
- Es intrínsecamente orientado a objetos.
- Funciona perfectamente en red.
- Aprovecha características de la mayoría de los lenguajes modernos
evitando sus inconvenientes. En particular los del C++.
- Tiene una gran funcionalidad gracias a sus librerías de clases.
- No tiene punteros manejables por el programador, aunque los maneja interna
y transparentemente.
- El manejo de la memoria no es un problema, la gestiona el propio lenguaje y
no el programador.
- Genera aplicaciones con pocos errores posibles.
- Incorpora Multi-Threading (para permitir la ejecución de tareas
concurrentes dentro de un mismo programa).
El lenguaje Java puede considerarse como una evolución del C++. La sintaxis
es parecida a la de este lenguaje. A pesar de que puede considerarse como una
evolución del C++ no acarrea los inconvenientes del mismo, ya que Java fue
diseñado "partiendo de cero", es decir, no necesitaba ser compatible
con versiones anteriores de ningún lenguaje como ocurre con C++ y C.
Gracias a que fue diseñado "partiendo de cero" ha conseguido
convertirse en un lenguaje orientado a objetos puro, limpio y práctico. No
permite programar mediante otra técnica que no sea la programación orientada a
objetos (POO) y, una vez superado el aprendizaje de la programación orientada a
objetos, es realmente sencillo aprender Java.
Aunque estrictamente hablando el lenguaje Java es interpretado, necesita de
un proceso previo de compilación. Una vez "compilado" el programa, se
crea un fichero que almacena lo que se denomina bytecodes o j_code
(pseudocódigo prácticamente al nivel de código máquina). Para ejecutarlo, es
necesario un "intérprete", la JVM (Java Virtual Machine) máquina
virtual Java. De esta forma, es posible compilar el programa en una
estación UNIX y ejecutarlo en otra con Windows95 utilizando la máquina virtual
Java para Windows95. Esta JVM se encarga de leer los bytecodes y
traducirlos a instrucciones ejecutables directamente en un determinado
microprocesador, de una forma bastante eficiente. La JVM se convierte en algo
intermedio entre el código de bits y un sistema operativo, de esta forma, desde
la perspectiva del código de bits, siempre se está trabajando en el mismo
ordenador
Que el programa deba ser "interpretado" no hace que sea poco
eficiente en cuanto a velocidad, ya que la interpretación se hace
prácticamente al nivel de código máquina. Por ejemplo, es mucho más rápido
que cualquier otro programa interpretado como por ejemplo Visual Basic, aunque
es más lento que el mismo programa escrito en C++. Esta deficiencia en cuanto a
la velocidad, puede ser aminorada por los compiladores Just-In-Time (JIT). Un
compilador JIT transforma los bytecodes de un programa o un applet en código
nativo de la plataforma donde se ejecuta, por lo que es más rápido. Suelen ser
incorporados por los navegadores, como Netscape o Internet Explorer.
El lenguaje Java es muy robusto. Las aplicaciones creadas en este lenguaje
son susceptibles de contener pocos errores, principalmente porque la gestión de
memoria y punteros es realizada por el propio lenguaje y no por el programador.
Bien es sabido que la mayoría de los errores en las aplicaciones vienen
producidos por fallos en la gestión de punteros o la asignación y liberación
de memoria. Además, el lenguaje contiene estructuras para la detección de
excepciones (errores de ejecución previstos) y permite obligar al programador a
escribir código fiable mediante la declaración de excepciones posibles para
una determinada clase reutilizable.
La Máquina Virtual Java (JVM)
La máquina virtual Java es la idea revolucionaria del lenguaje. Es la
entidad que proporciona la independencia de plataforma para los programas Java
"compilados" en byte-code.
Un mismo programa fuente compilado en distintas plataformas o sistemas
operativos, genera el mismo fichero en byte-code. Esto es lógico, ya que se
supone que el compilador de Java traduce el fichero fuente a código ejecutable
por una máquina que únicamente existe en forma virtual (aunque se trabaja en
la construcción de microprocesadores que ejecuten directamente el byte-code).
Evidentemente, si un mismo programa en byte-code puede ser ejecutado en
distintas plataformas es porque existe un traductor de ese byte-code a código
nativo de la máquina sobre la que se ejecuta. Esta tarea es realizada por la
JVM. Existe una versión distinta de esta JVM para cada plataforma. Esta JVM se
carga en memoria y va traduciendo "al vuelo", los byte-codes a código
máquina. La JVM no ocupa mucho espacio en memoria, piénsese que fue diseñada
para poder ejecutarse sobre pequeños electrodomésticos como teléfonos,
televisores, etc. Por tanto, una de las características que diferencia a Java
de otros lenguajes es que no se necesita volver a escribir el código fuente
para diferentes sistemas operativos ni para nuevos procesadores.
JavaScript
JavaScript es una variación del lenguaje Java. Desarrollado por Netscape y
Sun, fue diseñado para simplificar la creación de contenidos interactivos en
páginas web sin necesidad de tener que programar applets en Java. En lugar de
ello se utilizan técnicas más sencillas mediante el lenguaje JavaScript que es
más flexible, aunque mucho menos potente.
El lenguaje JavaScript es totalmente interpretado por el navegador. El
código fuente se incluye como parte de la página web en HTML y es el navegador
el encargado de "interpretar" el código fuente. Esto mismo podría
hacerse en Java, pero no de una manera tan sencilla como con JavaScript, ya que
este lenguaje fue pensado para acercar Java a programadores inexpertos y
creadores de contenidos HTML sin conocimientos avanzados de programación.
Diferencias entre Java y Java Script:
- Java es compilado, mientras que JavaScript es totalmente interpretado.
- Java es orientado a objetos. JavaScript utiliza objetos, pero no permite la
programación orientada a objetos.
- En JavaScript no es necesario declarar las variables y en Java sí.
- En JavaScript, las comprobaciones de validez de referencias a objetos se
realizan en tiempo de ejecución, mientras que en Java se realiza en tiempo de
compilación.
- JavaScript tiene un número limitado de tipos de datos y clases.
- Los applets Java se transmiten como código aparte de la página Web. En
JavaScript, los applets se transmiten conjuntamente con la página web
(embebidos en ella).
|