You are on page 1of 15

JAVA: Historia, Caractersticas, Versiones, Ventajas Y Desventajas.

Presentado a: Ing. Edgar Albornoz

Presentado por: Estefania Castillo

Universidad De Pamplona. Facultad De Ingenierias y Arquitectura. Pamplona, Norte De Santander. 3 de Marzo de 2011

INTRODUCCIN Java es un lenguaje de programacin orientado a objetos, desarrollado por Sun Microsystems ( empresa informtica, constituida en 1982 por el alemn Andreas von Bechtolsheim y los norteamericanos Vinod Khosla, Bill Joy, Scott McNealy y Marcel Newman). El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de punteros o memoria. El trmino Java fue acuado en una cafetera frecuentada por algunos de los miembros del equipo. Pero no est claro si es un acrnimo o no, aunque algunas fuentes sealan que podra tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrnimo, Just Another Vague Acronym ("slo otro acrnimo ambiguo ms"). La hiptesis que ms fuerza tiene es la que Java debe su nombre a un tipo de caf disponible en la cafetera cercana, de ah que el icono de java sea una taza de cafe caliente. Un pequeo signo que da fuerza a esta teora es que los 4 primeros bytes (el nmero mgico) de los archivos .class que genera el compilador, son en hexadecimal, 0xCAFEBABE. Otros simplemente dicen que el nombre fue sacado al parecer de una lista aleatoria de palabras. La implementacin original y de referencia del compilador, la mquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolucin del lenguaje a travs del Java Community Process establecido en 1998 (es un proceso formalizado el cual permite a las partes interesadas a involucrarse en la definicin de futuras versiones y caractersticas de la plataforma Java), si bien otros han desarrollado tambin implementaciones alternativas de estas tecnologas de Sun, algunas incluso bajo licencias de software libre. Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus tecnologas Java bajo la licencia GNU GPL que est orientada principalmente a proteger la libre distribucin, modificacin y uso de software , de acuerdo con las especificaciones del Java Community Process.

HISTORIA La tecnologa Java se cre como una herramienta de programacin para ser usada en un proyecto de set-top-box en una pequea operacin denominada the Green Project en Sun Microsystems en el ao 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling cientfico de la computacin conocido como el padre del lenguaje de programacin Java, trabaj durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo. En 1994, se les hizo una demostracin de HotJava ( es un navegador web modular y extensible de Sun Microsystems que puede ejecutar applets (un componente de una aplicacin que se ejecuta en el contexto de otro programa, por ejemplo un navegador web) y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld, a que vieran la luz pblica Java y HotJava, el navegador Web. El acontecimiento fue anunciado por John Gage, el Director Cientfico de Sun Microsystems. El acto estuvo acompaado por una pequea sorpresa adicional, el anuncio por parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java sera soportado en sus navegadores. El 9 de enero del ao siguiente, 1996, Sun fund el grupo empresarial JavaSoft para que se encargase del desarrollo tecnolgico. Dos semanas ms tarde la primera versin de Java fue publicada. Java ha experimentado numerosos cambios desde la versin primigenia, JDK 1.0( Java Development Kit), as como un enorme incremento en el nmero de clases y paquetes que componen la biblioteca estndar. Desde J2SE 1.4 la cual es una coleccin de APIs o API es el conjunto de funciones y procedimientos (o mtodos, en la programacin orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstraccin del lenguaje de programacin Java tiles para muchos programas de la Plataforma Java; la evolucin del lenguaje ha sido regulada por el JCP (Java Community Process), que usa Java Specification Requests (JSRs) para proponer y especificar cambios en la plataforma Java. El lenguaje en s mismo est especificado en la Java Language Specification (JLS), o Especificacin del Lenguaje Java. Los cambios en los JLS son gestionados en JSR 901. JDK 1.0 (23 de enero de 1996) Primer lanzamiento:

JDK 1.1 (19 de febrero de 1997) Principales adiciones incluidas:

una reestructuracin intensiva del modelo de eventos AWT (Abstract Windowing Toolkit) clases internas (inner classes) JavaBeans JDBC (Java Database Connectivity), para la integracin de bases de datos

RMI (Remote Method Invocation)

J2SE 1.2 (8 de diciembre de 1998) Nombre clave Playground.

Esta y las siguientes versiones fueron recogidas bajo la denominacin Java 2 y el nombre "J2SE" (Java 2 Platform, Standard Edition), reemplaz a JDK para distinguir la plataforma base de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro Edition). Otras mejoras aadidas incluan: la palabra reservada (keyword) strictfp6 (es una palabra reservada de java utilizada para restringir clculos de coma flotante para garantizar la portabilidad). reflexin en la programacin la API grfica ( Swing7 ) fue integrada en las clases bsicas la mquina virtual (JVM) de Sun fue equipada con un compilador JIT (Just in Time) por primera vez Java Plug-in Java IDL, una implementacin de IDL (Lenguaje de Descripcin de Interfaz) para la interoperabilidad con CORBA Colecciones (Collections).

J2SE 1.3 (8 de mayo de 2000) Nombre clave Kestrel. Los cambios ms notables fueron:

la inclusin de la mquina virtual de HotSpot (es una zona de cobertura Wi-Fi, en el que un punto de acceso o varios proveen servicios de red a travs de un Proveedor de Servicios de Internet Inalmbrico (WISP)). JVM (la JVM de HotSpot fue lanzada inicialmente en abril de 1999, para la JVM de J2SE 1.2) RMI fue cambiado para que se basara en CORBA (Common Object Request Broker Architecture arquitectura comn de intermediarios en peticiones a objetos), es un estndar que establece una plataforma de desarrollo de sistemas distribuidos facilitando la invocacin de mtodos remotos bajo un paradigma orientado a objetos. JavaSound se incluy el Java Naming and Directory Interface (JNDI) en el paquete de bibliotecas principales (anteriormente disponible como una extensin). Java Platform Debugger Architecture (JPDA).

J2SE 1.4 (6 de febrero de 2002) Nombre Clave Merlin.

Este fue el primer lanzamiento de la plataforma Java desarrollado bajo el Proceso de la Comunidad Java como JSR 59. Los cambios ms notables fueron: Palabra reservada assert . Expresiones regulares modeladas al estilo de las expresiones regulares Perl (es un lenguaje de programacin diseado por Larry Wall en 1987). Encadenacin de excepciones Permite a una excepcin encapsular la excepcin de bajo Nivel original. non-blocking NIO (New Input/Output) . Logging API (Specified in JSR 47.)

API I/O para la lectura y escritura de imgenes en formatos como JPEG o PNG Parser XML10 integrado y procesador XSLT o Transformaciones XSL es un estndar de la organizacin W3C que presenta una forma de transformar documentos XML en otros e incluso a formatos que no son XML . Seguridad integrada y extensiones criptogrficas (JCE, JSSE, JAAS) Java Web Start incluido (El primer lanzamiento ocurri en marzo de 2001 para J2SE 1.3.

J2SE 5.0 (30 de septiembre de 2004) Nombre clave: Tiger.

(Originalmente numerado 1.5, esta notacin an es usada internamente.) Desarrollado bajo JSR 176, Tiger aadi un nmero significativo de nuevas caractersticas . Plantillas (genricos) provee conversion de tipos (type safety)11 en tiempo de compilacin para colecciones y elimina la necesidad de la mayora de conversion de tipos (type casting). Metadatos tambin llamados anotaciones, permite a estructuras del lenguaje como las clases o los mtodos, ser etiquetados con datos adicionales, que puedan ser procesados posteriormente por utilidades de proceso de metadatos. Autoboxing/unboxing Conversiones automticas entre tipos primitivos (Como los int) y clases de envoltura primitivas (Como Integer). Enumeraciones la palabra reservada enum crea una typesafe, lista ordenada de valores (como Dia.LUNES, Dia.MARTES, etc.). Anteriormente, esto solo poda ser llevado a cabo por constantes enteras o clases construidas manualmente (enum pattern). Varargs (nmero de argumentos variable) El ltimo parmetro de un mtodo puede ser declarado con el nombre del tipo seguido por tres puntos (e.g. void drawtext(String... lines)). En la llamada al mtodo, puede usarse cualquier nmero de parmetros de ese tipo, que sern almacenados en un array para pasarlos al mtodo. Bucle o ciclo for mejorado La sintaxis para el bucle for se ha extendido con una sintaxis especial para iterar sobre cada miembro de un array o

sobre cualquier clase que implemente Iterable, como la clase estndar Collection, de la siguiente forma: void displayWidgets (Iterable<Widget> widgets) { for (Widget w : widgets) { w.display(); } } Este ejemplo itera sobre el objeto Iterable widgets, asignando, en orden, cada uno de los elementos a la variable w, y llamando al mtodo display() de cada uno de ellos. Java SE 6 (11 de diciembre de 2006) Nombre clave Mustang .

Estuvo en desarrollo bajo la JSR 270. En esta versin, Sun cambi el nombre "J2SE" por Java SE y elimin el ".0" del nmero de versin.. Los cambios ms importantes introducidos en esta versin son: Incluye un nuevo marco de trabajo y APIs que hacen posible la combinacin de Java con lenguajes dinmicos como PHP, Python, Ruby y JavaScript. Incluye el motor Rhino, de Mozilla, una implementacin de Javascript en Java. Incluye un cliente completo de Servicios Web y soporta las ltimas especificaciones para Servicios Web, como JAX-WS 2.0, JAXB 2.0, STAX y JAXP. Mejoras en la interfaz grfica y en el rendimiento.

Java SE 7 Nombre clave Dolphin.

En el ao 2006 an se encontraba en las primeras etapas de planificacin. Se espera que su desarrollo d comienzo en la primavera de 2006, y se estima su lanzamiento para finales de 2010. Soporte para XML dentro del propio lenguaje. Un nuevo concepto de superpaquete.

Soporte para closures (Una clausura es una funcin que es evaluada en un entorno conteniendo una o ms variables dependientes de otro entorno. Cuando es llamada, la funcin puede acceder a estas variables). Introduccin de anotaciones estndar para detectar fallos en el software. No oficiales: NIO2. Java Module System. Java Kernel. Nueva API para el manejo de Dias y Fechas, la cual reemplazara las antiguas clases Date y Calendar. Posibilidad de operar con clases BigDecimal usando operandos. Adems de los cambios en el lenguaje, con el paso de los aos se han efectuado muchos ms cambios dramticos en la biblioteca de clases de Java (Java class library) que ha crecido de unos pocos cientos de clases en JDK 1.0 hasta ms de tres mil en J2SE 5.0. APIs completamente nuevas, como Swing y Java2D (es un API para dibujar grficos en dos dimensiones usando el lenguaje de programacin Java), han sido introducidas y muchos de los mtodos y clases originales de JDK 1.0 estn obsoletas. En el 2005 se calcula en 4,5 millones el nmero de desarrolladores y 2.500 millones de dispositivos habilitados con tecnologa Java. CARACTERISTICAS Orientado a Objetos La primera caracterstica, orientado a objetos (OO), se refiere a un mtodo de programacin y al diseo del lenguaje. Aunque hay muchas interpretaciones para OO, una primera idea es disear el software de forma que los distintos tipos de datos que usen estn unidos a sus operaciones. As, los datos y el cdigo (funciones o mtodos) se combinan en entidades llamadas objetos. Un objeto puede verse como un paquete que contiene el comportamiento (el cdigo) y el estado (datos). El principio es separar aquello que cambia de las cosas que permanecen inalterables. Frecuentemente, cambiar una estructura

de datos implica un cambio en el cdigo que opera sobre los mismos, o viceversa. Esta separacin en objetos coherentes e independientes ofrece una base ms estable para el diseo de un sistema software. El objetivo es hacer que grandes proyectos sean fciles de gestionar y manejar, mejorando como consecuencia su calidad y reduciendo el nmero de proyectos fallidos. Otra de las grandes promesas de la programacin orientada a objetos es la creacin de entidades ms genricas (objetos) que permitan la reutilizacin del software entre proyectos, una de las premisas fundamentales de la Ingeniera del Software. Independencia de la plataforma La segunda caracterstica, la independencia de la plataforma, significa que programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware. Este es el significado de ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, write once, run everywhere. Para ello, se compila el cdigo fuente escrito en lenguaje Java, para generar un cdigo conocido como bytecode (especficamente Java bytecode) instrucciones mquina simplificadas especficas de la plataforma Java. Esta pieza est a medio camino entre el cdigo fuente y el cdigo mquina que entiende el dispositivo destino. El bytecode es ejecutado entonces en la mquina virtual (JVM), un programa escrito en cdigo nativo de la plataforma destino (que es el que entiende su hardware), que interpreta y ejecuta el cdigo. Adems, se suministran bibliotecas adicionales para acceder a las caractersticas de cada dispositivo (como los grficos, ejecucin mediante hebras o threads, la interfaz de red) de forma unificada. Se debe tener presente que, aunque hay una etapa explcita de compilacin, el bytecode generado es interpretado o convertido a instrucciones mquina del cdigo nativo por el compilador JIT (Just In Time). Hay implementaciones del compilador de Java que convierten el cdigo fuente directamente en cdigo objeto nativo, como GCJ 14. Esto elimina la etapa intermedia donde se genera el bytecode, pero la salida de este tipo de compiladores slo puede ejecutarse en un tipo de arquitectura.

El recolector de basura En Java el problema de las fugas de memoria se evita en gran medida gracias a la recoleccin de basura (o automatic garbage collector). El programador determina cundo se crean los objetos y el entorno en tiempo de ejecucin 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. 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 mtodo slo tiene entidad dentro de ste; al salir del mtodo el objeto es eliminado). Aun as, es posible que se produzcan fugas de memoria si el cdigo almacena referencias a objetos que ya no son necesarios es decir, pueden an ocurrir, pero en un nivel conceptual superior. En definitiva, el recolector de basura de Java permite una fcil creacin y eliminacin de objetos, mayor seguridad y puede que ms rpida que en C++. VENTAJAS Los programas escritos en java se compilan en un bytecode independientemente de la mquina y todos los sistemas operativos principales tienen entornos de ejecucin de aplicaciones Java (mquinas virtuales). Pueden forzarse restricciones sobre las operaciones permitidas los applets no acceden directamente al harware de la mquina). Al cargar un programa en memoria, la mquina virtual Java verifica los bytecodes de la aplicacin. Bibliotecas para trabajar con colecciones y otras estructuras de datos, ficheros, acceso a bases de datos (JDBC), interfaces grficas de usuario (JFC/Swing), redes de ordenadores (RMI,Jini), aplicaciones distribuidas (EJB), interfaces web (servlets/JSP), hebras, compresin de datos, criptografa. Elimina la complejidad de los lenguajes como "C" y da paso al contexto de los lenguajes modernos orientados a objetos. Orientado a Objetos. La filosofa de programacin orientada a objetos es diferente a la programacin convencional. Como la mayora de los programadores estn acostumbrados a programar en C o en C++, el sintaxis de Java es muy similar al de estos. El sistema de Java maneja la memoria de la computadora por ti. No te tienes que preocupar por apuntadores, memoria que no se est utilizando, etc. Java realiza todo esto sin necesidad de que uno se lo indique. El sistema de Java tiene ciertas polticas que evitan se puedan codificar virus con este lenguaje. Existen muchas restricciones, especialmente para los applets, que limitan lo que se puede y no puede hacer con los recursos crticos de una computadora. Como el cdigo compilado de Java (conocido como byte code) es interpretado, un programa compilado de Java puede ser utilizado por cualquier computadora que tenga implementado el interprete de Java. Independiente a la arquitectura. Al compilar un programa en Java, el cdigo resultante un tipo de cdigo binario conocido como byte code. Este cdido es interpretado por diferentes computadoras de igual manera, solamente hay que implementar un intrprete para cada plataforma. De esa manera Java logra ser un lenguaje que no depende de una arquitectura computacional definida. Java no requiere que

compiles todas las clases de un programa para que este funcione. Si realizas una modificacin a una clase Java se encarga de realizar un Dynamic Bynding o un Dynamic Loading para encontrar las clases. DESVENTAJAS La reutilizacin del software ha experimentado resultados dispares, encontrando dos dificultades principales: el diseo de objetos realmente genricos es pobremente comprendido, y falta una metodologa para la amplia comunicacin de oportunidades de reutilizacin. Algunas comunidades de cdigo abierto (open source) quieren ayudar en este problema dando medios a los desarrolladores para diseminar la informacin sobre el uso y versatilidad de objetos reutilizables y bibliotecas de objetos. Java no ha aportado capacidades estndares para aritmtica en punto flotante. El estndar IEEE 754 para Estndar para Aritmtica Binaria en Punto Flotante apareci en 1985, y desde entonces es el estndar para la industria. Y aunque la aritmtica flotante de Java (cosa que cambi desde el 13 de noviembre de 2006, cuando se abri el cdigo fuente y se adopt la licencia GNU, aparte de la ya existente) se basa en gran medida en la norma del IEEE, no soporta an algunas caractersticas. En un sentido estricto, Java no es un lenguaje absolutamente orientado a objetos, a diferencia de, por ejemplo, Ruby o Smalltalk. Por motivos de eficiencia, Java ha relajado en cierta medida el paradigma de orientacin a objetos, y as por ejemplo, no todos los valores son objetos. El cdigo Java puede ser a veces redundante en comparacin con otros lenguajes. Esto es en parte debido a las frecuentes declaraciones de tipos y conversiones de tipo manual (casting). Tambin se debe a que no se dispone de operadores sobrecargados, y a una sintaxis relativamente simple. Sin embargo, J2SE 5.0 introduce elementos para tratar de reducir la redundancia, como una nueva construccin para los bucles foreach. A diferencia de C++, Java no dispone de operadores de sobrecarga definidos por el usuario. Los diseadores de Java tomaron esta decisin puesto que consideraban que, bajo ciertas circunstancias, esta caracterstica poda complicar la lectura y mantenimiento de los programas. El bytecode de Java puede ser interpretado en tiempo de ejecucin por la mquina virtual, o bien compilado al cargarse el programa, o durante la propia ejecucin, para generar cdigo nativo que se ejecuta directamente sobre el hardware. Si es interpretado, ser ms lento que usando el cdigo mquina intrnseco de la plataforma destino. Si es compilado, durante la carga inicial o la ejecucin, la penalizacin est en el tiempo necesario para llevar a cabo la compilacin.

El uso de un recolector de basura para eliminar de forma automtica aquellos objetos no requeridos, aade una sobrecarga que puede afectar al rendimiento, o ser apenas apreciable, dependiendo de la tecnologa del recolector y de la aplicacin en concreto. Las JVM modernas usan recolectores de basura que gracias a rpidos algoritmos de manejo de memoria, consiguen que algunas aplicaciones puedan ejecutarse ms eficientemente. Java fue diseado para ofrecer seguridad y portabilidad, y no ofrece acceso directo al hardware de la arquitectura ni al espacio de direcciones. Java no soporta expansin de cdigo ensamblador, aunque las aplicaciones pueden acceder a caractersticas de bajo nivel usando bibliotecas nativas (JNI, Java Native Interfaces).

CONCLUSIONES Los objetos podran verse como piezas reutilizables que pueden emplearse en mltiples proyectos distintos; conduciendo a una reduccin drstica del tiempo de desarrollo. Podemos usar como ejemplo de objeto el aluminio. Una vez definidos datos (peso, maleabilidad, etc.), y su comportamiento (soldar dos piezas, etc.), el objeto aluminio puede ser reutilizado en el campo de la construccin, del automvil, de la aviacin, etc. Las implementaciones recientes de la JVM dan lugar a programas que se ejecutan considerablemente ms rpido que las versiones antiguas, empleando diversas tcnicas, aunque sigue siendo mucho ms lento que otros lenguajes.

El lenguaje Java se cre con cinco objetivos principales: Debera usar la metodologa de la programacin orientada a objetos. Debera permitir la ejecucin de un mismo programa en mltiples sistemas operativos. Debera incluir por defecto soporte para trabajo en red. Debera disearse para ejecutar cdigo en sistemas remotos de forma segura. Debera ser fcil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.

El diseo de Java, su robustez, el respaldo de la industria y su fcil portabilidad han hecho de Java uno de los lenguajes con un mayor crecimiento y amplitud de uso en distintos mbitos de la industria de la informtica: En el navegador web: Existe la posibilidad de desarrollar pequeas aplicaciones (Applets) en Java estas mini-aplicaciones pueden ser incrustadas en una pgina HTML para que sean descargadas y ejecutadas por el navegador web como

extensin (plug-in) en un contexto de seguridad restringido configurable para impedir la ejecucin local de cdigo potencialmente malicioso.

En sistemas de servidor: En la parte del servidor, Java es ms popular que nunca, desde la aparicin de la especificacin de Servlets (son objetos que corren dentro del contexto de un contenedor de servlets) y JSP (Java Server Pages) Los servlets y las JSPs supusieron un importante avance ya que: El API de programacin es muy sencilla, flexible y extensible. Los servlets no son procesos independientes (como los CGIs) y por tanto se ejecutan dentro del mismo proceso que la JVM mejorando notablemente el rendimiento y reduciendo la carga computacional y de memoria requeridas. Las JSPs son pginas que se compilan dinmicamente (o se pre-compilan previamente a su distribucin) de modo que el cdigo que se consigue una ventaja en rendimiento substancial frente a muchos lenguajes interpretados.

En aplicaciones de escritorio Hoy en da existen multitud de aplicaciones grficas de usuario basadas en Java. El entorno de ejecucin Java (JRE) se ha convertido en un componente habitual en los PC de usuario de los sistemas operativos ms usados en el mundo. Adems, muchas aplicaciones Java lo incluyen dentro del propio paquete de la aplicacin de modo que se ejecuten en cualquier PC.

BIBLIOGRAFIA http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java.

http://elvex.ugr.es/decsai/java/pdf/2B-Java.pdf

http://www.monografias.com/trabajos/lengprog/lengprog.shtml.

You might also like