G.Bordel >Docencia >TAP Técnicas Actuales de Programación (curso 2010-2011)
desprotegido Intro. desprotegido Temario desprotegido Calendario desprotegido RPF desprotegido Recursos protegido Práctica protegido Gest. Alum.
Tema 1: Introducción tema_siguiente
  1. Java, XML e Ingeniería del sofware.
  2. Origen y características de Java.
  3. La máquina virtual.
  4. Obtención e instalación del software.

1.2- Origen y características de Java

El origen

Puede mencionarse como un origen remoto de Java la pretensión que, en 1970, tuvo Bill Joy, vicepresidente de SUN Microsystems, de diseñar un lenguaje combinando las mejores características de C y MESA. Esta pretensión no tuvo continuidad.

En 1980, de nuevo Bill Joy, planteó la reescritura de UNIX mediante un Lenguaje Orientado a Objeto, C++, concluyendo que éste era inadecuado para tal tarea.

El auténtico origen puede situarse en enero de 1991, si bien en aquel momento no se planteaba lo que hoy conocemos como Java, sino un proyecto que tras varios fracasos terminó, de un modo absolutamente imprevisible, por ser el origen de esta tecnología. El proyecto se denominó originalmente Stealth Project, y tenia como objetivo la confección de un sistema operativo para electrónica de consumo "inteligente" funcionando en red y controlada por un sofisticado mando a distancia. El planteamiento inicial tuvo una corta vida y, remodelado, pasó a denominarse Green Project. Es interesante conocer quienes integraban este proyecto y su participación en el mismo:

  • La dirección corría  a cargo de Bill Joy
  • James Gosling se encargaba del lenguaje de programación
  • Patric McNaughton desarrollaría el entorno gráfico
  • y Mike Sheradin se encargaría del desarrollo del negocio (la aplicación específica)
  • meses después (en abril) se unió Ed Frank para la realización del hardware.

Como curiosidad mencionaremos que los primeros planteamientos respecto al lenguaje dieron origen a una versión con base en C++ que se denominó C++ ++ -- (de C++ con añadidos y eliminaciones). Este lenguaje fue desechado en favor de otro que se llamó Oak (roble), por el único motivo de que Gosling buscó un nombre para el directorio donde comenzó el desarrollo  mirando a través de su ventana.

El objetivo planteado consistía en construir un sistema con las siguientes características:

  • Simple
  • Orientado a objetos
  • Distribuido
  • Robusto
  • Seguro
  • Neutral respecto a la arquitectura
  • Portable
  • Interpretado
  • Alto rendimiento
  • Multienhebrado
  • Dinámico

Comentaremos cada una de estas características cuando terminemos de repasar la historia del origen de Java.

En agosto de 1991 el equipo mostró a Joy y a Scott McNealy (presidente de SUN) el equipo que llamaron *7 (una referencia al código marcado en ciertos sistemas de telefonia en EEUU para acceder a servicios "avanzados"). Se trataba del hardware del sistema (una especie de lo que hoy conocemos como PDA) con el interfaz gráfico de usuario.

En septiembre de 1992 (en sólo el increible plazo de 18 meses) fue mostrado a Joy y McNealy el sistema completo: sistema operativo, lenguaje, toolkit, interface, y plataforma hardware. No obstante, en sus acciones de marketing con las empresas del sector de la electrónica de consumo, SUN no había conseguído introducir la adopción de este sistema, por lo que replanteó una vez más sus objetivos y el nuevo proyecto pasó a denominarse FirstPerson

Dentro de la estrategia de este nuevo proyecto, SUN se presentó en 1993 al concurso de la Time-Warner para dotar de software a su "set-top-box" para la distribución de video bajo demanda, pero dicho concurso fue ganado por SGI. Por las mismas fechas, SUN negociaba con 3DO la inclusión de un sistema operativo basado en Oak en su futura "set-top-box" pero esta negociación también fue un fracaso. Paralelamente SUN planteó su propio proyecto de televisión interactiva pero fue del mismo modo abandonado en los primeros meses de 1994. Con todo ello, en ese mismo año, FirstPerson fue "reconducido" para, simplemente, generar aplicaciones estándar en Oak como modo de rentabilizar el esfuerzo realizado. Nuevamente se considero esta estrategia inadecuada y, sin avanzar demasiado el año 1994 el proyecto fue cancelado y el equipo disuelto.

No obstante, Bill Joy seguía manteniendo su interés entorno esta tecnología y en junio de 1994 plantea el proyecto Live Oak en el que pretende generar un "pequeño gran sistema operativo" ("big small OS"). En el mes de julio, cuando emergía la "World Wide Web", McNaugton se entretiene un fin de semana en su casa escribiendo un pequeño navegador con LiveOak y descubre que es la herramienta perfecta por sus características para la generación de software para la WWW. !Este es el punto de inflexión en donde toda la serie de fracasos termina!: julio de 1994

En septiembre, McNaughton junto con Jonathan Payne comienzan el desarrollo de un navegador que llamaron "WebRunner". En algún momento de este desarrollo, reunidos en torno a unas tazas de café (tambien llamado Java en ocasiones en EEUU), se cambió el nombre al lenguaje para denominarlo como hoy lo conocemos: JAVA. En octubre "WebRunner" alcanza una versión estable y es mostrado a los directivos de SUN que deciden soportar Java con relación a la WWW. Este navegador pasa a denominarse "HotJava", y es desde entonces el navegador de SUN.

En 1995 SUN anuncia JAVA en la SunWorld'95 y Netscape anuncia inmediatamente que será soportado por su navegador. Algo más tarde, Microsoft hace lo mismo.

Características

Ya mencionabamos las características de Java en el apartado anterior, ya que se mantienen las originales planteadas dentro del "Stealh Project". Comentaremos a continuación cada una de ellas.

Simple
Es fácil de programar. Muy próximo a C/C++ sintácticamente pero omite elementos dificiles de entender o que propician los errores (no hay ficheros cabecera, ni aritmética de apuntadores, ni estructuras, ni uniones, ni sobrecarga de operadores, etc). Además el núcleo del lenguaje es pequeño.
Orientado a objetos
Básicamente similar a C++ pero eliminando la herencia múltiple en favor de una mejor solución. Además se lleva a cabo chequeo fuerte de tipos.
Distribuido
Dispone de una extensa libreria para tratar con protocolos TCP/IP (ftp, http, etc) y otros (UDP, etc). Se utilizan objetos remotos con la misma facilidad que los locales y la utilización de "sockets" o la programaciónde CGI's es sencilla.
Robusto
La robustez es un aspecto primordial en Java. Se revela en varios aspectos: eliminación del lenguaje de características propiciatorias de errores, máximo nivel de chequeos en tiempo de compilación, chequeos de errores en tiempo de ejecución.
Seguro
Pensado para funcionar en entornos de red, se ha puesto el máximo énfasis en la seguridad. puede limitarse el acceso a zonas de memoria, no puede sobrepasarse el stack, puede limitarse el acceso a recursos locales, etc.
Neutral respecto a la arquitectura
El compilador genera un código neutral, para toda máquina con la JVM (Java Virtual Machine). Este código es muy eficaz y puede traducirse "al vuelo" a código máquina con un compilador JIT (Just In Time).
Portable
No hay características dependientes de la implantación (p.ej. Los enteros son siempre de 32 bits, el almacenamiento es siempre igual (no hay big/little endian), etc) Las librerias del sistema definen objetos portables (p.ej. ?window?).
Interpretado
El código puede ser interpretado, lo que hace el desarrollo más sencillo, ya que el ?linkado? se simplifica.
Alto rendimiento
El hecho de interpretar un código intermedio supone una rebaja en la potencia computacional, pero el uso de un compilador JIT genera procesos de eficacia muy próxima a la del código "nativo". En este sentido se han ido consiguiendo importantes avances con el tiempo, de modo que actualmente (2002) las estrategias de compilación "al vuelo" y de optimización de código dan lugar en muchas ocasiones a código más eficaz que el obtenido con compiladores a código nativo.
Multienhebrado
Los beneficios de esta característica son una mejor respuesta interactiva y mejor comportamiento en tiempo real.
Dinámico
Diseñado para adaptarse a un entorno en evolución: pueden añadirse nuevos elementos a las librerías sin efecto en sus clientes, la capacidad de introspección de los programas permite acciones dinámicas, etc.

Una comparativa de Java con otros lenguajes por sus caracter�sticas.

Evoluci�n de la potencia computacional de Java.

Siguiente punto: 1.3- La máquina virtual


Plataforma de soporte a curso y contenidos (c) German Bordel 2005.