0% encontró este documento útil (0 votos)
4 vistas15 páginas

Curso Avanzado de Programación en Java

El manual del alumno del curso de programación en Java ofrece una guía sobre las opciones avanzadas del lenguaje, incluyendo la conexión a bases de datos mediante JDBC y ODBC, así como la ejecución de instrucciones SQL. Se requiere un conocimiento previo de Java y SQL, y se proporcionan ejercicios prácticos para reforzar el aprendizaje. Además, se incluye información sobre reciclaje de memoria, clases útiles y soporte post-curso.

Cargado por

JContreras CT
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas15 páginas

Curso Avanzado de Programación en Java

El manual del alumno del curso de programación en Java ofrece una guía sobre las opciones avanzadas del lenguaje, incluyendo la conexión a bases de datos mediante JDBC y ODBC, así como la ejecución de instrucciones SQL. Se requiere un conocimiento previo de Java y SQL, y se proporcionan ejercicios prácticos para reforzar el aprendizaje. Además, se incluye información sobre reciclaje de memoria, clases útiles y soporte post-curso.

Cargado por

JContreras CT
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Nivel avanzado

Manual del alumno

(Versin 6, JDK 1.6.0)

[Link]

Reproduccinprohibida

Versin2.0

CopyrightCdricSimon,2009

[Link]:22680974Cel:88882387Email: c e d r i c @ s o l u c i o n j a v a . c o m Web:[Link]

Curso de programacin
en Java

CursodeprogramacinenJava

Pagina2/15

1 ndice
1 ndice..........................................................................................................................................................................................................2
2 Introduccin al curso.................................................................................................................................................................................3
2.1 Objetivo de este curso.......................................................................................................................................................................3
2.2 Manual del alumno............................................................................................................................................................................3
2.3 Ejercicios prcticos............................................................................................................................................................................3
2.4 Requisitos para atender a este curso...............................................................................................................................................3
2.5 Soporte despues del curso.................................................................................................................................................................3
3 Conexin a base de datos...........................................................................................................................................................................4
3.1 Objetivo del capitulo.........................................................................................................................................................................4
3.2 Driver ODBC.....................................................................................................................................................................................4
3.3 Driver JDBC......................................................................................................................................................................................4
3.4 Conexin.............................................................................................................................................................................................4
3.5 Ejecucin 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 Compresin y empaquetado de aplicacin..............................................................................................................................................12
9 Threads.....................................................................................................................................................................................................13
10 Ejercicios................................................................................................................................................................................................14
11 Esquema de la base de datos..................................................................................................................................................................15

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina3/15

2 Introduccinalcurso
2.1 Objetivodeestecurso
[Link]
aplicacinquedesearealizar:aplicacinindependiente,applet,paginawebenJava

2.2 Manualdelalumno
Estemanualdelalumnoesunaayudaparaelalumno,[Link]
resumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberadetomarnotaspersonales
paracompletasestemanual.

2.3 Ejerciciosprcticos
Paracaptarmejorlateora,seharnmuchosejerciciosconlosalumnos,paraprobarlateorayverificarla
integracindelamateria.

Tambin,elalumnopodrcopiarsuscdigosenundisquetealfindelcursoparallevarse,confindeseguirlaprctica
ensuhogar.

2.4 Requisitosparaatenderaestecurso
SerequiereunconocimientodebasedellenguajeJava,[Link]
conocimientodebasedellenguajeSQL.
Sielalumnotienedificultadesenunuotrocapitulo,eldebesentirselibredepedirexplicacionesadicionalesal
profesor.

2.5 Soportedespuesdelcurso
Sitienespreguntassobrelamateriadelcursoentusejerciciosprcticos,puedesescribirtuspreguntasa
cedric@[Link].
Parainformacionessobreotroscursos,[Link].

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina4/15

3 Conexinabasededatos
Cuandosedesarrollaunaaplicacin,[Link]
alasmayorasdelasbasededatos,portantoqueexisteundriverODBComejor,JDBC.

3.1 Objetivodelcapitulo
Alfindeestecapitulo,elalumnosercapazdecrearunaconexinaunabasededatosyejecutarinstruccionesenla
[Link].

3.2 DriverODBC
UndriverODBC(OpenDatabaseConnectivity)permiteutilizarundrivergenricoparaconectarseaunebasede
[Link],[Link]
conectarseaunabasededatos,peroesmuchomenoseficientequeundriverJDBC.

3.3 DriverJDBC
UndriverODBC(JavaDatabaseConnector)[Link]
esespecficoaunabasededatos(yavecesaunaciertaversindeunabasededatos).
EldriverJDBCseconectadirectamentealabasededatos,ycomolestadiseadoparaestabasededatos,tiene
normalmentemuchasmsopciones,ymenosrestricciones,queelODBC.

3.4 Conexin
Bsicamente,hayprimeroquecargareldriverJDBC,luegohayqueconectarsealabasededatos,ysilograseso,
puedesejecutartusconsultasSQL.
Ejemplo:
import [Link];
import [Link];
public class TestDb {
public static void main(String[] args) {
[Link] con = null;
try {
try {
[Link]("Buscando el driver JDBC...");
[Link](
"[Link]"
// "[Link]"
// "[Link]"
// "[Link]"
// "[Link]"
).newInstance();
[Link]("...Encontr el driver JDBC");
} catch (Exception e) {
[Link]("No pudo encontrar el driver JDBC !!!!");
[Link]([Link]);
return;
}
try {
[Link]("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:@[Link]:1521/XE","curso","123"
// "jdbc:sqlserver://[Link]:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:[Link]:C:/firebird/data/[Link]","curso","123"
);
[Link]("...Connectado a la base de datos");
} catch (Exception e) {
[Link]
.println("No pudo conectarse a la base de datos !!!!");
[Link]([Link]);
return;
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina5/15

} finally {
[Link]("Cerrando la conexion a la base de datos.");
try {
if (con != null)
[Link]();
} catch (SQLException e) {
[Link]();
}
[Link]("Fin");
}
}

3.5 EjecucindeinstruccionesSQL
ParapoderejecutarinstruccionesSQLenlabasededatos,hayqueserconectadoalaabasededatos.
Unavezconectado,hayquecrearlainstruccin,ejecutarla,yeventualmenterecogerelresultado.
Dependiendodesilainstruccindeberaderegresardatos,ono,sevautilizarunalistaderesultados(ResultSet)o
solamenteejecutarlainstruccin.
DeJavasepuedentambinllamaraprocedimientosyfuncionesdelabasededatos.
Paraevitarproblemasconjuegosdecarcterocaracteresespeciales,esmejorutilizarCallableStatementy
PreparedStatement.
Ejemplo:
import [Link].*;
public class TestSql {
public static void main(String[] args) {
Connection con = null;
PreparedStatement ps = null;
Statement s = null;
ResultSet rs = null;
try {
try {
[Link]("Buscando el driver JDBC...");
[Link]("[Link]"
// "[Link]"
// "[Link]"
// "[Link]"
// "[Link]"
).newInstance();
[Link]("...Encontr el driver JDBC");
} catch (Exception e) {
[Link]("No pudo encontrar el driver JDBC !!!!");
[Link]([Link]);
return;
}
try {
[Link]("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:@[Link]:1521/XE","curso","123"
// "jdbc:sqlserver://[Link]:1433/database=curso/user=curso/password=123"
// "jdbc:firebirdsql:[Link]:C:/firebird/data/[Link]","curso","123"
);
[Link]("...Connectado a la base de datos");
} catch (Exception e) {
[Link]
.println("No pudo conectarse a la base de datos !!!!");
[Link]([Link]);
return;
}
try {
[Link]
.println("Lista de empleados con salario inferior a $30,000");
s = [Link]();
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 ([Link]()) {
[Link]([Link]("full_name"));

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina6/15

}
} catch ([Link] e) {
[Link]("Unable to step thru results of query");
showSQLException(e);
return;
}
try {
[Link]
.println("===============================================");
[Link]
.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 ?");
[Link](1, 30000);
[Link](2, 40000);
rs = [Link]();
while ([Link]()) {
[Link]([Link]("full_name"));
}
} catch ([Link] e) {
[Link]("Unable to submit a static SQL query.");
showSQLException(e);
return;
}
} finally {
[Link]("Cerrando la conexion a la base de datos.");
try {
if (rs != null) {
[Link]();
}
} catch ([Link] e) {
showSQLException(e);
}
try {
if (ps != null) {
[Link]();
}
} catch ([Link] e) {
showSQLException(e);
}
try {
if (con != null) {
[Link]();
}
} catch ([Link] e) {
showSQLException(e);
}
[Link]("Fin");
}
}

private static void showSQLException([Link] e) {


[Link] next = e;
while (next != null) {
[Link]([Link]());
[Link]("Error Code: " + [Link]());
[Link]("SQL State: " + [Link]());
next = [Link]();
}
}

3.6 MarcodetrabajodeSolucionJava
ElmarcodetrabajodeSolucionJavatraeunaclasequefacilitalaconexinalabasededatos.
Parausarla,[Link]
initConnectionVariables().
VerladocumentacionJavadelAPIparamasinformacin.
[Link]
[Link]

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina7/15

4 Reciclajedememoria
Javatieneunmanejointernodelamemoria,yperidicamente,reciclalamemoriaquenoesmsutilizada,
[Link].
ComoJavapuedeconsumirbastantememoria,esimportantedenocrearobjetosquenosonnecesarios,ydeliberar
objetosquenosonmsnecesarios.
Unmtodo([Link]();)permitetambindepreguntaraJavadeempezarelreciclajedelamemoria,peronoespor
[Link]
deperformancias(probarconejemploaquabajo).
Paraqueunobjetoseacandidatoalreciclaje,[Link]
seracandidato,esmejormeterloanulo(null)demaneraexplicita.
Silarecoleccin'forzada'dememoriapuedeayudarencasosdeprogaramasusandomuchasmemorias,esamanera
soloretardaraunpocoelproblema,[Link],
mejorqueutilizarlarecoleccinforzadadememoria.
Parainvestigarlafuentedelproblema,esposibledeconocerlamemoriadelJVMquequedadisponibleutilizandoel
metodofreememory()[Link].

Ejemplo([Link]()ysin):
public class TestMemory {
public static void main(String[] args) {
String test="";
Runtime rt = [Link]();
for (int i=0;i<1000;i++) {
[Link]("Memoria total: "+[Link]()+" - Memoria libre: "+[Link]());
test+="ffffffffffffffffffffffffffffffffffffff";
[Link]();
}
}
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina8/15

5 Clasesinteresantes
5.1 ClaseStringBuilder
LaclaseStringBuilderpermitedeahorarmemoriaencasodeunacadenadecaracteresquemuchocambiaenel
tiempo(concatenacion,reemplazo,...)
LaclaseStringcreaunnuevoobjetoacadamodificacindelobjeto,StringBuilderno.
StringBuildertienemenosmetodosqueString,[Link]
informacin.

5.2 ClaseArrayList
LaclaseArrayList,[Link],ydepoderordenarsus
[Link],ynosepuedecambiarsin
[Link]
unarreglonormalJavaesmuchomasrpidoderecorrerqueunArrayList,peroelArrayListtienesuusocuandono
seconoceeltamaomaximumalinicializarelarreglo.
VerladocumentacindeJavaparamasinformacin.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina9/15

6 Streaming
[Link]/oarchivos(textos,sonidos,imgenes,....).Es
tambinposiblesacarelnombre,tamao,...deunarchivo.
Elstreamingesporejemplonecesarioparainsertaroleerobjetosmuygrandeenlabasededatos(BLOB,CLOB,...),
[Link].
Losstreamspuedenmanejarentradacomosalidadeflujos.
Ejemplo1:Listararchivos

import [Link].*;
public class TestArchivo
{
public static String leer()
{
InputStreamReader isr = new InputStreamReader([Link]);
BufferedReader br = new BufferedReader(isr);
try
{
return [Link]();
}
catch(Exception e)
{}
return "";
}
public static void main (String[] args)
{
[Link]("Indique nombre de subdirectorio");
[Link]("Trayectoria absoluta, por ej: C:\\java");
String nomdir = leer();
File arch = new File(nomdir);
if ([Link]())
if ([Link]())
{
[Link]("Contenido de "+nomdir);
String arr[] = [Link]();
for(int j = 0; j < [Link]; j++)
{
File otro = new File(nomdir + "\\"+arr[j]);
if ([Link]())
[Link](arr[j]+ " <DIR>");
else
[Link](arr[j]);
}
}
else
[Link](nomdir+" no es un directorio");
else
[Link]("No existe");
}
}

Ejemplo2:LeerarchivoviaURL
import
import
import
import

[Link];
[Link];
[Link];
[Link];

public class LeerURL {


public LeerURL() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
if (args[0]==null)
[Link]("Se espera un parametro al llamar al metodod main!");
URL miURL=null;
try {
miURL = new URL("[Link]
URLConnection yc = [Link]();
BufferedReader in = new BufferedReader(
new InputStreamReader(
[Link]()));
String inputLine;
[Link]("<h1>Leyendo archivo</h1><hr>");
// Leer archivo
while ((inputLine = [Link]()) != null)

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava
{

Pagina10/15
try {
[Link](inputLine);
int lineSize=[Link]();
[Link](lineSize);

}
catch (Exception e1) {
[Link]();
in=null;
[Link]();
[Link]("Error leyendo el archivo. "+e1);
break;
}
} // while
//
[Link](inputLine);
[Link]();
in=null;

}
catch([Link] e1)
{
[Link]("<hr><h1><font color=red>El archivo [Link]
}
catch (Exception e) {
[Link]("Error: >"+e);
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina11/15

7 Variablesdesistema
EnJava,[Link]
operativodado,otrassepuedendefiniromodificaralencederlaJVMutilizandolaopcion-D<nombre>=<valor>.
Ejemlo:
import
import
import
public

[Link];
[Link];
[Link];
class SystemProp {
public static void main(String[] args) {
try {
String msg = "Propriedades del sistema\n";
msg = msg + "Version de Java: " +[Link]("[Link]") + "\n";
msg = msg + "Vendor: " +
[Link]("[Link]") + " - Web:" +
[Link]("[Link]") + "\n\n";
msg = msg + "Version de Windows: " +
[Link]("[Link]") + " " +
[Link]("[Link]") + " " +
[Link]("[Link]") + "\n";
msg = msg + "OS architectura: " +[Link]("[Link]") + "\n\n";
GraphicsEnvironment env =
[Link]();
msg = msg + "Resolucin de pantalla: " +
(int) [Link]().getMaxX()+" x "+(int) [Link]().getMaxY() + "\n";
GraphicsDevice device = [Link]();
int bytes = [Link]();
int mbytes = bytes /1048576;
msg = msg + "Memoria grafica: " +
mbytes + " MB\n\n";
msg = msg + "Look & Feel disponibles:\n ";
[Link][] info = UIManager.
getInstalledLookAndFeels();
for (int i = 0; i < [Link]; i++) {
// Get the name of the look and feel that is suitable for display to the user
String humanReadableName = info[i].getName();
String className = info[i].getClassName();
msg = msg + "
"+humanReadableName + " - " + className+"\n";
}
msg = msg + "\n";
msg = msg + "Archivo del programa: " +[Link]("[Link]") + "\n\n";
msg = msg + "CPU: " +[Link]("[Link]") + "\n\n";
msg = msg + "Usuario: " +[Link]("[Link]") + "\n";
msg = msg + "Idioma: " +[Link]("[Link]") + "\n";
msg = msg + "Encoding: " +[Link]("[Link]") + "\n\n";
msg = msg + "Tempdir: " +[Link]("[Link]") + "\n";
msg = msg + "Java CLASS path: " +[Link]("[Link]") + "\n\n";
msg = msg + "Java path: " +[Link]("[Link]") + "\n\n";
msg = msg + "Java LIB path: " +[Link]("[Link]") + "\n\n";
msg = msg + "Windows path: " +
[Link]("[Link]") + "\n\n";
[Link](msg);
} catch (Exception ex) {
[Link]("Error in SystemProp() constructor" +
[Link]());
}
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina12/15

8 Compresinyempaquetadodeaplicacin
Parareducireltamaodeunaaplicacinasicomojuntartodoslosarchivosjuntos,sepuedecrearunarchivoJarque
seraleidoydescromprimidoporJava.
ElusodeunmanifestpermiteindicaraJavacualeslaclasequehayqueutilizarparainiciarlaaplicacin,y
eventualmenteindicarcualesotrospaquetesJAR(drivers,...)hayqueincluirenelclasspath.
LoscdigosJavaestancasisiempredisptribuidosenarchivosJar(drivers,aplicaciones,...).ElarchivoJarpuede
contenerotrosarchivosquelosarchivosJava,comoimagenes,textos,sonidos,...
Existenprogarmas(comoporejemploJsmooth)queescondenunarchivoenunarchivoEXEparacorrerbajo
Windowscomounaaplicacinusualdewindows.
Parainiciarlaaplicacin,seutilizalaoption-jar [Link]:java

-jar [Link]

[Link]:

Manifest-Version: 1.0
Main-Class: [Link]
Created-By: Cedric Simon [Link]
Class-Path: [Link]

Ejemplo:

jar -cmf [Link] [Link] prueba/*.* dbaccess/*.*


Este va a crear un archivo [Link] continiendo los archivos de la carpeta corriente mas los de las carpetas (paquetes) prueba
y dbaccess. El [Link] indica que la clase de arraque (que contiene el metodo main) es la clase Main del paquete prueba, y
hay que incluir el archivo [Link] (como mencionado aqu, se encuentra en la misma carpeta que
[Link]) en el classpath.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina13/15

9 Threads
[Link],perosepuedecrearvarios
hilosdeejecucinparaejecutarvariastareaselmismotiempo.
Losthreadsohilosdeejecucinpermitenorganizarlosrecursosdelordenadordeformaque
[Link]
[Link](),queeselque
definelaactividadprincipaldelasthreads.
[Link]
background(enunsegundoplano)serviciosgenerales,estoes,tareasquenoformanpartedelaesenciadelprograma
[Link]
[Link]
[Link],ysinoseindicalocontrario,losthreadssondeltiponodaemon.
[Link],
cancelar,reanudarhilosdeejecucin,[Link]:wait(),sleep(),
notify(),suspend(),resume(),stop(),...
EjemplodeThread:

public class SimpleThread extends Thread {


// constructor
public SimpleThread (String str) {
super(str);
}
// redefinicin del mtodo run()
public void run() {
for(int i=0;i<10;i++)
[Link]("Este es el thread : " + getName());
}
}
public class TestThread {
public static void main(String[] args) { // metodo principal
SimpleThread miThread = new SimpleThread("Hilo de prueba");
[Link]();
} // fin de metodo Main
} // fin de clase TestThread
Ejemplo de Runnable:
public class SimpleRunnable implements Runnable {
// se crea un nombre
String nameThread;
// constructor
public SimpleRunnable(String str) {
nameThread = str;
}
// definicin del mtodo run()
public void run() {
for (int i = 0; i < 10; i++) {
[Link]("Este es el thread: " + nameThread);
}
}

public class TestRunnable {


public static void main(String[] args) { // metodo principal
TestRunnable miTest = new TestRunnable();
SimpleRunnable p = new SimpleRunnable("Hilo de prueba");
// se crea un objeto de la clase Thread pasndolo el objeto Runnable como argumento
Thread miThread = new Thread(p);
// se arranca el objeto de la clase Thread
[Link]();
} // fin de metodo Main
}

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina14/15

10Ejercicios
1)Conectarsealabasededatosysacarunalistadelosprimeros5empleados.
2)[Link].
3)[Link]().CompararelusodememoriautilizandoStringBuilder
envesdeString.
4)UtilizarlaclaseArrayListparacrearunaarreglodinamico,yordenarelarreglo.
5)LeerunarchivodeldiscodedesdeunaclaseJava
6)PasarunavariablealiniciarJavayleerladedesdeunaclase.
7)CrearunarchivoJarquecontineneunapequaaplicacinyejecutarlautilizandoelarchivoJar.

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

CursodeprogramacinenJava

Pagina15/15

11Esquemadelabasededatos

CopyrightCdricSimon,2009

Versin2.0

Reproduccinprohibida

También podría gustarte