Vous êtes sur la page 1sur 23

UNIVERSIDAD INTERAMERICANA DE PANAMA

LICENCIATURA EN INGENIERIA DE SISTEMAS COMPUTACIONALES

PROGRAMACION II

HISTORIA DE JAVA Y CARACTERISTICAS PRINCIPALES

PROFESORA:

DEVORA AGUILAR

MARIANO RODRIGUEZ 8-722-296 20 DE SEPTIEMBRE 2011

INTRODUCCION

No es arriesgado afirmar que Java supone un significativo avance en el mundo de los entornos software, y esto viene avalado por tres elementos claves que diferencian a este lenguaje desde un punto de vista tecnolgico:

Es un lenguaje de programacin que ofrece la potencia del diseo orientado a objetos con una sintaxis fcilmente accesible y un entorno robusto y agradable.

Proporciona un conjunto de clases potente y flexible. Pone al alcance de cualquiera la utilizacin de aplicaciones que se pueden incluir directamente en pginas Web (aplicaciones denominadas applets).

Java aporta a la Web una interactividad que se haba buscado durante mucho tiempo entre usuario y aplicacin.

HISTORIA DE JAVA

Java es un lenguaje de programacin orientado a objetos desarrollado por Sun Microsystems a principio de los aos 90s. En Diciembre de 1950 Patrick Naughton, ingeniero de Sun Microsystems, reclut a varios colegas entre ellos James Gosling y Mike Sheridan para trabajar sobre un nuevo proyecto conocido como "El proyecto verde". Con la ayuda de otros ingenieros, empezaron a trabajar en una pequea oficina en Sand Hill Road en Menlo Park, California. Y as interrumpi todas las comunicaciones regulares con Sun y trabaj sin descanso durante 18 meses. Intentaban desarrollar una nueva tecnologa para programar la siguiente generacin de dispositivos inteligentes, en los que Sun vea un campo nuevo a explorar. Crear un lenguaje de programacin fcil de aprender y de usar. En un principio se consideraba C++ como lenguaje a utilizar, pero tanto Gosling como Bill Joy lo encontraron inadecuado. Gosling intent primero extender y modificar C++ resultando el lenguaje C++ ++ - (++ - porque se aadan y eliminaban caractersticas a C++), pero lo abandon para crear un nuevo lenguaje desde cero al que llamo Oak (roble en ingls, segn la versin ms aceptada, por el roble que vea a travs de la ventana de su despacho).

El resultado fue un lenguaje que tena similitudes con C, C++ y Objetive C y que no estaba ligado a un tipo de CPU concreta. Ms tarde, se cambiara el nombre de Oak a Java, por cuestiones de propiedad intelectual, al existir ya un lenguaje con el nombre de Oak. Se supone que le pusieron ese nombre mientras tomaban caf (Java es nombre de un tipo de caf, originario de Asia), aunque otros afirman que el nombre deriva de las siglas de James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. En Agosto de 1991 Oak ya corra sus primeros programas. Para 1992, el equipo ya haba desarrollado un sistema en un prototipo llamado Star7 (*7), dispositivo parecido a una PDA, cuyo nombre vena de la combinacin de teclas del telfono de la oficina del Proyecto Green que permita a los usuarios responder al telfono desde cualquier lugar. Por su parte, el presidente de la compaa Sun, Scott McNealy, se dio cuenta de forma oportuna y estableci el Proyecto Verde como una subsidiaria de Sun. Despus de mostrar a Scott McNealy y Bill Joy los prototipos de bajo nivel del sistema, continan con el desarrollo, incluyendo sistema operativo, Green OS; el lenguaje Oak, las libreras, alguna aplicacin bsica y el hardware, hasta que el 3 de septiembre de 1992 se termina el desarrollo y con ello el Proyecto Verde. De 1993 a 1994, el equipo de Naughton se lanz en busca de nuevas oportunidades en el mercado, mismas que se fueron dando mediante el sistema operativo base. La incipiente subsidiaria fracas en sus intentos de ganar una oferta con Time-Warner, sin embargo el equipo concluy que el mercado para consumidores electrnicos smart y las cajas Set-Up en particular, no eran del todo eficaces. La subsidiaria Proyecto verde fue amortizada por la compaa Sun a mediados de 1994. Afortunadamente, el cese del Proyecto Verde coincidi con el nacimiento del fenmeno mundial WEB. Al examinar las dinmicas de Internet, lo realizado por el ex equipo verde se adecuaba a este nuevo ambiente.

Patrick Naughton procedi a la construccin del lenguaje de programacin Java que se accionaba con un browser prototipo. El 29 de septiembre de 1994 se termina el desarrollo del prototipo de HotJava. Cuando se hace la demostracin a los ejecutivos de Sun, esta vez, se reconoce el potencial de Java y se acepta el proyecto. Con el paso del tiempo HotJava se convirti en un concepto prctico dentro del lenguaje Java y demostr que podra proporcionar multiplataforma para que el cdigo pueda ser bajado y corrido del Host del World Wide Web y que de otra forma no son seguros. Una de las caractersticas de HotJava fue su soporte para los "applets", que son las partes de Java que pueden ser cargadas mediante una red de trabajo para despus ejecutarlo localmente y as lograr soluciones dinmicas en computacin acordes al rpido crecimiento del ambiente WEB. El 23 de mayo de 1995, en la conferencia SunWorld `95, John Gage, de Sun Microsystems, y Marc Andreessen, cofundador y vicepresidente de Netscape, anunciaban la versin alpha de Java, que en ese momento solo corra en Solaris, y el hecho de que Java iba a ser incorporado en Netscape Navigator, el navegador ms utilizado de Internet. Con la segunda alpha de Java en Julio, se aade el soporte para Windows NT y en la tercera, en Agosto, para Windows 95.

En enero de 1995 Sun forma la empresa Java Soft para dedicarse al desarrollo de productos basados en la tecnologas Java, y as trabajar con terceras partes para crear aplicaciones, herramientas, sistemas de plataforma y servicios para aumentar las capacidades del lenguaje. Ese mismo mes aparece la versin 1.0 del JDK. Netscape Communications decide apoyar a Java applets en Netscape Navigator 2.0. Ese fue el factor clave que lanz a Java a ser conocido y famoso. Y como parte de su estrategia de crecimiento mundial y para favorecer la promocin de la nueva tecnologa, Java Soft otorg permisos para otras compaas para que pudieran tener acceso al cdigo fuente y al mismo tiempo mejorar sus navegadores. Tambin les permita crear herramientas de desarrollo para programacin Java y los facultaba para acondicionar mquinas virtuales Java (JVM), a varios sistemas operativos.

Muy pronto las licencias o permisos contemplaban prestigiosas firmas como: IBM, Microsoft, Symantec, Silicon Graphics, Oracle, Toshiba y Novell. Los apples Java (basados en JDK 1.02) son apoyados por los dos ms populares navegadores web (Nestcape Navigator 3.0 y Microsoft Internet Explorer 3.0. I.B.M./Lotus, Computer Asociates, Symantec, Informix, Oracle, Sybase y otras poderosas empresas de software estn construyendo Software 100% puro JAVA, por ejemplo el Corel Office que actualmente est en versin Beta. Los nuevos proyectos de Java son co-patrocinados por cientos de millones de dlares en capital disponible de recursos tales como la Fundacin Java, un fondo comn de capital formado el verano pasado por 11 compaas, incluyendo Cisco Systems, IBM, Netscape y Oracle. Hoy en da, puede encontrar la tecnologa Java en redes y dispositivos que comprenden desde Internet y superordenadores cientficos hasta porttiles y telfonos mviles; desde simuladores de mercado en Wall Street hasta juegos de uso domstico y tarjetas de crdito: Java est en todas partes.

Qu es Java? Java es una herramienta de programacin (como C, C++, BASIC, Pascal o Logo) que sirve para crear aplicaciones informticas. Algunas de sus caractersticas ms destacables son:

Una misma aplicacin puede funcionar en diversos tipos de ordenadores y sistemas operativos: Windows, Linux, Solaris, MacOS-X... as como en otros dispositivos inteligentes.

Los programas Java pueden ser aplicaciones independientes (que corren en una ventana propia) o "applets": pequeos programas interactivos que se encuentran incrustados en una pgina web y pueden funcionar con cualquier tipo de navegador: Explorer, Netscape, pera...

Se trata de un lenguaje "orientado a objetos". Esto significa que los programas se construyen a partir de mdulos independientes, y que estos mdulos se pueden transformar o ampliar fcilmente. Un equipo de programadores puede partir de una aplicacin existente para extenderla con nuevas funcionalidades.

Su desarrollo est impulsado por un amplio colectivo de empresas y organizaciones, y conecta con la filosofa de software abierto y entorno colaborativo con la que se identifica el proyecto Clic.

Por qu se dise Java? Los lenguajes de programacin C y Fortran se han utilizado para disear algunos de los sistemas ms complejos en lenguajes de programacin estructurada, creciendo hasta formar complicados procedimientos. De ah provienen trminos como "cdigo de espagueti" o "canguros" referentes a programas con mltiples saltos y un control de flujo difcilmente trazable. No slo se necesitaba un lenguaje de programacin para tratar esta complejidad, sino un nuevo estilo de programacin. Este cambio de paradigma de la programacin estructurada a

la programacin orientada a objetos, comenz hace 30 aos con un lenguaje llamado Simula67. El lenguaje C++ fue un intento de tomar estos principios y emplearlos dentro de las restricciones de C. Todos los compiladores de C++ eran capaces de compilar programas de C sin clases, es decir, un lenguaje capaz de interpretar dos estilos diferentes de programacin. Esta compatibilidad ("hacia atrs") que habitualmente se vende como una caracterstica de C++ es precisamente su punto ms dbil. No es necesario utilizar un diseo orientado a objetos para programar en C++, razn por la que muchas veces las aplicaciones en este lenguaje no son realmente orientadas al objeto, perdiendo as los beneficios que este paradigma aporta. As Java utiliza convenciones casi idnticas para declaracin de variables, paso de parmetros, y dems, pero slo considera las partes de C++ que no estaban ya en C. Las principales caractersticas que Java no hereda de C++ son:

Punteros: Las direcciones de memoria son la caracterstica ms poderosa de C++. El inadecuado uso de los punteros provoca la mayora de los errores de colisin de memoria, errores muy difciles de detectar. Adems, casi todos los virus que se han escrito aprovechan la capacidad de un programa para acceder a la memoria voltil (RAM) utilizando punteros. En Java, no existen punteros, evitando el acceso directo a la memoria voltil.

Variables globales: Con ellas cualquier funcin puede producir efectos laterales, e incluso se pueden producir fallos catastrficos cuando algn otro mtodo cambia el estado de la variable global necesaria para la realizacin de otros procesos. En Java lo nico global es el nombre de las clases.

goto: Manera rpida de arreglar un programa sin estructurar el cdigo. Java no tiene ninguna sentencia goto. Sin embargo Java tiene las sentencias break y continue que cubren los casos importantes de goto.

Asignacin de memoria: La funcin malloc de C, asigna un nmero especificado de bytes de memoria devolviendo la direccin de ese bloque. La funcin free devuelve un bloque asignado al sistema para que lo utilice. Si se olvida de llamar a free para

liberar un bloque de memoria, se estn limitando los recursos del sistema, ralentizando progresivamente los programas. Si por el contrario se hace un free sobre un puntero ya liberado, puede ocurrir cualquier cosa. Ms tarde C++ aadi new y delete, que se usan de forma similar, siendo todava el programador, el responsable de liberar el espacio de memoria. Java no tiene funciones malloc ni free. Se utiliza el operador new para asignar un espacio de memoria a un objeto en el montculo de memoria. Con new no se obtiene una direccin de memoria sino un descriptor al objeto del montculo. La memoria real asignada a ese objeto se puede mover a la vez que el programa se ejecuta, pero sin tener que preocuparse de ello. Cuando no tenga ninguna referencia de ningn objeto, la memoria ocupada estar disponible para que la reutilice el resto del sistema sin tener que llamar a free o delete. A esto se le llama recogida de basura. El recolector de basura se ejecuta siempre que el sistema est libre, o cuando una asignacin solicitada no encuentre asignacin suficiente. Conversin de tipos insegura: Los moldeados de tipo (type casting) son un mecanismo poderoso de C y C++ que permite cambiar el tipo de un puntero. Esto requiere extremada precaucin puesto que no hay nada previsto para detectar si la conversin es correcta en tiempo de ejecucin. En Java se puede hacer una comprobacin en tiempo de ejecucin de la compatibilidad de tipos y emitir una excepcin cuando falla. Futuro de Java Existen muchas crticas a Java debido a su lenta velocidad de ejecucin, aproximadamente un 20 veces ms lento que un programa en lenguaje C. Sun est trabajando intensamente en crear versiones de Java con una velocidad mayor. El problema fundamental de Java es que utiliza una representacin intermedia denominada cdigo de byte para solventar los problemas de portabilidad. Los cdigos de byte posteriormente se tendrn que transformar en cdigo mquina en cada mquina en que son utilizados, lo que ralentiza considerablemente el proceso de ejecucin.

La solucin que se deriva de esto parece bastante obvia: fabricar ordenadores capaces de comprender directamente los cdigos de byte. stas seran unas mquinas que utilizaran Java como sistema operativo y que no requeriran en principio de disco duro porque obtendran sus recursos de la red. A los ordenadores que utilizan Java como sistema operativo se les llama Network Computer, WebPC o WebTop. La primera gran empresa que ha apostado por este tipo de mquinas ha sido Oracle, que en enero de 1996 present en Japn su primer NC (Network Computer), basado en un procesador RISC con 8 Megabytes de RAM. Tras Oracle, han sido compaas del tamao de Sun, Apple e IBM las que han anunciado desarrollos similares. La principal empresa en el mundo del software, Microsoft, que en los comienzos de Java no estaba a favor de su utilizacin, ha licenciado Java, lo ha incluido en Internet Explorer (versin 3.0 y posteriores), y ha lanzado un entorno de desarrollo para Java, que se denomina Visual J++. El nico problema aparente es la seguridad para que Java se pueda utilizar para transacciones crticas. Sun va a apostar por firmas digitales, que sern clave en el desarrollo no slo de Java, sino de Internet.

CARACTERISTICAS IMPORTANTES DE JAVA SIMPLE: Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las caractersticas menos usadas y ms confusas de stos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes ms difundidos, por ello Java se dise para ser parecido a C++ y as facilitar un rpido y fcil aprendizaje. Java elimina muchas de las caractersticas de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y aadir caractersticas muy tiles como el garbage collector (reciclador de memoria dinmica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como es un thread de baja prioridad, cuando entra en accin, permite liberar bloques de memoria muy grandes, lo que reduce la fragmentacin de la memoria. Java reduce en un 50% los errores ms comunes de programacin con lenguajes como C y C++ al eliminar muchas de las caractersticas de stos, entre las que destacan:

aritmtica de punteros no existen referencias registros (struct) definicin de tipos (typedef) macros (#define) necesidad de liberar memoria (free)

Aunque, en realidad, lo que hace es eliminar las palabras reservadas (struct, typedef), ya que las clases son algo parecido. El JDK (Java Development Kit) suministrado por Sun Microsystems incluye un compilador, un intrprete de aplicaciones, un depurador en lnea de comandos, y un visualizador de applets entre otros elementos.

Adems, el intrprete completo de Java que hay en este momento es muy pequeo, solamente ocupa 215 Kb de RAM. ORIENTADO A OBJETOS: Java implementa la tecnologa bsica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con interfaces a esos objetos. Soporta las tres caractersticas propias del paradigma de la orientacin a objetos: encapsulacin, herencia y polimorfismo. Las plantillas de objetos son llamadas, como en C++, clases y sus copias, instancias. Estas instancias, como en C++, necesitan ser construidas y destruidas en espacios de memoria. Java incorpora funcionalidades inexistentes en C++ como por ejemplo, la resolucin dinmica de mtodos. Esta caracterstica deriva del lenguaje Objective C, propietario del sistema operativo Next. En C++ se suele trabajar con libreras dinmicas (DLLs) que obligan a recompilar la aplicacin cuando se retocan las funciones que se encuentran en su interior. Este inconveniente es resuelto por Java mediante una interfaz especfica llamada RTTI ( RunTime Type Identification ) que define la interaccin entre objetos excluyendo variables de instancias o implementacin de mtodos. Las clases en Java tienen una representacin en el runtime que permite a los programadores interrogar por el tipo de clase y enlazar dinmicamente la clase con el resultado de la bsqueda. DISTRIBUIDO: Java se ha construido con extensas capacidades de interconexin TCP/IP. Existen libreras de rutinas para acceder e interactuar con protocolos como http y ftp . Esto permite a los programadores acceder a la informacin a travs de la red con tanta facilidad como a los ficheros locales. La verdad es que Java en s no es distribuido, sino que proporciona las libreras y herramientas para que los programas puedan ser distribuidos, es decir, que se corran en varias mquinas, interactuando.

ROBUSTO: Java realiza verificaciones en busca de problemas tanto en tiempo de compilacin como en tiempo de ejecucin. La comprobacin de tipos en Java ayuda a detectar errores, lo antes posible, en el ciclo de desarrollo. Java obliga a la declaracin explcita de mtodos, reduciendo as las posibilidades de error. Maneja la memoria para eliminar las preocupaciones por parte del programador de la liberacin o corrupcin de memoria. Tambin implementa los arrays autnticos , en vez de listas enlazadas de punteros, con comprobacin de lmites, para evitar la posibilidad de sobreescribir o corromper memoria resultado de punteros que sealan a zonas equivocadas. Estas caractersticas reducen drsticamente el tiempo de desarrollo de aplicaciones en Java. Adems, para asegurar el funcionamiento de la aplicacin, realiza una verificacin de los byte-codes , que son el resultado de la compilacin de un programa Java. Es un cdigo de mquina virtual que es interpretado por el intrprete Java. No es el cdigo mquina directamente entendible por el hardware, pero ya ha pasado todas las fases del compilador: anlisis de instrucciones, orden de operadores, etc., y ya tiene generada la pila de ejecucin de rdenes. Java proporciona:

Comprobacin de punteros Comprobacin de lmites de arrays Excepciones Verificacin de byte-codes

ARQUITECTURA NEUTRAL: Para establecer Java como parte integral de la red, el compilador Java compila su cdigo a un fichero objeto de formato independiente de la arquitectura de la mquina en que se ejecutar. Cualquier mquina que tenga el sistema de ejecucin ( run-time ) puede ejecutar ese cdigo objeto, sin importar en modo alguno la mquina en que ha sido generado. Actualmente existen sistemas run-time para Solaris 2.x, SunOs 4.1.x, Windows 95, Windows NT, Linux, Irix, Aix, Mac, Apple y probablemente haya grupos de desarrollo trabajando en el porting a otras plataformas.

El cdigo fuente Java se "compila" a un cdigo de bytes de alto nivel independiente de la mquina. Este cdigo (byte-codes) est diseado para ejecutarse en una mquina hipottica que es implementada por un sistema run-time, que s es dependiente de la mquina. En una representacin en que tuvisemos que indicar todos los elementos que forman parte de la arquitectura de Java sobre una plataforma genrica, obtendramos una figura como la siguiente:

En ella podemos ver que lo verdaderamente dependiente del sistema es la Mquina Virtual Java (JVM) y las libreras fundamentales, que tambin nos permitiran acceder directamente al hardware de la mquina. Adems, habr APIs de Java que tambin entren en contacto directo con el hardware y sern dependientes de la mquina, como ejemplo de este tipo de APIs podemos citar:

Java 2D: grficos 2D y manipulacin de imgenes Java Media Framework : Elementos crticos en el tiempo: audio, video... Java Animation: Animacin de objetos en 2D Java Telephony: Integracin con telefona Java Share: Interaccin entre aplicaciones multiusuario Java 3D: Grficos 3D y su manipulacin

SEGURO: La seguridad en Java tiene dos facetas. En el lenguaje, caractersticas como los punteros o el casting implcito que hacen los compiladores de C y C++ se eliminan para prevenir el acceso ilegal a la memoria. Cuando se usa Java para crear un navegador, se combinan las caractersticas del lenguaje con protecciones de sentido comn aplicadas al propio navegador. El lenguaje C, por ejemplo, tiene lagunas de seguridad importantes, como son los errores de alineacin. Los programadores de C utilizan punteros en conjuncin con operaciones aritmticas. Esto le permite al programador que un puntero referencie a un lugar conocido de la memoria y pueda sumar (o restar) algn valor, para referirse a otro lugar de la memoria. Si otros programadores conocen nuestras estructuras de datos pueden extraer informacin confidencial de nuestro sistema. Con un lenguaje como C, se pueden tomar nmeros enteros aleatorios y convertirlos en punteros para luego acceder a la memoria: printf( "Escribe un valor entero: " ); scanf( "%u",&puntero ); printf( "Cadena de memoria: %sn",puntero ); Otra laguna de seguridad u otro tipo de ataque, es el Caballo de Troya. Se presenta un programa como una utilidad, resultando tener una funcionalidad destructiva. Por ejemplo, en UNIX se visualiza el contenido de un directorio con el comando ls. Si un programador deja un comando destructivo bajo esta referencia, se puede correr el riesgo de ejecutar cdigo malicioso, aunque el comando siga haciendo la funcionalidad que se le supone, despus de lanzar su carga destructiva. Por ejemplo, despus de que el caballo de Troya haya enviado por correo el /etc/shadow a su creador, ejecuta la funcionalidad de ls presentando el contenido del directorio. Se notar un retardo, pero nada inusual. El cdigo Java pasa muchos tests antes de ejecutarse en una mquina. El cdigo se pasa a travs de un verificador de byte-codes que comprueba el formato de los fragmentos de cdigo y aplica un probador de teoremas para detectar fragmentos de cdigo ilegal -cdigo

que falsea punteros, viola derechos de acceso sobre objetos o intenta cambiar el tipo o clase de un objeto-. Si los byte-codes pasan la verificacin sin generar ningn mensaje de error, entonces sabemos que:

El cdigo no produce desbordamiento de operandos en la pila El tipo de los parmetros de todos los cdigos de operacin son conocidos y correctos

No ha ocurrido ninguna conversin ilegal de datos, tal como convertir enteros en punteros

El acceso a los campos de un objeto se sabe que es legal: public, private, protected No hay ningn intento de violar las reglas de acceso y seguridad establecidas

El Cargador de Clases tambin ayuda a Java a mantener su seguridad, separando el espacio de nombres del sistema de ficheros local, del de los recursos procedentes de la red. Esto limita cualquier aplicacin del tipo Caballo de Troya, ya que las clases se buscan primero entre las locales y luego entre las procedentes del exterior. Las clases importadas de la red se almacenan en un espacio de nombres privado, asociado con el origen. Cuando una clase del espacio de nombres privado accede a otra clase, primero se busca en las clases predefinidas (del sistema local) y luego en el espacio de nombres de la clase que hace la referencia. Esto imposibilita que una clase suplante a una predefinida. Dada, pues la concepcin del lenguaje y si todos los elementos se mantienen dentro del estndar marcado por Sun, no hay peligro. Java imposibilita, tambin, abrir ningn fichero de la mquina local (siempre que se realizan operaciones con archivos, stas trabajan sobre el disco duro de la mquina de donde parti el applet), no permite ejecutar ninguna aplicacin nativa de una plataforma e impide que se utilicen otros ordenadores como puente, es decir, nadie puede utilizar nuestra mquina para hacer peticiones o realizar operaciones con otra. Adems, los intrpretes que incorporan los navegadores de la Web son an ms restrictivos. Bajo estas condiciones (y dentro de la filosofa de que el nico

ordenador seguro es el que est apagado, desenchufado, dentro de una cmara acorazada en un bunker y rodeado por mil soldados de los cuerpos especiales del ejrcito), se puede considerar que Java es un lenguaje seguro y que los applets estn libres de virus. Respecto a la seguridad del cdigo fuente, no ya del lenguaje, JDK proporciona un desensamblador de byte-code, que permite que cualquier programa pueda ser convertido a cdigo fuente, lo que para el programador significa una vulnerabilidad total a su cdigo. Utilizando javap no se obtiene el cdigo fuente original, pero s desmonta el programa mostrando el algoritmo que se utiliza, que es lo realmente interesante. La proteccin de los programadores ante esto es utilizar llamadas a programas nativos, externos (incluso en C o C++) de forma que no sea descompilable todo el cdigo; aunque as se pierda portabilidad. Esta es otra de las cuestiones que Java tiene pendientes. PORTABLE: Ms all de la portabilidad bsica por ser de arquitectura independiente, Java implementa otros estndares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y adems, enteros de 32 bits en complemento a 2. Adems, Java construye sus interfaces de usuario a travs de un sistema abstracto de ventanas de forma que las ventanas puedan ser implantadas en entornos Unix, Pc o Mac. INTERPRETADO: El intrprete Java (sistema run-time) puede ejecutar directamente el cdigo objeto. Enlazar (linkar) un programa, normalmente, consume menos recursos que compilarlo, por lo que los desarrolladores con Java pasarn ms tiempo desarrollando y menos esperando por el ordenador. No obstante, el compilador actual del JDK es bastante lento. Por ahora, que todava no hay compiladores especficos de Java para las diversas plataformas, Java es ms lento que otros lenguajes de programacin, como C++, ya que debe ser interpretado y no ejecutado como sucede en cualquier programa tradicional. Se dice que Java es de 10 a 30 veces ms lento que C, y que tampoco existen en Java proyectos de gran envergadura como en otros lenguajes. La verdad es que ya hay

comparaciones ventajosas entre Java y el resto de los lenguajes de programacin, y una ingente cantidad de folletos electrnicos que supuran fanatismo en favor y en contra de los distintos lenguajes contendientes con Java. Lo que se suele dejar de lado en todo esto, es que primero habra que decidir hasta que punto Java, un lenguaje en pleno desarrollo y todava sin definicin definitiva, est maduro como lenguaje de programacin para ser comparado con otros; como por ejemplo con Smalltalk, que lleva ms de 20 aos en cancha. La verdad es que Java para conseguir ser un lenguaje independiente del sistema operativo y del procesador que incorpore la mquina utilizada, es tanto interpretado como compilado. Y esto no es ningn contrasentido, me explico, el cdigo fuente escrito con cualquier editor se compila generando el byte-code. Este cdigo intermedio es de muy bajo nivel, pero sin alcanzar las instrucciones mquina propias de cada plataforma y no tiene nada que ver con el p-code de Visual Basic. El byte-code corresponde al 80% de las instrucciones de la aplicacin. Ese mismo cdigo es el que se puede ejecutar sobre cualquier plataforma. Para ello hace falta el run-time, que s es completamente dependiente de la mquina y del sistema operativo, que interpreta dinmicamente el byte-code y aade el 20% de instrucciones que faltaban para su ejecucin. Con este sistema es fcil crear aplicaciones multiplataforma, pero para ejecutarlas es necesario que exista el run-time correspondiente al sistema operativo utilizado. MULTITHREADED: Al ser multithreaded (multihilvanado, en mala traduccin), Java permite muchas actividades simultneas en un programa. Los threads (a veces llamados, procesos ligeros), son bsicamente pequeos procesos o piezas independientes de un gran proceso. Al estar los threads construidos en el lenguaje, son ms fciles de usar y ms robustos que sus homlogos en C o C++. El beneficio de ser miltithreaded consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento en tiempo real est limitado a las capacidades del sistema operativo subyacente (Unix, Windows, etc.), an supera a los

entornos de flujo nico de programa (single-threaded) tanto en facilidad de desarrollo como en rendimiento. Cualquiera que haya utilizado la tecnologa de navegacin concurrente, sabe lo frustrante que puede ser esperar por una gran imagen que se est trayendo. En Java, las imgenes se pueden ir trayendo en un thread independiente, permitiendo que el usuario pueda acceder a la informacin en la pgina sin tener que esperar por el navegador. DINAMICO: Java se beneficia todo lo posible de la tecnologa orientada a objetos. Java no intenta conectar todos los mdulos que comprenden una aplicacin hasta el tiempo de ejecucin. Las libreras nuevas o actualizadas no paralizarn las aplicaciones actuales (siempre que mantengan el API anterior).

Java tambin simplifica el uso de protocolos nuevos o actualizados. Si su sistema ejecuta una aplicacin Java sobre la red y encuentra una pieza de la aplicacin que no sabe manejar, tal como se ha explicado en prrafos anteriores, Java es capaz de traer automticamente cualquiera de esas piezas que el sistema necesita para funcionar.

Java, para evitar que los mdulos de byte-codes o los objetos o nuevas clases, haya que estar trayndolos de la red cada vez que se necesiten, implementa las opciones de persistencia, para que no se eliminen cuando de limpie la cach de la mquina.

INFOGRAFIA

1. http://www.cad.com.mx/historia_del_lenguaje_java.htm 2. http://clic.xtec.cat/es/jclic/java.htm 3. http://zarza.usal.es/~fgarcia/doc/tuto2/I_2.htm 4. http://20741132.obolog.com/caracteristicas-java-61694 5. http://www.webtaller.com/manual-java/caracteristicas-java.php

Vous aimerez peut-être aussi