Logo Studenta

01 Que es Java

¡Este material tiene más páginas!

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

Continuar navegando

Materiales relacionados