Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 1 Mg. Ing. Ariel Alejandro Vega QUE ES JAVA Es una tecnología que incluye un lenguaje de programación y una plataforma de desarrollo La plataforma Java Por definición, una plataforma es el ambiente hardware o software sobre el cual se puede ejecutar un programa. La mayoría de las plataformas actuales se pueden describir como una combinación de un sistema operativo y su hardware subyacente; por ejemplo, un pc con su sistema operativo Windows se denomina comúnmente plataforma Windows, una notebook con una distribución Linux se denomina plataforma Linux y un celular con Android se conoce como plataforma Android. La plataforma Java difiere respecto de las plataformas mencionadas en el párrafo anterior debido a que es una plataforma software que se ejecuta sobre las prestaciones que brinda otra plataforma que gestiona el hardware (denominada plataforma base) (observe la figura 1): Figura 1. Plataforma Java Esto significa que se puede montar la plataforma Java sobre cualquier plataforma base. De la Figura 1 se puede concluir que el objetivo de la plataforma Java consiste en poder ejecutar sobre la plataforma base los programas realizados con el lenguaje Java. La figura 1 muestra los componentes principales de la plataforma Java: 1. La máquina virtual de Java (Java Virtual Machine, JVM) 2. La Interfaz de Programación de Aplicaciones Java (Java Application Programming Interfaces, Java API) La JVM es un intérprete. Los intérpretes son programas que permiten traducir el código creado por un programador en un lenguaje de alto nivel a código máquina. Pero, la JVM es particularmente especial. En lugar de traducir código fuente, traduce un tipo de código denominado bytecode al código máquina de la plataforma base al momento de ejecutar la aplicación. El funcionamiento de la JVM y su asociación con el concepto multiplataforma se describirán con mayor profundidad más adelante. La API Java es una gran colección de componentes software que proveen muchas capacidades útiles para el desarrollador. Está agrupada dentro de bibliotecas (libraries) conformadas por clases e interfaces (conceptos que se desarrollarán en detalle más adelante). Estas bibliotecas se conocen con el nombre de paquetes (packages) El lenguaje de programación Java Es un lenguaje de programación de alto nivel. Su creador James Gosling lo define en base a sus características: sencillo, orientado a objetos, distribuido, interpretado, robusto, seguro, independiente de las arquitecturas, portable, eficaz, multitarea y dinámico. Antes de poder describir en detalle cada una de estas características es conveniente indicar como funciona el proceso de desarrollo de una aplicación Java. PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 2 Mg. Ing. Ariel Alejandro Vega En el lenguaje de programación Java, todo el código fuente se escribe en archivos de texto plano con la extensión .java. Estos archivos fuente son entonces compilados por una herramienta de la plataforma denominada compilador javac guardando el resultado en archivos con el mismo nombre, pero con extensión .class. Un archivo .class no contiene código nativo para el procesador de la plataforma base, sino que contiene un tipo de código denominado bytecode (lenguaje binario intermedio). Los bytecode se pueden considerar el lenguaje máquina de la JVM, debido a que la JVM es la encargada de traducir los bytecode en el código máquina del ordenador, tal como se puede ver en la figura 2. Figura 2. Proceso de ejecución de una aplicación Java Para realizar esta operación, la plataforma cuenta con una herramienta denominada java launcher, la cual es la encargada de crear una instancia de la JVM y ejecutar la aplicación en esa instancia. El proceso de ejecución de una aplicación java se denomina pseudo interpretado, debido a que existe una primera etapa de compilación a código intermedio (bytecode) y luego una segunda etapa donde se interpreta el código intermedio mediante la JVM. Esta forma de ejecución permite utilizar una misma aplicación (los bytecode) en diferentes sistemas operativos; siempre y cuando ese sistema operativo disponga de la JVM tal como lo expresa la figura 3. Figura 3. A través de la JVM, la misma aplicación es capaz de ser ejecutada en diferentes plataformas → Java es multiplataforma PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 3 Mg. Ing. Ariel Alejandro Vega Algunas JVM, tales como Java SE HotSpot (la versión creada por Oracle) incorporan tareas adicionales en tiempo de ejecución que aumentan el rendimiento de la aplicación. Entre estas tareas se incluyen encontrar cuellos de botella en el rendimiento y volver a recompilar (en código nativo) secciones de código frecuente. Características de Java • Sencillo: La sintaxis de Java es similar a la de los lenguajes C y C++, pero evita características semánticas que los vuelven complejos, confusos y poco seguros: ✓ En Java sólo existen tres tipos primitivos: los numéricos (enteros y reales), el tipo carácter y el tipo booleano. Todos los tipos numéricos están firmados (esto significa que a pesar de no ser objetos representan el mismo tipo y alcance en cualquier plataforma que se ejecute) ✓ En Java, los arreglos, las matrices y las cadenas de caracteres son objetos, lo que facilita su creación y manipulación. ✓ En Java, el programador no tiene que preocuparse de la gestión de la memoria. Un sistema denominado "el recolector de basura" (garbage collector) se encarga de asignar la memoria necesaria a la hora de crear objetos y de liberarla cuando estos ya no se referencian en el dominio del programa (cuando ninguna variable referencia al objeto). ✓ En Java, no existen preprocesadores ni archivos de encabezamiento. Las instrucciones “define” de C se sustituyen por constantes en Java y las instrucciones “typedef” de C se reemplazan por clases. ✓ En C y C++, se definen estructuras y uniones para representar tipos de datos complejos, mientras que, en Java, se crean instancias de clases para representar tipos de datos complejos. ✓ En C++, una clase puede heredar varias clases, lo que puede generar problemas de ambigüedad. Con el fin de evitar estos problemas, Java sólo autoriza la herencia simple pero aporta un mecanismo de simulación de herencia múltiple mediante la implementación de una o varias interfaces. ✓ En Java no existe la famosa instrucción goto, simplemente porque aporta una complejidad a la lectura de los programas y porque a menudo se puede prescindir de esta instrucción escribiendo un código más limpio. Además, en C y C++ se suele utilizar el goto para salir de bucles anidados. En Java, se utilizan las instrucciones break y continue, que permiten salir de uno o varios niveles de anidamiento. ✓ En Java, no es posible sobrecargar los operadores, para evitar problemas de incomprensión del programa. Se preferirá crear clases con métodos y variables de instancia. Y, para terminar, en Java, no hay punteros sino referencias a objetos o celdas de un arreglo o matriz (referenciadas por su índice), simplemente porque la gestión de punteros es fuente de muchos errores en los programas C y C++. • Orientado a objetos: Salvo los tipos de datos primitivos, todo en Java es concebido como un objeto. Y, además, Java se ha provisto de clases incorporadas que encapsulan los tipos primitivos (los wrappers). Por lo tanto, Java es un lenguaje de programación orientado a objetos y diseñado según el modelo de otros lenguajes (C++, Eiffel, SmallTalk, ObjectiveC, Cedar/Mesa, Ada, Perl), pero sin sus defectos. Las ventajas de la programación orientada a objetos de forma resumida son: un mejor dominio de la complejidad (dividir un problema complejo en una serie de pequeños problemas), una reutilización más sencilla, y una mayor facilidad de corrección y de evolución. Java PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 4 Mg. Ing. Ariel Alejandro Vega estándar está dotado de un conjunto de clases que permiten crear y manipular todo tipo de objetos (interfaz gráfica, acceso a la red, gestión de entradas/salidas...). • Distribuido: Java implementa los protocolos de red estándar, lo que permite desarrollar aplicaciones cliente/servidor en arquitecturas distribuidas, con el fin de invocar tratamientos y/o recuperar datos de máquinas remotas. Con este fin, Java estándar cuenta con API´s que permiten crear aplicaciones cliente/servidor distribuidas. • Interpretado: La ejecución de un programa Java se realiza mediante el intérprete JVM. Esto hace que sea más lento. Sin embargo, conlleva también sus ventajas, en particular el hecho de no tener que recompilar un programa Java de un sistema a otro porque basta, para cada uno de los sistemas, con tener su propia máquina virtual. Debido a que Java es un lenguaje interpretado, no es necesario editar los enlaces (obligatorio en C++) antes de ejecutar un programa. En Java, por lo tanto, sólo hay dos etapas, la compilación y la ejecución. La máquina virtual se encarga de la operación de edición de enlaces en tiempo de ejecución del programa. • Robusto: Java es un lenguaje fuertemente tipado y estricto. Por ejemplo, la declaración de las variables debe ser obligatoriamente explícita en Java. Se verifica el código (sintaxis, tipos) en el momento de la compilación y también en el momento de la ejecución (gestión de excepciones), lo que permite reducir los errores y los problemas de incompatibilidad de versiones. Además, Java se encarga totalmente de la gestión de las referencias de los objetos y el programador no tiene manera de acceder a ellos, lo que evita la sobreescritura accidental de datos en memoria y la manipulación de datos corruptos. • Seguro: Dados los campos de aplicación de Java, es muy importante que haya un mecanismo que vigile la seguridad de las aplicaciones y los sistemas. El motor de ejecución de Java (Java Runtime Environment, JRE) es el encargado de esta tarea. El JRE se apoya en particular en el archivo de texto java.policy, que contiene información relativa a la configuración de la seguridad. Si bien el JRE se describirá en mayor detalle cuando se detallen los componentes de la plataforma Java, se puede adelantar que es el encargado de gestionar el consumo de memoria de los objetos, y no el compilador, como es el caso en C++. Puesto que en Java no hay punteros sino referencias a objetos, el código compilado contiene identificadores sobre los objetos que luego el JRE traduce en direcciones de memoria: esta parte es totalmente opaca para los desarrolladores con el objetivo de controlar que no se generen ni manipulen punteros en el espacio de memoria donde se ejecuta la aplicación, y que tampoco se presenten violaciones de acceso. Para lograr esto, en el momento de la ejecución de un programa Java, el JRE utiliza un proceso denominado ClassLoader que realiza la carga del bytecode contenido en las clases Java y a continuación, se analiza el bytecode. Como Java es un lenguaje distribuido, se implementan los principales protocolos de acceso a la red (FTP, HTTP, Telnet...). Se puede, pues, configurar el JRE con el fin de controlar el acceso a la red de sus aplicaciones: ➢ Prohibir todos los accesos. ➢ Autorizar el acceso solamente a la máquina anfitriona de donde procede el código de aplicación. Es la configuración por defecto para los applets Java. ➢ Autorizar el acceso a máquinas en la red externa (más allá del firewall), en el caso de que el código de la aplicación también proceda de una máquina anfitriona de la red externa. ➢ Autorizar todos los accesos. Es la configuración por defecto para las aplicaciones de tipo cliente pesado. PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 5 Mg. Ing. Ariel Alejandro Vega • Independiente de las arquitecturas: El compilador Java no produce un código específico para un tipo de arquitectura. De hecho, el compilador genera un bytecode que es independiente de cualquier arquitectura, de todo sistema operativo y de todo dispositivo de gestión de la interfaz gráfica de usuario (GUI). La ventaja de este bytecode reside en su fácil interpretación o transformación dinámica en código nativo para aumentar el rendimiento. Basta con disponer de la máquina virtual específica de la plataforma base para hacer funcionar un programa Java. Esta última se encarga de traducir el bytecode a código nativo. • Portable: Java es portable gracias a que se trata de un lenguaje interpretado (haciendo referencia al proceso de interpretar bytecode). Además, a diferencia del lenguaje C y C++, los tipos de datos primitivos (numéricos, carácter y booleano) de Java tienen el mismo tamaño, sea cual sea la plataforma en la cual se ejecuta el código. Las bibliotecas de clases estándar de Java facilitan la escritura de código fuente que, a continuación, se puede desplegar en diferentes plataformas sin adaptación. • Eficaz: Incluso si un programa Java es interpretado, lo cual es más lento que un programa nativo, Java pone en marcha un proceso de optimización de la interpretación del código, llamado JIT (Just In Time) o HotSpot. Este proceso compila el bytecode Java en código nativo en tiempo de ejecución, lo que permite alcanzar el mismo rendimiento que un programa escrito en lenguaje C o C++. • Multitarea: Java permite desarrollar aplicaciones que ponen en marcha la ejecución simultánea de varios hilos (o procesos ligeros). Esto permite efectuar simultáneamente varias tareas, con el fin de aumentar la velocidad de las aplicaciones, ya sea compartiendo el tiempo del CPU o repartiendo las tareas entre varios procesadores. • Dinámico: En Java, el programador no tiene que editar los vínculos (obligatorio en C y C++). Por lo tanto, es posible modificar una o varias clases sin tener que efectuar una actualización de estas modificaciones para el conjunto del programa. La comprobación de la existencia de las clases se realiza en tiempo de compilación y la llamada al código de estas clases sólo se hace en el momento de la ejecución del programa. Este proceso permite disponer de aplicaciones más ligeras de tamaño en memoria. Componentes de la Plataforma Java PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 6 Mg. Ing. Ariel Alejandro Vega El esquema precedente representa al lenguaje Java Stándar Editión versión 8 y muestra los diferentes componentes de la plataforma Java. Lo más destacable de este esquema radica en que clasifica la funcionalidad de la plataforma: • El JRE (Java Runtime Environment) permite ejecutar aplicaciones Java en el ordenador. Básicamente lo que hace es instalar la JVM, la API Java (repartida en tres categorías: API básicas, API de acceso a los datos y de integración con lo existente y API de gestión de la interfaz de las aplicaciones con el usuario) y las herramientas de despliegue de aplicaciones necesarias para asegurar que cualquier aplicación Java se pueda ejecutar en la plataforma base. A partir de la versión 8 se incorporan los perfiles compactos (compact profiles) los cuales permiten el uso reducido de memoria para las aplicaciones que no requieren todala plataforma Java. • El JDK (Java Development Kit) incluye todos los componentes del JRE y agrega el lenguaje de programación Java y un conjunto de herramientas de ayuda que permiten al desarrollador crear aplicaciones Java. Ediciones de la Plataforma Java La configuración de una plataforma Java afecta fundamentalmente los servicios que esta ofrece, las herramientas adicionales que incorpora y también aspectos menos visibles, tales como el modo de funcionamiento de la JVM. De acuerdo con la documentación actual de Oracle se puede distinguir las siguientes cuatro ediciones de Java: • Java SE: conocida como Standard Edition es la edición más difundida de la plataforma Java. Incorpora el JDK, necesario para crear aplicaciones de escritorio con o sin interfaz gráfica de usuario, acceso al sistema de archivos, comunicación a través de redes, concurrencia y otros servicios básicos. • JavaFX: originalmente JavaFX era una alternativa a Java SE para el desarrollo de proyectos de tipo RIA (Rich Internet Applications), con un núcleo más ligero y fácil de distribuir, capacidad de aceleración 3D aprovechando la GPU, servicios avanzados para producción de gráficos y animaciones, y un mecanismo simplificado para el diseño de interfaces de usuario. JavaFX forma parte de Java SE desde la versión 7 de dicha edición de la plataforma (y se eliminó de la misma a partir de la versión 13) • Java EE: denominada Enterprise Edition de la plataforma Java, es la versión dirigida al desarrollo de soluciones software que se ejecutarán en un servidor de aplicaciones. A las capacidades de Java SE, la edición EE agrega servicios para gestionar la persistencia de objetos en bases de datos, hacer posible la invocación remota de métodos, crear aplicaciones con interfaz de usuario web, etc. • Java ME: Micro Edition, está enfocada a la creación de programas que se ejecutarán en sistemas con recursos limitados, tales como teléfonos móviles, electrodomésticos y dispositivos de domótica o equipos para entornos empotrados como la Rasperry Pi y similares. Las ediciones de Java son en realidad especificaciones abstractas de los servicios y modos de funcionamiento de los distintos elementos de la plataforma. Existen múltiples implementaciones de dichas especificaciones. Por ejemplo, se puede volver a destacar HotSpot, la implementación de Oracle de la JVM, existiendo implementaciones alternativas de esa misma especificación como por ejemplo Open JDK o la de IBM. Estos temas se retomarán más adelante. javascript:; PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 7 Mg. Ing. Ariel Alejandro Vega Historia de Java Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road; en Menlo Park; para su desarrollo. El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Green tras descubrir que Oak era una marca comercial registrada para adaptadores de tarjetas gráficas, y finalmente se renombró como Java. No está claro si el término Java es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus diseñadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo, Just Another Vague Acronym ("sólo otro acrónimo ambiguo más"). La hipótesis que más fuerza tiene es aquella que indica que Java debe su nombre a un tipo de café disponible en una cafetería cercana del lugar donde se reunía el equipo; de ahí que el icono de Java sea una taza de café caliente. Un pequeño signo que da fuerza a esta teoría es que los cuatro primeros bytes (el número mágico) de los archivos.class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teorías, el nombre fue sacado al parecer de una lista aleatoria de palabras. El objetivo era implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratónica de tres días el equipo conformado por John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt reorientó la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic propiciaría que Internet se convirtiese en un medio interactivo, como el que pensaban era la televisión por cable. Naughton creó entonces un prototipo de navegador denominado WebRunner, que más tarde sería conocido como HotJava. https://es.wikipedia.org/wiki/Set-top_box https://es.wikipedia.org/wiki/1991 https://es.wikipedia.org/wiki/James_Gosling https://es.wikipedia.org/wiki/C%2B%2B https://es.wikipedia.org/wiki/Mosaic https://es.wikipedia.org/wiki/HotJava PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 8 Mg. Ing. Ariel Alejandro Vega En 1994, realizaron una demostración de HotJava y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, aunque recién el 23 de mayo de 1995, durante las conferencias de SunWorld, se liberó al público tanto Java como HotJava. El acontecimiento fue anunciado por John Gage, en ese entonces, director científico de Sun Microsystems. El acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por parte de Marc Andreessen, vicepresidente ejecutivo de Netscape, de que Java sería soportado en sus navegadores. El 9 de enero del año siguiente, 1996, Sun fundó el grupo empresarial JavaSoft para que se encargase del desarrollo tecnológico. Dos semanas más tarde la primera versión de Java fue publicada. La promesa inicial de Gosling era que Java cumple la premisa “Write Once, Run Anywhere” (Escríbelo una vez, ejecútalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de ejecución (la JVM) ligero y gratuito para las plataformas más populares, de forma que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma. El entorno de ejecución era relativamente seguro y los principales navegadores web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las páginas web. Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un enorme incremento en el número de clases y paquetes que componen la biblioteca estándar. Desde J2SE 1.4, la evolución 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 Especificación del Lenguaje Java. Los cambios en los JLS son gestionados en JSR 901. A continuación, se nombran las diferentes versiones liberadas hasta la fecha de elaboración presente apunte JDK 1.0: 23 de enero de 1996. Primer lanzamiento oficial. JDK 1.1: 19 de febrero de 1997. Incluye un conjunto de funcionalidades importantes • Una reestructuración intensiva del modelo de eventos en las interfaces gráficas de usuario basada en ventanas mediante la API AWT (Abstract Windowing Toolkit) • Incorporación de las clases internas (inner classes) • Definición e implementación el concepto Java Beans • Incorporación de la API JDBC (Java Database Connectivity), para permitir con una alta cohesión y bajo acoplamiento la integración a base de datos. • RMI: una especificación para poder desarrollar aplicaciones remotas con Java. Java 2: esta denominación abarca las siguientes versiones • J2SE 1.2: 8 de diciembrede 1998. El término J2SE introduce el uso de las ediciones de la plataforma Java. De esta manera el término J2SE (Java 2 Platform, Standard Edition) reemplaza a JDK en la liberación de versiones y se formalizan los términos J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro Edition) para indicar que tipo de aplicaciones Java puede realizar con cada edición. También luego será conocida con la palabra clave Playground. Esta edición incluye las siguientes mejoras ➢ La palabra reservada strictfp ➢ Reflexión en la programación ➢ Integración de la API Swing https://es.wikipedia.org/wiki/M%C3%A1quina_virtual_Java https://es.wikipedia.org/wiki/Applet https://es.wikipedia.org/wiki/JDK https://es.wikipedia.org/wiki/Java_SE https://es.wikipedia.org/wiki/Java_Community_Process http://www.jcp.org/en/jsr/detail?id=63 PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 9 Mg. Ing. Ariel Alejandro Vega ➢ Por primera vez se incorpora el compilador JIT (Just in Time) en la JVM. ➢ Java Plug-in ➢ Java IDL, una implementación de IDL (lenguaje de descripción de interfaz) para la interoperatividad CORBA ➢ Collections • J2SE 1.3: 8 de mayo de 2000. Nombre clave Kestrel. Los cambios más notables fueron: ➢ Se incluye el JVM HotSpot ➢ RMI fue cambiado para que se basara en CORBA ➢ JavaSound ➢ Se incluyó JNDI (Java Naming and Directory Interface) oficialmente como parte de las bibliotecas principales de la plataforma. ➢ JPDA (Java Platform Debugger Architecture) • J2SE 1.4: 6 de febrero de 2002. Nombre clave Merlin. Este fue el primer lanzamiento de la plataforma Java desarrollado bajo la JCP (Java Community Process). Introdujeron novedades y cambios notables ➢ Se incluye la palabra reservada assert. ➢ Expresiones reguladas modeladas a la forma en la que se realiza en Perl ➢ Encadenación de excepciones ➢ non-blocking NIO ➢ Logging API ➢ API I/O para la lectura y escritura de imágenes en formatos como JPEG o PNG ➢ Parser XML integrado y procesador XSTL (JAXP) ➢ Seguridad integrada y extensiones criptográficas (JCE, JSSE, JASS) ➢ Se incluye Java Web Start • J2SE 5.0: 30 de setiembre de 2004. Nombre clave Tiger. Opcionalmente numerado como 1.5, se cambió por 5.0 debido a que incorporó un número significativo de nuevas características ➢ Generics: proveen conversión de tipos (type safety) en tiempo de compilación para colecciones y elimina la necesidad de la mayoría de conversión de tipos (type casting) ➢ Metadatos: comúnmente denominados anotaciones, permite a estructuras del lenguaje como las clases o los métodos, ser etiquetados con datos adicionales, que puedan ser procesados posteriormente por utilidades de proceso de metadatos ➢ Autoboxing/unboxing: permite la realización de conversión automática entre tipos primitivos y las clases de envoltura (wrappers) ➢ Enumeraciones: se incorpora la palabra reservada enum para crear una lista ordenada de valores (typesafe). Antes, se podía obtener el mismo resultado utilizando constantes enteras o clases construidas manualmente (enum pattern) ➢ Varangs: permiten declarar métodos cuyo último parámetro permite tener un número variable de argumentos ➢ El blucle for mejorado permite iterar sobre un arreglo o cualquier clase que implemente Iterable y almacenar en una variable el elemento de ese arreglo de manera automática. PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 10 Mg. Ing. Ariel Alejandro Vega Java SE 6: 11 de diciembre de 2006. Palabra clave Mustang. En esta versión, Sun cambió el nombre “J2SE” por Java SE y eliminó el ".0" del número de versión. Los cambios más importantes introducidos en esta versión son • Incluye un nuevo framework y API´s que hacen posible la combinación de Java con lenguajes dinámicos como PHP, Python, Ruby y JavaScript. • Incluye el motor Rhino, de Mozilla, una implementación 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 gráfica y en el rendimiento. Java SE 7: lanzamiento en julio de 2011. Nombre clave Dolphin. Esta versión se trabajó durante mucho tiempo, desde el año 2006 se encontraba en las primeras etapas de planificación • Soporte para XML dentro del propio lenguaje. • Un nuevo concepto de superpaquete. • Soporte para closures. • Introducción de anotaciones estándar para detectar fallos en el software. • No oficiales: ➢ NIO2. ➢ Java Module System. ➢ Java Kernel. ➢ Nueva API para el manejo de Días y Fechas, la cual reemplazará las antiguas clases Date y Calendar. ➢ Posibilidad de operar con clases BigDecimal usando operandos. Java SE 8: marzo de 2014. Esta versión se convirtió en el estándar de uso por la gran mayoría de las empresas por su estabilidad (aunque también favorecida por el hecho de que la siguiente versión demorara 4 años en ser liberada). Resulta ideal para ser usada en el desarrollo de aplicaciones de gestión o sistemas transaccionales y de back end en donde se prima la estabilidad por encima de todo. Cabe destacar que incluye interesantes funcionalidades: ➢ Incorpora de forma completa la biblioteca JavaFX. ➢ Diferentes mejoras en seguridad. ➢ Diferentes mejoras en concurrencia. ➢ Añade funcionalidad para programación funcional mediante expresiones Lambda. ➢ Mejora la integración de JavaScript. ➢ Nuevas API para manejo de fechas y tiempo (date - time). ➢ Se pueden incorporar métodos en las interfaces Java SE 9: lanzada el 21 de septiembre del 2017. A partir de esta versión Oracle ha optado por liberar versiones en base al calendario en lugar de funcionalidades. Por tanto, cada nueva versión se libera cada seis meses y no incluyen un gran volumen de novedades, lo cual no quita que sean importantes. Sus principales aportes son: ➢ Soporte para lenguaje script a través del lenguaje de programación orientado a objetos. ➢ Incorpora API JSON liviana para generar y consumir flujos de datos JSON en forma de documentos. https://es.wikipedia.org/wiki/2006 https://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica) PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 11 Mg. Ing. Ariel Alejandro Vega ➢ Modularización: los módulos permiten la encapsulación en tiempo de compilación, de esta forma se puede restringir el acceso a una serie de paquetes. ➢ Nuevos métodos en las colecciones: esto permite contar con muchas facilidades para crear colecciones inicializadas, por ejemplo el método of() de List, Stream o Map. ➢ Nuevos métodos para gestionar Streams: se destacan os métodos takeWhile(), dropWhile(), iterate() y ofNullable(). Los dos primeros se usan para eliminar o escoger los primeros elementos mientras se cumple una condición, el método iterate() genera una iteración de valores y el método ofNullable() genera un Stream con un elemento si el elemento no es null o vacío. ➢ Se permite agregar métodos privados en las interfaces Java SE 10: lanzada el 20 de marzo del 2018. A partir de esta versión Oracle anuncia que una vez liberada una nueva versión deja de dar soporte a las anteriores. La inferencia de tipos es el principal cambio en esta nueva versión. También ➢ A partir de este momento se puede utilizar var para crear objetos sin necesidad de definir el tipo. ➢ Se incorpora el método copyOf() para crear copias inmutables de List, Set y Map. ➢ Se mejora el garbage collector G1 añadiendo soporte para paralelismo y mejorando el proceso de pausas en lospeores escenarios. ➢ Mejora interna en la sincronización y pausas en los threads Java SE 11: lanzada el 25 de septiembre del 2018. Como era de esperarse, la decisión de Oracle de liberar una nueva versión cada 6 meses provocó que la versión 9 no reemplazara a la 8 por una cuestión de estabilidad; peor aún la versión 10 pasó sin pena ni gloria. Esta versión incorpora dos novedades muy importantes que afecta en todos los aspectos el desarrollo de aplicaciones con tecnología Java: el cambio de licencia y el soporte a largo plazo asegurado para el JDK. ➢ Cambio de licencia: Como se ha comentado previamente el JDK es el kit de desarrollo que permite crear aplicaciones Java. Hasta esta versión se podía descargar desde la página oficial de Oracle. La licencia de todas las versiones anteriores permitía el desarrollo, distribución y ejecución en producción de manera gratuita. A partir de esta versión sigue siendo gratuito el desarrollo, no así la puesta en producción y distribución, debiendo pagar una licencia a Oracle. Si no se desea pagar esta licencia es posible descargar de manera gratuita los archivos fuente de la plataforma y entonces el desarrollador debe compilarlos mediante alguna licencia de uso gratuita. Evidentemente este proceso es complejo para los desarrolladores sin experiencia. Sin embargo, la propia empresa brinda soporte a una comunidad que libera el JDK Open Source para desarrollar, producir y distribuir gratuitamente aplicaciones Java. Esta comunidad se denomina OpenJDK. Dentro de esta misma comunidad existe un subgrupo denominado AdoptOpenJDK cuyo objetivo es justamente facilitar el uso del JDK creado por la comunidad proporcionando versiones compiladas del OpenJDK. ➢ Soporte a largo plazo asegurado: Java 11 es la primera versión del JDK denominado LTS (Long Term Support) mediante el cual Oracle garantiza el soporte y más aún el proceso de actualización durante 3 años, en lugar del soporte anterior de 6 meses a través del pago de la licencia sin ayuda en el proceso de actualización de versión. Si no se desea pagar el soporte quedan como opciones solicitar ayuda a la comunidad de OpenJDK, la PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 12 Mg. Ing. Ariel Alejandro Vega cual pregona que brindará soporte por 4 años. Por otro lado, existen otras comunidades que brindan soporte tales como Stackoverflow. También existe la posibilidad de pagar licencia por el soporte a otras empresas con experiencia en esta tecnología tales como IBM o RedHat. Por otro lado, las novedades que brinda esta versión son ➢ Optimización de la inferencia de tipos: se permite el uso de var en las lambdas permitiendo anotaciones en estos parámetros, aunque no se puede mezclar el uso de var con tipos, ni de var y un tipo vacío. ➢ Se eliminan los paquetes desaconsejados para el desarrollo de aplicaciones remotas bajo CORBA, debido a que en general se suele utilizar los estándares ofrecidos por SOAP o REST. ➢ Se estabiliza el uso del cliente Http dentro de la biblioteca java.net.httpp. Esta opción se estrenó en Java 9 pero no es hasta esta versión que forma parte del JDK. ➢ Ejecución de un programa Java desde el archivo fuente: cuando el programa es pequeño y forma parte de un único archivo fuente se añade la posibilidad de lanzar el programa desde el archivo fuente. ➢ A partir de esta versión las capacidades marcadas como deprecated son desaconsejadas de manera más agresiva, eliminando algunas opciones como por ejemplo el uso de Java web start. Java SE 12: lanzada el 19 de marzo del 2019. Esta no es una versión LTS (debido a que las versiones LTS se brindan cada 3 años; por tanto, la siguiente versión LTS será la 17, que según lo planificado saldrá en setiembre de 2021). Mejoras experimentales: • Expresiones switch que permiten de forma automática el no uso de break Mejoras estables: • Una optimización importante en el rendimiento del garbage collector: denominado Shenandoah, es independiente del tamaño de la memoria. También se ha implementado mejoras en el recolector de basura G1 actual. • Se puede expresar un número de forma compacta con la clase CompactNumberFormat o el método NumberFormat.getCompactNumberInstance() • Teeing Collectors: Los stream proporcionan un flujo de elementos a procesar. En el caso de querer recolectar dos valores de ese flujo requiere usar un reduce que complica el código. Se ha añadido un nuevo colector Collectors.teeing() para enviar un elemento de un stream a dos streams, de forma similar a lo que hace el comando tee en Unix. Java 13: lanzada el 17 de setiembre de 2019. Continúa las mejoras en switch mejorados, se introducen los bloques de texto y se libera JavaFX del JDK. Para considerar al momento de la evaluación: Las nuevas versiones son liberadas cada 6 meses. Busque información sobre las diferencias entre las diferentes versiones superiores hasta llegar a la actual versión estable liberada PUEDEN SER OBJETOS DE MENCIÓN EN LAS EVALUACIONES https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/stream/Collectors.html#teeing%28java.util.stream.Collector,java.util.stream.Collector,java.util.function.BiFunction%29 PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS ANALISTA PROGRAMADOR UNIVERSITARIO FACULTAD DE INGENIERÍA Universidad Nacional de Jujuy LA TECNOLOGÍA JAVA Página 13 Mg. Ing. Ariel Alejandro Vega BIBLIOGRAFÍA • Plataforma Java: https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html • Componentes de la Plataforma Java: https://docs.oracle.com/javase/8/docs/index.html • Características del Lenguaje Java: https://www.oracle.com/technetwork/java/langenv-140151.html • Como aprender a programar en Java 9na Edición. Deitel-Deitel. Pearson Educación, México (2012). https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html https://docs.oracle.com/javase/8/docs/index.html https://www.oracle.com/technetwork/java/langenv-140151.html
Compartir