agricultura precision soft de gestion agroganadera

Upload: cova5609

Post on 08-Apr-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    1/190

    Universidad Nacional del NordesteFacultad de Ciencias Exactas y Naturales y de Agrimensura

    Licenciatura en Sistemas de InformacinTrabajo Final de Aplicacin

    Aplicacin Web para la Gestin Agro-Ganadera

    Alumno: Lisandro Dardo Yaccuzzi - LU:32774Profs. Orientadores: Mgter. David L. La Red Martinez

    y Lic. Valeria E. UribeProf. Coordinador: Agr. Castor F. Herrmann

    Corrientes - Argentina

    Julio - 2010

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    2/190

    A mi familia, esposa e hija.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    3/190

    PrefacioLos diversos avances tecnolgicos derivados del conocimiento y la ciencia

    estn siendo aplicados en varios pases del mundo a distintos sectores nun-ca antes imaginados, entre ellos el sector de la agricultura y la ganadera enArgentina. A esto se le suma el empleo de herramientas con tecnologa de avan-zada que ya se encuentran a disposicin de todos en cualquier momento y lugarque se las requieran, para poder de esta forma mantener la competitividad anivel mundial con una produccin sustentable en el tiempo.

    Todo lo sealado precedentemente sera ilusorio si no se dispusiera de lasmetodologas y de los sistemas informticos que facilitaran la informacin en-

    tre las distintas organizaciones empresariales, utilizando diversos medios de co-municacin y diferentes plataformas de hardware y de software, para resolverel problema de la creciente complejidad de la gestin de un establecimientoagrcola-ganadero en continua expansin.

    Este trabajo se basa en el estudio de software de base que permite eldesarrollo de aplicaciones Web multiplataforma con acceso a bases de datosy en el desarrollo de una aplicacin Web de gestin de un establecimientoagro-ganadero.

    Contempla el registro y seguimiento de la informacin propia del estable-cimiento como todas las actividades realizadas en el mismo, es decir la infor-

    macin emergente del registro de cada actividad que se genera en el mismo, elseguimiento detallado de cada actividad registrada, paso a paso, a los efectosde brindar informacin a los usuarios finales de los movimientos realizados,tambin a su vez da informacin, mediante consultas a la aplicacin, de losdatos ingresados por cada actividad, como estado actual, stock y dems.

    Esto significa la posibilidad de registrar cada actividad con sus datos yfechas en el mismo momento que ocurren para su posterior gestin o consul-ta, brindando la posibilidad de una consulta desde la Internet por los demsusuarios de la aplicacin.

    Objetivos

    El objetivo inicialmente planteado fue la realizacin de una aplicacin Webmultiplataforma desarrollada en Java, mediante la cual el usuario pudiera con-tar con un medio de gestin para consultar distintos aspectos del estableci-miento en s, mediante la Web. La aplicacin podra ser operada desde unaIntranet o bien desde Internet.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    4/190

    Los objetivos planteados al inicio del trabajo, fueron totalmente cumplidos.

    Etapas de Desarrollo

    Se ha efectuado una amplia recopilacin bibliogrfica especfica de lostemas pertinentes a la tarea planificada y a los productos de softwareque se emplearon para la concrecin del Trabajo Final.

    Se realizaron las traducciones de los manuales correspondientes a la he-rramienta de desarrollo Eclipse, versin 5.0 para Windows.

    Se ha realizado un detallado estudio del lenguaje Java, utilizndose laversin JDK 1.5.

    Se ha realizado un detallado estudio del entorno de trabajo ScientificWorkPlace 2.5.0 para la escritura del libro correspondiente al informefinal.

    Se ha realizado un detallado estudio del software para el desarrollo dela aplicacin, es decir el estudio de la plataforma integrada de desarrollode aplicaciones Web, Eclipse.

    Se ha realizado el estudio del Manejador de Bases de Datos (DBMS)multiplataforma DB2 Express-C 9.

    Se ha realizado el desarrollo de la aplicacin utilizando pginas HTMLy Servlets de Java en el marco de la herramienta Eclipse en el entornoWindows.

    Se ha realizado el correspondiente testeo de la aplicacin, utilizando unamquina como servidor y otra como cliente ingresando a la base de datosdel servidor a travs de la Intranet de la Facultad.

    Una vez finalizada la aplicacin se realiz la grabacin en DVD de todoel material correspondiente al trabajo final: una versin de la aplicacin,otra referente al libro en formato LaTex y el PDF generado. Tambin seicluy los instaladores de los productos utilizados para el desarrollo, es

    decir DB2 Express-C 9, Eclipse y Tomcat.

    Objetivos Logrados

    Se han alcanzado plenamente la totalidad de los objetivos planteados parael presente trabajo.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    5/190

    Organizacin del Informe Final

    El informe final comprende un libro impreso y un DVD, adems de unresumen y de un resumen extendido.

    El libro impreso est organizado en captulos, los que se indican a con-tinuacin:

    Capitulo 1 - La Agro-Ganadera en la Actualidad: Se presenta unavisin general de los conceptos sobre la tecnologa aplicada al sectoragro-ganadero.

    Capitulo 2 - Conceptos bsicos sobre Java: Se sealan los principalesconceptos referidos al lenguaje de programacin.

    Capitulo 3 - El lenguaje Java: Se indican los principales aspectos ydestacadas caractersticas referidas al lenguaje.

    Capitulo 4 - Los Servlets: Se resumen los aspectos y caractersticasms destacadas de estas facilidades.

    Capitulo 5 - Introduccin a DB2 Express-C 9: Se detallan las msrelevantes caractersticas de esta familia de productos de gestin de basesde datos multiplataforma.

    Capitulo 6 - Eclipse: Se presentan los principales aspectos de este en-torno de desarrollo de aplicaciones complejas.

    Capitulo 7 - Introduccin al Servidor Tomcat: Se sealan los aspec-tos ms relevantes de este servidor de aplicaciones Web.

    Capitulo 8 - Aplicacin: Se detallan los aspectos ms significativos dela aplicacin desarrollada utilizando las facilidades antes mencionadas.

    Capitulo 9 - Conclusiones: Se presentan las conclusiones a las que seha llegado al finalizar el presente trabajo y las posibles lneas futuras.

    El DVD, adjunto al libro impreso, contiene lo siguiente:

    Instaladores del software utilizado.

    Resmenes del trabajo realizado.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    6/190

    Libro del informe final.

    Presentacin para la defensa final.

    Copia de seguridad de la base de datos de la aplicacin.

    Aplicacin desarrollada.

    Lisandro Dardo YaccuzziLicenciatura en Sistemas de Informacin

    Universidad Nacional del NordesteL.U.: 32774

    Profs. Orientadores: Mgter. David Luis La Red Martnezy Lic. Valeria E. UribeProf. Coordinador: Agr. Castor F. Herrmann

    Corrientes; 01 de Mayo de 2010

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    7/190

    ndice general

    1. La Agro-Ganadera en la Actualidad 1

    1.1. La Agricultura y la Ganadera en el Mundo y en Argentina . . 11.2. La Agricultura, la Mquina Reemplaza al Msculo . . . . . . . 21.2.1. Agricultura de Precisin . . . . . . . . . . . . . . . . . . 4

    1.3. La Evolucin de la Ganadera . . . . . . . . . . . . . . . . . . . 51.3.1. Ganadera Extensiva e Intensiva . . . . . . . . . . . . . 7

    2. Conceptos Bsicos de Java 112.1. Qu es Java y Para qu fue Pensado? . . . . . . . . . . . . . . 11

    2.1.1. Caractersticas del Lenguaje Java . . . . . . . . . . . . . 122.1.2. Desarrollo de las Principales Caractersticas de Java . . 132.1.3. Ventajas de Java . . . . . . . . . . . . . . . . . . . . . . 182.1.4. Limitaciones con Java . . . . . . . . . . . . . . . . . . . 192.1.5. Errores con Java . . . . . . . . . . . . . . . . . . . . . . 19

    2.2. Existen Distintos Tipos de Java . . . . . . . . . . . . . . . . . . 202.2.1. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . 202.2.2. Java Standalone . . . . . . . . . . . . . . . . . . . . . . 212.2.3. Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    2.3. Java en los Browsers de la World Wide Web . . . . . . . . . . . 232.3.1. Las Applets en la Web . . . . . . . . . . . . . . . . . . . 232.3.2. Mquinas Virtuales . . . . . . . . . . . . . . . . . . . . . 262.3.3. Java sin Browsers . . . . . . . . . . . . . . . . . . . . . . 282.3.4. HotJava . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    2.4. Java en Hebras - Threads . . . . . . . . . . . . . . . . . . . . . 29

    2.4.1. La Ventaja de ser Multi-Threaded . . . . . . . . . . . . 302.5. Java Para Aplicaciones Corporativas . . . . . . . . . . . . . . . 31

    3. El Lenguaje Java 343.1. Introduccin a su Codificacin . . . . . . . . . . . . . . . . . . 34

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    8/190

    NDICE GENERAL

    3.1.1. Bibliotecas de Clases Estndares de Java . . . . . . . . 363.2. Estructura General de un Programa Java . . . . . . . . . . . . 363.3. Conceptos Bsicos . . . . . . . . . . . . . . . . . . . . . . . . . 38

    3.3.1. Clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.2. Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    3.3.3. Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.3.4. Package . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    3.3.5. La Jerarqua de Clases de Java (API) . . . . . . . . . . 413.3.6. Variables Dentro del Lenguaje Java . . . . . . . . . . . 423.3.7. Visibilidad y Vida de las Variables . . . . . . . . . . . . 44

    3.4. Operadores en Java . . . . . . . . . . . . . . . . . . . . . . . . 45

    3.4.1. Operadores Aritmticos . . . . . . . . . . . . . . . . . . 453.4.2. Operadores de Asignacin . . . . . . . . . . . . . . . . . 463.4.3. Operadores Unarios . . . . . . . . . . . . . . . . . . . . 463.4.4. Operadores Incrementales . . . . . . . . . . . . . . . . . 463.4.5. Operadores Relacionales . . . . . . . . . . . . . . . . . . 473.4.6. Operador de Concatenacin de Cadenas de Caracteres

    (+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.4.7. Precedencia de Operadores . . . . . . . . . . . . . . . . 49

    3.5. Estructuras de Programacin . . . . . . . . . . . . . . . . . . . 503.5.1. Sentencias o Expresiones . . . . . . . . . . . . . . . . . . 503.5.2. Comentarios . . . . . . . . . . . . . . . . . . . . . . . . 50

    3.5.3. Sentencia import . . . . . . . . . . . . . . . . . . . . . . 523.5.4. Longitud de Lneas . . . . . . . . . . . . . . . . . . . . . 523.5.5. Bifurcaciones . . . . . . . . . . . . . . . . . . . . . . . . 523.5.6. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    3.6. Clases en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.6.1. Caractersticas Importantes de las Clases . . . . . . . . 57

    3.6.2. Mtodos o Funciones Miembros . . . . . . . . . . . . . . 583.7. Clases de Mayor Utilidad . . . . . . . . . . . . . . . . . . . . . 60

    3.7.1. Clase Arrays . . . . . . . . . . . . . . . . . . . . . . . . 603.7.2. Clases String y StringBuffer . . . . . . . . . . . . . . . . 613.7.3. Clase Double . . . . . . . . . . . . . . . . . . . . . . . . 62

    3.7.4. Clase Integer . . . . . . . . . . . . . . . . . . . . . . . . 633.8. El AWT (Abstract Windows Toolkit) . . . . . . . . . . . . . . . 633.8.1. Qu es el AWT . . . . . . . . . . . . . . . . . . . . . . . 633.8.2. Creacin de una Interface Grfica de Usuario . . . . . . 633.8.3. Objetos event source y Objetos event listener . . . 64

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    9/190

    NDICE GENERAL

    3.8.4. Proceso a Seguir Para Crear Una Aplicacin Interactiva(Orientada a Eventos) . . . . . . . . . . . . . . . . . . . 65

    3.9. Errores Frecuentes de Programacin . . . . . . . . . . . . . . . 653.9.1. Scheduling de Hilos de Ejecucin . . . . . . . . . . . . . 663.9.2. Errores en el Uso de las Caractersticas de Portabilidad

    de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.9.3. Uso de Directorios Definidos . . . . . . . . . . . . . . . 683.9.4. Carga de Drivers JDBC . . . . . . . . . . . . . . . . . . 713.9.5. Terminacin de Lneas . . . . . . . . . . . . . . . . . . . 723.9.6. Entrada/Salida por Archivo . . . . . . . . . . . . . . . . 733.9.7. Fuentes de Caracteres . . . . . . . . . . . . . . . . . . . 73

    4. Los Servlets 744.1. Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    4.1.1. Principios de Codificacin de Servlet . . . . . . . . . . 754.1.2. Ciclo de Vida del Servlet . . . . . . . . . . . . . . . . . 764.1.3. Instanciacin e Inicializacin . . . . . . . . . . . . . . . 764.1.4. Servicio de Demanda . . . . . . . . . . . . . . . . . . . . 784.1.5. Terminacin . . . . . . . . . . . . . . . . . . . . . . . . . 784.1.6. Modelos de Acceso JSP . . . . . . . . . . . . . . . . . . 784.1.7. Procesadores JSP . . . . . . . . . . . . . . . . . . . . . . 794.1.8. Compilacin Batch de Archivos JSP . . . . . . . . . . . 814.1.9. Desarrollando Aplicaciones . . . . . . . . . . . . . . . . 81

    4.1.10. Fases de Inicializacin y de Terminacin . . . . . . . . . 824.1.11. Rasgos de Java Servlet API . . . . . . . . . . . . . . . . 824.1.12. Patrones y Guas de Servlets/JSP . . . . . . . . . . . . 83

    5. Introduccin al DB2 Express-C 9 875.0.13. Servidores DB2 . . . . . . . . . . . . . . . . . . . . . . . 885.0.14. Clientes DB2 y Controladores . . . . . . . . . . . . . . . 895.0.15. Caractersticas y Productos Relacionados . . . . . . . . 905.0.16. Caractersticas includas en otras ediciones de DB2: . . 905.0.17. Caractersticas Incluidas con la Licencia de Suscripcin

    de DB2 Express-C . . . . . . . . . . . . . . . . . . . . . 925.0.18. Caractersticas No Disponibles con DB2 Express-C . . . 94

    5.0.19. Productos Pagados Relacionados con DB2 . . . . . . . . 965.0.20. Gua de Instalacin de DB2 Express C . . . . . . . . . . 975.0.21. Herramientas de DB2 . . . . . . . . . . . . . . . . . . . 102

    6. Eclipse 109

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    10/190

    NDICE GENERAL

    6.1. Que es Eclipse? . . . . . . . . . . . . . . . . . . . . . . . . . . 1096.2. Como Utilizar Eclipse? . . . . . . . . . . . . . . . . . . . . . . 110

    7. Tomcat 1147.1. Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.2. Entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147.3. Estado de su Desarrollo . . . . . . . . . . . . . . . . . . . . . . 1157.4. Estructura de Directorios . . . . . . . . . . . . . . . . . . . . . 1157.5. Caractersticas del Producto . . . . . . . . . . . . . . . . . . . . 1157.6. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

    8. Descripcin de la Aplicacin 118

    8.1. Descripcin General . . . . . . . . . . . . . . . . . . . . . . . . 1188.2. Anlisis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188.3. Desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

    8.3.1. Mdulos . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208.3.2. Ganadera . . . . . . . . . . . . . . . . . . . . . . . . . . 1308.3.3. Empleados . . . . . . . . . . . . . . . . . . . . . . . . . 1358.3.4. Bancos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1368.3.5. Clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . 1388.3.6. Proveedores . . . . . . . . . . . . . . . . . . . . . . . . . 1398.3.7. Consultas . . . . . . . . . . . . . . . . . . . . . . . . . . 1408.3.8. Planillas . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    8.4. Estructura de Datos . . . . . . . . . . . . . . . . . . . . . . . . 1428.5. Ejemplos de Cdigo Fuente Utilizados . . . . . . . . . . . . . . 1588.5.1. Servlets y HTML embebido . . . . . . . . . . . . . . . . 158

    9. Conclusiones 1719.1. Conclusiones Acerca de las Tecnologas y Software Utilizados . 1719.2. Lneas Futuras de Accin . . . . . . . . . . . . . . . . . . . . . 172

    Bibliografa 173

    ndice alfabtico 174

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    11/190

    ndice de figuras

    1.1. La Agricultura Ayer y Hoy. . . . . . . . . . . . . . . . . . . . . 3

    1.2. Distintos Dispositivos Tecnolgicos Utilizados en la Agricultura. 41.3. La Agricultura de Precisin. . . . . . . . . . . . . . . . . . . . . 51.4. Ganadera de Corral. . . . . . . . . . . . . . . . . . . . . . . . . 71.5. Ganadera Extensiva e Intensiva. . . . . . . . . . . . . . . . . . 10

    2.1. Logo de Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2. Arquitectura Cliente - Servidor. . . . . . . . . . . . . . . . . . . 242.3. Bytecode y JVM. . . . . . . . . . . . . . . . . . . . . . . . . . . 262.4. Netscape Navigator - Internet Explorer. . . . . . . . . . . . . . 272.5. JIT - Just In Time. . . . . . . . . . . . . . . . . . . . . . . . . 282.6. HotJava. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.7. Clase Thread. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    3.1. Herencia en Java. . . . . . . . . . . . . . . . . . . . . . . . . . . 393.2. Tpicos Packages Predefinidos. . . . . . . . . . . . . . . . . . . 413.3. API de Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.4. JDBC en Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    4.1. Ciclo de Vida de un Servlet. . . . . . . . . . . . . . . . . . . . . 774.2. Requerimiento de un Archivo JSP. . . . . . . . . . . . . . . . . 794.3. Requerimiento de un Servlet. . . . . . . . . . . . . . . . . . . . 80

    5.1. Servidores DB2. . . . . . . . . . . . . . . . . . . . . . . . . . . . 895.2. Rplica de SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    5.3. DB2 Connect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965.4. WebSphere Federation Server. . . . . . . . . . . . . . . . . . . . 985.5. Ventana de Progreso en DB2. . . . . . . . . . . . . . . . . . . . 1015.6. Herramientas DB2. . . . . . . . . . . . . . . . . . . . . . . . . . 1025.7. Herramientas DB2: Men Inicio. . . . . . . . . . . . . . . . . . 103

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    12/190

    NDICE DE FIGURAS

    5.8. Centro de Control de DB2. . . . . . . . . . . . . . . . . . . . . 1045.9. Icono DB2 en Windows. . . . . . . . . . . . . . . . . . . . . . . 1065.10. Editor de Comandos. . . . . . . . . . . . . . . . . . . . . . . . . 1065.11. Botn Show SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.12. Salida de un Botn Show SQL. . . . . . . . . . . . . . . . . . . 108

    8.1. Diagrama de Contexto . . . . . . . . . . . . . . . . . . . . . . . 1198.2. Caso de Uso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198.3. Pgina Principal de la Aplicacin. . . . . . . . . . . . . . . . . 1208.4. Formulario de Agricultura. . . . . . . . . . . . . . . . . . . . . 1228.5. Formulario de Carga Cosecha a Terceros. . . . . . . . . . . . . 1238.6. Formulario de Carga Siembra Propia. . . . . . . . . . . . . . . 124

    8.7. Formulario de Carga Rollos Propios. . . . . . . . . . . . . . . . 1258.8. Formulario de Modificar Mquinas. . . . . . . . . . . . . . . . . 1268.9. Formulario de Carga Pulverizaciones a Terceros. . . . . . . . . 1278.10. Formulario de Carga Campos Propios. . . . . . . . . . . . . . . 1288.11. Principal de Insumos. . . . . . . . . . . . . . . . . . . . . . . . 1298.12. Principal de Ventas. . . . . . . . . . . . . . . . . . . . . . . . . 1308.13. Pantalla Principal de Ganadera. . . . . . . . . . . . . . . . . . 1318.14. Pantalla Principal de la Seccin Ganado. . . . . . . . . . . . . . 1328.15. Formularios de Vacunacin y Bao de Ganado. . . . . . . . . . 1338.16. Formulario de Carga de Inseminaciones de Ganado. . . . . . . . 1348.17. Formularios de Reproduccin y Balanza. . . . . . . . . . . . . . 135

    8.18. Pgina Principal de Empleados. . . . . . . . . . . . . . . . . . . 1368.19. Pgina Principal del Mdulo Bancos. . . . . . . . . . . . . . . . 1378.20. Operaciones Financieras. . . . . . . . . . . . . . . . . . . . . . . 1388.21. Principal de Clientes. . . . . . . . . . . . . . . . . . . . . . . . . 1398.22. Principal de Proveedores. . . . . . . . . . . . . . . . . . . . . . 1408.23. Ejemplos de Listados Arrojados por el Sistema. . . . . . . . . . 1418.24. Ejemplo de Planillas Disponibles en el Sistema. . . . . . . . . . 1428.25. Estructura de la Base de Datos. . . . . . . . . . . . . . . . . . . 1438.26. Tablas de la Base de Datos SAG. . . . . . . . . . . . . . . . . . 158

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    13/190

    ndice de cuadros

    3.1. Tipos de Variables. . . . . . . . . . . . . . . . . . . . . . . . . . 43

    3.2. Categoras de Variables. . . . . . . . . . . . . . . . . . . . . . . 433.3. Tipos Primitivos de Variables. . . . . . . . . . . . . . . . . . . . 443.4. Operadores de Asignacin. . . . . . . . . . . . . . . . . . . . . . 463.5. Operadores Relacionales. . . . . . . . . . . . . . . . . . . . . . . 473.6. Precedencia de Operadores. . . . . . . . . . . . . . . . . . . . . 49

    5.1. Comandos Para Iniciar Algunas Herramientas DB2. . . . . . . 103

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    14/190

    Captulo 1

    La Agro-Ganadera en la

    Actualidad

    1.1. La Agricultura y la Ganadera en el Mundo yen Argentina

    Los diversos avances tecnolgicos derivados del conocimiento y la cienciaestn siendo aplicados en varios pases del mundo a distintos sectores nunca

    antes imaginados, entre ellos el sector de la agricultura y la ganadera enArgentina. A esto se le suma el empleo de herramientas con tecnologa deavanzada que ya se encuentran a disposicin de todos en cualquier momento ylugar que se la requiera, para poder de esta forma mantener la competitividada nivel mundial con una produccin sustentable en el tiempo.

    1

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    15/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 2

    En la actualidad Argentina est obteniendo importantes logros en los sec-tores de agricultura y ganadera ya que se basan en la incoporacin de tec-nologas adaptadas exitosamente a la realidad.

    1.2. La Agricultura, la Mquina Reemplaza al Ms-culo

    Anteriormente la actividad agrcola se realizaba con la indispensable ayudadel hombre como herramienta principal para sta actividad, ya que medianteel mismo se haca el trabajo en la tierra a mano o traccionado por animales.Hoy en da con la aparicin de la maquinara agrcola, exigentes tareas comola de sembrar y cosechar se pueden realizar de una manera rpida a una escalanunca antes imaginable.

    Segn la Academia Internacional de Ingeniera de EE.UU, la mecanizacinagraria es uno de los 20 mayores logros de la ingeniera del siglo XX. A princi-pios del siglo XX, se necesitaba un granjero para alimentar de 2 a 5 personas,mientras que hoy, gracias a la tecnologa, los agroqumicos y las variedades decultivos actuales, un granjero puede alimentar a 130 personas.

    Adems de los avances tecnolgicos, como se puede observar en la figura8.4 de la pgina 122, tambin se le suman medios de comunicacin, serviciometeorolgico y estudios de mercado que hacen que el crecimiento del sectoragrcola sea exponencial [1].

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    16/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 3

    Figura 1.1: La Agricultura Ayer y Hoy.

    Las maquinarias que actualmente se utilizan ya traen incoporados dispo-sitivos tecnolgicos de una alta gama, permitiendo de sta forma tener agri-cultura de precisin, como por ejemplo:

    GPS (Global Positioning System).

    Banderilleros satelitales.

    Computadoras de pulverizacin.

    Higrmetros (miden el grado de humedad).

    Monitores de siembra.

    Balanzas electrnicas.

    Humedmetros y cuenta hectreas.

    Software de mapeo.

    Sistemas de gestin para el agro.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    17/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 4

    Figura 1.2: Distintos Dispositivos Tecnolgicos Utilizados en la Agricultura.

    1.2.1. Agricultura de Precisin

    Consiste en determinar qu requerimientos tienen los suelos, y en qu sitios,y luego poner exactamente la cantidad necesaria de semilla, fertilizante o agro-qumicos en el lugar preciso y junto a stas herramientas poder tomar las cor-rectas decisiones de manejo acerca del tipo de cultivo a realizar, sus rotacionesy fechas de siembra.

    Hacer Agricultura de Precisin, es hacer lo que siempre se ha estado ha-

    ciendo pero ahora con mucha mayor precisin, con mucha ms informacinsobre la parcela y sus caractersticas.

    Normalmente los agricultores ya tienen una idea de que reas de su campotienen los rendimientos ms altos y bajos, pero los trabajos de investigacinen la actualidad han mostrado que an las tierras de altos rendimientos tienencondiciones de suelo variables que producen rendimientos variables.

    La Agricultura de Precisin usa la Tecnologa para medir los rendimientos,determinar las condiciones del suelo y obtener informacin de cada parte delcampo, registrando la ubicacin exacta de donde proviene cada dato obtenido.Cada dato de: rendimiento, humedad del grano cosechado, nutrientes del suelo,

    etc., puede ser llevado a un mapa generado por la computadora, que permitever ms claramente la relacin entre varios factores. Luego puede usar la in-formacin de estos mapas para determinar los tipos, cantidades, y ubicacinde insumos a aplicar.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    18/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 5

    Sin embargo, hasta ahora no era posible estudiar cada uno de estos factoresdebido a que no exista la tecnologa necesaria para ello. Gracias al desarrollode lo que conocemos como nuevas tecnologas se puede acometer hoyda el estudio y la gestin de una explotacin agrcola de forma integral, con-siderando el uso de agroqumicos localizada a la zona que realmente hace faltay a la dosis correcta.

    Figura 1.3: La Agricultura de Precisin.

    La Agricultura de Precisin utiliza la tecnologa con un objetivo claroQue los productores tienen ahora la posibilidad de medir exactamente quest sucediendo en su campo, tomar decisiones ms acertadas, basadas en esteconocimiento, y as mejorar la eficiencia.

    1.3. La Evolucin de la Ganadera

    La Ganadera es una actividad econmica de origen muy antiguo que con-

    siste en la crianza de animales para su aprovechamiento. La Argentina ocupaun importante lugar en el mundo como pas ganadero, en lo que se refiere abovinos (el quinto lugar por sus existencias y el tercero como Productor decarne) lo cual le d una importancia an mayor.

    Mediante la seleccin y el cruzamiento gentico se asegura la calidad de las

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    19/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 6

    razas de bovinos Shorthorn, Heresford, Aberdeen Angus y Holando argentino(para leche); y de ovinos: Merino, Corriedale y Lincoln. En la regin Pampeanase concentra la produccin de vacunos, porcinos y equinos. El ovino prevaleceen la Patagonia.

    La produccin ganadera como sector importantsimo en la economa ar-gentina, tiene adems a procesos fundamentales dentro de la cadena como larefrigeracin y procesamiento de carne y subproductos, ya que la produccinanual supera los 3,4 millones de toneladas.

    Desde hace mucho tiempo, Argentina es lder mundial en la exportacinde carne cruda, aunque cada vez es ms importante la exportacin de la carneprocesada y envasada. Por este motivo la incorporacin de la tecnologa es unfactor importante a la hora de incrementar las producciones de carne, mediantela utilizacin del rendimiento expuesto al mximo en sectores como:

    La nutricin animal.

    La sanidad animal.

    La gentica e inseminacin artificial.

    El uso de aplicaciones informticas para la gestin.

    Las tecnologas para la proteccin del medio ambiente.

    Los edificios, equipos y materiales para el ganado.

    La logstica, manipulacin y almacenamiento.

    La estabulacin del ganado y el desarrollo de nuevas tcnicas de alimen-tacin han contribuido para disminuir la dependencia de las condiciones delmedio ambiente. Como principales pautas de manejo que permitien el crec-imiento se mencionan tcnicas a las que se califica de aplicacin sencilla y dealto impacto, como:

    La implantacin de pasturas.

    La fertilizacin.

    La subdivisin de las grandes extensiones en parcelas para un uso mseficiente.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    20/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 7

    El adecuado manejo de los rodeos.

    Figura 1.4: Ganadera de Corral.

    Actualmente la ganadera ocupa ms de 105 millones de hectreas, mien-tras que la agricultura no supera los 25 millones en el territorio nacional. Deall la preocupacin por la sustentabilidad de los sistemas. Esto se debe a que

    en promedio para cada animal se necesita 10 hectreas para su produccin.Adems el ganado puede ser criado en reas donde el duro clima imposibilitael crecimiento de los cultivos, como en las altas montaas o las zonas con unaaridez extrema.

    1.3.1. Ganadera Extensiva e Intensiva

    Ganadera Extensiva

    Los sistemas extensivos, tradicionales o convencionales de produccin ani-

    mal se caracterizan esencialmente por formar parte de un ecosistema naturalmodificado por el hombre, es decir, un agroecosistema, y tienen como objetivola utilizacin del territorio de una manera perdurable, o sea, estn sometidosa los ciclos naturales, mantienen siempre una relacin amplia con la produc-cin vegetal del agroecosistema de que forman parte y tienen la necesidad de

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    21/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 8

    legar a la generacin siguiente los elementos del sistema en un estado igual osuperior que los que se recibieron de la generacin precedente.

    Dentro de la ganadera extensiva se puede incluir a la ganadera sostenibleque es la ganadera perdurable en el tiempo y que mantiene un nivel de produc-cin sin perjudicar al medio ambiente o al ecosistema. La ganadera sosteniblese incluye dentro del concepto de desarrollo sostenible.

    La explotacin ganadera para la alimentacin del ganado utiliza los apro-vechamientos a diente de los pastos procedentes de prados, pastizales, hierbasy rastrojos; propios, ajenos o comunales, de forma permanente o temporal.

    Ventajas de la Ganadera Extensiva

    Requieren un escaso aporte de energa fsil, en ocasiones se requiere 0,1kilo o menos para obtener 1 kilo de alimento en la mesa del consumidor.

    Contribuyen a mantener los agroecosistemas de los que forman una parteesencial, manteniendo los agroecosistemas naturales del entorno, comola biodiversidad.

    En climas ridos o semiridos contribuyen al mantenimiento de la cu-bierta vegetal, es decir, evitar la erosin.

    Prevenir los incendios forestales mediante el control arbustivo, la reduc-cin de biomasa combustible, etc.

    Inconvenientes de la Ganadera Extensiva

    Menor eficiencia.

    No pueden ajustarse fcilmente a la demanda de los consumidores.

    No pueden proporcionar productos tan homogneos como solicita la dis-tribucin y el mercado de las grandes superficies comerciales.

    Ganadera Intensiva

    En la ganadera intensiva el ganado se encuentra estabulado, generalmentebajo condiciones de temperatura, luz y humedad que han sido creadas en forma

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    22/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 9

    artificial, con el objetivo de incrementar la produccin en el menor lapsode tiempo; los animales se alimentan, principalmente, de alimentos enriqueci-dos. Es por esto que requiere grandes inversiones en aspectos de instalaciones,tecnologa, mano de obra y alimento, entre otros.

    Entre sus ventajas se destaca una elevada productividad, que tiene co-mo contraparte la gran contaminacin que genera, mediante la aplicacin demltiples tecnologas y las formas de pensamiento surgidas del capitalismo.

    Ventajas de la Ganadera Intensiva

    Eficiencia: La ganadera intensiva obtiene la mxima produccin con eldinero invertido en el menor tiempo posible.

    Adaptacin a la demanda del mercado (consumidores).

    Homogeneidad: Es la obtencin de productos homogneos o de caracte-rsticas iguales, para satisfacer las necesidades de la distribucin y com-ercializacin a gran escala.

    Inconvenientes de la Ganadera Intensiva:

    Gran consumo de energa, generalmente de procedencia energa fsil, en

    ocasiones hasta 20 kilos por kilo del alimento obtenido.

    Extremadamente contaminantes, debido a la acumulacin de enormesmasas de deyecciones, que no pueden ser recicladas en los agrosistemasconvencionales y que provocan la contaminacin atmosfrica, la conta-minacin del suelo y de las aguas con metales pesados, frmacos etc.

    Efmero: La ganadera intensiva no es perdurable, es decir, es insos-tenible, que implica que no puede mantenerse indefinidamente en eltiempo.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    23/190

    CAPTULO 1. LA AGRO-GANADERA EN LA ACTUALIDAD 10

    Figura 1.5: Ganadera Extensiva e Intensiva.

    El Feed - Lot (engorde a corral), como se observa en la figura 1.5 de lapgina 10, es uno de los claros ejemplos de esta ganadera ya que obtieneel mximo beneficio, en el menor tiempo posible, concentrando los medios de

    produccin y mecanizando y racionalizando los procesos, para incrementarconstantemente el rendimiento productivo, mediante la utilizacin de la tec-nologa e infraestructura disponible en el mercado.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    24/190

    Captulo 2

    Conceptos Bsicos Sobre el

    Lenguaje Java

    2.1. Qu es Java y Para qu fue Pensado?

    Java es un lenguaje de programacin sencillo de aprender que original-mente fue desarrollado por un equipo de ingenieros de Sun Microsystems, uti-lizado por Netscape, por nuevas necesidades, ya que los lenguajes existentes

    no cumplan con todas las necesidades para el proyecto en marcha. Pero sebasaron en lo ya hecho y probado. Es por esta razn que el cdigo Java seexpresa en archivos de texto comunes, y tiene una apariencia muy familiarpara los programadores de C/C++ y para los programadores en general [2].

    Los creadores de Java partieron de la sintaxis de C++ pero simplificaday trataron de eliminar todo lo que resulte complicado, o permita fuente deerrores.

    Java nace en un intento de resolver simultneamente los problemas quese planteaban los desarrolladores de software por la difusin de arquitecturasincompatibles, tanto entre las diferentes mquinas como entre los diversos

    sistemas operativos y sistemas de ventanas que funcionaban sobre una mismamquina, incrementando la dificultad de crear aplicaciones distribuidas en laRed [2].

    El uso del lenguaje Java se destaca en la Web pero sirve para crear todotipo de aplicaciones (locales, Intranet o Internet). Java sirvi posteriormente

    11

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    25/190

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    26/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 13

    No permite el uso de tcnicas de programacin inadecuadas.

    Multithreading.

    Cliente-servidor.

    Mecanismos de seguridad incorporados.

    Herramientas de documentacin incorporadas.

    2.1.2. Desarrollo de las Principales Caractersticas de Java

    Las principales caractersticas que ofrece el lenguaje Java respecto a cual-quier otro lenguaje son:

    Es un lenguaje Orientado a Objetos.

    Posiblemente el ms orientado a objetos de todos los lenguajes existentes;en Java todo, a excepcin de los tipos fundamentales de variables (int, char,long), es un objeto.

    Las plantillas de objetos son llamadas, como en C++, clases y sus copias,instancias. Estas instancias, como en C++, necesitan ser construidas y destru-

    idas en espacios de memoria.Los objetos se definen en clases, con atributos y mtodos, agrupndose en

    paquetes, y exponiendo interfaces a esos objetos. Soporta las tres caractersti-cas propias del paradigma de la orientacin a objetos: encapsulacin, herenciay polimorfismo, implementando as la tecnologa de objetos de una maneramuy completa, y a la vez sencilla y agradable.

    Se reconocer al estudiar la semntica, que Java es realmente un lenguajeque merece ser llamado totalmente orientado a objetos.

    Java incorpora funcionalidades inexistentes en C++, como por ejemplo,

    la resolucin dinmica de mtodos. En C++ se suele trabajar con librerasdinmicas (DLLs) que obligan a recompilar la aplicacin cuando se retocanlas funciones que se encuentran en su interior. Este inconveniente es resuel-to por Java mediante una interfaz especfica llamada RTTI (RunTime TypeIdentification) que define la interaccin entre objetos excluyendo variables deinstancias o implementacin de mtodos.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    27/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 14

    Las clases en Java tienen una representacin en el runtime que permite alos programadores interrogar por el tipo de clase y enlazar dinmicamente laclase con el resultado de la bsqueda.

    Es simple.

    Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las ca-ractersticas menos usadas y ms confusas de stos. C++ es un lenguaje quepadece falta de seguridad, pero C y C++ son lenguajes ms difundidos, porello Java se dise para ser parecido a C++ y as facilitar un rpido y fcilaprendizaje.

    Java elimina muchas de las caractersticas de otros lenguajes como C++,para mantener reducidas las especificaciones del lenguaje y aadir caracters-ticas muy tiles.

    Java reduce en un 50% los errores ms comunes de programacin conlenguajes como C y C++ al eliminar muchas de las caractersticas de stos.

    Es distribuido.

    Est orientado al trabajo en red, soportando protocolos como TCP/IP,

    HDP, HTTP y FTP. Por otro lado el uso de estos protocolos es bastantesencillo comparndolo con otros lenguajes que los soportan.

    Java se ha construido con extensas capacidades de interconexin TCP/IP.Existen libreras de rutinas para acceder e interactuar con protocolos comoHTTP y FTP. Esto permite a los programadores acceder a la informacin atravs de la red con tanta facilidad como a los ficheros locales.

    La verdad es que Java en s no es distribuido, sino que proporciona laslibreras y herramientas para que los programas puedan ser distribuidos, esdecir, que se corran en varias mquinas.

    Es robusto.

    Se refiere a la forma en que est diseado ya que el compilador de Javadetecta muchos errores que otros compiladores slo detectaran en tiempode ejecucin o incluso nunca. El cdigo generado por el compilador Java es

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    28/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 15

    independiente de la arquitectura, o sea, puede ejecutarse en un entornoUnix, Mac o Windows.

    Java no permite el manejo directo del hardware ni de la memoria, asvirtualmente es imposible colgar un programa Java. El intrprete siempre tieneel control. Inclusive el compilador es suficientemente inteligente como para nopermitir cosas que causen problemas, como usar variables sin inicializarlas,modificar valores de punteros directamente, acceder a mtodos o variables enforma incorrecta, utilizar herencia mltiple, etc.

    Posee herramientas de documentacin incorporadas.

    Adems, con el JDK (Java Development Kit) vienen incorporadas muchasherramientas, entre ellas un generador automtico de documentacin que, conun poco de atencin al poner los comentarios en las clases, crea inclusive todala documentacin de las mismas en formato HTML.

    Es Seguro.

    Los problemas de virus, o de confidencialidad de los datos aparecen masi-vamente con Internet, y con la distribucin de programas por todas las redes,

    as el problema de la seguridad ha tomado una nueva dimensin, ms grave,ya que actualmente a nuestra mquina pueden llegar aplicaciones hostiles yvirus malignos, desde cualquier parte del mundo.

    Java ha sido adaptado a Internet, pensando mucho en el tema seguridad,sobre todo un tipo de desarrollo: los applets. Java garantiza que ningn appletpuede escribir o leer de nuestro disco o mandar informacin del usuario queaccede a la pgina a travs de la red (ej.: e-mail).

    Un applet Java se ejecuta en un entorno, que impide su intromisin en lamquina cliente. En general no permite realizar cualquier accin que pudieradaar la mquina o violar la intimidad de quien visita la pgina Web. Entonces,

    no hay posibilidad de un virus Java, viajando por toda la red.Java implementa mecanismos de seguridad que limitan el acceso a recursos

    de las mquinas donde se ejecuta, especialmente en el caso de los Applets(aplicaciones que se cargan desde un servidor y se ejecutan en el cliente).Tambin est diseado especficamente para trabajar sobre una red, de modo

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    29/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 16

    que incorpora objetos que permiten acceder a archivos en forma remota (viaURL por ejemplo).

    Es Portable (multiplataforma).

    En Java no hay aspectos dependientes de la implementacin, todas las im-plementaciones de Java siguen los mismos estndares en cuanto a tamao yalmacenamiento de los datos y corren de igual forma bajo distintas platafor-mas, mientras que otros lenguajes almacenan datos de formas diferentes segnla plataforma en la que se encuentre.

    Esto no sucede con Java ya que el proceso de compilacin no producecdigo para un procesador en particular, como en los compiladores C/C++,sino que genera cdigo para un procesador ideal, denominado Mquina VirtualJava (Java Virtual Machine, o Java VM). La razn de sto es la necesidadde poder ejecutarse en cualquier plataforma, sin necesidad de cambiar elcdigo fuente, ni aun de recompilar.

    Todo programa Java se traduce en una serie de cdigos (llamados bytecodesque son el resultado de la compilacin de un programa Java) para un proce-sador imaginario (virtual), el Java VM, que puede ser implementado fcilmenteen cualquier plataforma poderosa. Es as como el lenguaje y sus aplicaciones seindependizan de la mquina destino, a costa de algo de velocidad, provocada

    por la necesidad de simular la Java VM, mediante software.An los tipos primitivos de datos quedan definidos de un solo paso, para

    todas las plataformas. Se evitan de esta forma los problemas de portabili-dad, conocidos por los programadores de C/C++, al cambiar, por ejemplo,de ambiente a ambiente, el tamao de los enteros, o el conjunto de caracte-res soportados. En Java, esos problemas no existen: slo existe una mquinavirtual.

    Los programas en Java pueden ejecutarse en cualquiera de las siguientesplataformas, sin necesidad de hacer cambios:

    Windows/95 y /NT.Power/Mac.

    Unix (Solaris, Silicon Graphics, ...).

    La compatibilidad es total:

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    30/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 17

    A nivel de fuentes: el lenguaje es exactamente el mismo en todas lasplataformas.

    A nivel de bibliotecas: en todas las plataformas estn presentes las mismasbibliotecas estndares.

    A nivel del cdigo compilado: el cdigo intermedio que genera el compiladores el mismo para todas las plataformas. Lo que cambia es el intrprete delcdigo intermedio.

    Manejo automtico de memoria.

    El lenguaje Java se compone de objetos y estos pueden y deben crearse;tienen una vida corta, ya que se inicia con la ejecucin y dura hasta que setermina la ejecucin, donde es su destruccin.

    Mientras que la creacin de los objetos se deja bajo la voluntad del pro-gramador, la destruccin definitiva de un objeto ocurre cuando no es msreferenciado por otros objetos del programa. De esta forma, se elimina una delas causas ms comunes de error en otros lenguajes, como la destruccin porel programador de objetos an en uso en el programa, o la falta de destruccinde objetos que ya son intiles, ya que no se usan en el resto de la ejecucin,pero que molestan con empleo de recursos.

    Esta tcnica de manejo automtico de memoria ocupada por los objetosse denominan garbage collection, es como recoleccin de basura o recicladorde memoria dinmica; gracias a sto no es necesario preocuparse de liberarmemoria, el reciclador se encarga de ello y como es un thread de baja prioridad,cuando entra en accin, permite liberar bloques de memoria muy grandes, loque reduce la fragmentacin de la memoria.

    El recolector de basuras es un gran aporte a la productividad. Se ha es-tudiado en casos concretos que los programadores han dedicado un 40% deltiempo de desarrollo a determinar en qu momento se puede liberar un trozode memoria.

    En una aplicacin Java hay siempre un proceso, ejecutado como un threado hilo de ejecucin separado, que se ocupa de recorrer la memoria donde seencuentran los objetos, y determina cules pueden liberarse y destruirse.

    En Java los programadores ya no necesitan preocuparse de liberar un tro-zo de memoria cuando no lo necesitan. Es el recolector de basuras el que

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    31/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 18

    determina cuando se puede liberar la memoria ocupada por un objeto.

    Java no se asla y evoluciona.

    Java trata de ser un lenguaje de produccin, no un lenguaje acadmico oideal, entonces no intenta comunicarse con libreras de otros lenguajes. Tienecapacidades definidas para implementar clases y mtodos (o funciones), es-critos, por ejemplo, en C/C++. Esto permite usar lo que ya est hecho, encada plataforma de implementacin.

    Igualmente, Java es un lenguaje de uso general, y muchas de las rutinas y

    libreras que se necesita para un proyecto, pueden ser escritas en Java. Debidoal xito del lenguaje, y a su difusin, cada da aparecen nuevas herramientasy paquetes de clases escritas por otros programadores.

    Dinmico.

    Java se beneficia todo lo posible de la tecnologa orientada a objetos. Javano intenta conectar todos los mdulos que comprenden una aplicacin hastael tiempo de ejecucin.

    Las librera nuevas o actualizadas no paralizarn las aplicaciones actuales.

    Java tambin simplifica el uso de protocolos nuevos o actualizados. Si el sis-tema ejecuta una aplicacin Java sobre la red y encuentra una pieza (mdulo)de la aplicacin que no sabe manejar, Java es capaz de traer automticamentecualquiera de esas piezas que el sistema necesita para funcionar.

    Para evitar que los mdulos de bytecodes o los objetos o nuevas clases,tengan que ser trados de la red cada vez que se necesiten, se implementan lasopciones de persistencia, para que no se eliminen cuando se limpie la cach dela mquina.

    2.1.3. Ventajas de Java1. No se vuelve a escribir el cdigo si se quiere ejecutar el programa en

    otra mquina (multiplataforma). Un solo cdigo funciona para todos losbrowsers compatibles con Java o donde se tenga una Mquina Virtualde Java (Macs, PCs, Suns, etc).

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    32/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 19

    2. Java es un lenguaje de programacin orientado a objetos, y tiene todoslos beneficios que ofrece esta metodologa de programacin..

    3. Un browser compatible con Java deber ejecutar cualquier programa he-cho en Java, esto ahorra a los usuarios tener que estar insertando plug-ins y dems programas que a veces quitan tiempo y espacio en disco.

    4. Java es un lenguaje y por lo tanto puede hacer todas las cosas que puedehacer un lenguaje de programacin: clculos matemticos, procesadoresde palabras, bases de datos, aplicaciones grficas, animaciones, sonido,hojas de clculo, etc.

    5. Si lo que interesa son las pginas Web, no tienen que ser estticas, porque

    se les pueden poner toda clase de elementos multimedia, permitiendo unalto nivel de interactividad, sin tener que invertir tanto en paquetes demultimedia.

    2.1.4. Limitaciones con Java

    1. Una de las ms importantes es la velocidad. Los programas hechos enJava no tienden a ser muy rpidos, pero se est trabajando para mejoraresto. Como los programas de Java son interpretados nunca alcanzan lavelocidad de un verdadero ejecutable.

    2. Java es un lenguaje de programacin. Por tratarse de un lenguaje, debeser aprendido, lo que es una dificultad para los no programadores.

    3. Java es relativamente nuevo. Todava no se conocen bien todas sus ca-pacidades.

    Pero en general, Java posee muchas ventajas y mucha fuerza. Con estelenguaje se pueden hacer muchas cosas interesantes. Est de moda en cualquiermedio computacional, y se apuesta a futuro con Java.

    2.1.5. Errores con Java

    En Java no se pueden cometer algunos errores tpicos, ya que:

    Java siempre chequea los ndices al acceder a un arreglo.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    33/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 20

    Java realiza chequeo de tipos durante la compilacin (al igual queC). En una asignacin entre punteros el compilador verifica que lostipos sean compatibles.

    Adems, Java realiza chequeo de tipos durante la ejecucin (cosaque C y C++ no hacen). Cuando un programa usa un cast paraacceder a un objeto como si fuese de un tipo especfico, se verificadurante la ejecucin que el objeto en cuestin sea compatible conel cast que se le aplica. Si el objeto no es compatible, entonces selevanta una excepcin que informa al programador la lnea exactaen donde est la fuente del error.

    Java posee un recolector de basuras que administra automtica-

    mente la memoria. Es el recolector el que determina cuando sepuede liberar el espacio ocupado por un objeto. El programador nopuede liberar explcitamente el espacio ocupado por un objeto.

    Java no posee aritmtica de punteros, porque es una propiedad queno se necesita para programar aplicaciones. En C slo se necesitala aritmtica de punteros para programar malloc/free o para pro-gramar el ncleo del sistema operativo.

    Por lo tanto Java no es un lenguaje para hacer sistemas operativos oadministradores de memoria, pero s es un excelente lenguaje para programaraplicaciones.

    2.2. Existen Distintos Tipos de Java

    Segn donde se lo aplique se puede distinguir entre:

    2.2.1. JavaScript

    Es una versin de Java directamente interpretada, que se incluye comoparte de una pgina HTML, lo que lo hace muy fcil y cmodo para aplica-ciones muy pequeas, pero en realidad tiene muchas limitaciones:

    No soporta clases ni herencia.

    No se precompila.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    34/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 21

    No es obligatorio declarar las variables.

    Verifica las referencias en tiempo de ejecucin.

    No tiene proteccin del cdigo, ya que se baja en ASCII.

    No todos los browsers lo soportan completamente.

    JavaScript es una forma de trasladar algunas tareas simples al lado delcliente. Y tiene una sintaxis que es en general parecida a la de C, excepto queno hay una funcin main. Lo que no est dentro de una funcin se ejecutarmientras se cargue la pgina.

    JavaScript recibe informacin a atravs de eventos y propiedades de obje-tos, y la entrega mediante propiedades de objetos y mtodos.

    2.2.2. Java Standalone

    Son programas Java que se ejecutan directamente mediante el intrpreteJava.

    2.2.3. Applets

    Son programas Java que corren bajo el entorno de un browser (o del ap-pletviewer, que es el visualizador de applets de Sun.)

    En s los applets y Java standalone son el mismo lenguaje, pero cambia unpoco la forma en que se implementa el objeto principal (la aplicacin).

    As los applets de una web, son programas diseados para ser ejecutadosen una pgina Web; pueden ejecutarse en cualquier mquina que se conectea ella independientemente de qu sistema operativo emplee (siempre que elordenador en cuestin tenga instalada una JVM (Mquina Virtual de Java)).

    La definicin ms extendida de applet, indica que un applet es una pe-

    quea aplicacin accesible en un servidor Internet, que se transporta por lared, se instala automticamente y se ejecuta en ese lugar como parte de undocumento web. La definicin establece el entorno (Internet, Web, etc.).

    Un applet trata de ser una aplicacin pretendidamente corta (no ocuparms de un gigabyte) basadndose en un formato grfico sin representacin

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    35/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 22

    independiente: es decir, es un elemento a embeber en otras aplicaciones (es uncomponente en el sentido estricto).

    Appletviewer: El Visor de Applets de Sun

    El visualizador de applets (appletviewer) es una aplicacin que permitever en funcionamiento applets, sin necesidad de la utilizacin de un navegadorWorld-Wide-Web como HotJava, Microsoft Internet Explorer o Netscape.

    El hecho de que se integre esttica (embebido en un ejecutable) o dinmi-camente (intrpretes, DLLs, etc.) no afecta en absoluto a la esencia del com-

    portamiento como componente.Como no existe una base adecuada para soportar aplicaciones industri-

    ales Java en las que insertar miniaplicaciones; los applets se han construidomayoritariamente, y con gran acierto comercial, como pequeas aplicacionesinteractivas, con movimiento, luces y sonido... en Internet.

    Llamadas a Applets con Appletviewer

    Dado que un applet es una mni aplicacin Java diseada para ejecutarseen un navegador Web, no necesita preocuparse por un mtodo main() ni en

    dnde se realizan las llamadas. Otra diferencia de Java con el lenguaje C. Esque no hay funcin main, ya que los applets no lo necesitan. La funcin mainse encuentra escondida en el programa que carg la pgina html. En losapplets no hay una funcin que sea llamada despus de otra, sino que todogira en torno al tratamiento de los eventos que se produzcan. Es decir queun applet est esperando por una serie de eventos, como la pulsacin de unatecla, el movimiento del ratn, o la pulsacin de alguna de la teclas del ratn.Y recibido el evento, responder con el mtodo adecuado.El applet asume queel cdigo se est ejecutando desde dentro de un navegador.

    El appletviewer se asemeja al mni navegador. Espera como argumento elnombre del fichero HTML que debe cargar, no se le puede pasar directamenteun programa Java. Este fichero HTML debe contener una marca que especificael cdigo que cargar el appletviewer.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    36/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 23

    2.3. Java en los Browsers de la World Wide WebLos programas Java son otro recurso ms, como pueden ser una pgina

    HTML o un archivo grfico. Al igual que estos ltimos viajan desde el servidora la mquina cliente para ejecutarse en sta. El lugar ms frecuente donde seencuentra el lenguaje Java, es en los exploradores o navegadores (browsers) deInternet.

    La WWW es la aplicacin ms popular en Internet, y causante de la ex-plosin de la red de redes. Basa su existencia en dos principales aplicaciones:

    Los servidores de Web.

    Son programas dedicados e instalados en las mquinas nodos de la red, queatienden a todos los pedidos de los clientes. Estos solicitan archivos, recursosde la Web, en general, archivos HTML y grficos. Los archivos HTML sonarchivos de texto, que contienen una descripcin de lo que se ve como pginaen el browser. La sigla HTML significa Hypertext Markup Languaje (Lenguajede Marcacin de Hipertexto), y es el lenguaje que describe las pginas Web.

    Los clientes.

    En las pginas se colocan textos, grficos y otros recursos. Es trabajo delcliente, el browser, interpretar esa pgina, mostrndola en pantalla, y recla-mando todo lo que se necesite para armarla, como los grficos y archivos desonido que la pueden acompaar.

    En la figura 2.2 de la pgina 24 se muestra la arquitectura Cliente - Servi-dor.

    2.3.1. Las Applets en la Web

    Al crear algn applet, se exige una construccin, con la marca HTMLAPPLET..., que especifica un determinado lugar en una pgina Web, paraque el browser se posicione y ejecute una aplicacin Java. Los archivos Java queviajan son de un tipo; al tratarse de archivos con extensin .class, contienenlas instrucciones Java ya compiladas y no viajan en cdigo fuente.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    37/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 24

    Figura 2.2: Arquitectura Cliente - Servidor.

    Un applet se compone, como mnimo, de un archivo .class, pero puederequerir ms archivos .class (con ms cdigo para ejecutar), que el browserrecupera, o archivos grficos, de sonido u otros, que el propio applet se encargade recuperar.

    Un applet Java no existe por s mismo (sino dentro de una pgina .html),por esto se lo debe invocar desde una pgina HTML que se haya creado.

    Seguridad

    Puede ser riesgoso, por la naturaleza de Internet, traer programas desdeun lugar lejano y no controlado a la computadora, para ejecutarlo.

    Pero los applets Java son seguros ya que Sun y los constructores de browsershan implementado una pol tica de seguridad, que impide a un applet, por

    ejemplo, leer o escribir en un disco, o interferir con otras aplicaciones en eje-cucin.

    Es tan grande la seguridad que, puede llegar a molestar a algunos progra-madores, que en un applet nunca se pueda grabar un archivo local, con datos

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    38/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 25

    transitorios o de configuracin.

    Restriccin de Seguridad de Java

    No se pueden cargar archivos que estn en una mquina distinta a aquelladesde la cual se carg el applet. El applet se ejecuta en el cliente, e intentaacceder a un archivo local. Eso provoca una excepcin (que, por supuesto,puede detectarse con un catch y tratarse).

    Por razones de seguridad, los applets son ms limitados que las aplicacionesJava locales. Las polticas de seguridad las manejan los browsers (no Java), y

    generalmente los lmites que se imponen a los applets son:

    Un applet no puede cargar bibliotecas (libraries) ni definir mtodos na-tivos.

    No puede leer o escribir normalmente archivos en el cliente que lo cargadesde otro server.

    No puede establecer conexiones de red, salvo al servidor del que proviene.

    No puede arrancar programas en la mquina donde se est ejecutando.

    No puede leer algunas propiedades del sistema.En las ventanas de los applets se indica que se trata de un applet.

    Pero tambin, pueden:

    Reproducir sonidos.

    Establecer conexiones con el servidor del que provienen.

    Llamar fcilmente pginas HTML desde el browser.

    Invocar mtodos pblicos de otros applets de la misma pgina.

    Seguir corriendo aunque se cambie de pgina en el browser.

    Si se cargan desde la mquina local no tienen ninguna de las restriccionesanteriores.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    39/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 26

    Figura 2.3: Bytecode y JVM.

    En realidad, la especificacin de Java permite que los applets lean archivosen otras mquinas dando la URL completa; sin embargo, los browsers no lopermiten.

    2.3.2. Mquinas Virtuales

    El lenguaje Java se compila, no para una plataforma o procesador en par-ticular, sino produciendo cdigo (que se denomina bytecodes), destinado a serinterpretado por la llamada Mquina Virtual Java.

    En la figura 2.3 de la pgina 26 se puede apreciar como trabaja.

    Esta mquina no es nica, sino que hay una por cada plataforma y, enrealidad, cada browser que implementa Java tiene la suya. As, el MicrosoftExplorer usar una mquina propia en Windows, mientras que el Netscape

    Navigator usar otra mquina, que variar de Windows a UNIX.

    Todas tienen la misma funcionalidad (o deberan). Tanto el usuario comolos programadores no deberan preocuparse por las distintas implementaciones.Sin embargo, hay quejas de los desarrolladores, originadas en las pequeas

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    40/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 27

    diferencias que se encuentran tanto entre una implementacin y otra, como enel aspecto de la interface grfica.

    Adems de la mquina virtual, cada browser instala una serie de clases, lis-tas para usar, que Java espera tener disponibles en cualquier plataforma. Esasclases tienen una funcionalidad definida, que no debera sufrir modificaciones.

    Netscape y Microsoft

    La empresa Netscape, creadora del Netscape Navigator, soporta Java desdela versin 2 del browser. Pero Microsoft no se qued atrs y soporta Java desde

    la versin 2.0 de su browser Internet Explorer.Ambos browsers instalan y usan una mquina virtual propia Java. No hay

    diferencias apreciables en las prestaciones de estos dos browsers, respecto deJava.

    Figura 2.4: Netscape Navigator - Internet Explorer.

    Entre Netscape (en mltiples plataformas) y Microsoft (en plataformasWindows) acaparan casi la totalidad del mercado de los browsers.

    En general, los browsers, de cualquier origen, soportan Java en ambientesque permiten la multitarea y los llamados mltiples hilos de ejecucin (multi-threading).

    Para poder explotar al mximo el potencial de Java se requiere de un

    sistema operativo multithreading (como Unix, Windows, OS/2), porque Javaes un lenguaje interpretado y al compilar un programa Java, lo que se generaes un seudocdigo definido por Sun, para una mquina genrica.

    Al ejecutar posteriormente sobre una mquina en particular, el softwarede ejecucin Java simplemente interpreta las instrucciones, emulando a dicha

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    41/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 28

    Figura 2.5: JIT - Just In Time.

    mquina genrica. Claro que esto no es muy eficiente, entonces Netscape comoHotjava o Explorer, al ejecutar el cdigo por primera vez, lo van compilando(mediante un JIT: Just In Time Compiler), as al crear el cdigo ya est

    compilado especficamente para la mquina husped.El lenguaje de esa mquina genrica es pblico, y si uno quisiera hacer un

    intrprete Java para otro sistema operativo slo tendra que implementarlo ypedir a Sun la aprobacin (que verifique que cumpla con los requisitos de Javaen interpretacin de cada instruccin, seguridad y otros).

    2.3.3. Java sin Browsers

    No todo es Internet en Java. Este es un lenguaje de uso general, que slo

    incidentalmente cobr popularidad en Internet. Se puede desarrollar aplica-ciones Java que se ejecuten en una mquina propia, sin necesidad de estarconectados a la red, y sin el auxilio de browsers.

    Mientras los programas Java para Internet y pginas HTML se llamanapplets, los que pueden ejecutarse fuera de la red se llaman genricamente

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    42/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 29

    aplicaciones.

    2.3.4. HotJava

    HotJava, es un navegador con soporte Java (Java-enabled), desarrolladoen Java.

    Como cualquier navegador de Web, HotJava puede decodificar HTML es-tndar y URLs estndares, aunque no soporta completamente el estndarHTML 3.0.

    La ventaja sobre el resto de navegadores, sin soporte Java, es que puedeejecutar programas Java sobre la red.

    La diferencia con Netscape es que tiene implementados completamente lossistemas de seguridad que propone Java, esto significa que puede escribir y leeren el disco local, aunque esto hace disminuir la seguridad, ya que se puedengrabar en el disco programas que contengan cdigo malicioso o introducir unvirus, por ejemplo. No obstante, el utilizar esta caracterstica de HotJava esdecisin del usuario.

    Figura 2.6: HotJava.

    2.4. Java en Hebras - Threads

    La traduccin literal de thread es hilo o hebra. Los threads (a veces lla-mados, procesos ligeros), son bsicamente pequeos procesos o piezas inde-pendientes de un gran proceso. Pero el concepto de threads en los ambientesy sistemas operativos es relativamente complejo de explicar: independiente-

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    43/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 30

    mente del sistema elegido, se puede pensar que un thread es algo as como ellugar de ejecucin de un programa.

    Java es multithreading: esto significa que tiene capacidad de dilogo, ypermite ejecutar muchas actividades simultneas en un programa, es decir,threads en paralelo como si fuera una conversacin mltiple y simultnea.

    No hay que confundir multithreading con la capacidad de ejecutar variosprogramas a la vez. Esta es una posibilidad, pero tambin un mismo pro-grama puede utilizar varios threads (caminos de ejecucin) simultneamentey depende fundamentalmente de la capacidad del sistema operativo para so-portar multithreading. Por esto Java no puede ejecutarse (al menos en formacompleta) en sistemas que no lo soporten.

    Como los threads son construdos con el lenguaje Java, son ms fciles deusar y ms robustos que sus semejantes en C o C++.

    El uso de threads nos permite, por ejemplo, ejecutar simultneamente va-rios programas que interacten entre ellos; o, tambin, que un programa, mien-tras por ejemplo actualiza la pantalla, simultneamente realice una serie declculos sin tener que hacer esperar el usuario.

    Una forma sencilla de verlo es imaginar que se tiene un grupo de mi-croprocesadores que pueden ejecutar, cada uno, un solo thread; y se asignanprogramas (o partes de programas) a cada uno de ellos.

    Adems, se puede imaginar que los microprocesadores comparten unamemoria comn y recursos comunes, de lo que surgir una serie de proble-mas importantes a tener en cuenta cuando se usan threads.

    2.4.1. La Ventaja de ser Multi-Threaded

    Consiste en un mejor rendimiento interactivo y mejor comportamiento entiempo real. Aunque el comportamiento en tiempo real est limitado a lascapacidades del sistema operativo que lo soporte como Unix, Windows u otros,an as supera tanto en facilidad de desarrollo como en rendimiento, a losentornos de flujo nico de programa (single-threaded), que todava se utilizanen la mayora de los programas; es decir un programa comienza y su ejecucinsigue un camino nico: es un solo thread, como si fuera un monlogo.

    Los pasos bsicos a seguir para usar threads en un programa son tres:

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    44/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 31

    Figura 2.7: Clase Thread.

    La clase que se quiere asignar a un thread debe implementar la interfaceRunnable.

    Se debe crear una variable (instancia) del tipo Thread, que permita ac-ceder y manejar el thread.

    Y crear un mtodo run() que es el que ejecuta el cdigo del programapropiamente dicho.

    Al utilizar la tecnologa de navegacin concurrente, se sabe lo frustrante

    que puede ser esperar que se traiga una gran imagen. En Java, las imgenesse pueden traer en un thread independiente, permitiendo que el usuario puedaacceder a la informacin en la pgina sin tener que esperar por el navegador.

    2.5. Java Para Aplicaciones Corporativas

    Java e Intranet actualmente son palabras de moda. Y Java particularmentees una buena tecnologa para desarrollar aplicaciones corporativas, ya queen donde la red sea algo crtico, Java facilita tremendamente la vida de la

    programacin corporativa.

    Las ms grandes compaas se han convencido de que la Red Corporativaes la Empresa. Ya que la Red es un canal importante por donde fluye lainformacin que mantiene vivo el negocio. La informacin fluye desde el gran

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    45/190

    CAPTULO 2. CONCEPTOS BSICOS DE JAVA 32

    servidor de las oficinas centrales, hasta los servidores de las delegaciones, lasestaciones de trabajo de los programadores y las PCs.

    Si esta red no se mantiene, los pedidos no llegan, el inventario no se actuali-za, el software no se desarrolla adecuadamente, los clientes no estn satisfechosy, fundamentalmente, el dinero no entra.

    La necesidad de diagnosticar y reducir los problemas que puedan surgir enla red, hace que se est incorporando continuamente nuevas metodologas quesubsanen este grave problema.

    Java es el lenguaje apto para Internet; pero, para las aplicaciones corpo-rativas, all donde la red es el punto crtico, sera una buena tecnologa, si

    se compararan las capacidades de Java con la lista de necesidades de la redcorporativa.

    Aplicaciones Efectivas o Eficientes

    Las aplicaciones que se crean en grandes empresas deben ser ms efectivasque eficientes; es decir, conseguir que el programa funcione y el trabajo salgaadelante es ms importante que el hacerlo eficientemente. Esto es una realidadde la programacin corporativa.

    Java al ser un lenguaje ms simple que cualquiera de los que ahora estnde moda para los programadores, permite concentrarse en la mecnica de laaplicacin, en vez de pasarse horas y horas incorporando APIs Interface deProgramacin de Aplicaciones para el control de las ventanas, controlandominuciosamente la memoria, sincronizando los ficheros de cabecera y corrigien-do los mensajes del linker.

    Java tiene su propio toolkit para interfaces, maneja por s mismo la memo-ria que utilice la aplicacin, no permite ficheros de cabecera separados (enaplicaciones puramente Java) y solamente usa enlace dinmico.

    Muchas de las implementaciones de Java actuales son puros intrpretes.Los bytecodes son interpretados por el sistema run-time de Java, la MquinaVirtual Java (JVM), sobre el ordenador del usuario.

    Hay proveedores que ofrecen compiladores nativos Just-In-Time (JIT).Si la Mquina Virtual Java dispone de un compilador instalado, las secciones(clases) del bytecode de la aplicacin se compilarn hacia la arquitectura nativa

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    46/190

    del ordenador del usuario.

    Los programas Java competirn con el rendimiento de programas en C++.Los compiladores JIT no se utilizan en la forma tradicional de un compilador;los programadores no compilan y distribuyen binarios Java a los usuarios.La compilacin JIT tiene lugar a partir del bytecode Java, en el sistema delusuario, como una parte (opcional) del entorno run-time local de Java.

    Java permite algunas tcnicas innovadoras de optimizacin. Como se men-cion anteriormente, Java es inherentemente multithreaded, a la vez que ofreceposibilidades de multithread como la clase Thread y mecanismos muy sencillosde usar de sincronizacin; Java en s utiliza threads.

    Los desarrolladores de compiladores inteligentes pueden utilizar esta carac-terstica de Java para lanzar un thread que compruebe la forma en que se estutilizando la aplicacin. Ms especficamente, este thread podra detectar qumtodos de una clase se estn usando con ms frecuencia e invocar a sucesivosniveles de optimizacin en tiempo de ejecucin de la aplicacin. Cuanto mstiempo est corriendo la aplicacin o el applet, los mtodos estarn cada vezms optimizados.

    Si un compilador JIT est embebido en el entorno run-time de Java, elprogramador no se preocupa de hacer que la aplicacin se ejecute ptimamente.

    Mantenimiento y Soporte

    Uno de los problemas ms conocidos que ocurre con el software corporativoes la demanda de mantenimiento y realimentacin. Java no es, ciertamente, lasolucin para el problema del mantenimiento, pero es un lenguaje que poseevarias caractersticas que harn la vida ms fcil a los desarrolladores y man-tenedores de aplicaciones. [2]

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    47/190

    Captulo 3

    El Lenguaje Java

    3.1. Introduccin a su Codificacin

    Java por ser un lenguaje orientado a objetos, posee ciertas caractersti-cas que hoy da se consideran estndares en los lenguajes OO, para esto seutilizarn los siguientes conceptos:

    Objetos.

    Clases.

    Mtodos.

    Subclases.

    Herencia simple.

    Enlace dinmico.

    Encapsulamiento.

    34

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    48/190

    CAPTULO 3. EL LENGUAJE JAVA 35

    Para programar orientado a objetos es necesario primero disear un conjun-to de clases. La claridad, eficiencia y mantenibilidad del programa resultantedepender principalmente de la calidad del diseo de clases. Un buen diseo declases significar una gran economa en tiempo de desarrollo y mantenimiento.

    Lamentablemente se necesita mucha habilidad y experiencia para logrardiseos de clases de calidad. Un mal diseo de clases puede llevar a programasOO de peor calidad y de ms alto costo que el programa equivalente no OO [2,Castillo-Cobo-Solares].

    La gran ventaja de un lenguaje OO son las bibliotecas de clases que sepueden construir para la aplicacin. Una biblioteca de clases cumple el mismoobjetivo de una biblioteca de procedimientos en una lenguaje como C.

    Una biblioteca de clases es mucho ms fcil de usar que una bibliotecade procedimientos, incluso para programadores sin experiencia en orientacina objetos. Esto se debe a que las clases ofrecen mecanismos de abstraccinms eficaces que los procedimientos.

    Se puede distinguir entre varios tipos de programadores en Java:

    El diseador de clases: Es el encargado de definir qu clases ofreceuna biblioteca y cul es la funcionalidad que se espera de estasclases. La persona tiene que ser muy hbil y de mucha experiencia.Un diseo equivocado puede conducir a clases que son incompren-sibles para los clientes de la biblioteca.

    El programador de clases de biblioteca: Es el encargado de progra-mar las clases especificadas por el diseador de clases. La personadebe entender orientacin a objetos, pero no requiere mayor expe-riencia en diseo de clases.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    49/190

    CAPTULO 3. EL LENGUAJE JAVA 36

    El cliente de bibliotecas: Es el programador de aplicaciones, sla-mente utiliza las clases que otros han diseado y programado. Comoen el caso anterior necesita entender orientacin a objetos y conocerla biblioteca que va a usar, pero no necesita mayor experiencia.

    Tanto programadores de clases como clientes de bibliotecas pueden llegara convertirse en buenos diseadores de clases en la medida que adquieranexperiencia, comparando los diseos de las bibliotecas que utilicen.

    Por lo tanto es importante destacar que no se necesita gran experiencia endiseo orientado a objetos para poder aprovechar las ventajas de la orientacina objetos.

    3.1.1. Bibliotecas de Clases Estndares de Java

    Toda implementacin de Java debe tener las siguientes bibliotecas declases:

    Manejo de archivos.

    Comunicacin de datos.

    Acceso a la red Internet.

    Acceso a bases de datos.

    Interfaces grficas.

    La interfaz de programacin de estas clases es estndar, es decir en todasellas las operaciones se invocan con el mismo nombre y los mismos argumentos.

    3.2. Estructura General de un Programa Java

    La estructura habitual de un programa realizado en cualquier lenguajeorientado a objetos u OOP (Object Oriented Programming) tiene muchas par-ticularidades, principalmente en el lenguaje Java.

    En el siguiente ejemplo de cdigo se presenta la estructura general de unprograma en Java:

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    50/190

    CAPTULO 3. EL LENGUAJE JAVA 37

    import java.awt.*;

    import java.lang.String;

    import java.lang.Integer;

    import java.awt.event.WindowEvent;

    import java.util.*;

    import java.awt.TextField;

    public class Simula extends Frame implements ActionListener,ItemListener{

    MenuBar barra;

    m1 =new Menu(Archivo);

    barra.add(m1);

    m2 =new Menu(Ver);

    barra.add(m2);

    ....

    public static void main(String argv [ ]){

    Simula menus = new Simula();

    menus.setTitle(Simulacin de Redes);

    menus.setVisible(true);

    }

    }

    Aparece una clase que contiene el programa principal Simula (aquel quecontiene la funcin main()) y algunas clases de usuario (las especficas de laaplicacin que se est desarrollando) que son utilizadas por el programa prin-cipal. La aplicacin se ejecuta por medio del nombre de la clase que contienela funcin main(). Las clases de Java se agrupan en packages, que son libr-eras de clases. Si las clases no se definen como pertenecientes a un package,

    se utiliza un package por defecto (default) que es el directorio activo.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    51/190

    CAPTULO 3. EL LENGUAJE JAVA 38

    3.3. Conceptos Bsicos3.3.1. Clase

    Una clase es una agrupacin de datos (variables o campos) y de funciones(mtodos) que operan sobre esos datos. A esos datos y funciones pertenecientesa una clase se les denomina variables y mtodos o funciones miembro. Laprogramacin orientada a objetos se basa en la programacin de clases. Unprograma se construye a partir de un conjunto de clases.

    Una vez definida e implementada una clase, es posible declarar elementosde esta clase de modo similar a como se declaran las variables del lenguaje (int,double, String). Los elementos declarados de una clase se denominan objetosde la clase. De una nica clase se pueden declarar o crear numerosos objetos.La clase es lo genrico: es el patrn o modelo para crear objetos. Cada objetotiene sus propias copias de las variables miembro, con sus propios valores, engeneral distintos de los dems objetos de la clase. Las clases pueden tenervariables static, que son propias de la clase y no de cada objeto.

    Ejemplo:

    public abstract class FuncionActivacion implements Cloneable,Serializable{

    /*constructor sin argumentos que permite la herencia */

    public FuncionActivacion () {

    }

    }

    3.3.2. Herencia

    La herencia permite que se puedan definir nuevas clases basadas en clasesexistentes, lo cual facilita reutilizar cdigo previamente desarrollado. Si unaclase deriva de otra (extends) hereda todas sus variables y mtodos. La clasederivada puede aadir nuevas variables y mtodos y/o redefinir las variablesy mtodos heredados.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    52/190

    CAPTULO 3. EL LENGUAJE JAVA 39

    Figura 3.1: Herencia en Java.

    En Java, a diferencia de otros lenguajes orientados a objetos, una clase slopuede derivar de una nica clase, con lo cual no es posible realizar herenciamltipleen base a clases. Sin embargo es posible simular la herencia mltipleen base a las interfaces.

    3.3.3. Interface

    Una interface es un conjunto de declaraciones de funciones. Si una claseimplementa (implements) una interface, debe definir todas las funciones es-pecificadas por la interface. Una clase puede implementar ms de una interface,representando una forma alternativa de la herencia mltiple.

    Una interface puede derivar de otra o incluso de varias interfaces, en cuyocaso incorpora todos los mtodos de las interfaces de las que deriva.

    Ejemplo: La clase TangenteHiperblica se extiende de la clase FuncinAc-tivacin que implementa la interface Serializable.

    /*funcin de activacin tangente hiperblica */

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    53/190

    CAPTULO 3. EL LENGUAJE JAVA 40

    public class TangenteHiperbolica extends FuncionActivacion implements Se-rializable{

    /*constructor sin argumentos */

    public TangenteHiperbolica () {

    }

    }

    3.3.4. Package

    Un package es una agrupacin de clases. Existen una serie de packagesincluidos en el lenguaje.

    Adems el programador puede crear sus propios packages. Todas las clasesque formen parte de un package deben estar en el mismo directorio.

    Los packages se utilizan con las siguientes finalidades:

    1. Para agrupar clases relacionadas.

    2. Para evitar conflictos de nombres. En caso de conflicto de nombres en-tre clases importadas, el compilador obliga a cualificar en el cdigo los

    nombres de dichas clases con el nombre del package.3. Para ayudar en el control de la accesibilidad de clases y miembros.

    Por estas razones, durante la etapa de Diseo del Software a desarrollar,se tiene que crear tantos paquetes como sea necesario, como en el siguienteejemplo donde se utiliza la sentencia package.

    package myprojects.simula;

    import myprojects.calculos.*;

    import myprojects.interfase.*;

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    54/190

    CAPTULO 3. EL LENGUAJE JAVA 41

    Figura 3.2: Tpicos Packages Predefinidos.

    3.3.5. La Jerarqua de Clases de Java (API)

    Durante la generacin de cdigo en Java, es recomendable y casi necesariotener siempre a la vista la documentacin on-line del API de Java. En dichadocumentacin es posible ver tanto la jerarqua de clases, es decir la relacinde herencia entre clases, como la informacin de los distintos packages que

    componen las libreras base de Java.Es importante distinguir entre lo que significa herencia y package. Un

    package es una agrupacin arbitraria de clases, una forma de organizar lasclases. La herencia sin embargo consiste en crear nuevas clases en base a otrasya existentes. Las clases incluidas en un package no derivan en general de lamisma clase.

    En la documentacin on-line se presentan ambas visiones: Package Indexy Class Hierarchy. La primera presenta la estructura del API de Java agru-pada por packages, mientras que en la segunda aparece la jerarqua de clases.Hay que resaltar el hecho de que todas las clases en Java son derivadas de la

    clase java.lang.Object, por lo que heredan todos los mtodos y variables desta.

    Si se selecciona una clase en particular, la documentacin muestra unadescripcin detallada de todos los mtodos y variables de la clase. A su vezmuestra su herencia completa (partiendo de la clase java.lang.Object).

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    55/190

    CAPTULO 3. EL LENGUAJE JAVA 42

    Figura 3.3: API de Java.

    3.3.6. Variables Dentro del Lenguaje Java

    Una variable en Java es un identificador que representa una palabra dememoria que contiene informacin. El tipo de informacin almacenado en unavariable slo puede ser del tipo con que se declar esa variable.

    En Java hay dos tipos principales de variables:

    1. Variables de tipos primitivos. Estn definidas mediante un valor nicoy almacenan directamente ese valor siempre que pertenezca al rango de

    ese tipo. Por ejemplo una variable int almacena un valor entero como1, 2, 0, -1, etc. Esto significa que al asignar una variable entera a otravariable entera, se copia el valor de la primera en el espacio que ocupala segunda variable.

    2. Variables referencia. Las variables referencia son referencias o nombresde una informacin ms compleja: arrays u objetos de una determinadaclase. Una referencia a un objeto es la direccin de un rea en memoriadestinada a representar ese objeto. El rea de memoria se solicita conel operador new. Al asignar una variable de tipo referencia a objeto aotra variable se asigna la direccin y no el objeto referenciado por esa

    direccin. Esto significa que ambas variables quedan referenciando elmismo objeto. En Java una variable no puede almacenar directamenteun objeto, como ocurre en C y C++. Por lo tanto cuando se dice enJava que una variable es un string, lo que se quiere decir en realidad esque la variable es una referencia a un string.

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    56/190

    CAPTULO 3. EL LENGUAJE JAVA 43

    Desde el punto de vista de su papel dentro del programa, las variablespueden ser:

    1. Variables miembro de una clase: Se definen en una clase, fuera de cual-quier mtodo; pueden ser tipos primitivos o referencias.

    2. Variables locales: Se definen dentro de un mtodo o ms en general dentrode cualquier bloque entre llaves {}. Se crean en el interior del bloque y sedestruyen al finalizar dicho bloque. Pueden ser tambin tipos primitivoso referencias.

    En la Tabla 3.1 de la pg. 43 se muestra una declaracin, el nombre de lavariable introducida y el tipo de informacin que almacena la variable:

    Declaracin Identificador Tipoint i; i entero

    String s; s referencia a stringint a []; a referencia a arreglo de enterosint[]b; b referencia a arreglo de enteros

    Cuadro 3.1: Tipos de Variables.

    En la Tabla 3.2 de la pg. 43 se muestran las dos grandes categoras detipos para las variables en Java:

    Tipos Primitivos Referencias a Objetosint, short, byte, long Strings

    char, boolean Arreglosfloat, double otros ob jetos

    Cuadro 3.2: Categoras de Variables.

    En la Tabla 3.3de la pg. 44 se indica para cada tipo primitivo el nmerode bits que se emplea en su representacin y el rango de valores que se puedealmacenar en las variables de estos tipos.

    Se dice que un tipo A es de mayor rango que un tipo B si A es un super-conjunto de B. Esto quiere decir que las variables de tipo B siempre se pueden

  • 8/7/2019 Agricultura Precision soft de gestion agroganadera

    57/190

    CAPTULO 3. EL LENGUAJE JAVA 44

    Tipo Bits Rango Ejemplosint 32 231..231 1 0,1,5,-120,...short 16 215.,215 1 0,1,5,-120,...byte 8 27.,27 1 0,1,5,-120,...long 64 263.,263 1 0,1,5,-120,...

    boolean 1 n/a false, truechar 16 n/a a,A,0,*,...float 32 IEEE 1.2

    double 64 IEEE 1.2

    Cuadro 3.3: Tipos Primitivos de Variables.

    asignar a variables de tipo A (eventualmente con prdida de significancia).

    Por ejemplo int es de mayor rango que short, que a su vez es de mayorrango que