Lenguaje java
Ing° Pedro Beltrán Canessa
[email protected]
L i c e n c i a d e U s o
Acerca de este documento
Ing° Pedro Beltrán Canessa
[email protected]
Se otorga permiso para copiar, distribuir y/o modificar este
documento bajo los términos de la Licencia de Documentación Libre
de GNU en su versión 1.2 o cualquier otra versión posterior publicada
por la Free Software Foundation, siendo todo él invariante. Una copia
de la licencia está disponible en la web de la Free Software
Foundation, dentro de la sección titulada GNU Free Documentation
License.
Este documento ha sido realizado íntegramente con software libre.
2
Í n d i c e
● Licencia de uso de este documento
● Introducción a la programación orientada a objetos
● Introducción a la tecnología java
● Sintaxis básica
● Funciones básicas de E/S
● Clases y Objetos
● Herencia
●
Interfaces
● Arrays y Strings
● Paquetes
● Excepciones
3
I n t r o d u c c i ó n a l a O O P
● Formas de programación:
– Procedural: divide cada tarea de un programa en un conjunto de
estructuras de datos y funciones
– Orientada a Objetos (OOP): divide cada tarea de un programa en
un conjunto de objetos que tienen asociados atributos y métodos
● Los lenguajes pueden ser mezcla de ambas técnicas.
Ejemplos de lenguajes que tienen OOP:
smalltalk, C++, java, python, ruby, C#, php5
4
I n t r o d u c c i ó n a l a O O P
Conceptos
● Clase: abstracción de las entidades de la vida real,
incluyendo:
– Atributos o características de la clase
– Métodos u operaciones realizables sobre la clase.
(Miembros = atributos + métodos)
● Objeto: instancia concreta de una clase
● Mensaje: lo que se intercambia entre objetos
5
I n t r o d u c c i ó n a l a O O P
Conceptos
● Herencia: posibilidad de que una clase adquiera atributos
y/o métodos de otra ya existente, pudiendo además
añadirse otros miembros, y redefinirse métodos heredados.
A la clase madre se le llama “superclase” y a la hija
“subclase”.
● Polimorfismo: métodos con igual nombre implementan
distintas funcionalidades según las clases sobre las que se
apliquen. Concepto relacionado: sobrecarga
● Encapsulamiento: ocultación de código y datos de objetos
6
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Características generales del lenguaje
● Es mucho más que un lenguaje
● Especificación completa del lenguaje:
http://java.sun.com/docs/books/jls/
● Más información en:
http://java.sun.com/j2se/1.5.0/docs/guide/language/
http://en.wikipedia.org/wiki/Java_%28programming_language%29
http://en.wikipedia.org/wiki/Java_version_history
● Nacido en la década de 1990. Antepasado: OAK
7
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Características generales del lenguaje
● Orientado a objetos
● Lenguaje compilado (bytecodes) e interpretado (JVM).
– JVM: Es el intérprete de bytecodes a código binario nativo
de cada plataforma.
– La JVM está implementada en bastantes plataformas HW y de S.O.
y se habla de independencia de plataforma. Ej: teléfonos móviles
– A pesar de ello, también hay:
● Compiladores puros para java que traducen el código fuente a código
máquina nativo.
● Plugins JIT (Just In Time) para la JVM que aceleran la ejecución en la
JVM mediante la compilación de bytecodes a código máquina nativo.
● Proporciona herramientas y librerías para desarrollar
código distribuido (ej. RMI)
8
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
JVM
Programa fuente
F.java
Compilación
Byte-codes
Clase1.class
Clase2.class
ClaseN.class
Máquina 1
Máquina 2
Máquina 3
JVM para la
máquina 1
JVM para la
máquina 2
JVM para la
máquina 3
Interpretación
Interpretación
Interpretación
Código
máquina 1
Código
máquina 2
Código
máquina 3
9
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
JVM
● Gestión de la memoria:
– El programador no ha de liberar memoria. Esto lo hace la JVM
mediante el recolector de basura (“garbage collector”), lanzando
un thread de forma automática.
– No hay punteros. Más seguro que C.
● Gestión del código en ejecución:
– Carga dinámica y distribuida: distintas partes de un programa se
van cargando según se van necesitando, y pueden estar en
máquinas diferentes.
– Ejecución de hilos paralelos (“threads”) con sincronización. Mejor
rendimiento para los procesadores de hoy en día
● Acceso a hardware restringido (sólo mediante métodos
nativos de otros lenguajes, no utilizables por applets)
10
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
JVM
● Seguridad:
– Comprobación de punteros y de límites de arrays
– Excepciones
– Verificación de bytecodes
● No desbordamientos de pila
● Parámetros conocidos y correctos
● No conversiones ilegales de tipos
● Accesos legales a atributos/métodos de objetos
● No intentos de violar normas acceso/seguridad
– Cargador de clases:
● Separa el espacio de nombres local de los recursos procedentes de la red
● No caballos de Troya. Las clases se buscan primero entre las locales y
luego en exteriores
– Apertura de ficheros y arranque de otras aplicaciones en máquina 11
remota, no en local
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
JVM
● Distinguir:
– Especificación
– Implementación. Ej. Sun HotSpot (1999) escrita en C++
● Más info en:
– http://en.wikipedia.org/wiki/Java_Virtual_Machine
– http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
– http://en.wikipedia.org/wiki/HotSpot
12
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Comparación con C
● Algunas diferencias con C:
– No tiene preprocesado ni ficheros de cabecera
– No hay estructuras
– Gestión de memoria automática (“garbage collector”).
– No hay punteros.
– No es posible acceder a elementos fuera de rango (strings y array)
● En general:
– Más seguro
– Más lento por ser intepretado, aunque hay compiladores JIT
(pierde portabilidad)
13
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Aplicaciones
● Programas “standalone” convencionales. Ej.
– Software para teléfonos móviles
– Software para PC (Windows o GNU/Linux), ej. azureus
– Software para servidor, ej. páginas web dinámicas generadas por
un servidor que ejecute servlets o jsp
● Applets: programas ejecutados en un navegador web que
tenga cargado un plugin
● Aplicaciones de tipo “Java Web Start”, descargadas a través
de internet sin necesidad de un navegador.
14
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Interfaces gráficos de usuario
● Principales:
– AWT (de Sun) es el más antiguo
– Swing (de Sun)
– SWT (de IBM Eclipse). Apariencia de la plataforma sobre la que
corre.
● Bindings para entornos gráficos específicos, ej. KDE/qt,
GNOME/gtk,...
15
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Tecnologías Java de Sun
● Sun tiene distintas familias de Tecnologías:
– Java Platform, Micro Edition
(Java ME): dispositivos ej. móviles
– Java Platform, Standard Edition
(Java SE): entornos workstation
– Java Platform, Enterprise Edition
(Java EE): entornos distribuidos
– Otras: Java Card,...
● Ver http://java.sun.com/reference/api
16
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Tecnologías Java de Sun - Familia SE
17
I n t r o d u c c i ó n a l a t e c n o l o g í a
j a v a
Tecnologías Java de Sun - Familia SE
● Tiene dos partes:
– El entorno de ejecución (JRE) consta de:
● Librerías java (bytecodes de los paquetes compilados) o APIs
(Application Program Interface)
● JVM Hotspot
● Plugins para ejecutar los applets en los navegadores
● Entorno “Java Web Start” para descargar y lanzar aplicaciones java a
través de internet sin necesidad de un navegador.
● Documentación y Licencia
– El entorno de desarrollo (JDK) incluye herramientas como:
Compilador javac, javadoc, depurador jdb, desensamblador javap,...
● Licencia: en Nov'06 Sun libera el compilador javac, la JVM y la
herramienta de ayudas bajo licencia GPL2. Faltan algunas
librerías, debido a que no fueron desarrolladas directamente por
18
Sun. También deja bajo GPLv2 JME y JEE
I n t r o d u c c i ó n a l a t e c
Comentarios de: lenguaje Java (0)
No hay comentarios