-
Introducción
-
Historia
- 1990: Diseñado inicialmente por James Gosling
- 1992: nombre "Oak", Duke es la mascota
- 1995: cambio de nombre a "Java", lanzamiento oficial de Sun
- 1996: JDK 1.0
- 1997: JDK 1.1
- 1998: J2SE 1.2
- 2000: J2SE 1.3
- 2002: J2SE 1.4
- 2004: J2SE 5.0
- 2006: Java es open source, JavaSE 6
- 2009: Oracle compra Sun
-
Ediciones
-
JavaEE
- Enterprise
-
JavaSE
- Standard
-
JavaME
- Mobile
-
Principios
- Simple, orientado a objetos
- Robusto y seguro
- Arquitectura neutra y portable
- Alta performance
- Interpretado, multithreaded, dinámico
-
Arquitectura
-
Java Virtual Machine JVM
- Programa nativo
- Plataforma específica
-
Ejecuta bytecode
- Generado por el compilador Java
- .class
- Verificador de bytecode
-
Java Runtime Environment JRE
- Necesaria para ejecutar
-
Java Development Kit JDK
- Necesaria para desarrollar
- Multiplataforma
- Garbage collector
-
Compilación
- HolaMundo.java
- Se compila con javac
- HolaMundo.class
- Se ejecuta en la JVM
-
IDE
- Eclipse
- NetBeans
- IntelliJ Idea
- JDeveloper
-
Sintaxis
-
Comentarios
- Una línea //
- Multilínea /* */
- Javadoc /** */
-
Identificadores
- Case sensitive
- Comienza con letra, '_', '$'
- Incluye letras o números
- Java Keywords
-
Variables
-
Primitivos
-
Entero
- byte
- short
- int
- long
-
Real
- float
- double
-
Booleano
- boolean
-
Caracter
- char
-
Operadores
-
Aritméticos
- + - * / % ++ --
-
Lógicos
- && || !
-
Relacionales
- == != < > <= >=
-
Asignación
- = += -= *= /=
-
Ternario
- ?:
-
Estructuras de control
- if / else
- switch / case
- while
- do while
- for
- break / continue
-
Constantes
- public static final
-
Arreglos
- Arreglos de objetos
- Arreglos de primitivos
-
Strings
- String cadena = "cadena";
- Concatenar con +
-
Programación orientada a objetos
-
Beneficios
- Encapsulamiento
- Reutilización
- Bajo acoplamiento
- Alta cohesión
-
Objeto
- Instanciar un objeto: MiObjeto obj = new MiObjeto()
- Utilizar un objeto: obj.metodo();
-
Finalizando un objeto
- Llamado por el GC
- finalize()
-
Clase
- atributos
-
métodos
-
Overloading
- Reutilizar el nombre del método
- Diferente argumentos
-
Overriding
- Sobreescribir el método
- Mismos argumentos
- constructores
- Declaración una clase: class
-
Interface
- Solo declara métodos
- No se puede instanciar
- Declarar una interface: interface
- Implementar una interface: implements
-
Modificadores
-
Acceso
- public
- protected
- default
- private
-
Otros
-
final
- No puede ser modificado
- Aplica
- Clases
- Variables
- Métodos
-
abstract
- No puede ser instanciado
- Aplica
- Clases
- Métodos
-
static
- Asociado a la clase, no a la instancia
- Aplica
- Variables
- Métodos
-
native
- Su implementación está fuera de la JVM
- Aplica a métodos
-
transient
- No se persiste
- Aplica a variables
-
volatile
- No es de uso común
- Las variables no pueden ser modificadas de forma asíncrona
- Aplica a variables
-
synchronized
- Controla el acceso concurrente en hilos
-
Herencia
- Reutilizar atributos y métodos de la clase padre
- Heredar una clase: extends
-
Encapsulación
- Ocultar información
- getters/setters
-
Polimorfismo
- Un objeto se comporta de diferentes formas
-
Paquetes
-
Características
- Evita la colisión de nombres
- Organización de clases
- Correspondencia con estructura de directorios
-
Uso
- Creación: package net.lshimokawa.mipaquete;
- Importar clases de otros paquetes: import
-
Convención de nombres
- Dominio invertido
- Paquete base
- net.lshimokawa.paquete
-
Excepciones
-
Introducción
- Evento que ocurre dentro de la ejecución del programa
- Interrumpe el flujo normal de ejecución
- Separa el flujo normal del programa del tratamiento de excepciones
- Se pueden propagar las excepciones
-
Uso de excepciones
-
try
- Bloque de código que requiere tratamiento de excepciones
-
catch
- Tratamiento de la excepción
- Excepciones específicas a genéricas
-
finally
- Se ejecuta siempre
- Sea flujo normal o una excepción
-
Propagación
- throw
- throws
-
Tipos
-
Checked
- Errores recuperables
- Heredan de Exception
- El compilador te obliga a tratarlas
- Bloque try-catch o throws
-
Unchecked
- Errores no recuperables
- Heredan de RuntimeException
- El compilador no te obliga a tratarlas
-
Buenas prácticas
- Cerrar los recursos, uso de finally
- No usar excepciones en control de flujo
- No suprimir ni ignorar excepciones
- No atrapar excepciones generales
- Loggear las excepciones solo una vez
-
JDBC
-
Introducción
- Java Database Connectivity
- API que permite ejecutar operaciones sobre BD
- Colección de interfaces
- Paquete: java.sql
-
Drivers
- Independientes de la BD
-
Tipos
-
JDBC-ODBC bridge
- Open Database Connectivity de Microsoft
- Native-API partly Java technology-enabled driver
- Net-protocol fully Java technology-enabled driver
- Native-protocol fully Java technology-enabled driver
-
API
-
DriverManager
- Carga el driver de BD
-
Connection
- Abre la conexión
- Cierra la conexión
- Commit
- Rollback
-
Statement
- Prepara y ejecuta los querys
- PreparedStatement
-
CallableStatement
- Para StoredProcedures
-
ResultSet
- Almacena el resultado del query
- Itera sobre los resultados
-
Threads
-
Introducción
- Similar a un proceso real
- Flujo secuencial de control
- Considerado light, se ejecuta dentro del contexto del programa
- Propia pila de ejecución y contador de programa
-
Implementación
- Heredar la clase Thread
- Implementar la interface Runnable
- Implementar el método run()
-
Estados
- Thread states
-
Thread scheduler
- Depende de la JVM
- Usa su propio algoritmo
- No es determinable
-
Thread priorities
- Entero del 1 al 10
- Preferencia de la prioridad más alta
- Utilizado por el thread scheduler
- Prioridad por defecto: 5
-
Sincronizando
-
El método
- Utilizar el modificador synchronized en el método
-
Bloque
- Abrir un bloque con synchronized
-
Collections Framework
-
Introducción
- Colección: objeto que agrupa varios elementos como una unidad
-
Consta de
- Interfaces
- Implementaciones
- Algoritmos
-
Beneficios
- Reduce el esfuerzo al programar
- Incrementa la performance y calidad
- Interoperatibilidad
- Reduce el esfuerzo de aprender nuevas APIs
- Reduce el esfuero de diseñar nuevas APIs
- Reutilización
-
API
-
Collection
-
Set
- HashSet
- TreeSet
-
List
- ArrayList
- LinkedList
-
Map
- TreeMap
- HashMap
- WeekHashMap
-
Collections
- Utilitario para manejo de colecciones
-
Arrays
- Utilitario para el manejo de arreglos