(cid:1)(cid:2)(cid:3) DB2Versión9.5 paraLinux,UNIXyWindows DesarrollodeaplicacionesJava Actualizadoenmarzode2008 SC11-3501-01 (cid:1)(cid:2)(cid:3) DB2Versión9.5 paraLinux,UNIXyWindows DesarrollodeaplicacionesJava Actualizadoenmarzode2008 SC11-3501-01 Nota Antesdeutilizarestainformaciónyelproductoalquedasoporte,lealainformacióngeneralcontenidaenelapartado ApéndiceB,“Avisos”,enlapágina453. Notadeedición Estapublicacióneslatraduccióndeloriginalinglés:DB2Version9.5forLinux,UNIX,andWindows-Developing JavaApplications,(SC23-5853-01). EstedocumentocontieneinformaciónpropiedaddeIBM.Seproporcionasegúnunacuerdodelicenciayestá protegidoporlaleydelapropiedadintelectual.Lainformacióncontenidaenestapublicaciónnoincluyeninguna garantíadeproducto,porloqueningunadeclaraciónproporcionadaenestemanualdeberáinterpretarsecomotal. PuederealizarpedidosdepublicacionesdeIBMenlíneaoatravésdelrepresentantedeIBMdesulocalidad. v Pararealizarpedidosenlínea,vayaaIBMPublicationsCenterubicadoenelsitiowebwww.ibm.com/shop/ publications/order v ParaencontraralrepresentantedeIBMdesulocalidad,vayaalIBMDirectoryofWorldwideContactsenelsitio webwww.ibm.com/planetwide PararealizarpedidosdepublicacionesdeDB2desdeDB2MarketingandSales,enlosEE.UU.oenCanadá,llame al1-800-IBM-4YOU(426-4968). CuandoenvíainformaciónaIBM,otorgaaIBMunderechonoexclusivoautilizarodistribuirdichainformaciónen laformaenqueIBMconsidereadecuada,sincontraerporelloningunaobligaciónconelremitente. ©CopyrightInternationalBusinessMachinesCorporation2006,2008.Reservadostodoslosderechos. Contenido Acerca de este manual. . . . . . . . vii MétodosexecuteUpdatedeJDBCsobreun Aquiénvadirigidoestemanual . . . . . . . vii servidorDB2paraz/OS . . . . . . . . . 46 Realizaci ónd eactu alizac io nes po rl ote se n Capítulo 1. Desarrollo de aplicaciones aplicacionesJDBC . . . . . . . . . . . 46 Obtencióndeinformaciónacercadeparámetros Java para DB2 . . . . . . . . . . . . 1 dePreparedStatementmediantemétodos ControladoressoportadosparaJDBCySQLJ . . . 1 ParameterMetaData. . . . . . . . . . . 48 CompatibilidaddelcontroladorJDBCylabasede RecuperacióndedatosenaplicacionesJDBC . . 49 datosDB2 . . . . . . . . . . . . . . 3 Llamadaaprocedimientosalmacenadosen aplicacionesJDBC . . . . . . . . . . . 61 Capítulo 2. Instalación de IBM Data DatosLOBenaplicacionesJDBCconIBMData Server D riv er para JDB C y SQ LJ . . . . 5 Server Driv er paraJDBCy SQLJ . . . . . . 66 ProgramadeutilidadDB2Binder . . . . . . . 8 Identificadoresdefila(ROWID)enJDBCcon ProgramadeutilidadDB2LobTableCreator . . . . 16 IBMDataServerDriverparaJDBCySQLJ. . . 71 Personalizacióndepropiedadesdeconfiguraciónde TiposdiferenciadosenaplicacionesJDBC . . . 73 IBMDataServerDriverparaJDBCySQLJ. . . . 17 Invocacióndeprocedimientosalmacenadoscon Configuraciónespecialparaaccederaservidores parámetrosARRAYenaplicacionesJDBC . . . 74 DB2paraz/OSdesdeprogramasJava . . . . . 18 PuntosdesalvaguardaenaplicacionesJDBC . . 74 DB2T4XAIndoubtUtilparatransacciones Recuperacióndeclavesdegeneraciónautomática distribuidasconDB2UDBparalosservidores enaplicacionesJDBC . . . . . . . . . . 75 OS/390yz/OSversión7. . . . . . . . . . 19 Suministrodeinformaciónampliadasobreel InstalaciónespecialparaejecutarrutinasJavaenel clientealafuentededatosmediantemétodos entornoHP-UX . . . . . . . . . . . . . 22 específicosdeIBMDataServerDriverparaJDBC ySQLJ . . . . . . . . . . . . . . . 78 Capítulo 3. Programación de Suministrodeinformaciónampliadasobreel aplicacio ne s JDBC . . . . . . . . . 25 clientealafuentededatosmediantepropiedades deinformacióndelcliente . . . . . . . . 80 EjemplodeunaaplicaciónJDBCsimple. . . . . 25 BloqueooptimistaenaplicacionesJDBC. . . . . 82 ConexióndelasaplicacionesJDBCaunafuentede DatosXMLenaplicacionesJDBC . . . . . . . 84 datos . . . . . . . . . . . . . . . . 27 ActualizacionesdecolumnasXMLen ConexióndeaplicacionesDB2aunafuentede aplicacionesJDBC . . . . . . . . . . . 85 datosutilizandolainterfazDriverManagerconel RecuperacióndedatosXMLenaplicaciones controladorJDBCdeDB2detipo2 . . . . . 29 JDBC . . . . . . . . . . . . . . . 87 Conexiónconunafuentededatosutilizandola InvocaciónderutinasconparámetrosXMLen interfazDriverManagerconIBMDataServer aplicacionesJava . . . . . . . . . . . 90 DriverparaJDBCySQLJ. . . . . . . . . 31 SoportedeJavaparaelregistroylaeliminación Conexiónconunafuentededatosmediantela deesquemasXML . . . . . . . . . . . 92 interfazDataSource. . . . . . . . . . . 35 ControldetransaccionesenaplicacionesJDBC . . 94 Cómodeterminarquétipodeconectividadde NivelesdeaislamientodeIBMDataServer IBMDataServerDriverparaJDBCySQLJ DriverparaJDBCySQLJ. . . . . . . . . 94 utilizar . . . . . . . . . . . . . . . 37 Confirmaciónoretrotraccióndetransacciones ObjetosdeconexiónJDBC . . . . . . . . 38 JDBC . . . . . . . . . . . . . . . 94 CreaciónydesplieguedeobjetosDataSource . . 38 Modalidadesdeconfirmaciónautomáticapor PaquetesJavaparaelsoporteJDBC . . . . . . 40 omisióndeJDBC . . . . . . . . . . . 95 Obtencióndeinformaciónacercadeunafuentede ExcepcionesyavisoscuandoseutilizaIBMData datosmediantemétodosDatabaseMetaData . . . 40 ServerDriverparaJDBCySQLJ . . . . . . . 96 MétodosDatabaseMetaDataparaidentificarel ManejodeunaexcepcióndeSQLcuandose tipodefuentesdedatos . . . . . . . . . 42 utilizaIBMDataServerDriverparaJDBCySQLJ 98 VariablesenaplicacionesJDBC. . . . . . . . 42 ManejodeunavisodeSQLcuandoseutiliza InterfacesJDBCparaejecutarSQL. . . . . . . 43 IBMDataServerDriverparaJDBCySQLJ . . 102 Creaciónymodificacióndeobjetosdebasede Recuperacióndeinformacióndeunaexcepción datosutilizandoelmétodo BatchUpdateException . . . . . . . . . 103 Statement.executeUpdate. . . . . . . . . 43 ManejodeunaexcepcióndeSQLcuandoseutiliza Actualizacióndedatosdetablasutilizandoel elcontroladorJDBCdeDB2detipo2 . . . . . 104 métodoPreparedStatement.executeUpdate . . . 44 ManejodeunavisodeSQLconelcontrolador JDBCdeDB2detipo2 . . . . . . . . . 105 ©CopyrightIBMCorp.2006,2008 iii SoportederedireccionamientodeclientedeIBM Establecimientodelniveldeaislamientopara DataServerDriverparaJDBCySQLJ . . . . . 106 unatransacciónSQLJ. . . . . . . . . . 163 ConfiguracióndelosservidoresDB2paraz/OS Confirmaciónoretrotraccióndetransacciones paraelredireccionamientodecliente . . . . 107 SQLJ . . . . . . . . . . . . . . . 164 Operaciónderedireccionamientodelclientede ManejodeerroresyavisosdeSQLenaplicaciones IBMDataServerDriverparaJDBCySQLJenel SQLJ . . . . . . . . . . . . . . . . 164 cliente. . . . . . . . . . . . . . . 108 ManejodeerroresdeSQLenunaaplicación SoportedeIBMDataServerDriverparaJDBCy SQLJ . . . . . . . . . . . . . . . 164 SQLJparaafinidadesdeclienteparala ManejodeavisosdeSQLenunaaplicación migracióntraserrorencascada . . . . . . 111 SQLJ . . . . . . . . . . . . . . . 165 Desconexiónrespectodefuentesdedatosen Cierredeunaconexiónaunafuentededatosen aplicacionesJDBC. . . . . . . . . . . . 112 unaaplicaciónSQLJ . . . . . . . . . . . 166 Capítulo 4. Programación de Capítulo 5. Seguridad cuando se aplicaciones SQLJ . . . . . . . . . 113 utiliza IBM Data Server Driver para EjemplodeunaaplicaciónSQLJsimple. . . . . 113 JDBC y SQLJ . . . . . . . . . . . 167 ConexiónaunafuentededatosutilizandoSQLJ 115 SeguridadbasadaenIDdeusuarioycontraseña Técnica d eco nexión 1d eSQL J:interfaz cuandose utilizaI BM D ata ServerD r iverpara DriverM an agerdeJD B C. . . . . . . . . 115 JDBCy SQ LJ . . . . . . . . . . . . . 169 Técnicadecone xió n2de SQ LJ: in terf az Segur id adme dia nte lo sID d eu su ario cu an do se DriverM an agerdeJD B C. . . . . . . . . 117 utilizaIBM DataSer ver Dr iver paraJD BCySQ L J . 170 Técnicadecone xió n3de SQ LJ: in terf az Seguri dadp orco ntraseñ acifrad a,se gurida d porI D DataSou rce deJDBC . . . . . . . . . . 118 deusuario cifr adoosegur idadpo rIDdeus uario Técnicade con exión 4 de SQ LJ: in terf az cifr adoyc ontraseñ a cifradacua ndo se uti lizaIBM DataSou rce deJDBC . . . . . . . . . . 120 DataSe rv erDriverp araJDB CySQL J . . . . . 171 Técnicade con exión 5 de SQ LJ: Ut iliz aci ón de Segu ridadK erberos cuan dose u tiliza IB M Da ta unacon exi óncreada p rev iamen te . . . . . 121 ServerDri verparaJ DBCyS QL J . . . . . . . 173 Técn icadeco nexión 6deSQLJ:U tiliz aci ón de la Soport edelpl ugin deseg u ridad d eI BM D ata conexió np oromisió n . . . . . . . . . 121 ServerD riv erpara JD BCySQLJ . . . . . . . 176 PaquetesJav apa raelsop ort eS QL J . . . . . . 122 Usode mecan ismo sdese g uridad alte rn ativ os co n Variables ena plicac io nesSQL J . . . . . . . 122 IBM Da taServerDr iver paraJDBC ySQLJ . . . 178 Comentar ios enunaaplic ación SQ LJ . . . . . 124 Sopo rted econte xtofiab lede IBMD a taSer ver Ejecuciónde sen tenc iasdeSQL enap lic acio ne s Driverp ara JDBCy SQLJ . . . . . . . . . 180 SQLJ . . . . . . . . . . . . . . . . 124 Soport epar aSSL de IBM Da ta Ser ver D rive rp ar a Cr ea ció ny m odi fica ció nd eo bje to sD B2 en un a JDBCy SQLJ . . . . . . . . . . . . . 182 aplicación SQLJ. . . . . . . . . . . . 124 Segur id adpa rap re par ar apl ica cion es SQ LJ co n Ejecución deop e rac ion es UP DA TE y DE LE TE IBMData Serve rDriverp araJDBCy SQLJ . . . 183 deposició ne nunaaplica ciónSQLJ . . . . . 125 RecuperacióndedatosenaplicacionesSQLJ . . 133 Capítulo 6. Seguridad cuando se Invocacióndeprocedimientosalmacenadosen utiliza el controlador JDBC de DB2 de unaaplicaciónSQLJ . . . . . . . . . . 144 tipo 2. . . . . . . . . . . . . . . 187 ObjetosLOBenaplicacionesSQLJconIBMData ServerDriverparaJDBCySQLJ . . . . . . 146 SQLJy JDBC enla mism a aplica ci ón . . . . 149 Capítulo 7. Creación de aplicaciones ControldelaejecucióndesentenciasdeSQLen de bases de datos Java . . . . . . . 189 SQLJ . . . . . . . . . . . . . . . 152 Cre aciónde app letsJDB C . . . . . . . . . 189 Ident ific ad ore sd ef ila (RO W ID )en SQ L Jco n Creación de aplicaci onesJ DB C . . . . . . . 189 IBMDataServe rD riv erparaJD BC ySQ LJ . . 152 Creación de rutinasJDBC . . . . . . . . . 190 Tipo sdife renciad osena plica ciones SQ LJ . . . 153 Creación de applets SQLJ . . . . . . . . . 191 Invoc acióndeproce dim ientosalma cenad os co n Creación de aplicaci onesS Q LJ. . . . . . . . 192 parámetros AR RAYenaplicac ionesSQLJ . . . 154 Consider acio nessobrelo sappl e ts Jav a . . . . . 192 Puntosdes alvagua rda enaplicacio nesSQ L J . . 155 Opcionesdeapli cacion es yapplet sSQL J pa ra DatosXM Le naplicacione sS QLJ. . . . . . . 156 UNIX . . . . . . . . . . . . . . . . 193 Act ualiza cio nesdecolum nasX ML en Opcio ne sd ea pli cac ion es ya pp lets SQ LJ pa ra aplicacionesde SQ LJ . . . . . . . . . . 156 Windows . . . . . . . . . . . . . . . 194 Recuperació nd edato s XM L en ap lica cio ne sd e Creación d er utin as SQ L. . . . . . . . . . 194 SQLJ . . . . . . . . . . . . . . . 159 Opciones de rutinas SQL J pa ra UN IX . . . . . 195 Utilizaci ón en SQ LJ de fu nci one sd el SD Kd e Jav a Opciones de rutinas SQLJ para Windo w s . . . . 196 Versión5. . . . . . . . . . . . . . . 161 ControldetransaccionesenaplicacionesSQLJ . . 163 iv DesarrollodeaplicacionesJava Capítulo 8. Diagnóstico de problemas PropiedadescomunesdeIBMDataServer con IBM Data Server Driver para DriverparaJDBCySQLJparaDB2paraz/OSy JDB C y S QLJ . . . . . . . . . . . 197 DB2DatabaseparaLinux,UNIXyWindows. . 247 PropiedadescomunesdeIBMDataServer Ejemplodeutilizacióndepropiedadesde DriverparaJDBCySQLJparaDB2paraz/OSy configuraciónparainiciarunrastreodeJDBC . . 199 IBMInformixDynamicServer. . . . . . . 259 Ejemplodeunprogramaderastreoqueseejecuta PropiedadescomunesdeIBMDataServer bajoIBMDataServerDriverparaJDBCySQLJ. . 200 DriverparaJDBCySQLJparaservidoresde basesdedatosIBMInformixDynamicServery Capítulo 9. Supervisión del sistema DB2DatabaseparaLinux,UNIXyWindows. . 260 para IBM D ata Server D rive r para Prop iedadesd eIBM Data Server D riverpara JDBC y SQLJ . . . . . . . . . . . 205 JDBCySQLJcorrespondientesaDB2Database ControladorderastreoremotodelIBMDataServer paraLinux,UNIXyWindows. . . . . . . 261 Driverpara JDB CySQ LJ . . . . . . . . . 207 Prop iedades deIB M DataServ e rD riv er pa ra Hab ilitac iónde lc ontro lad or de ras tre or em oto 207 JDBCySQL Jco rresp ondie ntesa DB2pa raz/ OS 263 Accesoalco ntro ladorderas treo remot o . . . 208 Propie d adesd eIBMDataServ er Driv erpa ra JDBCySQL Jco rresp ondie ntesa IBMIn formi x Capítulo 10. Java 2 Platform, DynamicServer . . . . . . . . . . . 268 PropiedadesdeconfiguracióndeIBMDataServer Enterprise Edition . . . . . . . . . 213 DriverparaJDBCySQLJ . . . . . . . . . 272 SoporteparacomponentesdeaplicacióndeJava2 SoportedecontroladoresparalasAPIdeJDBC . . 276 Platform,EnterpriseEdition . . . . . . . . 213 InformacióndeconsultasobresentenciasdeSQLJ 305 ContenedoresdeJava2PlatformEnterprise CláusulaSQLJ . . . . . . . . . . . . 305 Edition . . . . . . . . . . . . . . . 214 ExpresióndelenguajeprincipaldeSQLJ . . . 305 ServidorJava2PlatformEnterpriseEdition . . . 215 CláusulaimplementsdeSQLJ. . . . . . . 306 RequisitosdelabasededatosdeJava2Platform CláusulawithdeSQLJ . . . . . . . . . 306 EnterpriseEdition. . . . . . . . . . . . 215 CláusuladedeclaracióndeconexióndeSQLJ 308 JavaNamingandDirectoryInterface(JNDI) . . . 215 CláusuladedeclaracióndeiteradordeSQLJ 308 GestióndetransaccionesJava . . . . . . . . 215 CláusulaejecutabledeSQLJ . . . . . . . 310 Ejemplodeunatransaccióndistribuidaque CláusuladecontextodeSQLJ. . . . . . . 310 utilizamétodosdeJTA . . . . . . . . . 217 CláusuladesentenciadeSQLJ. . . . . . . 311 Establecimientodelvalordetiempoexcedidode CláusulaSETTRANSACTIONdeSQLJ . . . 313 transacciónparaunainstanciadeXAResource . 221 CláusuladeasignacióndeSQLJ . . . . . . 313 EnterpriseJavaBeans. . . . . . . . . . . 221 CláusuladeconversiónaiteradordeSQLJ . . 314 Interfacesyclasescontenidasenelpaquete Capítulo 11. Soporte para la sqlj.runtime . . . . . . . . . . . . . . 315 agrupaci ón de conex ione s J DBC y Interfazs q lj.ru nt ime .C onn ec tion Co nte xt . . . 316 SQLJ . . . . . . . . . . . . . . . 225 Interfazsqlj.runtime.ForUpdate . . . . . . 320 Interfaz sqlj.runtime.NamedIter ato r . . . . . 321 Capítulo 12. Concentrador de Interfazsqlj.runtime.PositionedIterator . . . . 321 Interfazsqlj.runtime.ResultSetIterator . . . . 322 conexiones de JDBC y equilibrado de Interfazsqlj.runtime.Scrollable. . . . . . . 324 carga Sysplex . . . . . . . . . . . 227 Clasesqlj.runtime.AsciiStream. . . . . . . 327 Ejemplodehabilitacióndelconcentradorde Clasesqlj.runtime.BinaryStream . . . . . . 328 conexionesdeIBMDataServerDriverparaJDBC Clasesqlj.runtime.CharacterStream . . . . . 328 ySQLJ . . . . . . . . . . . . . . . 228 Clasesqlj.runtime.ExecutionContext. . . . . 329 Técnicasparasupervisarelconcentradorde Clasesqlj.runtime.SQLNullException . . . . 337 conexionesdeIBMDataServerDriverparaJDBC Clasesqlj.runtime.StreamWrapper . . . . . 337 ySQLJyelequilibradodelacargadetrabajode Clasesqlj.runtime.UnicodeStream . . . . . 338 Sysplex . . . . . . . . . . . . . . . 229 ExtensionesparaJDBCdeIBMDataServerDriver paraJDBCySQLJ. . . . . . . . . . . . 339 Capítulo 13. Información de consulta ClaseDB2Administrator. . . . . . . . . 341 sobre JDBC y SQLJ . . . . . . . . 233 ClaseDB2BaseDataSource . . . . . . . . 341 ClaseDB2CataloguedDatabase . . . . . . 348 Tiposdedatosquesecorrelacionancontiposde ClaseDB2ClientRerouteServerList . . . . . 348 datosdebasededatosenaplicacionesJava . . . 233 InterfazDB2Connection. . . . . . . . . 349 PropiedadesdeIBMDataServerDriverparaJDBC ClaseDB2ConnectionPoolDataSource . . . . 365 ySQLJ . . . . . . . . . . . . . . . 239 InterfazDB2DatabaseMetaData . . . . . . 367 PropiedadescomunesdeIBMDataServer InterfazDB2Diagnosable . . . . . . . . 368 DriverparaJDBCySQLJparatodoslos ClaseDB2ExceptionFormatter. . . . . . . 369 productosdebasededatospermitidos. . . . 240 ClaseDB2JCCPlugin . . . . . . . . . . 369 Contenido v ClaseDB2PooledConnection . . . . . . . 370 Mandatosparalapreparacióndeprogramasde ClaseDB2PoolMonitor . . . . . . . . . 373 SQLJ . . . . . . . . . . . . . . . . 419 InterfazDB2PreparedStatement . . . . . . 375 sqlj-TraductorSQLJ. . . . . . . . . . 419 InterfazDB2ResultSet . . . . . . . . . 376 db2sqljcustomize-Personalizadordeperfilesde InterfazDB2ResultSetMetaData . . . . . . 376 SQLJ . . . . . . . . . . . . . . . 423 InterfazDB2RowID . . . . . . . . . . 377 db2sqljbind-VinculadordeperfilesdeSQLJ 435 ClaseDB2SimpleDataSource . . . . . . . 377 db2sqljprint-ImpresoradeperfilesdeSQLJ . . 440 ClaseDB2Sqlca. . . . . . . . . . . . 378 InterfazDB2Statement . . . . . . . . . 379 Apéndice A. Visión general de la Interfaz DB2SystemMo nit or . . . . . . . 381 informaci ón técnica de DB2 . . . . . 443 ClaseDB2TraceManager. . . . . . . . . 385 BibliotecatécnicadeDB2encopiaimpresaoen InterfazDB2TraceManagerMXBean . . . . . 388 formatoPDF . . . . . . . . . . . . . 443 ClaseDB2XADataSource . . . . . . . . 392 PedidodemanualesdeDB2encopiaimpresa . . 446 InterfazDB2Xml . . . . . . . . . . . 393 VisualizacióndelaayudaparaestadosdeSQL DiferenciasenJDBCentreelcontroladoractual desdeelprocesadordelíneademandatos. . . . 447 IBMDataServerDriverparaJDBCySQLJy AccesoadiferentesversionesdelCentrode controladoresJDBCdeDB2anteriores . . . . . 396 informacióndeDB2 . . . . . . . . . . . 447 Ejemplosdevaloresde Visualizacióndetemasensuidiomapreferidoen ResultSetMetaData.getColumnNamey elCentrodeinformacióndeDB2. . . . . . . 447 ResultSetMetaData.getColumnLabel. . . . . 404 ActualizacióndelCentrodeinformacióndeDB2 DiferenciasenSQLJentreIBMDataServerDriver instaladoenelsistemaoenelservidordeintranet. 448 paraJDBCySQLJyotroscontroladoresJDBCde GuíasdeaprendizajedeDB2 . . . . . . . . 450 DB2 . . . . . . . . . . . . . . . . 406 InformaciónderesolucióndeproblemasdeDB2 450 DiferenciasdelSDKdeJavaqueafectanalIBM Términosycondiciones . . . . . . . . . . 451 DataServerDriverparaJDBCySQLJ . . . . . 408 CódigosdeerroremitidosporIBMDataServer Apéndice B. Avisos. . . . . . . . . 453 DriverparaJDBCySQLJ . . . . . . . . . 409 EstadosdeSQLemitidosporIBMDataServer Índice. . . . . . . . . . . . . . . 457 DriverparaJDBCySQLJ . . . . . . . . . 416 Búsquedadeinformacióndeversiónydeentorno sobreIBMDataServerDriverparaJDBCySQLJ . 418 vi DesarrollodeaplicacionesJava Acerca de este manual Este manual describe el soporte de DB2 para Linux, UNIX y Windows de Java. Este soporte le permite acceder a bases de datos relacionales desde programas de aplicación Java. A quién va dirigido este manual Este manual va dirigido a los siguientes usuarios: v Desarrolladores de aplicaciones de DB2 para Linux, UNIX y Windows que estén familiarizados con Structured Query Language (SQL) y que conozcan el lenguaje de programación Java. v Programadores del sistema de DB2 para Linux, UNIX y Windows que vayan a instalar el soporte de JDBC y SQLJ. ©CopyrightIBMCorp.2006,2008 vii viii DesarrollodeaplicacionesJava
Description: