Java
¿Qué es Java?
Java es un lenguaje originalmente desarrollado por un grupo de ingenieros de
Sun, utilizado por Netscape posteriormente como base para Javascript. Si bien
su uso se destaca en el Web, sirve para crear todo tipo de aplicaciones
(locales, intranet o internet).
Java es un lenguaje:
• De objetos
• Independiente de la plataforma Algunas características notables:
• Robusto
• Gestiona la memoria automáticamente
• No permite el uso de técnicas de programación inadecuadas
• Multithreading
• Cliente-servidor
• Mecanismos de seguridad incorporados
• Herramientas de documentación incorporadas
Lenguaje de Objetos
Para destacar que, al contrario de otros lenguajes como C++, no es un
lenguaje modificado para poder trabajar con objetos sino que es un lenguaje
creado para trabajar con objetos desde cero. De hecho, TODO lo que hay en
Java son objetos.
Qué es un objeto?
Un objeto, desde nuestro punto de vista, puede verse como una pieza de
software que cumple con ciertas características:
• Encapsulamiento
• Herencia
Encapsulamiento significa que el objeto es auto-contenido, o sea que la misma
definición del objeto incluye tanto los datos que éste usa (atributos) como los
procedimientos (métodos) que actúan sobre los mismos.
Cuando se utiliza programación orientada a objetos, se definen clases (que
definen objetos genéricos) y la forma en que los objetos interactúan entre ellos,
a través de mensajes.
Al crear un objeto de una clase dada, se dice que se crea una instancia de la
clase, o un objeto propiamente dicho.
Por ejemplo, una clase podría ser “vehiculo”, y un vehiculo dado es una
instancia de la clase. La ventaja de esto es que como no hay programas que
actúen modificando al objeto, éste se mantiene en cierto modo independiente
del resto de la 9aplicación.
Si es necesario modificar el objeto (por ejemplo, para darle más capacidades),
esto se puede hacer sin tocar el resto de la aplicación… lo que ahorra mucho
tiempo de desarrollo y debugging!
En Java, inclusive, ni siquiera existen las variables globales! (Aunque parezca
difícil de aceptar, esto es una gran ventaja desde el punto de vista del
desarrollo).
En cuanto a la herencia, simplemente significa que se pueden crear nuevas
clases que hereden de otras preexistentes; esto simplifica la programación,
porque las clases hijas incorporan automáticamente los métodos de las
madres. Por ejemplo, nuestra clase “vehiculo” podría heredar de otra más
general, “bus”, y simplemente redefinir los métodos para el caso particular de
los automóviles… lo que significa que, con una buena biblioteca de clases, se
puede reutilizar mucho código inclusive sin saber lo que tiene adentro.
Un ejemplo simple
Para ir teniendo una idea, vamos a poner un ejemplo de una clase Java:
public class Muestra extends Frame {
// atributos de la clase
Button si;
Button no;
// métodos de la clase
public Muestra () {
Label comentario = new Label(“Presione un botón”,[Link])
si = new Button(““Si”);
no = new Button(“No”);
add(“Norte”,comentario);
add(“Este”,si);
add(“Oeste”,no);
}
}
Las clases en Java
Bueno, antes que nada conviene saber que en Java hay un montón de clases
ya definidas y utilizables. Éstas vienen en las bibliotecas estándar:
• [Link] - clases esenciales, números, strings, objetos, compilador,
runtime, seguridad y threads (es
el único paquete que se incluye automáticamente en todo programa Java)
• [Link] - clases que manejan entradas y salidas
• [Link] - clases útiles, como estructuras genéricas, manejo de fecha,
hora y strings, número aleatorios, etc.
• [Link] - clases para soportar redes: URL, TCP, UDP, IP, etc.
• [Link] - clases para manejo de interface gráfica, ventanas, etc.
• [Link] - clases para manejo de imágenes
• [Link] - clases que conectan la interface gráfica a
implementaciones dependientes de la plataforma (motif, windows)
• [Link] - clases para la creación de applets y recursos para
reproducción de audio.
Para que se den una idea, los números enteros, por ejemplo, son "instancias"
de una clase no redefinible,
Integer, que desciende de la clase Number e implementa los siguientes
atributos y métodos:
public final class [Link] extends [Link] {
// Atributos
public final static int MAX_VALUE; public final static int MIN_VALUE;
// Métodos Constructores public Integer(int value); public Integer(String s);
// Más Métodos
public double doubleValue(); public boolean equals(Object obj); public float
floatValue();
public static Integer getInteger(String nm);
public static Integer getInteger(String nm, int val);
public static Integer getInteger(String nm, Integer val);
public int hashCode();
public int intValue();
public long longValue();
public static int parseInt(String s);
public static int parseInt(String s, int radix);
public static String toBinaryString(int i);
public static String toHexString(int i);
public static String toOctalString(int i);
public String toString();
public static String toString(int i);
public static String toString(int i, int radix);
public static Integer valueOf(String s);
public static Integer valueOf(String s, int radix);
}