01 Que Es Java

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS

ANALISTA PROGRAMADOR UNIVERSITARIO


FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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.

Página 1 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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

Página 2 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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, Objective C, 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

Página 3 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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.

Página 4 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

• 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

Página 5 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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 toda la 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.

Página 6 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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.

Página 7 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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 diciembre de 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

Página 8 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

➢ 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.

Página 9 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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.

Página 10 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

➢ 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 los peores 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

Página 11 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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

Página 12 Mg. Ing. Ariel Alejandro Vega


PROGRAMACIÓN VISUAL – PROGRAMACIÓN ORIENTADA A OBJETOS
ANALISTA PROGRAMADOR UNIVERSITARIO
FACULTAD DE INGENIERÍA
Universidad Nacional de Jujuy
LA TECNOLOGÍA JAVA

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).

Página 13 Mg. Ing. Ariel Alejandro Vega

También podría gustarte