G.Bordel >Docencia >TAP Técnicas Actuales de Programación (curso 2010-2011)
desprotegido Intro. desprotegido Temario desprotegido Calendario desprotegido RPF desprotegido Recursos protegido Práctica protegido Gest. Alum.
tema_anterior Tema 2: Uso del entorno de desarrollo tema_siguiente
  1. Ejemplo inicial: el programa "HolaMundo".
  2. Bibliotecas de clases: su estructura.
  3. Compilación y ejecución.
  4. Generación de documentación.
  5. Desensamblado y decompilación.

2.2- Bibliotecas de clases: su estructura

Siempre que programamos en Java hacemos uso de su biblioteca de clases (ya lo hemos hecho en el primer ejemplo). Al igual que se disponen de bibliotecas de funciones para los lenguajes de programación "clásicos" (no orientados a objeto), en los orientados a objeto disponemos de bibliotecas de clases. Las clases contienen funciones (constructores y métodos) pero en este caso su acceso se realiza a traves de la instanciación de objetos, lo que es un concepto mucho más adecuado en programación de sistemas no triviales.

Las bibliotecas de clases de Java se organizan de un modo muy sencillo: en una estructura de arbol de directorios se situan las diferentes clases agrupandolas por el criterio que se considere adecuado; la biblioteca se identifica por el directorio raiz de esta estructura. Por tanto proporcionar al compilador una biblioteca para que sea incluida en nuestra aplicación consistirá en darle un directorio raiz, y el uso de una clase en uno de nuestros programas pasa por nombrarla de acuerdo a su posición dentro de dicha estructura (p.ej. una clase denominada "Method" dentro de la libreria que tiene por directorio raiz el llamado "java" y que se encuentra en un directrorio por debajo de este siguiendo el camino "lang/reflect" se denomina "java.lang.reflect.Method"

En la terminología Java, a cada uno de estos directorios se le denomina "paquete".

Para evitar el manejo de nombres demasiado largos, se dispone de la directiva "import" que permite indicar al compilador que busque clases dentro de un determinado paquete (se puede usar simplemente "Method" si al principio se ha indicado "import java.lang.reflect.Method;" o "import java.lang.reflect.*", donde "*" indica todas las clases dentro del paquete sin incluir sus subpaquetes).

Por otro lado, cuando se genera una clase para pertenecer a un determinado paquete, esto debe ser declarado en el codigo a fin de que el compilador actue en consecuencia. Para ello se utiliza la directiva "package"


 1-
 2-
 3-
 4- 
 5-
 6-
 7-
 8-
 9-
10-
11-
12-
13-
14-
15-
16-
17-
18-
19-
20-
21-
22-
23-


 //
 // Ejemplo de uso de bibioteca
 //  esta clase ira a al paquete "ejemplos" de la biblioteca "curso"
 //  utiliza las clases
 //        Method de java.lang.reflect,
 //        Date   de java.util y
 //        Socket de java.net
 //

package curso.ejemplos;

import java.lang.reflect.Method;
import java.util.*;
 
 public class EjemploPackages {
	Method m;
	Date d;
	java.net.Socket s;

 	public static void main(String[] args) {
 		....
 	}
 }

Tanto el compilador de Java como la Máquina Virtual son capaces de acceder a clases de bibliotecas que han sido compactadas en un fichero "zip". Este formato es muy conveniente en el caso de librerias cerradas (sobre las que no se estan añadiendo elementos) por su compacidad y por la facilidad de acceso que supone para el sistema al reducirse drásticamente el número de operaciones de entrada/salida del sistema operativo frente a la estructura expandida por el sistema de ficheros.

En el ejemplo anterior todos los paquetes pertenecen a una misma libreria denominada "java". Esta es una de las librerias estándar del lenguaje (junto a javax, y org actualmente) y por tanto los mecanismos de instalación suelen establecer lo necesario para funcionar con ella sin necesidad de hacer nada especial. Esto consiste en incluir una variable "CLASSPATH" en el sistema con el "path" de dicha libreria en el sistema de ficheros. Para utilizar otras librerias adicionales, podemos incluir sus "path" en la variable CLASSPATH o indicarlo directamente al compilar y ejecutar la Máquina Virtual con la opción "-classpath"

En todo proyecto software es extremadamente importante la generación de documentación que posibilite el uso de software ya existente. En Java este es un asunto que se abordó con acierto, de modo que se disponen de mecanismos de generación de documentación de las clases que permiten que esta sea consistente y facil de usar (presenta una estructura fija y enlaces de hipertexto). Lo veremos más adelante. Esto se ha aplicado a la biblioteca estándar por lo que disponemos de acceso a la documentación de las clases que incluye (es un buen momento para echar un vistazo).

Siguiente punto: 2.3- Compilación y ejecución


Plataforma de soporte a curso y contenidos (c) German Bordel 2005.