abril 30, 2010

Método main

La línea:

public static void main( String[] args ) 

es el punto de inicio de toda aplicación en Java. Los paréntesis después del identificador main indican que éste es un bloque de construcción del programa, el cual se le llama método. Las declaraciones de clases en Java generalmente contienen uno o más métodos. Es una aplicación en Java, sólo uno de esos métodos debe llamarse main, de no ser así, la Máquina Virtual de Java (JVM) no ejecutará la aplicación.

Mientras que la palabra public específica "quién" puede acceder al método main, la palabra static específica "cómo" acceder al método main. Con un método no estático, se debe realizar trabajo extra antes de acceder a este. Por otro lado, a un método de tipo estático se puede acceder sin realizar ningún trabajo extra. Ya que main es el punto de inicio para todos los programas de Java, debe ser inmediatamente accesible y, por tanto, requiere de la palabra static.

La palabra void indica que un método no devuelve nada. Puesto que el método main no devuelve nada, entonces se utiliza void en el encabezado del método main. Las palabras String[] args entre paréntesis son una parte requerida del encabezado del método main.

Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 38, Séptima Edición 2008, Editorial Pearson Education.
  • Introducción a la programación con Java, John S. Dean, Raymond H. Dean, págs. 55,56, Edición 2009, Editorial McGraw-Hill.

abril 28, 2010

Clase.

Las clases representan el concepto general de una cosa, mientras que los objetos representan instancias concretas de una clase. Las clases actúan de forma muy parecida a una plantilla o molde para galletas en el sentido de que una clase se utiliza para crear o instanciar objetos.


Una clase en Java es el contenedor para el código de nuestros programas. Todo programa en Java consiste en por lo menos una declaración de clase.


Las clases contienen campos, constructores y métodos que definen el estado y el comportamiento de los objetos. Dentro de los constructores y de los métodos una secuencia de sentencias (instrucciones) define como un objeto cumple con las tareas diseñadas.

La sintaxis para definir una clase es:

modificador class NombreDeLaClase 
{
    cuerpo;
} 

En el cuerpo de la clase se colocan los campos, constructores y métodos.

Ejemplo.

El siguiente código muestra la definición de una clase denominada Perro con un campo y método.

/**
 * Ilustra la definición para una clase de nombre Perro. 
 */
public class Perro
{
    private String nombre;

    /**
     * Método ladrar.  
     */
    public void ladrar()
    {
        System.out.println( "¡Ruff!, ¡Ruff!" );
    }   //fin del método ladrar
}   //fin de la clase Perro

La clase PruebaPerro nos permite probar la funcionalidad de la clase Perro:

/**
 * Ilustra la funcionalidad de la clase Perro.
 */
public class PruebaPerro
{
    public static void main( String[] args ) 
    {
        Perro solobino = new Perro();
        solobino.ladrar();
    }   //fin del método main
}   //fin de la clase PruebaPerro

Véase:





Palabra reservada.

Las palabras reservadas, también llamadas palabras clave, están definidas por el lenguaje Java para un propósito específico. Las palabras clave siempre se escriben en minúscula. La siguiente ilustración muestra las palabras reservadas en Java:


En Java, las palabras reservadas y las palabras clave son lo mismo. Pero en algunos lenguajes de programación, hay una sutil diferencia. En dichos lenguajes, ambos términos se refieren a palabras que son definidas por el lenguaje de programación, mientras que las palabras clave pueden ser redefinidas por el programador, y las palabras reservadas no.

Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 37, Séptima Edición 2008, Editorial Pearson Education.
  • Introducción a la programación con Java, John S. Dean, Raymond H. Dean, pág. 54, Edición 2009, Editorial McGraw-Hill.

abril 20, 2010

Editor de texto plano.

Un editor de texto plano es una pieza de software que permite al usuario introducir y salvar texto a archivos. Los editores de texto plano no saben acerca de la compilación y ejecución de programas (por ejemplo de Java). Si se utiliza un editor de texto plano para introducir un programa de Java, será necesario utilizar el Kit de Desarrollo de Java (JDK por sus siglas en inglés) en forma separada para compilar y ejecutar el programa.

Error de lógica.

Un error lógico ocurre cuando el programa se ejecuta por completo sin mensajes de error pero la salida es incorrecta. En otras palabras el programa no produce la salida deseada.

abril 19, 2010

Bug.

Falla de programación. El origen de este término es muy interesante. En septiembre de 1945 cuando un programa se detuvo en la Mark I, en la Universidad de Harvard, Grace Hopper rastreó el desperfecto y encontró un insecto muerto que había entrado a los circuitos eléctricos.


Ella registro así el incidente en su bitácora a las 15:45 horas: “Interruptor #70…(polilla) en el interruptor. El primer caso real de un problema (bug) fue encontrado”.

Estructura de un programa en Java.

Un programa simple en Java tiene la siguiente estructura:


Donde Nombre de la clase es el nombre de la clase principal que contiene el código fuente que deberá guardarse en la computadora con el sufijo .java (NombreClase.java). Todas las aplicaciones Java tienen un método main que a su vez, contiene un conjunto de instrucciones. En Java los conjuntos o bloques de sentencias se indican entre llaves ({ y }).

Ejemplo.
Con este ejemplo mostramos la estructura de una aplicación Java simple. El nombre de la clase Saludo deberá guardarse como Saludo.java
public class Saludo
{
    public static void main( String[] args ) 
    {
        System.out.println( "Saludos desde México" );
    }   //fin del método main
}   //fin de la clase Saludo

abril 17, 2010

Recolector de Basura


El recolector de basura (garbage collector en inglés) administra la memoria en forma automática, así se logra evitar que se desperdicien grandes cantidades de memoria. El recolector de basura se encarga de recoger todos los objetos que ya no están siendo utilizados por nuestros programas. Cuando la memoria de la Máquina Virtual se está agotando se activa automáticamente el recolector de basura.

Cargador de clases.

El cargador de clases es el responsable de encontrar y cargar los códigos de bytes (.class ) requeridas por una aplicación Java. Una vez que se cargan, el cargador de clases envía al verificador del código de bytes todos los archivos de la aplicación, asegurándose de que se apeguen a las especificaciones adecuadas. De ahí que el cargador de clases asuma que los archivos de la aplicación se originan de un compilador no confiable.

Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 12, Séptima Edición 2008, Editorial Pearson Education. 

Verificador de códigos de bytes.


El verificador de códigos de bytes examina los códigos de bytes para asegurar que sean válidos y no violen las restricciones de seguridad. Esto significa que solo una cantidad limitada de secuencias de códigos de bytes constituye un programa válido. La verificación de código también asegura que los patrones de bits arbitrarios no pueden usarse como direcciones de memoria, que los tipos de parámetros sean los correctos y que no existan conversiones ilegales de datos.

Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 13, Séptima Edición 2008, Editorial Pearson Education. 

Seguridad en el código Java


Una de las ventajas de Java es que es distribuido. Su independencia de la plataforma significa que el código escrito en una máquina se puede ejecutar con facilidad en otro. Esta situación puede originar código malicioso: código que ejecuta tareas desconocidas y no deseadas por el usuario. Los diseñadores del lenguaje implementaron políticas de seguridad que comprenden:

  • Verificación estricta durante la compilación.
  • Verificación de los códigos de bytes utilizando un cargador de clases.

Máquina Virtual de Java. (JVM)

Una Máquina Virtual de Java (JVM por sus siglas en inglés) ejecuta instrucciones expresadas en códigos de bytes que son generados por el compilador del lenguaje Java.


La JVM es uno de los componentes de la plataforma Java y se sitúa en el nivel superior al Hardware sobre el Sistema Operativo. Actúa como un puente que entiende tanto el código de bytes, como el sistema sobre el que se pretende ejecutar.

Con la JVM se logra la portabilidad del lenguaje por lo que existen distintas implementaciones para Sistemas Operativos y así un programa .class escrito en el Sistema Operativo Windows puede ser interpretado en el Sistema Operativo Linux. De ahí el famoso axioma: “Write Once, Run Anywhere”, que se traduce: Escríbelo una Vez, Ejecútalo Donde Sea.

Bibliografía consultada:

Máquina Virtual.

Una máquina que no existe físicamente, pero contra lo cual es posible programar un cierto conjunto de instrucciones. Estas instrucciones son ejecutadas, de alguna manera.

abril 16, 2010

Compilador JIT.

En las primeras versiones de Java, la JVM era tan sólo un intérprete de códigos de byte de Java. Esto hacía que la mayoría de los programas se ejecutaran con lentitud, ya que la JVM tenía que interpretar y ejecutar un código de bytes a la vez. Por lo general, las JVMs actuales ejecutan códigos de bytes usando una combinación de la interpretación y la denominada compilación justo a tiempo (JIT). En este proceso, la JVM analiza los códigos de bytes a medida que se interpretan, buscando puntos activos: partes de los códigos de bytes que se ejecutan con frecuencia.


Para estas partes, un compilador justo a tiempo (JIT y conocido como compilador HotSpot de Java) traduce los códigos de bytes al lenguaje máquina correspondiente a la computadora. Cuando la JVM encuentra estas partes compiladas nuevamente, se ejecuta el código en lenguaje máquina, que es más rápido. En consecuencia, los programas en Java en realidad pasan por dos fases de compilación: una en la cual el código fuente se traduce a código de bytes (para tener portabilidad a través de las JVMs en distintas plataformas computacionales) y otra en la que, durante la ejecución, los códigos de bytes se traducen en lenguaje máquina para la computadora actual en la que se ejecuta el programa.


Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 13, Séptima Edición 2008, Editorial Pearson Education. 

abril 15, 2010

Ambiente de Desarrollo Integrado (IDE).

Existen diferentes formas de introducir un programa Java en una computadora. Se puede utilizar un Ambiente de Desarrollo Integrado (IDE, por sus siglas en inglés) o un editor de textos plano.
Una IDE es más que una larga pieza de software, que permite introducir, compilar y ejecutar programas. La introducción, compilación y ejecución son parte del desarrollo de un programa y están integradas juntas en un ambiente, de ahí el nombre “ambiente de desarrollo integrado”. Algunos IDE son gratuitos y otros muy caros. Algunos IDE que son populares:

abril 14, 2010

Archivo.

Un archivo de computadora tan sólo es un conjunto de datos o instrucciones de programa al que se le ha dado un nombre. Un archivo que contiene datos que el usuario puede abrir y usar se llama documento. Un documento puede incluir muchas clases de datos, como texto, número, imágenes, sonidos, etc. Los programas también se organizan en archivos, pero debido a que los programas no se consideran datos, no son archivos de documentos.

Datos.

Se refieren a los elementos crudos que la computadora puede manipular. Los datos pueden consistir en letras, números, sonidos o imágenes. Pero no importa qué clase de datos sean introducidos en una computadora, ésta las convierte a números. En consecuencia, los datos computarizados son digitales, lo que significa que han sido reducidos a dígitos o números. Dentro de la computadora, los datos son organizados en archivos.

Véase


Computadora.

Una computadora es un dispositivo capaz de realizar cálculos y tomar decisiones lógicas.
Las computadoras reciben los datos de entrada, los procesan bajo el conjunto de instrucciones llamadas programas o software -que son escritos por programadores de computadoras que utilizan algún lenguaje de programación- y producen una salida.
El software consiste en los programas de instrucciones y datos que definen para el hardware los algoritmos necesarios para la resolución de problemas. Le indican a la computadora qué es lo que tiene que hacer, y sin los cuales no podría funcionar el hardware. El hardware, por muy completo y sofisticado que sea, es inútil por sí mismo; cada opción desde el momento en que se conecta la máquina tiene que ser dirigida mediante instrucciones.

Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 4, Séptima Edición 2008, Editorial Pearson Education.
  • Análisis y diseño de algoritmos, Gustavo López, Ismael Jeder, Augusto Vega, pág. 2, Edición 2009, Editorial Alfaomega.

Véase en Megavideo: El ordenador.


abril 13, 2010

Software.

El término software se refiere al conjunto de instrucciones electrónicas que le dicen al hardware qué debe hacer. Este conjunto de instrucciones también se conoce como programas y cada uno tiene un propósito específico.

Por convención, el software se divide en dos categorías, software de sistema (necesario para operar la computadora como el Sistema Operativo) y programas de aplicación (que permiten a los usuarios desarrollar tareas utilizando una computadora).

Bibliografía consultada:
  • Introducción a la Computación, Peter Norton, pág. 13, Tercera Edición 2000, Editorial McGraw-Hill.
Véase en Megavideo:
Los piratas del silicon valley


Plataforma Java.

Es el nombre de la plataforma desarrollada por Sun Microsystems que es capaz de ejecutar aplicaciones desarrolladas usando el lenguaje de programación Java u otros lenguajes que compilen a códigos de bytes y un conjunto de herramientas de desarrollo. La plataforma utiliza una máquina virtual para ejecutar las aplicaciones y un conjunto de librerías que ofrecen funcionalidad común a todas las aplicaciones.

Véase:







Plataforma.

Una plataforma es la base en el cual se constituye un hardware, sobre el cual un software puede ejecutarse o desarrollarse. La plataforma define un estándar alrededor el cual un sistema puede ser desarrollado. Una vez que la plataforma ha sido definida, se produce el software y el hardware apropiado para su uso.

Independencia de la plataforma.

Es la capacidad del programa de trasladarse con facilidad de un sistema computacional a otro. Los códigos de bytes de Java son independientes de la plataforma por lo tanto puede ejecutarse en cualquier plataforma que tenga soporte para la Máquina Virtual de Java. De ahí el slogan del lenguaje: Escribir un programa una vez y ejecútalo donde sea (Write Once, Run Everywhere).

Véase:


byte (palabra clave).

Este es el tipo de datos enteros primitivos más pequeño. Puede almacenar valores en un rango de -128 a 127.

Ejemplo.
/**
 * Ilustra el uso del tipo de dato byte.
 */
public class EjemploByte
{
    public static void main(String[] args) {
        byte b1 = 127;
        byte b2 = 23;
        System.out.printf( "El valor de b1 es %d \n", b1 );
        System.out.printf( "El valor de b2 es %d ", b2 );
    }   //fin del método main
}   //fin de la clase EjemploByte

char (palabra clave).

Este es un tipo de datos primitivos que contiene un número de código numérico para un carácter de texto o cualquier otro símbolo definido en el estándar Unicode.



Ejemplo.
/**
 * Ilustra la declaración de una variable char.
 */
public class EjemploChar
{
    public static void main( String[] args ) {
        char letraChar = 'a';
        int numInt = letraChar;  //asigna un char a un int (promoción)
        System.out.println( "Valor de letraChar: " + letraChar );
        System.out.println( "Valor de numInt: " + numInt );
        
        letraChar = 88; //le asignamos un contenido numérico 
        System.out.println( "Nuevo valor de letraChar: " + letraChar );
    }   //fin del método main
}   //fin de la clase EjemploChar

abril 12, 2010

boolean (palabra clave).


El tipo de datos lógico (boolean) nos permite declarar y definir variables cuyo contenido es binario.


Sus únicos valores posibles son true (verdadero) y false (falso). Los valores que pueden contener un variable booleana son útiles para definir condiciones lógicas aplicables al control de flujo de los programas.

Ejemplo.
/**
 * Ilustra la utilización de una variable boolean.
 */
public class EjemploBoolean
{
    public static void main( String args[] ) {
        boolean conPerro = true;
        boolean conGato = false;
        
        if( conPerro ) 
            System.out.println( "Es verdad: la persona tiene un perro" );
        if( conGato )
            System.out.println( "Es verdad: la persona tiene un gato" );
        else            
            System.out.println( "Es falso: la persona no tiene un gato" );
    }   //fin del método main  
}   //fin de la clase EjemploBoolean

Type Casting (Conversiones de Tipo).

También conocido como conversión de tipo. Java es un lenguaje fuertemente tipeado, de modo que cada variable y cada valor del programa se definen como poseedores de un tipo de dato en particular.

Java efectúa en forma automática algunas conversiones de tipo, y permite obligar algunas otras conversiones de tipo. Por lo tanto tenemos dos clases de conversiones de tipo: la promoción (conversión de tipo automática) y el casting (conversión forzada).

La promoción ocurre cuando hay un intento de usar un tipo de dato más pequeño en donde existe otro tipo de dato más grande.

Ejemplo.

Considera el siguiente código:

/**
 * Ilustra el proceso de conversión automático (promoción).
 */
public class Impuesto
{
    public static void main( String[] args ) 
    {
        int precio = 20;
        float impuesto = 0.15f;

        double total = precio * impuesto;

        System.out.println( total );
    }   //fin del método main
}   //fin de la clase Impuesto

En la declaración, la variable precio el valor 20 está representado en un formato de 32 bits y el valor de la variable impuesto en un formato de 32 bits con el punto flotante. Ahora, cuando en una expresión aritmética intervienen diferentes tipos la JVM hace una conversión automática y realiza los cálculos con el tipo de mayor precisión. En este caso la operación precio * impuesto implica que el valor de precio será traducido a un nuevo formato de 32 bits con punto flotante. Finalmente al hacer la asignación del resultado a una variable de tipo double nuevamente la JVM realiza una promoción de ese valor a otro formato de 64 bits con punto flotante.

En la siguiente figura las flechas sólidas ilustran cuando Java realizará una promoción. Las fechas con puntos muestran conversiones en las que puede haber pérdida de información y en consecuencia se necesita utilizar una conversión forzada (casting).



El casting sucede cuando Java no sabe cómo tratar algún tipo de dato porque puede que un el número a convertir esté fuera del rango del tipo a que se quiere convertir. Entonces obliga al programador a realizar esa conversión forzada (explicita). La sintaxis para realizar un cast es:


Como se muestra en la figura, para realizar un cast necesitamos de un tipo de dato dentro de un paréntesis. Se debe colocar un operador de conversión a la izquierda del valor que se desea convertir.  El siguiente diagrama ilustra una conversión por casting.

abril 09, 2010

Hardware.

Componentes electrónicos, tarjetas, periféricos y equipo que conforman un sistema de computación. El hardware se distingue del software (los programas), que es el que les indica a los componentes mencionados lo que deben hacer.

Bibliografía consultada:
  • Introducción a la Computación, Peter Norton, pág. 13, Tercera Edición 2000, Editorial McGraw-Hill.

Véase:


Lenguaje de máquina.

Es el conjunto final que todas las computadoras deben utilizar (lenguaje binario). Todos los demás lenguajes de programación deben compilarse o traducirse, a la larga, a un código binario antes de introducirse en la CPU de la computadora. El lenguaje binario es el lenguaje de máquina.

Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 6, Séptima Edición 2008, Editorial Pearson Education.
  • Lógica de programación, Efraín M. Oviedo Regino, Pág. 17, Edición 2004, Ecoe Ediciones.
Véase:





abril 06, 2010

Programa.

Lista de instrucciones, escritas en un lenguaje de programación, que ejecuta una computadora para que la máquina actúe de una forma determinada. El término es sinónimo de software.


Los programas guían a las computadoras a través de acciones especificadas por gente llamada programadores de computadoras.

Véase:


Aplicación en Java.


Una aplicación en Java es un programa de computadora que se ejecuta cuando invocamos el comando java para iniciar la Máquina Virtual de Java (JVM). Al iniciar el programa, la JVM busca un encabezado para el método main y ejecuta las instrucciones contenidas en el cuerpo del método. De no encontrarse el método main la aplicación no podrá ejecutarse.

Intérprete Java.

La Máquina Virtual ejecuta los códigos de bytes para ello utilizamos el comando java seguido del nombre del archivo que contiene los códigos de bytes.


Por ejemplo para ejecutar una Aplicación Java de nombre MiPrograma.class tendríamos que invocar el comando java para iniciar la Máquina Virtual Java: java MiPrograma


Observa que no es necesario utilizar la extensión .class. Una vez que hemos iniciado el proceso la Máquina Virtual utiliza un cargador de clases para colocar en memoria principal los archivos .class. A medida que se cargan las clases, un verificador de códigos de bytes examina los códigos para asegurar que sean válidos y que no violen las restricciones de seguridad de Java. Luego entonces, la Máquina Virtual ejecuta los códigos de bytes del programa.

Código objeto.

Se llama código objeto al código que resulta de la compilación del código fuente (código de máquina). Para que los programas en código objeto puedan ser ejecutados necesitamos de un cargador (que traslada un programa a la memoria de la computadora) y de un enlazador (que une varios módulos en uno sola unidad ejecutable).

Intérprete.

Los intérpretes no producen un programa objeto (como en el caso de los compiladores), más bien ejecutan directamente el programa fuente. Un intérprete traduce una sola instrucción de código fuente en su equivalente a código objeto, la ejecuta y luego pasa a la siguiente instrucción en código fuente, la traduce y ejecuta, y así sucesivamente.


Los programas interpretados tienden a ser de ejecución más lenta, porque se debe analizar, traducir y ejecutar cada instrucción.

Códigos de Bytes.

Los Bytecodes o códigos de bytes son un conjunto de instrucciones muy parecidas al código máquina, pero que no son específicas para algún procesador.

Cuando compila un programa escrito en C o en cualquier otro lenguaje, por lo general el compilador traduce su programa a códigos de máquina o instrucciones del procesador que son específicos para el procesador que su computadora ejecuta. Por lo tanto, si desea utilizar el mismo programa en otro sistema, tendrá que regresar al código fuente original, obtener un compilador para ese sistema y volver a compilar su código. El resultado de este sistema: múltiples programas ejecutables para múltiples sistemas.

Sin embargo, este panorama es distinto cuando escribe código en Java. El ambiente de desarrollo tiene dos partes: un compilador Java y un intérprete Java. El compilador Java toma su programa y en lugar de generar códigos de máquina para sus códigos fuente, genera un bytecode.
Para ejecutar un programa en Java, debe ejecutar un programa llamado intérprete de bytecode, el cual a su vez ejecuta su programa Java.

El hecho de tener sus programas en forma de bytecodes, significa que en lugar de ser específico con respecto a algún sistema, puede ejecutar sus programas en cualquier sistema operativo, siempre que se encuentre disponible el intérprete Java.

La desventaja de utilizar bytecodes se halla en la velocidad de ejecución. Puesto que los programas específicos del sistema corren directamente en el hardware en que se compilaron éstos, se ejecutan más rápido que los bytecodes de Java los que, a su vez, deben ser procesados por el intérprete.

Compilador Java.

La función de un compilador es convertir un programa escrito un en lenguaje como Java a un lenguaje que la computadora pueda entender. Los programas en Java se convierten en códigos de bytes. El comando para llamar al compilador es: javac MiPrograma.java

Donde el nombre del compilador es javac y MiPrograma.java es el nombre del archivo que contiene el código de nuestro programa.

Al compilar el programa, el compilador verifica que éste obedezca las reglas de programación en Java, y si algo sale mal, muestra los mensajes de error apropiados. El compilador crea un archivo con el sufijo .class. Este contiene el código de bytes equivalente a su programa en Java.


Pero el archivo .class que produce el compilador no está listo todavía para ejecutarse ya que requiere vincularse con las bibliotecas de clases Java proceso que se realizará cuando el programa se ejecute.

Compilador.

Un compilador es un programa que lee un programa escrito en un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente. Una vez que se obtiene el lenguaje objeto este es independiente del código fuente.


Los compiladores tradicionales traducen el código fuente a código de máquina.

Bibliografía consultada:
  • Lenguaje y Compiladores, Iván Pérez, pág. 12, Primera Edición 2005, Publicaciones UCAB.

Sintaxis.


La sintaxis se refiere a las palabras, gramática y puntuación que conforman un lenguaje. La sintaxis del lenguaje de programación Java especifica las reglas para crear un programa en dicho lenguaje.

Java.

Java es un lenguaje de programación orientado a objetos, moldeado en base a C++. El lenguaje Java se diseñó para ser pequeño, sencillo e independiente de la plataforma.


El lenguaje Java fue desarrollado por Sun Microsystems en 1991 como parte de un proyecto de investigación para crear software para dispositivos electrónicos. En ese tiempo, los objetivos de Java eran programas pequeños, rápidos, eficientes y portátiles para un amplio rango de dispositivos de hardware. Estos mismos objetivos son los que hicieron a Java un lenguaje ideal para distribuir programas ejecutables por la World Wide Web.

Bibliografía consultada:
  • Aprendiendo Java en 21 días, Laura Lemay, Charles L. Perkins, pág. 4, 5, 6, Edición 1996, Editorial SAMS.NET.

Véase:





Lenguaje de programación.

Lenguaje artificial, compuesto por un vocabulario fijo y un conjunto de reglas (llamadas sintaxis), que se usan para crear instrucciones que la computadora debe seguir. Casi todos los programas se escriben con un editor de texto para crear un código fuente, que se interpreta o compila después a un lenguaje máquina que la computadora puede ejecutar.


Véase:



Código fuente.

El código fuente (o simplemente el código) es un texto escrito en lenguaje de programación. Por lo general escrito en formato ASCII.


En el lenguaje Java define que campos y métodos tiene la clase y qué ocurre cuando se invoca un método. Los códigos fuente de Java se guardan en un archivo de texto que tiene la extensión .java

Error de sintaxis.

Todos los lenguajes, ya sea francés, inglés o español, Java inclusive, tienen un conjunto de reglas: tienen una gramática. En español, por ejemplo, las oraciones terminan con un punto, signo de exclamación o de interrogación. En el caso de Java las instrucciones (oraciones) terminan con un punto y coma. Es un error común olvidar el punto y coma en los programas.


Cuando usted viola una regla del lenguaje de programación Java, el compilador muestra mensajes de error de sintaxis en la pantalla de su monitor. Antes de que el compilador pueda convertir con éxito los programas fuente en código de máquina virtual, usted debe corregir todos los errores de sintaxis que tenga el archivo fuente.

Nota: Los errores de sintaxis también son conocidos como error de compilador, error en tiempo de compilación o error de compilación.

Véase:



Comentario.

Los programas contienen comentarios en los que establecemos el propósito del programa, explicamos el significado del código y proporcionamos cualquier otra descripción que ayude a los programadores a entender el programa cuando se realizan las tareas de depuración y mantenimiento de los mismos.

En Java tenemos tres tipos de comentarios:
  • de una sola línea o de fin de línea
  • de bloque o tradicionales, y
  • javadoc


Un comentario que empieza con // se llama comentario de fin de línea (o de una sola línea), ya que termina al final de la línea que aparece. Si el texto a comentar es demasiado corto para que quepa en una sola línea, se deben utilizar comentarios de una sola línea. Por ejemplo:
//Este es un comentario
//Este es otro comentario
//Este es un tercer comentario

El compilador ignora todo desde la primera diagonal hasta el final de la línea.

Si el texto del comentario es demasiado largo para ponerlo en una sola línea, ponemos el comentario de múltiples líneas también conocido como comentario tradicional. Los comentarios de múltiples líneas inician con los símbolos /* y terminan con los de cierre */. Por ejemplo:
/*
    Este es un comentario con
    tres líneas de
    texto
*/

El compilador ignora todo desde la primera diagonal hasta el final de la línea.

Java también cuenta con comentarios javadoc, que están delimitados por /** y */. Gracias a este tipo de comentarios y a la herramienta javadoc, es posible generar automáticamente una documentación del código fuente en forma de páginas HTML. Este documento muestra para cada clase: la jerarquía de las clases, las variables públicas y los métodos dentro de la clase. Por ejemplo:

 1 /**
 2  * Saludo.java
 3  * Programa que imprime una línea de texto
 4  * @author  ProfesorJava
 5  * @versión 1.0
 6  * @created Noviembre 2010
 7  */
 8 public class Saludo 
 9 { 
10     /*
11      * el método main empieza la ejecución de
12      * la aplicación de Java
13      */
14     public static void main( String[] args ) 
15     {
16         System.out.println( "Bienvenidos al Webinar Java." );       
17     }   //fin del método main
18 }   //fin de la clase Saludo

El programa ilustra el uso de los tres tipos de comentarios en Java. La documentación generada con la herramienta javadoc sería similar a:


Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 36, Séptima Edición 2008, Editorial Pearson Education.
  • Java 2, Benjamín Aumaille, pág 21, Edición 2000, Editorial ENI.
  • Programación en Java, C. Thomas Wu, págs. 40, 41, Edición 2008, Editorial McGraw-Hill.
  • Introducción a la programación con Java, John S. Dean, Raymond H. Dean, pág. 53, Edición 2009, Editorial McGraw-Hill.

Identificador.

Un identificador es el término técnico para el nombre de un componente de programa: el nombre de una clase, variable o método.

Reglas para formar un identificador:
  • Debe estar compuesto de caracteres, dígitos, guiones bajos (_) o signos de moneda ($)
  • Debe comenzar con un carácter, $ o _
  • Luego del primer carácter, puede contener cualquier conjunto de caracteres, dígitos, $ o _
  • No se permiten espacios en blanco
  • No tienen un límite de largo
  • No es posible utilizar palabras clave de Java como identificadores
  • Son case-sensitive (distingue mayúsculas de minúsculas)

Ejemplos de identificadores:
  • primerNumero 
  • total 
  • salario 
  • $cantidad 
  • _valor
  • HolaMundo 
  • DIAS_AÑO 

Ejemplos de identificadores case-sensitive, los tres nombres son distintos:
  • longitud 
  • LONGITUD 
  • Longitud

Ejemplos de identificadores inválidos:
  • Salario Empleado - Contiene un espacio en blanco
  • Hola! - El signo de exclamación ! no se puede utilizar como identificador
  • uno+dos - No se puede usar el símbolo + como identificador
  • 2pasos - Un identificador no puede iniciar con un número
  • public - No se puede usar como identificar ya que es una palabra reservada

Si un identificador no sigue estas reglas, el programa marcará un error de sintaxis.

Por último es importante que los nombres de los identificadores sean descriptivos. La utilización de palabras completas y con significado en los identificadores ayuda a la autodocumentación. Un programa está autodocumentado si el código del mismo explica el significado sin necesidad de un manual o de muchos comentarios.

Bibliografía consultada:
  • Como programar en Java, Deitel & Deitel, pág. 37, Séptima Edición 2008, Editorial Pearson Education. 

abril 05, 2010

Mensaje

Los objetos se comunican entre sí mediante mensajes. Los mensajes dan como resultado que un objeto realice algo. La acción de “pasar un mensaje” es equivalente a llamar a un método para modificar el estado del objeto o para ejercer un comportamiento.



Los mensajes son un concepto importante de la orientación a objetos. Los mensajes permiten que los objetos conserven su independencia. Cuando un objeto envía un mensaje a otro objeto, por lo general no toma en cuenta la manera en que el objeto receptor llevará a cabo el comportamiento solicitado. Al objeto solicitante lo único que le interesa es que se realice el comportamiento.

Comportamiento.


Un comportamiento es la acción que realiza un objeto cuando pasa un mensaje o en respuesta a un cambio de estado: es algo que realiza un objeto. Las distintas formas de respuesta se denominan métodos. El conjunto de los métodos de un objeto, determinan el comportamiento del objeto.

Campo.

Los campos también son conocidos como variables de instancia. Los campos son pequeñas cantidades de espacio dentro de un objeto que pueden usarse para almacenar valores. Todo objeto, una vez creado, dispondrá de un espacio para cada campo declarado en su clase.

En Java, los campos del objeto se inicializan en el constructor y sus valores toman un valor por defecto, si es que no están inicializados explícitamente.

Atributo.


Los atributos son las características individuales que diferencian a un objeto de otro, y determinan la apariencia, estado u otras cualidades de ese objeto. Por ejemplo, para modelar una motocicleta, entre sus atributos podríamos considerar los siguientes:

  • Color: rojo, verde, plateado, café.
  • Estilo: crucero, deportiva, estándar.
  • Fabricante: Honda, BMW, Bultaco.

Los atributos de un objeto también pueden incluir información sobre su estado; por ejemplo, puede contar con características como condición de máquina (apagada o encendida) o velocidad actual seleccionada.

Los atributos se representan mediante variables de instancia por lo tanto tienen un identificador y un tipo, el cual indica los valores que puede almacenar.

Instancia.

La relación entre objeto y clase se denomina instanciación. Un objeto es una instancia de una clase, llamando instanciar al hecho de producir y completar un objeto llenando con valores sus atributos.



¿Cuál es la diferencia exacta entre una instancia y un objeto? En realidad ninguna. Objeto es el término más general, pero tanto las instancias como los objetos son la representación concreta de una clase. De hecho, los términos instancia y objeto con frecuencia se utilizan en forma indistinta en la Programación Orientada a Objetos. Una instancia de un árbol y un objeto árbol son lo mismo.

abril 04, 2010

Objeto.

Un objeto es: cualquier cosa, real o abstracta, de la cual almacenamos datos y la forma de manipular esos datos.


Los programas Java se componen de un cúmulo de objetos, los cuales se pueden representar como tales en una solución computarizada. Los objetos en Java se crean a partir de clases y todos los objetos se crean obligatoriamente con la palabra clave new.

Un objeto es una instancia de una clase, llamando instanciar al hecho de producir y completar un objeto llenando con sus valores sus atributos.

Un objeto siempre tiene las siguientes características:

  • Estado
  • Comportamiento
  • Identidad


El estado de un objeto define la situación del mismo en un momento establecido en el tiempo. Los valores que toma un objeto se almacenan en variables internas llamadas atributos. Estos pueden ser, a su vez, objetos.

Hay dos tipos de atributos: los constantes, que no cambian con el tiempo, y los dinámicos.
El estado, por tanto, viene dado por los valores de todos los atributos y vínculos del objeto en un momento concreto.

El comportamiento describe las acciones y reacciones de un objeto. Es la manera que éste reacciona ante mensajes o estímulos recibidos, básicamente enviando mensajes a otros objetos, respondiendo al que le envía el mensaje o cambiando de estado. Las distintas formas de respuesta se denominan métodos.

En la Programación Orientada a Objetos, un objeto puede satisfacer solamente ciertos requerimientos, definidos por su interfaz, que es el conjunto de los métodos aplicables a ese objeto. Son la propia interfaz y la implementación de la misma quienes definen el comportamiento.

La identidad es lo que diferencia a un objeto de todos los otros del mismo tipo. La identidad se le otorga a un objeto en el momento de la creación del mismo y se mantiene durante toda la vida del mismo. Es, por tanto, independiente del estado y de la localización física.

Véase en YouTube:




abril 03, 2010

for (palabra clave).

Repite una instrucción (o bloque) por un número especificado de veces. El ciclo for se utiliza generalmente cuando el número de repeticiones se conoce de antemano.



La instrucción inicial se ejecuta una sola vez, antes de que el ciclo se ejecute. La condición se evalúa antes de cualquier repetición del ciclo. Si la condición es verdadera, el ciclo continúa. Si es falso el ciclo termina.

Ejemplo 1.

/**
 * Ilustra la sintaxis de la estructura for
 */
public class For01
{
    public static void main( String args[] ) 
    {  
        for( int i = 1; i <= 10; i++ )
        {
            System.out.println( i );
        }   //fin del ciclo for
    }   //fin del método main
}   //fin de la clase For01

Véase

switch (palabra clave).

La instrucción switch es otra manera de implementar muchas instrucciones if. Evalúa una expresión del tipo int o que pueda ser convertida a int de forma implícita.

La instrucción switch tiene una gramática ligeramente complicada y debe utilizarse con cuidado. Por ejemplo, utiliza los signos “:” y “;”, la palabra clave case y default. La sintaxis es la siguiente:

switch( n ) 
{
    case valor1:
        instrucciones;
        break;
    case valor2:
        instrucciones;
        break;
    default:
        instrucciones;
}

Donde n es un byte, char, int, short.

Ejemplo 1.
El programa solicita un número del usuario y si este se encuentra en un rango de 1 a 10 muestra el mensaje correspondiente.

/**
 * Ilustra el uso de la estructura switch.
 */
import java.util.Scanner;
public class Switch01
{
    public static void main( String[] args ) 
    {
        int calificacion;
        Scanner teclado = new Scanner( System.in );
        
        System.out.println( "Introduce una calificación del 1 al 10: " );
        calificacion = teclado.nextInt();
        
        switch( calificacion ) {
            case 10:
                System.out.println( "(A) Excelente." );
                break;
            case 9:               
            case 8:
                System.out.println( "(B) Bien." );
                break;
            case 7: 
                System.out.println( "(C) Regular." );
                break;
            case 6:
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
                System.out.println( "(D) Malo." );
                break;
           default:
                System.out.println( "El número no está en el rango de 1-10" );
        }   //fin-switch
    }   //fin del método main
}   //fin de la clase Switch01

Ejemplo 2.
Utilizar la instrucción break es opcional y es interesante ponerlo o no. Veamos que sucede cuando no utilizamos la instrucción break.

/**
 * Ilustra el uso de la estructura switch.
 */
import java.util.Scanner;
public class Switch02
{
    public static void main( String[] args ) 
    {
        int numero;
        Scanner teclado = new Scanner( System.in );
        
        System.out.print( "Introduce un número del 1 al 10: " );
        numero = teclado.nextInt();
        
        switch( numero ) {
            case 1: System.out.println( "Uno" );
            case 2: System.out.println( "Dos" );
            case 3: System.out.println( "Tres" );
            case 4: System.out.println( "Cuatro" );
            case 5: System.out.println( "Cinco" );
            case 6: System.out.println( "Seis" );
            case 7: System.out.println( "Siete" );
            case 8: System.out.println( "Ocho" );
            case 9: System.out.println( "Nueve" );
            case 10: System.out.println( "Diez" );
            default:
                System.out.println( "El número no está en el rango de 1-10" );
        }   //fin-switch
    }   //fin del método main
}   //fin de la clase Switch02

Mientras no se encuentre el break seguirá con la siguiente instrucción hasta llegar al final de la instrucción.

Véase

if (palabra clave).

Las instrucciones if permiten al programador controlar la secuencia de acciones al hacer que el programa lleve a cabo una evaluación. Después de la evaluación, la computadora realiza una de varias acciones disponibles. Una condición es una expresión que puede ser verdadera o falsa.



Las instrucciones if pueden ser simples (una operación) o compuestas (varias operaciones agrupadas con llaves). Las instrucciones if/else ejecutan un conjunto de instrucciones cuando una condición es falsa o verdadera. Al combinar varias instrucciones if/else los programas pueden revisar condiciones distintas.

Cuando queremos hacer una cosa o no hacer nada utilizamos:

//if simple
if( condición )
    instrucción;

Utilizamos la versión if/else cuando queremos hacer una u otra cosa:

//if…else
if( condición)
{
    instruccionesA;
}
else
{
    instruccionesB;
}

Finalmente, cuando tenemos más de tres posibilidades seleccionamos:

//if…else if…else
if( condiciónA )
{
    instruccionesA;
}
else if( condiciónB )
{
    instruccionesB;
}
else 
{
    instruccionesC;
}

Ejemplo 1.
El siguiente ejemplo ilustra el uso de la instrucción if simple.

/**
 * Ilustra el uso de la instrucción if.
 */
import java.util.Scanner;
public class If01
{
    public static void main( String[] args ) 
    {
        int calificacion;
        Scanner teclado = new Scanner( System.in );
        
        System.out.print( "Introduce la calificación: " );
        calificacion = teclado.nextInt();
        
        if( calificacion > 7 )
            System.out.println( "Aprobado" );
    }   //fin del método main
}   //fin de la clase If01

Ejemplo 2.
El siguiente ejemplo ilustra el uso de la instrucción if…else.

/**
 * Ilustra el uso de la instrucción if.
 */
import java.util.Scanner;
public class If02
{
    public static void main( String[] args ) 
    {
        int calificacion;
        Scanner teclado = new Scanner( System.in );
        
        System.out.print( "Introduce la calificación: " );
        calificacion = teclado.nextInt();
        
        if( calificacion > 7 )
            System.out.println( "Aprobado" );
        else
            System.out.println( "Reprobado" );        
    }   //fin del método main
}   //fin de la clase If02

Ejemplo 3.
El siguiente ejemplo ilustra el uso de la instrucción if…else if…else.

/**
 * Ilustra el uso de la instrucción if.
 */
import java.util.Scanner;
public class If03
{
    public static void main( String[] args ) 
    {
        int calificacion;
        Scanner teclado = new Scanner( System.in );
        
        System.out.print( "Introduce la calificación: " );
        calificacion = teclado.nextInt();
        
        if( calificacion > 9 )
            System.out.println( "Aprobado y excelente" );
        else if( calificacion > 7 )
            System.out.println( "Aprobado" );
        else
            System.out.println( "Reprobado" );        
    }   //fin del método main
}   //fin de la clase If03

Véase:

Control de flujo.

Las sentencias de control de flujo, es la manera que un lenguaje tiene de controlar que sentencias ejecutar en cada momento. Las sentencias son las siguientes:

  • Sentencias de selección: if/else, switch

  • Sentencias de repetición (bucle): for, while, do/while

  • Sentencias de ruptura: break, continue, return


  • Las sentencias de selección o condicionales se basan en el resultado de una condición, o más, el programa se ejecuta instrucciones específicas. Las sentencias de repetición ejecutan un número de veces un conjunto de instrucciones.

    También podríamos ver las excepciones como otra forma de controlar el flujo de un programa.

    do (palabra clave).

    La palabra clave do se utiliza ocasionalmente, cuando un ciclo tenga que ejecutarse por lo menos una vez.


    El ciclo do tiene la siguiente estructura:

    do 
    {
        instrucción1;
        instrucción2;
        …
        instrucción n;
    } while( condición );
    

    Ejemplo 1.
    El siguiente programa ilustra el uso de la estructura do/while para obtener el inverso de un número entero que es proporcionado por el usuario. Lo hace utilizando el operador del módulo (%) para extraer el digito más a la derecha. El número original se divide entre 10, y la operación se repite hasta que el número no sea igual a cero, que es cuando termina la iteración.

    /**
     * Demuestra el uso de la estructura do/while 
     */
    import java.util.Scanner;
    public class DoWhile01
    {
        public static void main(String args[]) {
            int numero;
            int digito;
            Scanner teclado = new Scanner( System.in );
            
            System.out.print( "Introduce un núumero:" );
            numero = teclado.nextInt();
            System.out.print( "El inverso del número es: " );
            do {
                digito = numero % 10;
                System.out.print( digito );
                numero = numero / 10;
            } while( numero !=0 );
        }   //fin del método main
    }   //fin de la clase DoWhile01
    

    Véase:

    while (palabra clave).

    La estructura de repetición while permite al programador especificar que un programa debe repetir una acción mientras que una condición (expresión booleana) sea verdadera.


    El ciclo while se utiliza generalmente cuando el número de repeticiones no se conoce de antemano. La sintaxis general es:

    while( condición ) 
    {
        instrucción1;
        instrucción2;
        …
        instrucción n;
    }
    

    Ejemplo 1.
    En el siguiente ejemplo se ilustra la implementación de la estructura while en la que se pretende imprimir los números 1, 2, 3 y 4.

    /**
     * Demuestra el uso de la sentencia while
     */
    public class While01 
    {
        public static void main( String args[] ) 
        {       
            int contador = 1;
            
            while ( contador <= 4 ) 
            {
                System.out.println( contador );
                contador++;
            }   //fin while       
        }   //fin del método main
    }   //fin de la clase While01
    

    Si la variable contador tiene un valor menor o igual que 4 cuando se evalúa la condición se incrementa el valor de contador y se efectúa la instrucción System.out.println. Entonces la instrucción while regresa automáticamente sobre sí misma y vuelve a probar la condición; las instrucciones se estarán repitiendo hasta que la condición no se cumpla, entonces se sale del ciclo y se siguen ejecutando las instrucciones que vienen a continuación y están fuera del ciclo.

    Ejemplo 2.
    El cuerpo de un ciclo puede contener cualquier tipo de sentencias secuenciales, selectivas o repetitivas. Cuando un ciclo está contenido en otro ciclo, se denominan ciclos anidados.

    /**
     * Demuestra el uso de la sentencia while
     */
    public class While02 
    {   
        public static void main( String args[] ) 
        {       
            int i = 1, j = 1;
            while ( i <= 3 ) 
            {
                System.out.printf( "Para i = %d : ", i );
               while ( j <= 4 ) {
                   System.out.printf( " j = %d ", j );
                   j++;
               }    //fin while
               System.out.println();
               i++;
               j=1;
            }   //fin while
        }   //fin del método main
    }   //fin de la clase While02
    

    Véase: