Breve Historia de Java
Breve Historia de Java
GRUPO: A
Java, su historia, ediciones, versiones y caractersticas comoplataforma y lenguaje de programacin Publicado por Gastn el 10/10/2007 en Java - Nivel Bsico Resumen Este artculo pretende ser una lectura sobre los conceptos bsicos, la historia y las diferentes versiones y ediciones disponibles de Java. Intenta acercar al programador, y al interesado en estas tecnologas, a conocer con mayor profundidad lo que representa el mundo de Java. Tabla de contenidos Qu es Java? Caractersticas de Java. El recolector de basura. La plataforma virtual Java. El lenguaje de programacin Java Otras observaciones Cmo surge Java? Historia de la tecnologa Java Primeros proyectos en que se aplic Java Resurgimiento de Java en cdigo abierto Cules son las diferencias entre JRE y SDK?Qu ediciones de Java tenemos a nuestra disposicin? Versiones de Java IDE's Qu es Java? Java es toda una tecnologa orientada al desarrollo de software con el cual podemos realizar cualquier tipo de programa. Hoy en da, la tecnologa 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 mviles tambin hay una gran acogida para este lenguaje. La tecnologa Java est compuesta bsicamente por 2 elementos: el lenguaje Java y su plataforma. Con plataforma nos referimos a la mquina virtual de Java (Java Virtual Machine).Java tambin es un lenguaje de programacin. En la actualidad es un lenguaje muy extendido y cada vez cobra ms importancia tanto en el mbito de Internet como en la informtica en general. Est desarrollado por la compaa Son Microsystems con gran dedicacin y siempre enfocado a cubrir las necesidades tecnolgicas ms punteras. Caractersticas de Java Una de las principales caractersticas 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 tenan que hacer un programa para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc. Esto lo consigue porque se ha creado una Mquina de Java para cada sistema que hace de puente entre el sistema Operativo y el programa de Java y posibilita que este ltimo se entienda perfectamente. 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 desarrollndose incluso para distintos tipos de dispositivos adems del ordenador como mviles, agendas y en general para cualquier "cosa" que se le ocurra a la industria. Lo que favoreci el crecimiento y difusin del lenguaje Java es su capacidad de que el cdigo funcione sobre cualquier plataforma de software y hardware. Esto significa que nuestro mismo programa escrito para Linux puede ser ejecutado en Windows sin ningn problema. Adems 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 )... elrealizarlo para
cada combinacin posible sera una magna obra de Ingeniera, si utiliza Java puede concentrar sus esfuerzos nicamente en un producto, y debido a que existen diversos JRE: Para Linux, Solaris, Windows y otros sistemas operativos, deja los detalles especficos 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 aadida de tener que administrar la memoria solicitada dinmicamente de forma manual: En C++, el desarrollador puede asignar memoria en una zona conocida como heap (montculo) 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 aplicacin cuando en realidad no es as. As, un programa mal diseado podra consumir una cantidad desproporcionada de memoria. Adems, si una misma regin de memoria es desalojada dos veces el programa puede volverse inestable y llevar a un eventual cuelgue. No obstante, se debe sealar que C++ tambin permite crear objetos en la pila de llamadas de una funcin o bloque, de forma que se libere la memoria (y se ejecute el destructor del objeto) de forma automtica al finalizar la ejecucin de la funcin o bloque. En Java, este problema potencial es evitado en gran medida por el recolector automtico de basura (o automtica 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 (que, desde un punto de vista de bajo nivel es una direccin 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 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++.La recoleccin de basura de Java es un proceso prcticamente invisible al desarrollador. Es decir, el programador no tiene conciencia de cundo la recoleccin de basura tendr lugar, ya que sta no tiene necesariamente que guardar relacin con las acciones que realiza el cdigo fuente. Debe tenerse en cuenta que la memoria es slo uno de los muchos recursos que deben ser gestionados. La plataforma virtual Java 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").La plataforma Java consta de las siguientes partes: * El lenguaje de programacin, mismo.* La mquina virtual de Java o JRE, que permite la portabilidad en ejecucin.* El API Java, una biblioteca estndar para el lenguaje. El lenguaje de programacin Java
El lenguaje es parecido a C y C++, aunque su modelo de objetos es ms sencillo, y fue influenciado tambin por Smalltalk y Eiffel. El lenguaje mismo se inspira en la sintaxis de C++, pero su funcionamiento es ms similar al de Smalltalk que a ste. Incorpora sincronizacin y manejo de tareas en el lenguaje mismo (similar a Ada) e incorpora interfaces como un mecanismo alternativo a la herencia mltiple de C++.Los programas en Java generalmente son compilados a un lenguaje intermedio llamado bytecode, que luego son interpretados por una mquina virtual (JVM). Esta ltima sirve como una plataforma de abstraccin entre la mquina y el lenguaje permitiendo que se pueda "escribir el programa una vez, y correrlo en cualquier lado. Usual mente se usa un compilador JIT. Tambin 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 tecnologa llamada JSP (similar a otras tecnologas del lado del servidor como ASP de Microsoft o PHP), se hizo muy fcil escribir pginas dinmicas para sitios de Internet. Sumado a JSP la tecnologa de JavaBeans, permita adaptar al mundo web el patrn MVC (modelo-vista-controlador) que ya se haba aplicado con xito a interfaces grficas. Java lleg a ser extremadamente popular cuando Sun Microsystems introdujo la especificacin J2EE (Java 2Enterprise Edition). Este modelo permite, entre otras cosas, lograr una separacin entre la presentacin de los datos al usuario (JSP o Applets), el modelo de datos (EJB), y el control (Servlets). Enterprise Java Beans (EJB) es una tecnologa de objetos distribuidos que pudo lograr el sueo de muchas empresas como Microsoft e IBM de crear una plataforma de objetos distribuidos con un monitor de transacciones. Con este nuevo estndar, empresas como BEA, IBM, Sun Microsystems, Oracle y otros crearon nuevos "servidores de aplicaciones" que tuvieron gran acogida en el mercado. Adems de programas del servidor, Java permite escribir programas de interfaz grfica o textual. Tambin 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 evolucin de las diferentes versiones, no slo se han producido cambios en el lenguaje, sino que se han producido cambios mucho ms importantes en sus bibliotecas asociadas, que han pasado de unos pocos cientos en Java 1.0, a ms de tres mil en Java 5.0. En particular, se han aadido APIs completamente nuevas, tales como Swing y Java2D. Cmo surge Java? Historia de la tecnologa Java En los primeros aos de la dcada de los noventa, Sun Microsystems decidi intentar introducirse en el mercado de la electrnica de consumo y desarrollar programas para pequeos dispositivos electrnicos. Tras unos comienzos dudosos, Sun decidi crear una filial, denominada First Person Inc., para dar margen de maniobra alequipo responsable del proyecto. La tecnologa Java se cre como una herramienta de programacin en una pequea operacin secreta y annima denominada "the Green Project" en Sun Microsystems en el ao 1991.El equipo secreto ("Green Team"), compuesto por trece personas y dirigido por James Gosling, se encerr en una 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 informtica. Su
conclusin inicial fue que al menos en parte se tendera hacia la convergencia de los dispositivos digitales y los ordenadores. El resultado fue un lenguaje de programacin que no dependa de los dispositivos denominado "Oak" (roble en ingls).Entonces inicialmente Java se llam Oak, aunque tuvo que cambiar de denominacin, 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 cmo poda contribuir este nuevo lenguaje al futuro de los dispositivos digitales, el equipo desarroll un controlador de dispositivos de mano para uso domstico destinado al sector de la televisin digital por cable. Por desgracia, la idea result ser demasiado avanzada para el momento y el sector de la televisin digital por cable no estaba listo para el gran avance que la tecnologa Java les ofreca. Pero poco tiempo despus Internet estaba listo para la tecnologa Java y, justo a tiempo para su presentacin en pblico en 1995, el equipo pudo anunciar que el navegador Netscape Navigator incorporara la tecnologa Java. Java fue diseado como software para dispositivos electrnicos de consumo. Curiosamente, todo este lenguaje fue diseado antes de que diese comienzo la era World Wide Web, puesto que fue diseado para dispositivos electrnicos como calculadoras, microondas y la televisin interactiva. Tres de las principales razones que llevaron a crear Java son: 1. Creciente necesidad de interfaces mucho ms cmodas e intuitivas que los sistemas de ventanas que proliferaban hasta el momento.2. Fiabilidad del cdigo y facilidad de desarrollo. Gosling observ que muchas de las caractersticas que ofrecan C oC++ aumentaban de forma alarmante el gran coste de pruebas y depuracin. Por ello en los sus ratos libres cre un lenguaje de programacin donde intentaba solucionar los fallos que encontraba en C++.3. Enorme diversidad de controladores electrnicos. Los dispositivos electrnicos se controlan mediante la utilizacin de microprocesadores de bajo precio y reducidas prestaciones, que varan cada poco tiempo y que utilizan diversos conjuntos de instrucciones. Java permite escribir un cdigo comn para todos los dispositivos. Por todo ello, en lugar de tratar nicamente de optimizar las tcnicas de desarrollo y dar por sentada la utilizacin 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 programacin lo ms sencillo posible, con el objeto de que se pudiese adaptar con facilidad a cualquier entorno de ejecucin. Basndose en el conocimiento y estudio de gran cantidad de lenguajes, este grupo decidi recoger las caractersticas esenciales que deba tener un lenguaje de programacin moderno y potente, pero eliminando todas aquellas funciones que no eran absolutamente imprescindibles. Primeros proyectos en que se aplic Java El proyecto Green fue el primero en el que se aplic Java, y consista en un sistema de control completo de los aparatos electrnicos 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 representacin de la casa de forma animada y el control se llevaba a cabo mediante una pantalla sensible al tacto. En el sistema apareca ya Duke, la actual mascota de Java. Ms tarde Java se aplic a otro proyecto denominado VOD (Video On
Demand) en el que se empleaba como interfaz para la televisin interactiva que se pensaba iba a ser el principal campo de aplicacin de Java. Ninguno deestos proyectos se convirti nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java primitivo. Una vez que en Sun se dieron cuenta de que a corto plazo la televisin interactiva no iba a ser un gran xito, instaron a First Person a desarrollar nuevas estrategias que produjeran beneficios. Entre ellas se encontraba la aplicacin de Java a Internet, la cual no se consider productiva en ese momento. Resurgimiento de Java Aunque muchas de las fuentes consultadas sealan 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 podra llegar a ser el campo adecuado para disputar a Microsoft su primaca en el terreno del software, y vio en Oak el instrumento idneo para llevar a cabo estos planes. Para poder presentarlo en sociedad se tuvo que modificar el nombre de este lenguaje de programacin y se tuvo que realizar una serie de modificaciones de diseo para poderlo adaptar al propsito mencionado. As Java fue presentado en sociedad en agosto de 1995.Algunas de las razones que llevaron a Bill Joy a pensar que Java podra llegar a ser rentable son:* Java es un lenguaje orientado a objetos: Esto es lo que facilita abordar la resolucin de cualquier tipo de problema.* Es un lenguaje sencillo, aunque sin duda potente.* La ejecucin del cdigo 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 operacin le sea permitida de forma explcita. De este modo, los datos del usuario quedan a salvo de la existencia de virus escritos en Java. La ejecucin segura y controlada del cdigo Java es una caracterstica nica, que no puede encontrarse en ninguna otra tecnologa.* Es totalmente multiplataforma: Es un lenguaje sencillo, por lo que el entorno necesario para su ejecucin es de pequeo tamao y puede adaptarse incluso al interior de un navegador. Java en cdigo abierto Java se ha convertido en un lenguaje con una implantacin 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 evolucin basada en un comit en el que participen todos los implicados no es suficiente y la comunidad demandaba desde hace tiempo la liberacin de las APIs y libreras bsicas 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. Compromiso de Sun Microsystems con el cdigo abierto. La importancia del cdigo abierto en relacin con Java puede verse entre otras cosas, en que el presidente y CEO deSun, Jonathan Schwartz, ha retado a la compaa a que ofrezca cdigo abierto para todo el software que produce Sun (fuente), Sun ya hace mucho tiempo que empez a apostar por el cdigo abierto cuando liber Star Office(Llamado ahora OpenOffice). Sun ha aportado ms lneas de cdigo abierto que cualquier otra organizacin
muchas, muchas ms extensiones.J2EE es un grupo de especificaciones diseadas por Sun que permiten la creacin de aplicaciones empresariales, esto sera: acceso a base de datos (JDBC), utilizacin de directorios distribuidos (JNDI), acceso a mtodos remotos(RMI/CORBA), funciones de correo electrnico (JavaMail), aplicaciones Web(JSP y Servlets)...etc. Aqu es importante notar que J2EE es solo una especificacin, esto permite que diversos productos sean diseados alrededor de estas especificaciones algunos son Tomcat y Weblogic ; la especificacin ms reciente de Sun esJ2EE 1.4, la cual esta conformada por: JSP 2.0 ,Servlet 2.4, EJB 2.1 y Conector 1.5 entre otros API's, los detalles se encuentran en http://java.sun.com/j2eeAunque varios productos Java estn diseados alrededor de estas especificaciones, no todos cumplen con el estndar completo, esto es, Tom cat solo emplea cumple las especificaciones de JSP y Servlets, sin embargo, existen productos como Websphere y algunos otros "Java Application Servers" que son considerados "Fully J2EECompliant" , en otras palabras, cumplen con todas las especificaciones definidas por Sun.Sun ofrece una implementacin de TODAS estas especificaciones llamada J2EE SDK , a pesar que el J2EE SDKes una implementacin, esta es solo una muestra ofrecida por Sun para utilizar las funcionalidades de las especificaciones J2EE, aunque funcionara en un Sistema de Produccin su diseo es poco escalable adems que su licencia lo prohibe. Java Card es la versin de Java enfocada a aplicaciones que se ejecutan en tarjetas de crdito con chip. Es una versin 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 pequea mquina virtual Java (JVM) y en ellas se pueden cargar dinmicamente aplicaciones desarrolladas especficamente para este entorno. Versiones de Java Java 1Java 1.0 (Enero 1996) - 8 paquetes, 212 clases -Primera versin pblica. La presin hizo que se hiciera pblica demasiado pronto, lo cual significa que el diseo del lenguaje no es demasiado bueno y hay montones de errores. Respecto a seguridad, es restrictivo por defecto, no dejando hacer demasiado al cdigo no fiable. Java 1.1 (Marzo 1997) - 23 paquetes, 504 clases -Mejoras de rendimiento en la JVM, nuevo modelo de eventos en AWT, clases anidadas, serializacin de objetos, API de JavaBeans, archivos jar, internacionalizacin, API Reflection (Reflexin), JDBC (Java Data base Connectivity), RMI (Remote Method Invocation). Se aade la firma del cdigo y la autentificacin. Es la primeraversin lo suficientemente estable y robusta. Java 2Java 1.2 (Diciembre 1998 ) - 59 paquetes, 1520 clases -JFC (Swing), Drag and Drop, Java2D, Corba, API Collections. Se producen notables mejoras a todos los niveles. Para enfatizar esto Sun lo renombra como "Java 2". El JDK (Java Development Kit) se renombra como SDK(Software Development Kit). Se divide en J2SE, J2EE y J2ME.Java 1.3 (Abril 2000) - 77 paquetes, 1595 clases -Orientada sobre todo a la resolucin de errores y a la mejora del rendimiento; se producen algunos cambios menores como la inclusin de JNDI (Java Naming and Directory Interface) y la API Java Sound. Tambin incluye un nuevo compilador de alto rendimiento JIT (Just In Time).Java 1.4 (2002) - 103 paquetes, 2175 clases Tambin conocido como Merlin, es la versin actual. Mejora notablemente el rendimiento y aade entre otros soporte de expresiones regulares, una nueva
API de entrada/salida de bajo nivel (NIO, New I/O), clases para el trabajo con Collections, procesado de XML; y mejoras de seguridad como el soporte para la criptografa mediante las Java Cryptography Extension (JCE), la inclusin de la Java Secure Socket Extension (JSSE) y el Java Authentication and Authorization Service (JAAS).Java 1.5 (Octubre 2004) - 131 paquetes, 2656 clases -Tambin conocido como Tiger, renombrado por motivos de marketing como Java 5.0.Incluye como principales novedades: tipos genricos (generics), autoboxing / unboxing conversiones impliticasentre tipos primitivos y los wrappers correspondientes, Enumerados, Bucles simplificados, printf, Funciones con nmero de parmetros variable, Metadatos en clases y mtodos. Java 1.6 (diciembre de 2006) ?Tambin conocido como 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 Java script 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 enla interfaz grfica y en el rendimiento CONCLUSION Actualmente, luego de cumplidos 10 aos de existencia, la plataforma Java ha atrado a cerca de 4 millones de desarrolladores de software, se utiliza en los principales sectores de la industria de todo el mundo y est presenten un gran nmero de dispositivos, ordenadores y redes de cualquier tecnologa de programacin. De hecho, su versatilidad y eficiencia, la portabilidad de su plataforma y la seguridad que aporta, la han convertido en la tecnologa ideal para su aplicacin a redes, de manera que hoy en da, ms de 2.500 millones de dispositivos utilizan la tecnologa Java.* Ms de 700 millones de ordenadores* 708 millones de telfonos mviles y otros dispositivos de mano* 1000 millones de tarjetas inteligentes