g
Programación
Orientada a
ObjObjetos con Java
Ingeniería del Software II
Curso 2008/2009
Sergio Ilarri Artigas
Sergio Ilarri Artigas
[email protected]
Parte del material está extraído de JavaSun y Java Tutorial:
Copyright 1994-2007 Sun Microsystems, Inc. All Rights Reserved.
Índice (Bloques)
Introducción
Sintaxis y Elementos
Programación OO
ió OO
p
Manejo de Excepciones
Entorno
Acceso a Bases de Datos en Java
Anexos: “Algunos Paquetes y Clases de
Anexos: Algunos Paquetes y Clases de
d D
B
J
j
P
A
Uso Común” y “Flujos de E/S”
Índice Detallado (I)
Bloque 1: Introducción
Características
Popularidad
Popularidad
Historia de Java (versiones)
Índice Detallado (II)
Bloque 2: Sintaxis y Elementos
Hello World
Tipos de Datos: primitivos y referencia
Tipos de Datos: primitivos y referencia
Paso por Valor
Operadores
Sentecias: if, switch, for, while, etc.
Manejo de Excepciones
O
d
Índice Detallado (III)
Bloque 3: Programación OO
Estructura de clases
Constructores
Métodos
Métodos
Palabras clave: this y super
Control de acceso
Miembros estáticos
Jerarquía de clases: Object
Clases y métodos abstractos
Clases anidadas y clases anónimas
y
Interfaces
Paquetes
Paquetes
Nuevos elementos introducidos con Java 1.5
Índice Detallado (IV)
Bloque 4: Manejo de Excepciones
Ideas básicas
Secuencia de llamadas y de propagación
Secuencia de llamadas y de propagación
Estructura: bloques try, catchy finally
h kd
Tipos: RuntimeException, Error, checked
R ti E ti E
Ti
exceptions
Ejemplo
Índice Detallado (V)
Bloque 5: Entorno
t
El
Elementos
Distribuciones: J2SE, J2EE, J2ME
Herramientas
Estructura de Directorios
Referencia a Clases
JavacJavac
Java
API de Java
API de Java
Cómo Editar Java: JBuilder, Eclipse, Nedit, etc.
Índice Detallado (VI)
Bloque 6: Acceso a Bases de Datos
ió
ti
Tipos de Drivers
Versiones de JDBC
Conexión: Clase Connection
Cl C
Clase Statement
Clase ResultSet
Clase ResultSet
Clase PreparedStatement
Clase CallableStatement
Metadatos
Excepciones
Tipos Java y SQL
SQL
C
Ti
J
Bloque 1:
Bloque 1:
Introducción
Introducción
Características (I)
1) Orientado a objetos:
Objetos: datos + código
Objetos + tipos de datos atómicos
Todo dentro de una clase
Reutilización del software:
Reutilización del software:
Librerías de código abierto
p
j
2) Simple (~ C++, sin punteros)
Características (II)
3) Portable:
a) Compilador de Java: Java bytecodes
b) JVM (Java Virtual Machine)
b) JVM (Java Virtual Machine)
Varias implementaciones
Interpretado => técnicas de compilación:
I t
Compilar a código nativo
JIT (Just in Time)
Recompilación dinámica (partes críticas)
té i
t d
d
il
ió
Características (III)
4) Robusto:
Fuertemente tipado
Comprobaciones compilación/ejecución
Excepciones
No punteros
5) Recolección automática de basura:
g
No gestión manual de memoria
No hay memory leaks… (o casi)
Garbagecollector: objectos inalcanzables
Garbage collector: objectos inalcanzables
Características (IV)
6) Programación concurrente
7) Distribuido (RMI, CORBA, HTTP,
sockets etc )
sockets, etc.)
8) Seguridad
9) Carga dinámica de clases
Cuidado con el ClassNotFoundException
Características (V)
10) Gratis, muchos paquetes, código
fuente
11) ¡No es lento!
11) ¡No es lento!
Y además... gusta
Obtenido de
“The Case for Java Devices”,
Bill Meine, Sun Microsystems,
noviembre 1996
Basado en una transparencia de Eduardo Mena
Nieto
Dibujo de
Rich Tennant
Java's supposed to be dynamic interactive and animated but
Java s supposed to be dynamic, interactive, and animated, but
George hasn't moved from that spot since he downloaded it!"
http://www.fruug.org/Archive/1996-11/javastation/html/effects.html
Popularidad (I)
www.tiobe.com
-Calculado en base a
Motores de búsqueda:
Google, MSN, Yahoo
Popularidad (II)
Category
Ratings September 2006
Delta September 2005
Object-Oriented Languages
Procedural Languages
Procedural Languages
Logical Languages
Functional Languages
51.3%
47.2%
47.2%
0.8%
0.7%
+0.9%
-0.9%
0.9%
+0.1%
-0.1%
Category
Ratings September 2006
Delta September 2005
Statically Typed Languages
Dynamically Typed Languages
62.4%
37.6%
-3.0%
+3.0%
www.tiobe.com
Popularidad (III)
Basado en venta
de libros
Roger Magoulas, director de O'Reilly Research, julio de 2006
Popularidad (IV)
http://www.indeed.com
Historia de Java (I)
1991. Intérprete Oak
James Gosling
~ C/C++ pero más uniforme y sencillo
~ C/C++ pero más uniforme y sencillo
(por ejemplo: no herencia múltiple)
Compilador de Oak en C
Compilador de Oak en C
1994. Intérprete de Oak en Oak
Van Hoff
Van Hoff
Historia de Java (II)
1995. JDK 1.0
WORA(Write Once, Run Anywhere)
Paquetes:
java.lang (Class, Object, Math, Runtime, String, ...)
java.io
javautil(Vector Random Stack )
java.util (Vector, Random, Stack, ...)
java.net (sockets)
java.awt(AWT:AbstractWindowToolkit)
java.awt (AWT: Abstract Window Toolkit)
java.applet
JDK = Java Development Kit
JDK = Java Development Kit
Historia de Java (III)
1997. JDK 1.1(I)
Internacionalización
Mejoras del AWT (mejora sistema eventos)
Mejoras del AWT (mejora sistema eventos)
Ficheros JAR(Java ARchive)
t)
JavaBeans(gety set)
Seguridad, appletsfirmados, etc.
RMI(Remote Method Invocation)
J B ( t
Historia de Java (IV)
1997. JDK 1.1(II)
Serialización de objectos
Reflection
JDBC(Java Database Connectivity)
Nuevo JNI(JavaNativeInterface)
Nuevo JNI(Java Native Interface)
Mejor rendimiento
Deprecated
Deprecated
Acceso a recursos remotos
Historia de Java (V)
1999. Java 1.2(I)
Java 2 Platform(ésta y siguientes
versiones))
Manejo de eventos (listeners)
Cambios en la sincronización de threads
Cambios en la sincronización de threads
JIT compilers
Historia de Java (VI)
1999. Java 1.2(II)
Swing
Swing
Java2D
ibilid d
Accesibilidad
Drag & Drop
A
Java Foundation Classes(JFC)
Jaa ou dato Casses(JC)
Historia de Java (VII)
1999. Java 1.2(III)
Collections(Sets, Queues, Lists, etc.)
JavaIDL(CORBA)
Java IDL(CORBA)
JDBC2.0
Java plug-in technology
Doclets(personalizar la salida de Javadoc)
Java3D
l i t h l
J
Historia de Java (VIII)
2000. Java 1.3
JNDI(Java Name and Directory Interface)
RMIsobre IIOP(InternetInterORBProtocol)
RMIsobre IIOP(Internet InterORB Protocol)
Java Sound
Historia de Java (IX)
2002. Java 1.4(I)
API para procesamiento de XML
LoggingAPIs
LoggingAPIs
Java Web Start (JNLP)
JDBC3 0
JDBC3.0
Assertion facility
Preferences API
Excepciones encadenadas
Excepciones encadenadas
Historia de Java (X)
2002. Java 1.4(II)
Expresiones regulares
Historia de Java (XI)
2004. Java 1.5(proyecto Tiger)
Genéricos (tipos parametrizados)
Mejora de bucles
Mejora de bucles
Autoboxing/unboxing
Tipos enumerados
Static import
Metadata (Annotations)
Varargs
Varargs
Ti
d
Historia de Java (XII)
2007: Java 1.6
JavaScriptintegrado
Soporte para Ruby Pythony otros
Soporte para Ruby, Pythony otros
lenguajes de script
Soporte para servicios web
Soporte para servicios web
JDBC4.0
JDB(Java Database)
Soporte para NetBeans IDE5.5
p
p
Historia de Java (XIII)
Versión
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.6
Año
1995
1997
1999
2000
2002
2004
2007
2007
#clases
#paquetes
p q
Documentación
212
504
1520
1842
2991
3278
3776
3776
8
23
59
76
135
165
202
202
2.65 MB
11.5 MB
83.3 MB
120 MB
164 MB
224 MB
259 MB
259 MB
t
Vé
Véase también: http://www.java.com/en/javahistory/timeline.jsp
(The Java History Timeline)
hi t
bié
htt
//
/
/j
j
/ti
li
j
Bloque 2:
Bloque 2:
Sintaxis y Elementos
Sintaxis y Elementos
Hello World (I)
// Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Hello World (II)
public static void main(String args[])
Clases:
Bloque básico en programación OO:
Bloque básico en programación OO:
Código = métodos = comportamiento
t d
Datos = variables = estado
D t
i bl
Instanciar = crear un objeto:
Instancia <-> variable
Clase <-> tipo de dato
Tipos de Datos Primitivos (I)
¡Fijado!
Keyword
Descripción
Tamaño/formato
byte
short
int
long
float
d
bl
double
(integers)
Entero de 1
Comentarios de: Programación Orientada a Objetos con Java (0)
No hay comentarios