java

20
Java es el lenguaje más importante de Internet. Más aún, es el lenguaje universal de los programadores web en todo el mundo. Para ser un desarrollador web profesional es necesario dominar Java. Los orígenes de Java. La mejora en los lenguajes computacionales está definido por dos factores: mejoras en la programación y cambios en el entorno de la computación. Java no es la excepción. Aprovechando lo que C y C++ ha dejado, Java ofrece mejoras y funciones que reflejan el estado actual de la programación. James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan concibieron Java en Sun Microsystems en 1991. A este lenguaje se le llamó inicialmente “Oak” pero se le renombró “Java” en 1995. Sorpresivamente, ¡Internet no fue el objetivo original de Java! La motivación principal, en cambio, fue la necesidad de un lenguaje que fuera independiente de la plataforma y que pudiera emplearse para crear un software que estuviera incrustado en varios dispositivos electrónicos para uso del consumidor, como tostadoras, hornos de microondas y controles remotos. Se usan muchos tipos diferentes de CPU como controladores. El problema es que la mayor parte de los lenguajes de cómputo están diseñados para compilarse con un destino específico. Pensemos, por ejemplo, en C++. Aunque es posible compilar una página de C++ para cualquier tipo de CPU, para ello se requiere un compilador completo de C++ orientado a ese CPU. Sin embargo, el problema es que los compiladores son caros y su creación requiere mucho tiempo. En el intento de encontrar una mejor solución, Gosling y sus demás compañeros trabajaron en un lenguaje portable, de plataforma cruzada, que pudiera producir un código que se ejecutara en diversos CPU bajo entornos diferentes. Este esfuerzo culminó la creación de Java. (Schildt, 2007) La evolución de Java. Sólo unos cuantos lenguajes han cambiado de manera importante la esencia de la programación. En este selecto grupo, uno de ellos se destaca debido a que su impacto fue rápido y de gran alcance. Este lenguaje es, por supuesto, Java. No resulta exagerado afirmar que

Upload: fatima-kinomoto-lee

Post on 14-Jan-2016

216 views

Category:

Documents


0 download

DESCRIPTION

La historia de JAVA

TRANSCRIPT

Page 1: JAVA

Java es el lenguaje más importante de Internet. Más aún, es el lenguaje universal de los programadores web en todo el mundo. Para ser un desarrollador web profesional es necesario dominar Java.

Los orígenes de Java.La mejora en los lenguajes computacionales está definido por dos factores: mejoras en la programación y cambios en el entorno de la computación. Java no es la excepción.Aprovechando lo que C y C++ ha dejado, Java ofrece mejoras y funciones que reflejan el estado actual de la programación.

James Gosling, Patrick Naughton, Chris Warth, Ed Frank y Mike Sheridan concibieron Java en Sun Microsystems en 1991. A este lenguaje se le llamó inicialmente “Oak” pero se le renombró “Java” en 1995. Sorpresivamente, ¡Internet no fue el objetivo original de Java! La motivación principal, en cambio, fue la necesidad de un lenguaje que fuera independiente de la plataforma y que pudiera emplearse para crear un software que estuviera incrustado en varios dispositivos electrónicos para uso del consumidor, como tostadoras, hornos de microondas y controles remotos. Se usan muchos tipos diferentes de CPU como controladores. El problema es que la mayor parte de los lenguajes de cómputo están diseñados para compilarse con un destino específico. Pensemos, por ejemplo, en C++.

Aunque es posible compilar una página de C++ para cualquier tipo de CPU, para ello se requiere un compilador completo de C++ orientado a ese CPU. Sin embargo, el problema es que los compiladores son caros y su creación requiere mucho tiempo. En el intento de encontrar una mejor solución, Gosling y sus demás compañeros trabajaron en un lenguaje portable, de plataforma cruzada, que pudiera producir un código que se ejecutara en diversos CPU bajo entornos diferentes. Este esfuerzo culminó la creación de Java. (Schildt, 2007)

La evolución de Java.Sólo unos cuantos lenguajes han cambiado de manera importante la esencia de la programación. En este selecto grupo, uno de ellos se destaca debido a que su impacto fue rápido y de gran alcance. Este lenguaje es, por supuesto, Java. No resulta exagerado afirmar que el lanzamiento original de Java 1.0 en 1995 por parte de Sun Microsystems causó una revolución en la programación que transformó de manera radical la Web y lo convirtió en un entorno enormemente interactivo. En el proceso, Java estableció un nuevo estándar en el diseño de lenguajes para computadoras.

La primera actualización importante de Java fue la versión 1.1. Las funciones agregadas en Java 1.1 fueron más sustanciales de lo que se pensaría a partir del pequeño aumento en el número de versión. Por ejemplo, Java 1.1 agregó muchos elementos nuevos de biblioteca, redefinió la manera en que se manejaban los eventos y reconfiguró muchas características de la biblioteca original versión 1.0.

La siguiente versión importante de Java fue Java 2, donde el 2 indicaba “segunda generación”. La creación de Java 2 constituyó en parteaguas y marcó el inicio de la “era moderna” de Java. La primera versión de Java 2 llevó el número de versión 1.2. El número aludía originalmente a la versión interna de las bibliotecas de Java, pero luego se generalizó para aludir toda la versión. Con

Page 2: JAVA

Editar y crear un nuevo archivo .java

Compilar

Ejecutar programa

Editar y corregir errores de

compilación

Editar para corregir o ampliar

Java 2, Sun re empaquetó el producto Java como J2SE (Java 2 Plataform Standar Edition) y el número de versión empezó a aplicarse a ese producto.

La siguiente actualización de Java fue J2SE 1.3. Esta versión de Java fue la primera actualización importante de la versión original de Java 2, pues, en su mayor parte, contenía adiciones a las funciones existentes y le “apretó las tuercas” al entorno de desarrollo. La versión J2SE 1.4 mejoró Java aún más. Esta versión contenía nuevas e importantes funciones, incluidas las excepciones encadenadas, la E/S de canal y la palabra clave assert.

La última versión de Java es la J2SE 5. Aunque cada una de las actualizaciones anteriores de Java ha sido importante, ninguna se compara en escala, tamaño y alcance con la J2SE 5. ¡Ésta ha cambiado de manera fundamental el mundo de Java! (Schildt, 2007).

Errores de programación.Los errores de programación son inevitables, incluso para programadores experimentados. El proceso de corregir un error (bug en inglés) se denomina depuración (debugging) del programa. Cuando se detecta un error en Java, se visualiza un mensaje de errores que devuelve la posible causa del error. Desgraciadamente los errores a veces no se detectan y los mensajes de error no son siempre fáciles de interpretar.

El ciclo editar-compilar-ejecutar junto con la depuración paso a paso de los errores observados y fijados en los programas se pueden observar en el siguiente diagrama:

Los mensajes de error que produce el compilador no siempre ayudan a encontrar los errores. Una mezcla de las advertencias del compilador, manual de instrucciones y sobre todo la experiencia, serán quienes le proporcionarán el conocimiento suficiente para llegar a depurar programas con éxito, sobre todo cuando estos programas sean grandes y complejos. Existen tres tipos de errores: errores de compilación (sintaxis), errores de ejecución y errores lógicos.

Page 3: JAVA

Errores de compilación (sintaxis).Los errores de sintaxis ocurren cuando el código viola una o más reglas gramaticales de Java. Los errores de sintaxis se detectan y visualizan por el compilador cuando se intenta traducir el programa, por esta razón se denominan también errores de compilación. Los errores de compilación provienen de errores en la construcción el código tales como escribir mal una palabra reservada, omitir algún signo de puntuación o bien utilizar, por ejemplo, una llave de apertura sin su correspondiente llave de cierre. Estos errores suelen ser fáciles de detectar, ya que el compilador suele indicar dónde se producen las posibles causas.

Ejemplo. La compilación del siguiente programa produce errores de sintaxis.

//este programa contiene errores de sintaxis

public class Demo{

public static void main (String[] args){

z=50;

System.out.println(z+10);}

}

La compilación de este programa produce error detecta por el compilador del entorno JDK.

El error de sintaxis es la no declaración previa de la variable z, que se utiliza en dos sentencias.

Error de sintaxis: Es una violación de las reglas de gramática de Java, detectada durante la traducción del programa.

Errores de ejecución.Los errores de ejecución son errores que producen una terminación anormal y que se detectan y visualizan durante la ejecución del programa. Un error de ejecución se produce cuando el usuario instruye a la computadora para que ejecute una operación no valida, tal como dividir un número por cero o manipular datos indefinidos o no validos en la entrada.

Un error de entrada ocurre cuan el usuario introduce un valor de entrada imprevisto que el programa no puede manejar. Por ejemplo, si el programa espera leer un número, pero el usuario introduce una cadena de caracteres. En Java, los errores de entrada hay que declararlos en una clausula throws o bien capturarlos y tratarlos directamente dentro del método en el que se pueden producir.

Ejemplo.

public class ErrorDeEjecucion{

private static int z;

Page 4: JAVA

static void prueba(){

z=10/z;}

public static void main (String[] args){

prueba();}

}

Al invocar el metodo prueba() se produce un error en tiempo de ejecución

java.lang.ArithmeticException: / by zero que indica un intento de dividir por cero (el valor de z), operación no válida.

Error de ejecución: Se intentó ejecutar una operación no válida que fue detectada durante la ejecución del programa.

Errores lógicos.Los errores lógicos ocurren cuando un programa realiza un algoritmo incorrecto y no ejecuta la operación que estaba prevista. Existen muchos tipos de razones para que se produzcan errores lógicos.

Normalmente los errores lógicos sin difíciles de detectar, ya que no producen errores en tiempo de ejecución y no visualizan mensajes de error. El único síntoma de que se ha producido un error lógico puede ser la salida incorrecta del programa. Se pueden detectar errores lógicos comprobando el programa en su totalidad y comparando su salida con los resultados calculados. La prevención de errores lógicos se puede realizar verificando el algoritmo y el programa correspondiente antes de comenzar el proceso de ejecución.

Error lógico: Es un error producido por un algoritmo incorrecto.

Por ejemplo la instrucción

System.out.println(“Sie de Cazorla”);no muestra la frase que deseaba, pues no se ha escrito bien

System.out.println(“Sierra de Cazorla”);pero el compilador no puede encontrar el error, ya que la primera sentencia es sintácticamente correcta. (Zahonero Martínez & Joyanes Aguilar, 2002)

Resolución de problemas.El procedimiento para resolver problemas con una computadora consiste la escritura de un programa y su posterior ejecución; precisamente, la programación es un proceso de resolución de problemas. Existe una variedad de técnicas para resolverlos, y aunque el procedimiento de diseñar y crear un programa es altamente valido y necesario, se puede decir que existen varias etapas para la creación de un programa, entre las más destacadas:

Page 5: JAVA

Análisis: La solución del problema recae en revisar las especificaciones dadas por el cliente en consideración al programa.

Diseño de algoritmo: Una vez se ha analizado el problema, lo siguiente es diseñar el algoritmo adecuado que cubra las necesidades del programa y resuelva el problema.

Codificación: Dicho algoritmo se escribe en cualquier código fuente, en este caso Java, y se obtiene el programa que posteriormente se ejecutará.

Compilación y ejecución: Gracias al compilador, el programa se interpreta de manera que pueda ser ejecutado.

Verificación y depuración: El problema sufre una comprobación rigurosa para eliminar cualquier error que pudiera existir, llamados bugs.

Mantenimiento: El programa se actualiza y sufre algunas modificaciones que el cliente requiera, de manera que se satisfagan las necesidades de los usuarios, sin importar el número de veces que se modifique. También se van mejorando los algoritmos al realizar los cambios que se piden.

Documentación: Escritura de las diferentes fases del ciclo de vida del software, esencialmente el análisis, diseño y codificación; junto con manuales de usuario y de referencia, así como normas para el mantenimiento.

Las dos primeras fases conducen a un diseño detallado, escrito en forma de algoritmo; después, durante la codificación, el algoritmo se implementa en un código escrito en lenguaje de programación, reflejando las ideas desarrolladas en las etapas de análisis y diseño; en las siguientes fases el programa se traduce y ejecuta y, en la parte de verificación y depuración, el programador busca errores cometidos en las etapas anteriores y los corrige. Está demostrado que mientras más tiempo se invierta en la fase análisis y diseño, se requiere menos tiempo en la depuración del programa; por último, se debe documentar el programa. En ocasiones, se denomina a todas estas fases como ciclo de análisis-codificación-ejecución-mantenimiento de un programa.

Análisis del problema.Esta fase requiere definir el problema y especificar claramente las tareas que el programa debe realizar y el resultado o solución que se espera; esta etapa se divide en varias fases:

o Comprender el problema lo más fielmente posible.o Entender y describir los requerimientos o requisitos del problema. Es necesario aclarar si

el programa requiere interacción con el usuario para leer datos de entrada y especificar los formatos de salida o resultados.

o Especificar los datos supone describirlos y representarlos en su formato correspondiente.o Si el programa produce una salida, se debe especificar cómo generar y dar formato a los

resultados.

En el caso de la resolución de problemas complejos es necesario dividirlos o descomponerlos en subproblemas o módulos y aplicar los pasos anteriores para analizar individualmente los requisitos correspondientes, así como la posible relación o conexión entre cada módulo. El análisis del

Page 6: JAVA

problema requiere una definición clara que considere exactamente lo que el programa hará y la solución que se espera.

Diseño del algoritmo.Después de analizar el problema y la descripción de las especificaciones necesarios, el paso siguiente es diseñar un algoritmo que lo resuelva; para esto, la computadora necesita que se le indiquen las tareas o acciones a ejecutar y su orden sucesivo. Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y finitos (la solución se alcanza en tiempo definido).

Los pasos sucesivos que indican las acciones o instrucciones a ejecutar por la máquina constituyen el algoritmo; para completarlo se requiere el diseño previo del mismo, lo cual es independiente tanto del lenguaje de programación en que se expresará como de la computadora que lo ejecutará. En la resolución del problema, el algoritmo se puede expresar en un lenguaje de programación diferente y ejecutarse en una computadora distinta, pero será siempre el mismo; por ejemplo una analogía de la vida diaria, una receta de cocina se puede expresar en español, inglés o francés, pero independientemente del lenguaje que hable el cocinero, los pasos de la receta serán los mismos.

La especificación del orden en que se realizan las instrucciones o acciones del programa, se denomina control del programa; este control se realiza con instrucciones secuenciales o repetitivas (bucles o lazos). Las instrucciones del algoritmo en los lenguajes de programación de alto nivel también se conocen como sentencias.

En la etapa de análisis del proceso de programación se determina lo que el programa hará y en la etapa de diseño se define cómo se realizará la tarea solicitada; los métodos más eficaces para diseñar se basan en la sentencia de Julio César: divide y vencerás; es decir, la resolución de un problema complejo se realiza dividiendo el problema en subproblemas y a continuación fraccionando estos subproblemas en otros de nivel más bajo hasta que pueda implementarse una solución; este método se conoce técnicamente como diseño descendente (top-down) o modular. El proceso de dividir el problema en etapas y expresar cada paso en forma detallada se denomina refinamiento sucesivo, donde cada subprograma se resuelve mediante un módulo o subprograma que tiene un solo punto de entrada y un solo punto de salida.

Cualquier software bien diseñado consta de un programa principal siendo éste el módulo de nivel más alto que llama a subprogramas o módulos de nivel más bajo que a su vez pueden llamar a otros subprogramas. Los módulos pueden planearse, codificarse, comprobarse y depurarse independientemente, incluso por diferentes programadores que los podrán combinar entre sí.

El proceso implica ejecutar los siguientes pasos hasta que el programa se concluye:

1. Programar un módulo.2. Comprobarlo.3. Si es necesario, depurarlo.4. Combinarlos con los módulos anteriores.

El proceso que convierte los resultados del análisis del problema en un diseño modular con refinamientos sucesivos que permitan una posterior traducción a un lenguaje se denomina diseño

Page 7: JAVA

del algoritmo, y es independiente del lenguaje de programación en el que posteriormente se codificará.

Como último paso, en el diseño del algoritmo se debe comprobar y verificar su exactitud; es decir, que produzcan un resultado en un tiempo finito. Los métodos que utilizan algoritmos se denominan algorítmicos. En contraste con los métodos heurísticos que implican algún juicio o interpretación, los primeros se pueden implementar en computadoras, mientras que los segundos, con dificultad. En los últimos años las técnicas de inteligencia artificial han hecho posible la implementación del proceso heurístico en computadoras. Ejemplos de algoritmos son instrucciones para montar una bicicleta, hacer una receta de cocina, obtener el máximo común divisor de dos números, etc.

Los algoritmos se pueden expresar y representar gráficamente por medio de fórmulas, diagramas de flujo N-S y pseudocódigos; esta última representación es la más utilizada en las técnicas de programación modernas. Por ejemplo, un algoritmo para escribir la tarea “ir al cine a ver la de película de ‘Harry Potter’” se puede describir de la forma siguiente:

1. inicio2. ver la cartelera de cines en internet3. si no proyectan “Harry Potter” entonces

3.1. decidir otra actividad3.2. bifurcar al paso 7

sino3.3. ir al cine

fin_si4. si hay fila entonces

4.1formarse4.2mientras haya personas delante hacer

4.2.1 avanzar en la filafin_mientras

fin_si5. si hay localidades entonces

5.1comprar una entrada5.2ingresar a la sala5.3localizar la(s) butaca(s)5.4mientras proyectan la película hacer

5.4.1 ver la película5.5abandonar el cine

si_no5.6refunfuñar

fin_si6. volver a casa7. fin

En el algoritmo anterior hay diferentes aspectos a considerar. En primer lugar, algunas palabras reservadas se han escrito deliberadamente en negrita (mientras, si_no; etc.). Estas palabras

Page 8: JAVA

describen las estructuras fundamentales y los procesos de toma de decisión en el algoritmo; también incluyen los conceptos importantes de selección (expresadas por si-entonces- si_no, if-then-else) y de repetición (expresadas por mientras-hacer, hacer-mientras o a veces repetir-hasta o iterar-fin_iterar, en inglés, while-do y do-while, repeat-until) que se encuentran en casi todos los algoritmos, especialmente en los de proceso de datos. La capacidad de decisión permite seleccionar alternativas de acciones a seguir o indicar la repetición una y otra vez de operaciones básicas:

si proyectan la película seleccionada ir al cine

si_no ver la televisión, ir al fútbol o leer el periódico

Este enfoque requiere normalmente de herramientas simples como lápiz o bolígrafo y papel, además es más fácil descubrir los errores de sintaxis, lógicos o de ejecución en un programa bien analizado y diseñado; posteriormente también es más sencillo seguir y modificar su secuencia de instrucciones, también llamada traza.

Codificación.La codificación es la escritura en lenguaje de programación de la representación del algoritmo desarrollada en las etapas precedentes. Puesto que el diseño de un algoritmo es independiente del lenguaje de programación utilizado para su implementación, el código puede escribirse con facilidad en un lenguaje o en otro.

Para convertir el algoritmo en programa se deben sustituir las palabras reservadas en español por sus equivalentes en inglés, y las operaciones/instrucciones indicadas en lenguaje natural por las correspondientes en el lenguaje de programación correspondiente, siguiendo las reglas de sintaxis del mismo. Al terminar el diseño del algoritmo y verificar su exactitud, se procede a convertirlo en un programa y se escribe en lenguaje Java en alguna de sus versiones. Una vez escrito el código fuente del programa, éste se debe de introducir en la computadora mediante un editor de textos siguiendo las reglas de sintaxis de Java. Esta operación se realiza con un programa editor para posteriormente convertir el código fuente en un archivo de programación que se guarda o graba en disco para su uso posterior.

Compilación-interpretación de un programa.El programa fuente debe traducirse a su lenguaje maquina; este proceso lo debe realizar con el compilador y el sistema operativo, que prácticamente se encarga de ello. La ejecución del código fuente en el compilador verifica la exactitud y corrección de la sintaxis del programa fuente.

La etapa posterior a la compilación es la ejecución del programa, y como señalan las normas históricas de la programación, la compilación exitosa de un programa solo garantiza que éste cumple fielmente a las reglas de sintaxis, pero no que funcione correctamente. Puede ocurrir que la ejecución se interrumpa y termine de modo anormal por la existencia de errores lógicos, como una división entre cero o una mala identificación de datos; incluso las teorías tradicionales de programación advierten que se pueden producir resultados erróneos aun terminando normalmente el programa. En estas circunstancias es necesario volver a examinar el código fuente, el algoritmo y, en muchos casos, revisar el análisis y las especificaciones del problema, esto

Page 9: JAVA

se debe a que un análisis incorrecto o un mal diseño de especificaciones pueden producir un mal algoritmo.

Verificación y depuración.La verificación o depuración de un programa es el proceso de su ejecución con una amplia variedad de datos de entrada llamados de test o prueba que determinaran si el programa tiene errores (bugs) o no; verificar supone el empleo de una amplia fama de fatos de prueba, tales como valores normales de entrada, valores extremos de entrada, etcétera, para comprobar los límites y aspectos especiales del programa.

Los errores que se pueden hallar en la verificación son:

1. Errores de compilación. Normalmente son erratas de sintaxis que se producen por el uso incorrecto de las reglas del lenguaje de programación; un error de este tipo impedirá a la computadora comprender la instrucción, tampoco se obtendrá el programa objeto y el compilador imprimirá una lista de todas las equivocaciones encontradas durante la compilación.

2. Errores de ejecución. Estos errores se producen por instrucciones que la computadora puede comprender, pero no ejecutar; por ejemplo: división entre cero y raíces cuadradas e números negativos; estos errores detendrán la ejecución del programa y también se imprimirá un mensaje de error.

3. Errores lógicos. Se producen en la lógica del programa y su fuente suele ser el diseño del algoritmo; estos errores son los más difíciles de detectar porque el programa puede funcionar y no producir errores de compilación ni de ejecución, y sólo pueden advertirse al obtener resultados incorrectos. En este caso se debe volver a la fase de diseño del algoritmo, modificarlo, cambiar el programa fuente, compilar y ejecutar una vez más.

Documentación y mantenimiento.La documentación de un programa consiste en describir los pasos a seguir en el proceso de su resolución; su importancia destaca por su decisiva influencia en el producto final. Aquellos programas pobremente documentados son difíciles de leer, aún más difíciles de depurar y casi imposibles de mantener y modificar.

La documentación de un programa puede ser interna y externa: la primera se encuentra en líneas de comentarios, mientras que la segunda incluye análisis, diagramas de flujo o pseudocódigos y manuales de usuario con instrucciones para ejecutar el programa e interpretar los resultados.

La documentación es vital cuando se desea corregir posibles errores futuros, o bien, cambiar el programa; este último proceso se denomina mantenimiento del programa y con cada cambio, la documentación debe actualizarse para facilitar ajustes posteriores.

Documentación interna.Es la que se incluye dentro del código del programa fuente mediante comentarios que ayudan a la compresión del código; todas las líneas de programas que comienzan con el símbolo “//”, los cuales son cometarios que el programa no necesita y que la computadora ignora; considerando esto, el objetivo del programador debe ser escribir códigos sencillos y limpios. (Joyanes Aguilar & Zahonero Martínez, 2011)

Page 10: JAVA

Manejo básico de error y excepción.Un aspecto esencial de la programación se relaciona con el manejo de posibles errores que puedan surgir durante la ejecución de un programa.

Un aspecto muy importante de la programación se relaciona con el manejo de posibles errores durante la ejecución de un programa. El método main puede recibir argumentos incorrectos. O bien un método que espera un argumento positivo puede recibir un valor negativo. Las operaciones aritméticas pueden producir sobreflujo o subflujo. La E/S a archivos puede tener problemas de permiso de acceso u otras dificultades. Un programa bien escrito debe detectar los errores y tomar las acciones apropiadas.

Despliegue de mensajes de error.Un método main debe verificar primero que sean correctos los argumentos proporcionados en la línea de comandos. Si estos son inaceptables, entonces debe desplegarse un mensaje claro que establezca la naturaleza y la causa del error (si se conoce). Debe utilizarse el objeto System.err para enviar mensajes de error que aparezcan inmediatamente en pantalla, sin pasar por la memoria temporal. Una instrucción condicional como:

If (args.length ¡ =2)

{

System.err.println(Progname + “ : excepcts 2 args but was given “ + args.length);

System.err.println(“Usage” + Progname + “ input-file output-file”);

System.exit(1);

}

Verifica el número de argumentos que se proporcionan en la línea de comandos. Siempre identifique la unidad o subunidad del programa que despliega el mensaje de error. Aquí el nombre es Progname (una cadena) de la clase del método main en cuestión. Cuando es lo apropiad, un nombre de método estrecha aún más la ubicación del error.

Después de desplegar un mensaje de error puede ser ejecutándose un método, devolver un valor determinado no producido normalmente, o elegir que se aborte. La llamada System.exit (estado) termina la ejecución de un programa. Para una terminación normal, el valor de estado deber ser generalmente cero. Para una terminación anormal, como un error, se usa un estado positivo, por lo general 1.

Manejo de excepción simple.En Java los errores no esperados al momento de la ejecución se manejan con el mecanismo de excepción. Un método integrado o definido por el usuario, puede lanzar un objeto de excepción de algún tipo conocido, logrando que el control de regrese al método más próximo en la cadena de llamadas que capturan este tipo de excepción o devuelven todo el control al intérprete de Java.

Por ejemplo, el método System.in.read, como muchos otros relacionados con E/S de Java, detecta un error de E/S y lanza una excepción. Diferentes objetos de excepción se utilizan para representar

Page 11: JAVA

distintos tipos de errores. System.in.read puede lanzar un objeto IOException. Es importante saber cuáles excepciones puede lanzar un método y siempre debe documentarse con claridad.

Cuando escribe un método que contiene una llamada a otro que puede lanzar una excepción, necesita realizar una de las dos acciones siguientes:

1. Capturar la potencial excepción y tratar el error en el método que escribió.2. No capturar la excepción y dejar que pase a un método superior en la cadena de llamadas.

En este caso, necesita indicarlo así agregando una clausula throws al final de su encabezado. También es necesaria una cláusula throws, si su método lanza una excepción por cuenta propia.

Una vez que se captura una excepción, un método puede tratar apropiadamente el error. Por ejemplo, los constructores:

Public FileIntutStream (String filename) throws FleNotFoundException

Public FileOutputStream (String filename) throws IOException

Establecen objetos para E/S a archivos. Cuando usted los llama, necesita capturar las excepciones indicadas.

El bloque de prueba, se utiliza para capturar excepciones. He aquí una forma simple:

prueba { instrucciones

}

Intérprete de Java

ClaseX.main()

Obj1.metodo1()

Objn.metodok()

Llama al método

Lanza excepción

Page 12: JAVA

captura (tipo-e1 e)

{ instrucciones }

captura (tipo-e2 e)

{ instrucciones }

Las cláusulas de captura hacen coincidir secuencialmente las excepciones causadas por cualquier instrucción en la parte prueba con los tipos de la lista. Cada una se encuentra en forma de una definición de método. El objeto de excepción se pasa al parámetro de la primera cláusula de coincidencia y se ejecuta la instrucción.

E/S de texto a un archivo y ejemplo de manejo de error.Mejoremos la clase Lowercase para que maneje E/S estándar y E/S a archivos.

java Lowercase <archivoentrada> archivosalida (redireccionamiento de E/S en UNIX)

java Lowercase archivoentrada archivosalida

También se mejorará el programa para que sea independiente del conjunto de caracteres. El método doio realiza la tarea de convertir caracteres en mayúsculas.

/////// Lowercase.java ///////// Example for text-file I/Oimport java.io.*;

class Lowercase{public static void doio (InputStream i, OutputStream o){

int c;

InputStreamReeader in = new InputStreamReader(i); //(1)

OutputStreamWriter out = new OutputStreamWriter(o); //(2)

Try

{

While ((c = in.read()) >=0 )

{

C = Character.toLowerCase ((char) c);

Out.write (c);

}

Page 13: JAVA

Out.flush (); //produce toda la salida

} catch (IOException e)

{

System.err.println(“doio: I/O Problem”);

System.err.println(e.getMessage ()); //(3)

System.exit(1);

}

}

//el metodo main se muestra despues

}

El doio utiliza los objetos InputStreamReader y OutputStreamWriter, para hacer la E/S de texto independiente del conjunto de caracteres (líneas 1-2). También captura posibles excepciones del tipo IOException causadas por in.read() u out.write(c).

Observe cómo un objeto de excepción contiene un mensaje que puede desplegarse (línea 3).

El método main verifica los argumentos de la línea de comandos, abre los archivos apropiados y llama a doio.

public static void main (String args [])

{

int argn = args.lenght;

if(argn == 0) //utiliza E/S estandar

doio (System.in, System.out);

else if (argn == 2) //utiliza archivos dados

{

Try

{

FileInputStream infile = new FileInputStream(args[0]);

FileOutputStream ofile = new FileOutputStream(args[1]);

doio(infile, ofile);

infile.close(); ofile.close();

} catch (FileNotFoundException e) //(4)

Page 14: JAVA

{

System.err.println(“Can’t opne input file “+ args[0]);

System.err.println(e.getMessage());

System.exit(1);

}

Catch (IOException e) //(5)

{

System.err.println(“Can’t open output file” + args[1]);

System.err.println(e.getMessage());

System.exit(1);

}

}

else //error //(6)

{

System.err.println(“Usage: Lowercase infile outfile”);

System.exit(1);

}

}

También main anticipa errores comunes: fallas al abrir el archivo de entrada (línea 4). Imposibilidad de abrir el de salida (línea 5) y numero incorrecto de argumentos (línea 6). En el último caso, se despliega una breve guía sobre la manera de utilizar el programa.

Consejos sobre programación en Java.He aquí algunos consejos básicos de programación que le facilitarán la escritura de programas en Java:

o Importe java.io.* si utiliza más que la E/S estándar.o Siempre termine una declaración. Una definición de clase no tiene punto y coma de

terminación.o Una instrucción simple debe terminar con un punto y coma; pero no una instrucción

compuesta.o El método main de una clase se declara:

Public static void main(String[] args).

Page 15: JAVA

o Las variables de arreglo y de objeto tienen valores de referencia. Antes de usarlas debe asignar un valor a una variable, sea por inicialización o asignación.

o Los arreglos y los objetos se crean dinámicamente con el operador new, que devuelve una referencia al objeto recién creado.

o En el caso de los arreglos, utilice indización basada en cero. Así, un arreglo de longitud 100 se indiza del 0 al 99. Recuerde que arr.length da la longitud del arreglo arr, mientras que arr.length() devuelve la de la cadena str.

o Utilice System.in, System.out y System.err para E/S estándar.o Los argumentos siempre se pasan como valor en llamadas a métodos.o Los ciclos en Java usan condiciones de continuación. La iteración termina cuando ésta se

vuelve falsa.o Emplee el operador + para unir todo tipo de datos con cadenas.o Aprenda modismos como for(;;) (ciclo infinito, for(int i=0; i<j; i++), while(i-->0), while

( (c==System.in.read()) !=-1). (Wang, 2000)