Download Tema 07 – Introducción a Java

Document related concepts
no text concepts found
Transcript
Programación Java y
Desarrollo de
Aplicaciones
Modulo 3
Lenguaje de programación Java
Tema 08
Introducción a Java
Índice





¿Qué es Java?
Aspectos generales
Versiones de Java
Enlaces de interés
Bibliografía
¿Qué es Java?


Un lenguaje de programación orientado a objetos,
desarrollado por Sun Microsystems a principios de
los años 90.
La implementación original y de referencia del
compilador, la máquina virtual y las bibliotecas de
clases de Java fueron desarrollados por Sun
Microsystems en 1995. Desde entonces, Sun ha
controlado las especificaciones, el desarrollo y
evolución del lenguaje, si bien otros han
desarrollado también implementaciones alternativas
de estas tecnologías de Sun, algunas incluso bajo
licencias de software libre.
¿Qué es Java?

¿Cuál es el motivo por el que Java se
expande y adquiere tanto éxito?






Orígenes de la informática: movimiento hippy.
Aspectos económicos del desarrollo de software.
Idealismo Vs. Economía. Primeros sistemas
operativos.
Expansión mundial a nivel personal.
Software libre y licencias de software. GNU GPL.
Internet.
Aspectos generales

Multiplataforma
Los programas escritos en el lenguaje Java pueden ejecutarse
igualmente en cualquier tipo de hardware. Este es el significado de ser
capaz de escribir un programa una vez y que pueda ejecutarse en
cualquier dispositivo, tal como reza el axioma de Java, “write once, run
anywhere”.
Para ello, se compila el código fuente escrito en lenguaje Java, para
generar un código conocido como “bytecode” (específicamente Java
bytecode) -instrucciones máquina simplificadas específicas de la
plataforma Java. Esta pieza está “a medio camino” entre el código
fuente y el código máquina que entiende el dispositivo destino. El
bytecode es ejecutado entonces en la máquina virtual (JVM), un
programa escrito en código nativo de la plataforma destino (que es el
que entiende su hardware), que interpreta y ejecuta el código. Además,
se suministran bibliotecas adicionales para acceder a las
características de cada dispositivo (como los gráficos, ejecución
mediante hebras o threads, la interfaz de red) de forma unificada. Se
debe tener presente que, aunque hay una etapa explícita de
compilación, el bytecode generado es interpretado o convertido a
instrucciones máquina del código nativo por el compilador JIT (Just In
Time).
Aspectos generales

Máquina virtual




La máquina virtual de Java puede estar implementada en
software, hardware, una herramienta de desarrollo o un
Web browser; lee y ejecuta código precompilado bytecode
que es independiente de la plataforma.
La JVM provee definiciones para un conjunto de
instrucciones, un conjunto de registros, un formato para
archivos de clases, la pila, un heap con recolector de
basura y un área de memoria.
Cualquier implementación de la JVM que sea aprobada
por SUN debe ser capaz de ejecutar cualquier clase que
cumpla con la especificación.
http://www.java.com/es/download/
Aspectos generales

Recolector de basura
En Java el problema de las fugas de memoria se evita en gran medida
gracias a la recolección de basura (o automatic garbage collector). El
programador determina cuándo se crean los objetos y el entorno en
tiempo de ejecución de Java (Java runtime) es el responsable de
gestionar el ciclo de vida de los objetos. El programa, u otros objetos
pueden tener localizado un objeto mediante una referencia a éste.
Cuando no quedan referencias a un objeto, el recolector de basura de
Java borra el objeto, liberando así la memoria que ocupaba previniendo
posibles fugas (ejemplo: un objeto creado y únicamente usado dentro
de un método sólo tiene entidad dentro de éste; al salir del método el
objeto es eliminado). Aun así, es posible que se produzcan fugas de
memoria si el código almacena referencias a objetos que ya no son
necesarios—es decir, pueden aún ocurrir, pero en un nivel conceptual
superior. En definitiva, el recolector de basura de Java permite una fácil
creación y eliminación de objetos, mayor seguridad y puede que más
rápida que en C++.
Versiones de Java

La empresa Sun Microsystems lanzó a mediados de
los años 90 el lenguaje de programación Java que,
aunque en un principio fue diseñado para generar
aplicaciones que controlaran electrodomésticos
como lavadoras, frigoríficos, etc, debido a su gran
robustez e independencia de la plataforma donde
se ejecutase el código, desde sus comienzos se
utilizó para la creación de componentes interactivos
integrados en páginas Web y programación de
aplicaciones independientes. Estos componentes se
denominaron applets y casi todo el trabajo de los
programadores se dedicó al desarrollo de éstos.
Versiones de Java


Con los años, Java ha progresado
enormemente en varios ámbitos como
servicios HTTP, servidores de aplicaciones,
acceso a bases de datos (JDBC)...
Como vemos Java se ha ido adaptando a las
necesidades tanto de los usuarios como de
las empresas ofreciendo soluciones y
servicios tanto a unos como a otros.
Versiones de Java

Debido a la explosión tecnológica de estos últimos
años
Java
ha
desarrollado
soluciones
personalizadas para cada ámbito tecnológico. Sun
ha agrupado cada uno de esos ámbitos en una
edición distinta de su lenguaje Java:



Java 2 Stantard Edition (J2SE), orientada al desarrollo de
aplicaciones independientes y de applets.
Java 2 Enterprise Edition (J2EE), enfocada al entorno
empresarial.
Java 2 Micro Edition, orientada a la programación de
aplicaciones para pequeños dispositivos.
Versiones de Java

Java 2 Platform, Standard Edition (J2SE):
Esta edición de Java es la que en cierta forma recoge la
iniciativa original del lenguaje Java.




Inspirado inicialmente en C++, pero con componentes de alto
nivel, como soporte nativo de strings y recolector de basura.
Código independiente de la plataforma, precompilado a
bytecodes intermedio y ejecutado en el cliente por una JVM
(Java Virtual Machine).
Modelo de seguridad tipo sandbox proporcionado por la JVM.
Abstracción del sistema operativo subyacente mediante un juego
completo de APIs de programación.
Versiones de Java

Java 2 Platform, Enterprise Edition (J2EE):
Esta versión está orientada al entorno empresarial. El software
empresarial tiene unas características propias marcadas: está
pensado no para ser ejecutado en un equipo, sino para
ejecutarse sobre una red de ordenadores de manera distribuida
y remota mediante EJBs (Enterprise Java Beans). De hecho, el
sistema se monta sobre varias unidades o aplicaciones. En
muchos casos, además, el software empresarial requiere que se
sea capaz de integrar datos provenientes de entornos
heterogéneos. Esta edición está orientada especialmente al
desarrollo de servicios web, servicios de nombres, persistencia
de objetos, XML, autenticación, APIs para la gestión de
transacciones, etc. El cometido de esta especificación es ampliar
la J2SE para dar soporte a los requisitos de las aplicaciones de
empresa.
Versiones de Java

Java 2 Platform, Micro Edition (J2ME):
Esta versión de Java está enfocada a la aplicación de la
tecnología Java en dispositivos electrónicos con capacidades
computacionales y gráficas muy reducidas, tales como
teléfonos móviles, PDAs o electrodomésticos inteligentes.
Esta edición tiene unos componentes básicos que la
diferencian de las otras versiones, como el uso de una
máquina virtual denominada KVM (Kilo Virtual Machine,
debido a que requiere sólo unos pocos Kilobytes de memoria
para funcionar) en vez del uso de la JVM clásica, inclusión de
un pequeño y rápido recolector de basura y otras diferencias
que ya iremos viendo más adelante.
Versiones de Java
… aunque
también veremos
aspectos propios
de la versión
J2EE 6.0
En este curso nos centraremos
fundamentalmente en la versión
J2SE 6.0…
e incluso
de J2ME
Enlaces de interés

Foro JavaHispano


Página oficial de Java


http://www.javahispano.org/
http://java.sun.com/
Tutorial Web “Programacion”

http://www.programacion.com/java/tutorial/convenciones/
Bibliografía

Manual Imprescindible Java SE6


Wikipedia


F. Javier Moldes Teo, Editorial Anaya.
es.wikipedia.org
“Java a tope”




Sergio Gálvez Rojas - Lucas Ortega Díaz
Dpto. de Lenguajes y Ciencias de la Computación
E.T.S. de Ingeniería Informática
Universidad de Málaga