Curso de Java Avanzado

Nivel avanzado Manual del alumno (Versión 6, JDK 1.6.0)  SolucionJava.com  Reproducción prohibida Versión 2.0 ©Copy

Views 270 Downloads 9 File size 713KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Nivel avanzado Manual del alumno

(Versión 6, JDK 1.6.0)

 SolucionJava.com

 Reproducción prohibida

Versión 2.0

©Copyright Cédric Simon, 2009

  Ing. Cedric Simon – Tel: 2268 0974 – Cel: 8888 2387 – Email:   c e d r i c @ s o l u c i o n j a v a . c o m  – Web: www.solucionjava.com

Curso de programación en Java

Curso de programación en Java

Pagina 2 / 15

1 Índice 1 Índice..........................................................................................................................................................................................................2 2 Introducción al curso.................................................................................................................................................................................3 2.1 Objetivo de este curso.......................................................................................................................................................................3 2.2 Manual del alumno............................................................................................................................................................................3 2.3 Ejercicios prácticos............................................................................................................................................................................3 2.4 Requisitos para atender a este curso...............................................................................................................................................3 2.5 Soporte despues del curso.................................................................................................................................................................3 3 Conexión a base de datos...........................................................................................................................................................................4 3.1 Objetivo del capitulo.........................................................................................................................................................................4 3.2 Driver ODBC.....................................................................................................................................................................................4 3.3 Driver JDBC......................................................................................................................................................................................4 3.4 Conexión.............................................................................................................................................................................................4 3.5 Ejecución de instrucciones SQL.......................................................................................................................................................5 3.6 Paquete SolucionJava........................................................................................................................................................................6 4 Reciclaje de memoria.................................................................................................................................................................................7 5 Clases interesantes.....................................................................................................................................................................................8 5.1 Clase StringBuilder...........................................................................................................................................................................8 5.2 Clase ArrayList..................................................................................................................................................................................8 6 Streaming...................................................................................................................................................................................................9 7 Variables de sistema.................................................................................................................................................................................11 8 Compresión y empaquetado de aplicación..............................................................................................................................................12 9 Threads.....................................................................................................................................................................................................13 10 Ejercicios................................................................................................................................................................................................14 11 Esquema de la base de datos..................................................................................................................................................................15

©Copyright Cédric Simon, 2009

Versión 2.0

Reproducción prohibida 

Curso de programación en Java

Pagina 3 / 15

2 Introducción al curso 2.1  Objetivo de este curso  En este curso vamos a ver unas opciones avanzadas del lenguaje Java. Esta base les va a servir por cualquier tipo de  aplicación que desea realizar: aplicación independiente, applet, pagina web en Java…

2.2  Manual del alumno  Este manual del alumno es una ayuda para el alumno, para tenga un recuerdo del curso. Este manual contiene un  resumen de las materias que se van a estudiar durante el curso, pero el alumno debería de  tomar notas personales  para completas este manual.

2.3  Ejercicios prácticos  Para captar mejor la teoría, se harán muchos ejercicios con los alumnos, para probar la teoría y verificar la  integración de la materia.   También, el alumno podrá copiar sus códigos en un disquete al fin del curso para llevarse, con fin de seguir la práctica  en su hogar. 

2.4  Requisitos para atender a este curso  Se requiere un conocimiento de base del lenguaje Java, y la programación orientado a objeto. también se neceista un  conocimiento de base del lenguaje SQL.  Si el alumno tiene dificultades en un u otro capitulo, el debe sentirse libre de pedir explicaciones adicionales al  profesor.

2.5  Soporte despues del curso  Si tienes preguntas sobre la materia del curso en tus ejercicios prácticos, puedes escribir tus preguntas a  [email protected]. Para informaciones sobre otros cursos, visita el sitio web www.solucionjava.com.

©Copyright Cédric Simon, 2009

Versión 2.0

Reproducción prohibida 

Curso de programación en Java

Pagina 4 / 15

3 Conexión a base de datos Cuando se desarrolla una aplicación, muchas veces se necesita conectar a una base de datos. Java permite conectarse  a las mayorías de las base de datos, por tanto que existe un driver ODBC o mejor, JDBC.

3.1  Objetivo del capitulo  Al fin de este capitulo, el alumno será capaz de crear una conexión a una base de datos y ejecutar instrucciones en la  base de datos. Este capitulo no es una iniciación al SQL ni al manejo de base de datos.

3.2  Driver ODBC  Un driver ODBC (Open Database Connectivity) permite utilizar un driver “genérico” para conectarse a une base de  datos. Así Java se conecta al driver ODBC, y el driver ODBC se conecta a la base de datos. Es el medio más fácil de  conectarse a una base de datos, pero es mucho menos eficiente que un driver JDBC.

3.3  Driver JDBC  Un driver ODBC (Java Database Connector) es un driver diseñado para conectarse a una base de datos. Este driver  es específico a una base de datos (y a veces a una cierta versión de una base de datos). El driver JDBC se conecta directamente a la base de datos, y como él esta diseñado para esta base de datos, tiene  normalmente muchas más opciones, y menos restricciones, que el ODBC.

3.4  Conexión  Básicamente, hay primero que cargar el driver JDBC, luego hay que conectarse a la base de datos, y si logras eso,  puedes ejecutar tus consultas SQL. Ejemplo: import java.sql.DriverManager; import java.sql.SQLException; public class TestDb { public static void main(String[] args) { java.sql.Connection con = null; try { try { System.out.println("Buscando el driver JDBC..."); Class.forName( "com.mysql.jdbc.Driver" // "org.postgresql.Driver" // "oracle.jdbc.driver.OracleDriver" // "com.microsoft.sqlserver.jdbc.SQLServerDriver" // "org.firebirdsql.jdbc.FBDriver" ).newInstance(); System.out.println("...Encontró el driver JDBC"); } catch (Exception e) { System.out.println("No pudo encontrar el driver JDBC !!!!"); e.printStackTrace(System.out); return; } try { System.out.println("Connectando a la base de datos..."); con = DriverManager .getConnection("jdbc:mysql://localhost/curso?user=curso&password=123" // "jdbc:postgresql://localhost/curso:5432","postgres","123" // "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123" // "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123" // "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123" ); System.out.println("...Connectado a la base de datos"); } catch (Exception e) { System.out .println("No pudo conectarse a la base de datos !!!!"); e.printStackTrace(System.out); return; }

©Copyright Cédric Simon, 2009

Versión 2.0

Reproducción prohibida 

Curso de programación en Java

Pagina 5 / 15

} finally { System.out.println("Cerrando la conexion a la base de datos."); try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); } System.out.println("Fin"); } }

}

3.5  Ejecución de instrucciones SQL  Para poder ejecutar instrucciones SQL en la base de datos, hay que ser conectado a la a base de datos.  Una vez conectado, hay que crear la instrucción, ejecutarla, y eventualmente recoger el resultado. Dependiendo de si la instrucción debería de regresar datos, o no, se va utilizar una lista de resultados (ResultSet) o  solamente ejecutar la instrucción. De Java se pueden también llamar a procedimientos y funciones de la base de datos.   Para evitar problemas con juegos de carácter o caracteres especiales, es mejor utilizar CallableStatement y  PreparedStatement. Ejemplo: import java.sql.*; public class TestSql { public static void main(String[] args) { Connection con = null; PreparedStatement ps = null; Statement s = null; ResultSet rs = null; try { try { System.out.println("Buscando el driver JDBC..."); Class.forName("com.mysql.jdbc.Driver" // "org.postgresql.Driver" // "oracle.jdbc.driver.OracleDriver" // "com.microsoft.sqlserver.jdbc.SQLServerDriver" // "org.firebirdsql.jdbc.FBDriver" ).newInstance(); System.out.println("...Encontró el driver JDBC"); } catch (Exception e) { System.out.println("No pudo encontrar el driver JDBC !!!!"); e.printStackTrace(System.out); return; } try { System.out.println("Connectando a la base de datos..."); con = DriverManager .getConnection("jdbc:mysql://localhost/curso?user=curso&password=123" // "jdbc:postgresql://localhost/curso:5432","postgres","123" // "jdbc:oracle:thin:@192.168.0.10:1521/XE","curso","123" // "jdbc:sqlserver://192.168.0.100:1433/database=curso/user=curso/password=123" // "jdbc:firebirdsql:127.0.0.1:C:/firebird/data/curso.gdb","curso","123" ); System.out.println("...Connectado a la base de datos"); } catch (Exception e) { System.out .println("No pudo conectarse a la base de datos !!!!"); e.printStackTrace(System.out); return; } try { System.out .println("Lista de empleados con salario inferior a $30,000"); s = con.createStatement(); rs = s .executeQuery("select concat(first_name,' ',last_name) as full_name from employee where salary < 30000"); // "select first_name||' '||last_name as full_name from employee where salary < 30000"); while (rs.next()) { System.out.println(rs.getString("full_name"));

©Copyright Cédric Simon, 2009

Versión 2.0

Reproducción prohibida 

Curso de programación en Java

Pagina 6 / 15

} } catch (java.sql.SQLException e) { System.out.println("Unable to step thru results of query"); showSQLException(e); return; } try { System.out .println("==============================================="); System.out .println("Lista de empleados con salario entre $30,000 y $40,000"); ps = con .prepareStatement("select concat(first_name,' ',last_name) as full_name from employee where salary between ? and ?"); // "select first_name||' '||last_name as full_name from employee where salary between ? and ?"); ps.setInt(1, 30000); ps.setInt(2, 40000); rs = ps.executeQuery(); while (rs.next()) { System.out.println(rs.getString("full_name")); } } catch (java.sql.SQLException e) { System.out.println("Unable to submit a static SQL query."); showSQLException(e); return; } } finally { System.out.println("Cerrando la conexion a la base de datos."); try { if (rs != null) { rs.close(); } } catch (java.sql.SQLException e) { showSQLException(e); } try { if (ps != null) { ps.close(); } } catch (java.sql.SQLException e) { showSQLException(e); } try { if (con != null) { con.close(); } } catch (java.sql.SQLException e) { showSQLException(e); } System.out.println("Fin"); } }

}

private static void showSQLException(java.sql.SQLException e) { java.sql.SQLException next = e; while (next != null) { System.out.println(next.getMessage()); System.out.println("Error Code: " + next.getErrorCode()); System.out.println("SQL State: " + next.getSQLState()); next = next.getNextException(); } }

3.6  Marco de trabajo de SolucionJava  El marco de trabajo de SolucionJava trae una clase que facilita la conexión a la base de datos. Para usarla, crea una clase que extiende com.solucionjava.db.ConnectDB y sobreescribe el metodo  initConnectionVariables(). Ver la documentacion Java del API para mas información. Todos los archivos relacionados al marco de trabajo de SolucionJava.com se pueden descargar desde  http://solucionjava.sourceforge.net .

©Copyright Cédric Simon, 2009

Versión 2.0

Reproducción prohibida 

Curso de programación en Java

Pagina 7 / 15

4 Reciclaje de memoria Java tiene un manejo interno de la memoria, y periódicamente, recicla la memoria que no es más utilizada,  destruyendo los objetos sin referencia en la memoria. Este acción se llama “garbage collección”. Como Java puede consumir bastante memoria, es importante de no crear objetos que no son necesarios, y de liberar  objetos que no son más necesarios. Un método (System.gc();) permite también de preguntar a Java de empezar el reciclaje de la memoria, pero no es por  eso que el reciclaje será total ni siempre inmediato. Llamar a la recolección de basura tiene también un costo a nivel  de performancias (probar con ejemplo aquí abajo). Para que un objeto sea candidato al reciclaje, el no debe estar ligado a nada utlizado. Para estar seguro que su objeto  sera candidato, es mejor meterlo a nulo (null) de manera explicita. Si la recolección 'forzada' de memoria puede ayudar en casos de progaramas usando muchas memorias, esa manera  solo retardara un poco el problema, pero no lo resolver. Hay que investigar la fuente del uso de memoria y corregirlo,  mejor que utilizar la recolección forzada de memoria. Para investigar la fuente del problema, es posible de conocer la memoria del JVM que queda disponible utilizando el  metodo freememory() del objeto Runtime. Ver en la documentación de Java para mas detalles.

Ejemplo (probar con System.gc() y sin): public class TestMemory { public static void main(String[] args) { String test=""; Runtime rt = Runtime.getRuntime(); for (int i=0;i