?? java1.htm
字號:
<HTML>
<HEAD>
<TITLE>Java desde Cero</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0z">
</HEAD>
<BODY background=.gif TEXT=000000 LINK=FF0000 VLINK=A62A2A>
<H1>Java desde Cero<BR>
</H1>
<P>
Con ésta comienzo una serie de notas sobre Java, especialmente
para aquellos que quieren comenzar a conocerlo y usarlo. Esto
se originó en un interés que surgió en algunos
de los suscriptores del mailing list de desarrolladores de web,
y que pongo a disposición también del de webmasters.
<P>
Seguramente muchos de ustedes sabrán mucho más sobre
Java que yo, y les agradeceré todo tipo de comentarios
o correcciones.
<P>
La idea es dar una guía ordenada para el estudio de este
lenguaje, muy poderoso y de gran coherencia, aunque todavía
adolece de algunas limitaciones que seguramente se irán
superando con el tiempo.
<H2>Qué es Java</H2>
<P>
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).
<P>
Java es un lenguaje:
<UL>
<LI>de objetos
<LI>independiente de la plataforma
</UL>
<P>
Algunas características notables:
<UL>
<LI>robusto
<LI>gestiona la memoria automáticamente
<LI>no permite el uso de técnicas de programación
inadecuadas
<LI>multithreading
<LI>cliente-servidor
<LI>mecanismos de seguridad incorporados
<LI>herramientas de documentación incorporadas
</UL>
<H2>Lenguaje de Objetos</H2>
<P>
Por qué puse "de" objetos y no "orientado
a" 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.
<H3>Qué es un objeto? </H3>
<P>
Bueno, se puede decir que todo puede verse como un objeto. Pero
seamos más claros. Un objeto, desde nuestro punto de vista,
puede verse como una pieza de software que cumple con ciertas
características:
<UL>
<LI>encapsulamiento
<LI>herencia
</UL>
<P>
Encapsulamiento significa que el objeto es auto-contenido, o sea
que la misma definición del objeto incluye tanto los datos
que éste usa (<I>atributos</I>) como los procedimientos
(<I>métodos</I>) que actúan sobre los mismos.
<P>
Cuando se utiliza programación orientada a objetos, se
definen <I>clases</I> (que definen objetos genéricos) y
la forma en que los objetos interactúan entre ellos, a
través de <I>mensajes</I>. Al crear un objeto de una clase
dada, se dice que se crea una <I>instancia</I> de la clase, o
un objeto propiamente dicho. Por ejemplo, una clase podría
ser "autos", y un auto dado es una <I>instancia</I>
de la clase.
<P>
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 aplicació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, <I>ni siquiera existen las variables globales</I>!
(Aunque parezca difícil de aceptar, esto es una gran ventaja
desde el punto de vista del desarrollo).
<P>
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 "auto"
podría heredar de otra más general, "vehículo",
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.<BR>
<BR>
<H3>Un ejemplo simple</H3>
<P>
Para ir teniendo una idea, vamos a poner un ejemplo de una clase
Java: <BR>
<PRE>
<FONT SIZE=2>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", Label.CENTER);
si = new Button("Sí");
no = new Button("No");
add("North", comentario);
add("East", si);
add("West", no);
}
}<BR>
</FONT>
</PRE>
<P>
Esta clase no está muy completa así, pero da una
idea… Es una clase heredera de la clase <I>Frame</I> (un
tipo de ventana) que tiene un par de botones y un texto. Contiene
dos atributos ("si" y "no"), que son dos objetos
del tipo <I>Button</I>, y un único método llamado
Muestra (igual que la clase, por lo que es lo que se llama un
<I>constructor</I>).
<H2>Independiente de la plataforma</H2>
<P>
Esto es casi del todo cierto…
<P>
En realidad, Java podría hacerse correr hasta sobre una
Commodore 64! La realidad es que para utilizarlo en todo su potencial,
requiere un sistema operativo multithreading (como Unix, Windows95,
OS/2…).
<P>
Cómo es esto? Porque en realidad Java es un lenguaje interpretado…
al menos en principio.
<P>
Al compilar un programa Java, lo que se genera es un seudocódigo
definido por Sun, para una máquina genérica. Luego,
al correr sobre una máquina dada, el software de ejecución
Java simplemente interpreta las instrucciones, emulando a dicha
máquina genérica. Por supuesto esto no es muy eficiente,
por lo que tanto Netscape como Hotjava o Explorer, al ejecutar
el código por primera vez, lo van compilando (mediante
un <I>JIT</I>: <I>J</I>ust <I>I</I>n <I>T</I>ime compiler), de
modo que al crear por ejemplo la segunda instancia de un objeto
el código ya esté compilado específicamente
para la máquina huésped.
<P>
Además, Sun e Intel se han puesto de acuerdo para desarrollar
procesadores que trabajen directamente en Java, con lo que planean
hacer máquinas muy baratas que puedan conectarse a la red
y ejecutar aplicaciones Java cliente-servidor a muy bajo costo.
<P>
El lenguaje de dicha máquina genérica es público,
y si uno quisiera hacer un intérprete Java para una Commodore
sólo tendría que implementarlo y pedirle a Sun la
aprobación (para que verifique que cumple con los requisitos
de Java en cuanto a cómo interpreta cada instrucción,
la seguridad, etc.)
<H2>Algunas características…</H2>
<P>
Entre las características que nombramos nos referimos a
la robustez. Justamente por la forma en que está diseñado,
Java no permite el manejo directo del hardware ni de la memoria
(inclusive no permite modificar valores de punteros, por ejemplo);
de modo que se puede decir que es virtualmente imposible colgar
un programa Java. El intérprete siempre tiene el control.
<P>
Inclusive el compilador es suficientemente inteligente como para
no permitir un montón de cosas que podrían traer
problemas, como usar variables sin inicializarlas, modificar valores
de punteros directamente, acceder a métodos o variables
en forma incorrecta, utilizar herencia múltiple, etc.
<P>
Además, Java implementa mecanismos de seguridad que limitan
el acceso a recursos de las máquinas donde se ejecuta,
especialmente en el caso de los Applets (que son aplicaciones
que se cargan desde un servidor y se ejecutan en el cliente).
<P>
También está diseñado específicamente
para trabajar sobre una red, de modo que incorpora objetos que
permiten acceder a archivos en forma remota (via URL por ejemplo).
<P>
Además, con el JDK (Java Development Kit) vienen incorporadas
muchas herramientas, entre ellas un generador automático
de documentación que, con un poco de atención al
poner los comentarios en las clases, crea inclusive toda la documentación
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -