You are on page 1of 20

LENGUAJE DE PROGRAMACION JAVA

Instructor: I.S.C. Ramn Armando Abn Ramrez, M.A.

Mrida, Yucatn, Agosto de 2011

Orgenes del lenguaje Java

Originalmente, Java no fue creado para la red Internet. La primera versin de Java empez en 1991 y fue escrita en 18 meses en Sun Microsystems. De hecho, en ese momento, ni siquiera se llam Java; se llam Oak y se utiliz en Sun para uso interno. La idea original para Oak era crear un lenguaje orientado a objetos independiente de la plataforma. Por entonces, muchos programadores se limitaban a la programacin del IBM PC, pero el entorno corporativo poda incluir toda clase de plataformas de programacin, desde el PC hasta los grandes sistemas. Lo que haba detrs de Oak era crear algo que se pudiera usar en todos los ordenadores ( y ahora que Java se ha hecho popular gracias a la red Internet, cada vez ms corporaciones estn adoptndolo para uso interno en lugar de C++, precisamente por esa razn). El lanzamiento original de Oak no fue especialmente fascinante; Sun quera crear un lenguaje que se pudiera usar en electrnica. Oak pas a llamarse Java en 1995, cuando se lanz para el uso pblico y supuso un xito casi inmediato. En ese momento, Java haba adoptado un modelo que lo hizo perfecto para la red Internet, el modelo bytecode.

Todo sobre bytecodes


Un programa Visual C++ de Microsoft es grande, normalmente un progra- ma MFC puro no baja de 5MB sin incluir las libreras de enlace dinmico (DLLs) que la plataforma Windows necesita para ejecutar los programas Visual C++. En otras palabras, los programas C++ son completamente ejecutables en el ordenador en el que residen, lo que justifica que tengan un gran tamao. Imaginemos que intentamos descargar todo eso como parte de una pgina Web para permitir que esa pgina haga algo interactivo en su ordenador.Los programas Java, por el contrario, se construyen de forma diferente. El propio lenguaje Java est implementado como la mquina virtual de Java (JVM), que es la aplicacin que actualmente ejecuta un programa Java. Cuan- do JVM se instala en un ordenador, ste puede ejecutar programas Java. Los programas Java, por lo tanto, no necesitan ser autosuficientes, y no tienen por qu incluir todo el cdigo mquina que se ejecuta en el ordenador. En cambio, los programas Java son compilados creando bytecodes compactos y son estos bytecodes lo que JVM lee e interpreta para ejecutar el programa. Cuan- do descarga una applet Java de la red Internet, lo que realmente est descargando es un archivo de bytecodes. De esta forma, su programa Java puede ser muy pequeo, ya que todo el cdigo mquina necesario para ejecutarlo est ya en el ordenador de destino y no tiene que descargarse. Para distribuir Java entre una
2

gran variedad de ordenadores, Sun slo tuvo que rescribir JVM para que funcionara en esos ordenadores. Dado que su programa est almacenado en un archivo de bytecode, se ejecutar en cualquier ordenador en el que JVM est instalado. Aunque en un principio se supona que los programas Java eran interpreta- dos por JVM, es decir, ejecutados bytecode por bytecode, la interpretacin poda ser un proceso lento. Por esta razn, Java 2 incorpora la compilacin al instante Just in Time (JIT) en JVM. El compilador JIT realmente lee los bytecodes por secciones y los compila de forma interactiva en lenguaje mquina, por lo que el programa puede ejecutarse ms rpido ( todo el programa Java no se compila de una vez, ya que Java va realizando comprobaciones en tiempo de ejecucin en varias secciones del cdigo). Desde su punto de vista, esto quiere decir que su programa Java se ejecutar ms rpido con el nuevo compilador JIT. Utilizar bytecodes significa que los programas Java son muy compactos, lo que les hace ideales para descargarlos en la red Internet. Y otra ventaja a la hora de ejecutar tales programas con JVM, mayor que la descarga de programas, es la seguridad.

La seguridad del lenguaje Java


Cuando se ejecuta un programa, JVM puede monitorizar estrictamente lo que va ocurriendo, lo cual es importante para las aplicaciones de la red Internet. Fuera de toda duda, la seguridad ha llegado a ser un asunto extremadamente importante en la red Internet, y Java se ha lanzado a esa tarea. JVM puede ver todo lo que un programa hace, y si hay algo dudoso, como puede ser tratar de escribir en un archivo, puede prevenir esa operacin. Eso slo hace que, para la red Internet, Java sea ms atractivo que C++, que no tiene tales restricciones.

Adems se puede configurar la seguridad de Java de la forma que se desee, ofreciendo una solucin muy flexible. Por ejemplo, como ver en este libro, ahora puede especificar, tomando como base programa por programa, aquellos privilegios que quiera dar para descargar cdigo. Adems, ahora puede firmar su cdigo Java de forma que muestre de dnde procede para evitar modificaciones malvolas. Echaremos un vistazo a todo esto y ms a lo largo de este libro. Como puede observar, Java tiene una baza ganada en la red Internet: los programas Java son pequeos, seguros, independientes de la plataforma, orientados a objetos, y potentes. Adems presentan otras caractersticas que gustan a los programadores. Los programas Java son robustos (lo que significa que son fiables y pueden gestionar bien los errores), con frecuencia son sencillos de escribir comparados con C++, son multihilo (pueden ejecutar un nmero de tareas al mismo tiempo, lo cual es
3

til cuando se quiere continuar haciendo otras cosas mientras se espera a que un archivo de datos se descargue, por ejemplo) y ofrecen un alto rendimiento. El resultado final es que se puede escribir un programa Java una vez y puede descargarse fcilmente y ejecutarse en todo tipo de mquinas, la receta perfecta para la red Internet. Esta es la razn por la que Java ha llegado tan alto. Java no tiene como nico objetivo a la red Internet; de hecho, hay dos tipos de programas Java, uno para el uso de la red Internet y otro para el uso en una mquina local.

Adems de applets descargables, Java soporta aplicaciones que estn dise- adas para ejecutarse localmente. Las aplicaciones Java funcionan como otras aplicaciones de ordenador, puede instalarlas y ejecutarlas en el suyo. Al estar instaladas localmente en vez de ser descargadas con una pgina Web, las aplicaciones tienen ms privilegios que las applets, como es la capacidad para leer y escribir archivos. Las aplicaciones que usaremos en los siguientes captulos sern el tipo ms sencillo de aplicaciones Java: aplicaciones consola. Son aplicaciones basadas en texto que se ejecutan desde la lnea de comandos (en Windows esto quiere decir desde una ventana DOS), y pueden leer y visualizar texto. En este captulo comprobar cmo tales aplicaciones funcionan. Por ejemplo, podr decir que tiene una aplicacin Java llamada app que visualiza el mensa- je "Hola desde Java!" (acaba de ver cmo lo hace la applet). En este caso, la aplicacin visualizar este mensaje en la pantalla. Ejecute la aplicacin arran- cando la mquina virtual de Java con el comando Java, pasndole el nombre de la aplicacin que quiere ejecutar. En Unix, sera as, donde '%' es el command prompt:

% j ava app Hola desde Java!

En Windows, sera as:

c:\>java app Hola desde Java!

Las aplicaciones Java pueden ser grficas? Realmente pueden serlo, y de hecho, la mayora de ellas lo son. En este caso, la aplicacin es responsable de arrancar su propia ventana (el visualizador de applets lo har).

Adquirir e instalar Java


4

Hay que descargar e instalar Java, lo que significa descargar Java Development Kit (JDK), que est disponible en http://java.sun.com/products/ jdW1.21 (1.2 se refiere a la versin de JDK, que ahora se llama Java 2 Development Kit, versin 1.2.2 en el momento de escribir este manual). Despus de descargar JDK, generalmente como un paquete ejecutable autoinstalable, seguir las instrucciones de instalacin en el sitio Web java.sun.com; por ejemplo, las instrucciones de instalacin en Windows estn en http://java.sun.comlproducts/jdW1.2/installwindows.html, y para Solaris se encuentran en http://java.sun.com/products/jdk/1.2/install- solaris.htm1.

Qu ocurre con CLASSPATH?


Los veteranos en Java se preguntarn por la variable de entorno llamada CLASSPATH cuando instalen Java2. La variable CLASSPATH, como veremos pronto en este captulo, dice a Java donde encontrar los archivos bytecode compilados, tanto los que cre como los del sistema que vienen con JDK. CLASSPATH ha sido el foco de grandes confusiones al trabajar con Java y estoy contento de decir que ha facilitado las cosas. Cuando instale JDK, ya no tiene que preocuparse de poner la variable CLASSPATH, porque JDK sabr dnde buscar sus propias libreras. Sin embargo, si quiere buscar otros archivos bytecode creados al compilar un archivo, tendr que poner la variable CLASSPATH. Ver cmo hacer esto cuando discutamos la compilacin de programas en este captulo (hay dos formas de indicar al compilador de Java dnde buscar los archivos bytecode

Palabras reservadas de Java


abstract: Especifica la clase o mtodo que se va a implementar mstarde en una subclase. boolean: Tipo de dato que slo puede tomar los valores verdadero ofalso. break: Sentencia de control para salirse de los bucles. byte: Tipo de dato que soporta valores en 8 bits. byvalue: Reservada para uso futuro. 5

case: Se utiliza en las sentencias switch para indicar bloques de texto. cast: Reservada para uso futuro. catch: Captura las excepciones generadas por las sentencias try. char: Tipo de dato que puede soportar caracteres Unicode sin signo en16 bits. class: Declara una clase nueva. const: Reservada para uso futuro. continue: Devuelve el control a la salida de un bucle. default: Indica el bloque de cdigo por defecto en una sentencia switch. do: Inicia un bucle do-while. double: Tipo de dato que soporta nmeros en coma flotante, 64 bits. else: Indica la opcin alternativa en una sentencia if. extends: Indica que una clase es derivada de otra o de una interfaz. final: Indica que una variable soporta un valor constante o que un mtodo no se sobrescribir. finally: Indica un bloque de cdigo en una estructura try - catch que siempre se ejecutar. flota: Tipo de dato que soporta un nmero en coma flotante en 32 bits. for: Utilizado para iniciar un bucle for. future: Reservada para uso futuro. generic: Reservada para uso futuro. goto: Reservada para uso futuro.

if: Evala si una expresin es verdadera o falsa y la dirige adecuadamente.


implements: Especifica que una clase implementa una interfaz. import: Referencia a otras clases inner: Reservada para uso futuro. instanceof: Indica si un objeto es una instancia de una clase especfica o 6

implementa una interfaz especfica. int: Tipo de dato que puede soportar un entero con signo de 32 bits. interface: Declara una interfaz. long: Tipo de dato que soporta un entero de 64 bits. native: Especifica que un mtodo est implementado con cdigo nativo (especfico de la plataforma). new: Crea objetos nuevos. null: Indica que una referencia no se refiere a nada. operator: Reservado para uso futuro. . outer: Reservado para uso futuro. package: Declara un paquete Java. private: Especificador de acceso que indica que un mtodo o variable slo puede ser accesible desde la clase en la que est declarado. protected: Especificador de acceso que indica que un mtodo o variable slo puede ser accesible desde la clase en la que est declarado (o una subclase de la clase en la que est declarada u otras clases del mismo paquete). public: Especificador de acceso utilizado para clases, interfaces, mtodos

y variables que indican que un tema es accesible desde la aplicacin


(o desde donde la clase defina que es accesible). rest: Reservada para uso futuro. return: Enva control y posiblemente devuelve un valor desde el mtodo que fue invocado. short: Tipo de dato que puede soportar un entero de 16 bits. static: Indica que una variable o mtodo es un mtodo de una clase (ms que estar limitado a un objeto particular).

super: Se refiere a una clase base de la clase (utilizado en un mtodo o constructor de clase). switch: Sentencia que ejecuta cdigo basndose en un valor. synchronized: Especifica secciones o mtodos crticos de cdigo multihilo. this: Se refiere al objeto actual en un mtodo o constructor throw: Crea una excepcin. throws: Indica qu excepciones puede proporcionar un mtodo, transient: Especifica que una variable no es parte del estado persistente de un objeto. try: Inicia un bloque de cdigo que es comprobado para las excepciones. var: Reservado para uso futuro. void: Especifica que un mtodo no devuelve ningn valor. volatile: Indica que una variable puede cambiar de forma asncrona. while: Inicia un bucle while.

Estructura de un programa en Java


Se pretende presentar la estructura de un programa mediante un ejemplo sencillo y mostrar dos elemento s tpico s del cdigo fuente: los comentario s y los identificadores. La estructura de un programa de Java es similar a la de un programa de C/C++. Por su diseo, permite a los programadores de cualquier otro lenguaje leer cdigo en Java sin mucha dificultad. Java emplea siempre la Pro gramacin Orientada a Objetos por lo que todo el cdigo se incluye dentro de las clases. Aunque ya se explicarn detenidamente ms adelante, las clases son combinaciones de datos (constantes y variables) y rutinas (mtodos).

La clase principal y el mtodo main

Un pro grama puede construir se empleando varias clases. En el caso ms simple se utilizar una nica clase. Esta clase contiene el programa, rutina o mtodo principal: main() y en ste se incluyen las sentencias del programa principal. Estas sentencias se separan entre s por caracteres de punto y coma.

La estructura de un programa simple en Java es la siguiente:

public class ClasePrincipal { public static void main(String[] args) { sentencia_1; sentencia_2; // ... sentencia_N; }

Como primer ejemplo sencillo de pro grama escrito en Java se va a utilizar uno que muestra un mensaje por la pantalla del ordenador. Por ejemplo, el programa Hola.java:

/** * La clase hola construye un programa que * muestra un mensaje en pantalla

*/ public class Hola { public static void main(String[] args) { System.out.println("Hola, "); System.out.println("me llamo Angel"); System.out.println("Hasta luego"); }

Como se ha indicado anteriormente, en un programa de Java todo se organiza dentro de las clases. En el ejemplo anterior, Hola es el nombre de la clase principal y del archivo que contiene el cdigo fuente. Todos los programas o aplicaciones independientes escritas en Java tienen un mtodo main o principal que, a su vez, contiene un conjunto de sentencias. En Java los conjuntos o bloques de sentencias se indican entre llaves { }. En el caso anterior, el conjunto de sentencias se reduce a tres sentencias, que so n llamadas a do s mtodos predefinido s en Java (print y println) que permiten visualizar texto por el dispositivo de salida de datos po r defecto (la pantalla).

El mtodo main es el punto de arranque de la ejecucin de todo programa en Java.

Comentarios
Los comentario s se emplean para facilitar la tarea de lo s programadores humanos ya que no realizan ningn papel activo en la generacin del cdigo. Los comentarios que se pueden introducir en el c digo fuente de un programa de Java son del estilo de C y C++. As, el compilador ignora todo lo que se incluya entre la secuencia de caracteres // y el final de la lnea. Por ejemplo :

10

// Este es un comentario estilo C++, llega al final de la linea

La pareja de caracteres / hay que escribirla sin dejar ningn espacio en blanco entre ellos. El segundo tipo de comentario es el que se utiliza tambin en

el lenguaje de pro gramaci n C: el compilador tambin ignora todo lo que se incluya entr e las secuencias de caracteres /* y */. Por ejemplo:

/* En este otro comentario estilo C, el final

lo indica la marca */

El comentario con // es ms fcil de teclear si slo ocupa una lnea, pero si ocupa varias, entonces el ms sencillo es el de /* ... */. Los comentario s pueden incluir cualquier carcter vlido en Unicode y no pueden anidarse.

Estos dos formatos de comentario se emplean para los denominado s comentarios de implementacin. Los comentario s de implementacin se utilizan en el programa fuente para resaltar cdigo o para aclarar un desarrollo en particular.

Adems, en Java existe un tercer tipo de comentario (doc comments) que facilita la generacin de documentacin en formato HTML al emplear algunas herramientas de documentacin (por ejemplo, javadoc incluida en el Kit de Desarrollo de Java). Los comentarios para la documentacin se emplean para describir la especificacin del cdigo, desde una perspectiva independiente cmo se ha implementado y ser ledo por desarrolladores que no tengan necesariamente el cdigo fuente a la vista. Debe evitarse emplear los comentarios par a dar panormicas del cdigo y facilitar informacin que no facilite la propia lectura del cdigo. Ejemplos de este tipo de comentarios:

/** Comentario estilo javadoc, se incluye 11

automaticamente en documentacion HTML */

/** * Muchos programadores * suelen incluir un asterisco * al principio de cada linea del * comentario para facilitar su lectura */

Los comentarios deberan contener slo informacin relevante para la lectura y comprensin del pro grama. Todos los pro gramas deben empezar por un comentario que describa el pro psito del programa. La discusin de decisiones de diseo que no sean obvias (triviales) es apropiada, pero debe evitarse la duplicidad de informacin dada por el propio cdigo. Es muy comn que los comentarios redundantes se des actualicen. En general, se debe evitar incluir comentarios que puedan quedarse obsoleto s conforme el cdigo se desarrolle. Por ejemplo, dentro de un comentario no debera incluirse informacin acerca de cmo se ha construido un archivo fuente determinado o en que directorio se haya el cdigo . A veces la frecuencia de los comentarios refleja una peor calidad de cdigo. Cuando se sienta la necesidad de aadir un comentario, debe considerarse la reescritura del cdigo para hacerlo ms claro.

Convencin para los comentarios al inicio de los programas

Todos los archivos fuente deberan comenzar con un comentario estilo C que liste el nombre de la clase, informacin de la versin, fecha y el aviso de copyright:

/* 12

* Nombre de la clase * * Informacin de la version * * Fecha * * Aviso de Copyright

*/

Identificadores

Los identificado res son nombres que se les asignan a variables, mtodos, clases en el cdigo fuente de un pro grama. Los identificadores slo existen en el cdigo del programa fuente y no en el programa objeto (resultado de la compilacin del programa fuente). Todo nuevo identificador que se emplee en un programa Java debe definirse previamente a su utilizacin. Las normas para la construccin de un identificador empleando el lenguaje de programacin Java son las siguientes:

Un identificador comienza por una letra, un carcter de subrayado (_) o un carcter de pesos ($). Aunque no se recomienda emplear el carcter $, ya que el compilador suele utilizarlo s de forma interna para crear identificadores propios. Los siguientes caracteres pueden ser tambin dgitos. Pero no pueden emplearse espacios en blanco u otros caracteres como el signo de interrogacin (?) o el signo de porcentaje (%). No hay lmite mximo de caracteres.

En los identificadores del cdigo fuente de un programa en Java se distinguen las maysculas de las minsculas. Por ejemplo, casa, CASA y Casa son tres identificado res diferentes. Pueden incluir caracteres Unicode, con lo que se pueden emplear secuencias de escape /uxxxx para representar
13

estos caracteres. No puede emplearse el identificador de una variable o cualquier otro elemento del cdigo fuente del programa para otro ya existente en el mismo bloque. Excepcin: variable miembro y local con el mismo identificador.

Existe una serie de palabras reservadas que no pueden emplearse como identificadores po r el programador en el cdigo fuente par a otros usos. Por ejemplo, la palabra double se utiliza para definir un tipo de dato real y la palabra for se emplea para construir un tipo determinado de bucle. En la Tabla 2.1 se muestran las palabras reservadas en Java.

Palabras reservadas en Java

abstract do implements protected throw boolean double import public throws break else instanceof rest transient byte extends int return true case false interface short try catch final long static void char finally native strictfp volatile class float new super while
const* for null switch continue goto* package synchronized

default if private this

Algunos de estos identificadores reservados no tienen todava uso en la implementacin actual del lenguaje Java. En concreto , los identificadores marcados con un asterisco * no se utilizan actualmente.
14

Identificadores de mtodos reservados en Java

clone equals finalize getClass hashCode notify notifyAll toString wait

Aunque la forma de escribir los identificado res en Java no est normalizada, a continuacin se dan algunas recomendaciones para la eleccin n de estos identificadores:

Es conveniente utilizar identificadores auto explicativos para orientar al usuario o a cualquier otra persona que accede al cdigo fuente de un programa sobre lo que representan, sin necesidad de utilizar los comentarios en el propio cdigo fuente. Por ejemplo, para almacenar el valor del radio de una esfera podra declararse una variable con el identificador radio, radioesfera o radiodeunaesfera.

Si el identificador se compone de ms de una palabra, stas se agrupan y despus de la primera el resto comienza con una letra mayscula, como por ejemplo: esVisible o radioEsfera.

El signo de subrayado se acepta en cualquier identificador pero por convencin slo se emplea para separar palabras en identificador es en constantes (po r convencin las constantes se escriben completamente en maysculas y esto dificulta la separacin de los nombres). Por ejemplo, para un valor constante que almacena un valor numrico que representa el nmero mximo de alumnos con los que trabaja el programa se podra declarar el identificador de la constante NUMERO_MAXIMO_ALUMNOS.

Convenciones para la legibilidad del programa fuente


15

Aunque la definicin exacta de la identacin (espacios vs tabuladores) no se especifica en el lenguaje Java, se recomienda emplear una secuencia de cuatro espacios como unidad de identacin.

Por otro lado se recomienda evitar las lneas de ms de 80 caracteres en el cdigo fuente ya que no se manejan correctamente por muchos terminales y herramientas de edicin.

Tema 2. Arreglos:
Los arreglos se pueden definir como objetos en los que podemos guardar mas de una variable, es decir, al tener un nico arreglo, este puede guardar mltiples variables de acuerdo a su tamao o capacidad, es importante recordar que las variables guardadas deben ser del mismo tipo, por ejemplo: Si tenemos un arreglo de tipo Numrico que puede almacenar 10 variables, solo podr almacenar 10 nmeros diferentes, no otras variables como caracteres o Strings.

Existen 2 tipos de arreglos, los unidimensionales, y los multidimensionales(generalmente 2 dimensiones y se les denomina matrices), en esta leccin veremos cmo declarar y utilizar los arreglos unidimensionales, estos son ms sencillos y fciles de comprender, y pueden servirnos para muchas aplicaciones.

Declaracin:

La estructura de declaracin de un arreglo es la siguiente:

16

tipo_dedato [] nombre_variable; //tambien puede declararse "tipo_de dato nombre_variable[];"

ejemplos: String array[]; //donde array es un arreglo que guardara variables tipo Strings double array2[]; //donde array2 es un arreglo que guardara variabels tipo double int [] array3; //donde array3 es un arreglo que guardara variables tipo int(numericas)

Definir tamao de arreglos: Para asignar a un arreglo su tamao o capacidad, se hace de la siguiente forma:

arreglo = new tipo_dedato[capacidad];

ejemplo: array = new String[10]; //el arreglo array guardara hasta un maximo de 10 variables de tipo String

Para realizar una declaracin de un arreglo y definir su tamao en una misma linea se puede usar la siguiente estructura:

String array[] = new String[10]; //se declara un arreglo y se asigna su tamao en una misma linea

17

18

Asignacin de valores a elementos del array


Una vez se tiene declarado un arreglo, y al mismo se le ha asignado un tamao o capacidad, podemos accesar a los datos dentro del mismo y asignarle valores. Para hacer esto es necesario proceder de la siguiente forma:

arreglo[indicador]=valor;

ejemplos:

array[0] = "Ejemplo"; //aqui se asigna el valor "Ejemplo" a un arreglo de String en su primera posicion array2[3] = 5; //se asigna un valor de 5 al 4to elemento de un arreglo numerico;

Es importante recordar que para accesar a los datos guardados en un arreglo se utilizan indicadores iniciando desde el "0", si un arreglo tiene un tamao de 10 variables, entonces se puede accesar a sus elementos con los indicadores del 0 al 9.

A continuacin un ejemplo ms completo:

int array1[]; //declaracion arreglo de tipo numerico

array1 = new int[3]; //tamao del arreglo es 3 elementos

//asignacion de valores a elementos del arreglo;

array[0] =2;

array[1] = 10;

19

arra[2] = 7;

System.out.println("El valor de la posicion 1 en el arreglo es" + array[0]);

20

You might also like