miércoles, 23 de febrero de 2011

CURSO DE PROGRAMACIÓN JAVA


Este artículo será orientado  para  que el lector  tenga una idea inicial o algo claro  de lo que es programación en lenguaje java. Este lenguaje de programación fue creado por                          Sun Microsystems a mediados de la década de los 90 es el lenguaje de programación más popular en la actualidad. Así lo demuestra el índice TIOBE.

El índice TIOBE trata de reflejar el "estado de salud" de los distintos lenguajes de programación. El índice reparte 100 puntos entre todos los lenguajes de programación existentes; el número de puntos que se lleva cada lenguaje depende del número de ofertas de trabajo que para dicho lenguaje haya en
portales como Monster y similares, del número de respuestas que varios buscadores de Internet (entre ellos Google y Yahoo) devuelven al realizar consultas relacionadas con el lenguaje, del número de libros editados y vendidos sobre dicho lenguaje... y otras métricas similares.

Java, al igual que su rival más directo (.NET), es mucho más que un simple lenguaje de programación, como podría ser el caso de C o C++. Es una plataforma de desarrollo de aplicaciones completa que proporciona contenedores web y lenguajes de script para la creación de páginas web dinámicas; soporte para desarrollo de aplicaciones para terminales móviles; un toolkit
Gráfico con soporte para animaciones 2D y 3D.

La plataforma se divide en tres grandes bloques. Uno de ellos, Java SE
es lo más parecido a un lenguaje de programación estándar. Java
SE será el objetivo de esta serie de artículos.

Java ME (anteriormente conocido como J2ME) es una edición de Java orientada a programación de dispositivos móviles y empotrados. Java ME es muy popular en la actualidad en dispositivos móviles, aunque a menudo pase desapercibido. Para que el lector se haga una idea de la presencia de esta tecnología, simplemente mencionar que se han manufacturado 3.500.000.000 de tarjetas inteligentes basadas en la tecnología Java, y más de 1.400.000.000 de teléfonos móviles con soporte para aplicaciones Java ME.

Si Java ME puede considerarse como un subconjunto de Java SE, Java EE (anteriormente conocido como J2EE) puede considerarse como un supe conjunto. En este caso, no se extiende ni se modifica de ningún modo el lenguaje de programación.











1. EL OBJETIVO DE ESTA SERIE DE ARTICULO:JAVA SE

El tema principal de este tema será enfocado o llevado hacia java se: se presentara  todo lo que tenga que ver con el lenguaje de programación ya nombrado.

1.1  java, el lenguaje

Java es un lenguaje muy fácil de aprender. Su sintaxis es la de C++ “simplificada”. Los creadores de Java partieron de la sintaxis de C++ y trataron de eliminar todo lo que resultase complicado o fuese fuente de errores en este lenguaje. La herencia múltiple, la aritmética de punteros, la gestión de memoria dinámica (que en Java se realiza de modo transparente para el programador gracias al recogedor de basura) son ejemplos de puntos complicados del lenguaje C++ que en Java se han eliminado o simplificado. Esta decisión de diseño, intencionada, tenía como objetivo atraer a desarrolladores con conocimientos de C++ al nuevo lenguaje de programación, objetivo que fue alcanzado.

Java es completamente independiente de la máquina y el sistema operativo en el que se ejecuta. El código generado por el compilador Java es independiente de la arquitectura: podría ejecutarse en un entorno UNIX, Mac o Windows; en un procesador Sparc, x86, PowerPC, ARM,... tanto de 32 como de 64 bits. El motivo de esto es que el que realmente ejecuta el código generado por el compilador
no es el procesador del ordenador directamente, sino que se ejecuta mediante una máquina virtual, que es la que genera código máquina adecuado para cada arquitectura.

Por último, en la línea del alto rendimiento, mencionar que Java posee soporte nativo para threads, lo que hace que escribir aplicaciones Java que tomen ventaja de procesadores de varios núcleos (lo más habitual en la actualidad es que al menos dispongamos de dos núcleos en una máquina) sea mucho más sencillo que en otros lenguajes de programación.



2. El kit de desarrollo Java, JDK

Para desarrollar aplicaciones Java es necesario un "Java Development Kit" o JDK. Existen múltiples JDKs, desarrollados por múltiples compañía, o desarrollados como proyectos de software libre. se recomiendo al lector que utilice  el que distribuye de modo gratuito Sun Microsystems, que se puede descargar desde http://java.sun.com/j2se. La implementación de Java de Sun suele ser la más
Actualizada y, además, ¡es software libre!. No obstante, el lector podría emplear cualquier otro JDK.

En la historias se ha hecho dos grandes revisiones a este software (JDK): La primera fue la versión 1.2, en 1998. Y la según da fue en el 2004 la versión java 5.


Es de consenso que el entorno JDK no es el más adecuado para el desarrollo de aplicaciones Java, debido a funcionar única y exclusivamente mediante comandos de consola. Hoyen día la programación se suele ayudar de entornos visuales, como Eclipse y Netbeans.el autor en su preferencia personal hace que tienda a recomendar Netbeans, especialmente para un programador novato ya que este entorno de desarrollo requiere mucha menos configuración que Eclipse.

A partir de ahora supongo que el lector tiene un JDK instalado en su equipo. La descarga desde la página de Sun es un instalador estándar. Podemos aceptar todas las opciones por defecto. Una vez instalado, nuestro equipo podrá ejecutar aplicaciones Java. Sin embargo, por defecto, el kit de desarrollo no estará accesible desde la consola de comandos.


2.1 compilando nuestra aplicación: el comando javac

Ha llegado ya el momento de comenzar a escribir algo de código fuente. Todavía no hemos explicado absolutamente nada de la sintaxis de Java; comenzaremos con ello en breve.


: Típico programa de "hola mundo" desarrollado en Java. import java.util.*;
/**Programa "hola mundo" que muestra la fecha actual.
* @author Abraham Otero
* @version 1.0
*/
public class HolaMundo {
/**El punto de entrada de la aplicación
* @param args array de cadenas de caracteres
* @return no devuelve nada
*/
public static void main(String[] args) {
//Esta línea imprime por consola la cadena de caracteres “Hola es:”
System.out.println("Hola es: ");
//Esta sentencia imprime la fecha actual del equipo
System.out.println(new Date());
}
}
La primera sentencia,
import java.util.*;
, importa el contenido de una librería, de la cual tomaremos un objeto que representa una fecha.
Todas las sentencias comprendidas entre un /**
y un */
son comentarios y, por tanto, serán ignorados por el compilador. Estos comentarios están en una
sintaxis especial que es interpretada por una de las herramientas del JDK que veremos un poco más
adelante. También es posible crear comentarios rodeando una o varias líneas con /*
y */
; todo lo que se encuentre después de /*
y hasta */
será un comentario. Por último, el tercer tipo de comentario que soporta Java es //
. En este caso el comentario comienza en las dos barras y termina con el final de la línea.


Javac

es el nombre del compilador de Java (su nombre viene de Java Compiler). Si hemos tecleado correctamente el código del ejemplo, el comando se ejecutará sin mostrar ningún mensaje por la consola y en el directorio aparecerá un archivo con nombre HolaMundo.class ; hemos compilado nuestro código con éxito. Si hay algún error en el código, el compilador nos advertirá de ello mostrando el correspondiente mensaje de error. Si nuestra consola no reconociese
el comando javac.


2.2. Lanzando la máquina virtual: el comando java

Los ficheros .class contienen bytecode, una especie de "ensamblador" de la plataforma Java. Este ensamblador puede ser interpretado por cualquier máquina virtual Java. La máquina virtual estará accesible desde nuestro

PATH
una vez hayamos instalado el JDK, sin necesidad de haber modificado ninguna variable de entorno. El comando para invocarla es java.
Para indicarle a la máquina virtual que debe comenzar la ejecución de un determinado programa, el cual debe haber sido compilado con antelación, después del comando java debemos teclear el nombre de la clase que contiene el main de nuestro programa. En nuestro caso el comando será:

java Hola Mundo



2.3. Generando documentación de nuestro código fuente

Una de las cosas que Java ha traído al mundo de la programación es la cultura de que todo código fuente debe tener una documentación asociada. Quizás haya sido por el hecho de que desde el día cero Java proporcionaba herramientas para generar documentación de modo semiautomático a partir de un código fuente con comentarios. O quizás fuese por el énfasis que los evangelistas del lenguaje
hacían sobre este aspecto. Pero una de las cosas que todavía en la actualidad es muy envidiada por los desarrolladores de otros lenguajes es la documentación de nuestras librerías y la cultura de documentar el código fuente que existe dentro de la plataforma Java.

El JDK de Sun nos proporciona una herramienta que extrae los comentarios que comienzan por
/**
de un código fuente (los que comienzan por /*
y por //
son ignorados). En dichos comentarios puede emplearse una sintaxis especial que es interpretada por la herramienta. A partir de los comentarios, y con el soporte de dicha sintaxis si el programador la ha empleado, la herramienta genera una página HTML con documentación del código fuente.
2.4. El visor de Applets: el comando appletviewer

Todavía tardaremos varios números en explicar qué es un Applet. Pero, por completitud, presentaremos aquí la última herramienta del JDK que emplearemos en esta serie de artículos:

appletviewer
. Se trata de un comando que verifica el comportamiento de un Applet, es decir, de una aplicación Java diseñada para ejecutarse dentro de un navegador web. La entrada del comando ha de ser una página web que contenga una referencia al applet que deseamos probar. Su sintaxis es:

 appletviewer mipagina.html

El comando ignora todo el contenido de la página web que no sean applets, y se limita a ejecutar éstos.

3. Tipos de datos primitivos

En este apartado presentaremos los tipos de datos primitivos que existen en Java. Aquellos lectores que estén familiarizados con C, o C++, no encontrarán prácticamente nada nuevo en este apartado: los tipos son casi idénticos a los de estos lenguajes, salvo que aquí todos los enteros son signed siempre.

En Java toda variable declarada ha de tener su tipo, y además antes de poder emplearla hemos de inicializarla a un valor, si no el compilador se quejará y no generará los archivos .class. Esto no es necesario, por ejemplo, en C, siendo fuente de muchos errores el emplear en operaciones variables que nos hemos olvidado de inicializar. A continuación pasamos a describir los distintos tipos de
Datos primitivos que existen en Java.


3.1 Enteros

Almacenan, como su propio nombre indica, números enteros; esto es, números sin parte decimal.

TABLA 1: tipo de datos enteros en Java
Tipo
Tamaño(bytes)
rango
Byte
1
128 a 127
Short
2
32768 a 32767
Int
4
2147483648
a 2147483647
Long
8
9223372036854775808
a
9223372036854775807

Para indicar que un literal entero es de tipo Long debemos añadirle una “L”
al final: el número 23 es un int y el número 23L es un Long.
3.2 Reales

Almacenan números reales, es decir, números con parte decimal.

TABLA 2: tipos de datos reales en Java
Tipo
Tamaño(bytes)
rango
Float
4
3.40282347E+38   a
+ 3.40282347E+38
double
8
179769313486231570E+308    a +
179769313486231570E+308

Si queremos indicar que un literal real es de tipo:
float

debemos añadir una F después de él: 2.3F , sino por defecto será double. Esto suele ser una causa habitual de quebraderos de cabeza para los programadores Java novatos que, cuando escriben una sentencia del tipo
float f = 2.3; no comprenden por qué el compilador da un error; estamos asignando un número double, 2.3.


3.4.Datos lógicos: boolean

Se trata de un tipo de dato que solo puede tomar dos valores:
True y false, que representan los valores lógicos cierto y falso, respectivamente.
Por ejemplo,
La sentencia bolean b = true;
Inicia la variable b

al valor lógico que representa una condición que se cumple, esto es, una condición cierta. Es un tipo de dato bastante útil a la hora de realizar chequeos sobre condiciones.

4. Definición de variables
Al igual que en C, y a diferencia de Fortran, Java requiere que se declaren los tipos de todas las variables empleadas. La sintaxis de declaración es la misma que C:

int i;

Sin embargo, y a diferencia que en C, se requiere inicializar todas las variables antes de usarlas, si no el compilador genera un error y aborta la compilación. Se puede declarar e inicializar valor a una variable en una misma línea:

int i = 0;
En Java, después de cada línea de código siempre debe ir un ";". Declaración e inicialización pueden hacerse en líneas diferentes:

int i ;
i = 0;

Es posible declarar e iniciar varias variables en una línea:

int i=3, j,k=2;

Los caracteres aceptados en el nombre de una variable son los comprendidos
Entre: AZ, az, _, $ y cualquier carácter que sea una letra en algún idioma. En Java, al igual que en todo lenguaje de programación, hay una serie de palabras reservadas que no pueden ser empleadas como nombres de variables ( if, . int, char, else, goto...); alguna de éstas son empleadas en la sintaxis del lenguaje, otras, como goto no se emplean en la actualidad pero se han reservado por motivos de compatibilidad; por si se decide emplear en el futuro.

5. Reglas de conversión entre distintos tipos numéricos

Las normas de conversión entre tipos numéricos son las habituales en un lenguaje de programación:

• Si cualquier operando es
double
todos se convertirán en double
.
• Si cualquier operando es
float
y no hay ningún double
todos se convertirán a float
.
• Si cualquier operando es
long
y no hay datos reales todos se convertirán en long
.
• Si cualquier operando es
int
y no hay datos reales ni long
todos se convertirán en int
.
• En cualquier otro caso el resultado será también un
int
.
Java sólo tiene dos tipos de operadores para operar números enteros: uno que aplica para operar datos de tipo Long, y otro que emplea para operar datos de tipo int(esto también sucede con la mayor parte de las CPU actuales). De este modo cuando operemos un byte con un byte , un short con un short, o un short con un byte Java empleará para dicha operación el operador de los datos tipo int, por lo que el resultado de dicha operación será un int siempre.







6. Operadores

En este apartado veremos los operadores aritméticos, relacionales y lógicos con los que cuenta Java.

6.1. Operadores aritméticos
Los operadores aritméticos de Java son

+ , - ,* , /

para suma, resta, producto y división. El operador /
Representa la división de enteros si ambos operandos son enteros. El módulo de la división de dos enteros puede obtenerse mediante el operador %

. Por ejemplo,
    7/4= 1; 7% 4=3

Además, existen los operadores decremento e incremento:

“—“ y “++”, respectivamente. La operación que realizan son incrementar y decrementar en una unidad a la variable a la que se aplican. Su acción es distinta según se apliquen antes (pre incremento, ++a) o después (pos incremento a++) de la variable. En el caso del operador pre incremento, si la variable sobre la que se aplica forma parte de una expresión primero se incrementará el valor de la variable, y a continuación se evaluará la expresión. Los operadores de pre decremento y pos decremento tienen un comportamiento análogo. El listado 3 ilustra estos distintos escenarios.

Operadores de pre incremento y pos decremento.
//código Ejemplo3.java del CD
int i = 1;
System.out.println ("i : " + i);
System.out.println ("++i : " + ++i); // Pre incremento, primero //incrementa y luego imprime por consola

System.out.println ("i++ : " + i++); // Pos incremento, primero imprime //“2” por consola y luego incrementa i.
System.out.println ("i : " + i);//i por lo tanto vale 3
System.out.println ("i: " + i); // Pre decremento, primero //decremento i y luego lo imprime por consola
System.out.println ("i:" + i);// Pos decremento, primero imprime // i por consola y luego de decremento
System.out.println( "i : " + i);// Ahora i vale 1



6.2 Operadores relacionales

Los operadores relacionales son operadores que comprueban si se cumple una determinada relación, de igualdad, desigualdad, mayor que... entre dos valores numéricos. El resultado de la aplicación de cualquier operador relacional es siempre un
Bolean, es decir, la expresión que surge de comparar dos variables o literales mediante un operador relacional sólo puede tomar dos valores: true y false.

Tabla 1. Operadores relacionales.

operador
Operación que realiza
==
Test de igualdad
!=
Test de desigualdad
< 
Menor que
> 
Mayor que
<=
Menor o igual que
>=
Mayor o igual que

: Uso de operadores relacionales en Java.
//c&oacute;digo Ejemplo4.java del CD
Random rand = new Random();
//el m&eacute;todo nextInt() del objeto Random creado genera un n&uacute;mero aleatorio entero.

//El m&oacute;dulo entre 100 de un entero aleatorio ser&aacute; un entero aleatorio entre 0 y 100.

int i = rand.nextInt() % 100;
int j = rand.nextInt() % 100;
System.out.println("i = " + i);
System.out.println("j = " + j);
System.out.println("i > j es " + (i > j));
System.out.println("i < j es " + (i < j));
System.out.println("i >= j es " + (i >= j));
System.out.println("i <= j es " + (i <= j));
System.out.println("i == j es " + (i == j));
System.out.println("i != j es " + (i != j));

: Posible resultado de la ejecuci&oacute;n del c&oacute;digo del listado 4
i = 85
j = 4
i > j es true
i < j es false
i >= j es true
i <= j es false
i == j es false
i != j es true

6.3. Operadores lógicos

Estos operadores se aplican sobre valores lógicos, es decir, sobre datos de tipo
boolean. En Java hay tres operadores lógicos: la negación, el AND (Y) lógico y el OR (O) lógico.




Tabla 4. Operadores lógicos

Operador
Operación que realiza
!
NOT lógico
&&
AND lógico
ll
OR lógico


: Este c&oacute;digo muestra las tablas de verdad de los operadoresl&oacute;gicos AND y OR boolean variableLogica = false, variableLogica2;
variableLogica2 = !variableLogica;
System.out.println("variableLogica: "+ variableLogica + ", variableLogica2: "+variableLogica2)
;
System.out.println("variableLogica&&variableLogica2: " + (variableLogica&&variableLogica

2));
System.out.println("variableLogica||variableLogica2: " + (variableLogica||variableLogica2));
System.out.println("\n\nTabla de verdad del operador &&:\n");
System.out.println("false && false: " + (false && false));
System.out.println("false && true: " + (false && true));
System.out.println("true && false: " + (true && false));
System.out.println("true && true: " + (true && true));

System.out.println("\n\nTabla de verdad del operador ||:\n");
System.out.println("false || false: "+ (false || false));
System.out.println("false || true: " + (false || true));
System.out.println("true || false: " + (true || false));
System.out.println("true || true: " + (true || true));


7. Conclusiones

En este primer artículo de lo que es el lenguaje de programación java y cuál el papel que juega en la programación. Se ha visto cuales son la característica principales de lo que es java, y se han dado pauta o ayudas para que el lector aprenda a manejar  el kit programación java. También hemos visto cuáles son los tipos de datos primitivos con los que cuenta Java, cómo definir variables, y los operadores aritméticos, relacionales y lógicos definidos dentro del lenguaje. Pero todavía  nos queda mucho  por abarcar y ver en este lenguaje  de programación llamado JAVA.
 

No hay comentarios:

Publicar un comentario