287 95 578KB
Spanish Pages [191] Year 2007
Diplomado Webmaster Avanzado
ÍNDICE 1 Introducción a Java.............................................................................................................. 5 1.1 ¿Qué es JAVA? ............................................................................................................... 5 1.2 La Simplicidad de Java ................................................................................................... 5 1.3 Java posee bibliotecas de clases estándares .................................................................... 6 1.4 Java es multiplataforma................................................................................................... 6 1.5 El Look-and-Feel............................................................................................................. 7 1.6 C es poco robusto ............................................................................................................ 7 1.7 Java sí es robusto............................................................................................................. 8 1.8 Java es flexible ................................................................................................................ 8 1.9 Java administra automáticamente la memoria ................................................................ 9 1.10 Programación Orientada a Objetos ............................................................................... 10 1.11 Mecanismos básicos de la POO .................................................................................... 11 1.12 Resumen ........................................................................................................................ 12 2 Programando JAVA .......................................................................................................... 14 2.1 El compilador y el intérprete de Java ............................................................................ 14 2.2 Estructura de un programa básico en java..................................................................... 14 2.2.1 Tu Primera Aplicación de Java en Windows ............................................................ 15 2.2.2 Crear tu Primer Applet .............................................................................................. 16 2.3 Variables y Tipos .......................................................................................................... 17 Tipos primitivos ............................................................................................................ 19 2.4 Expresiones y operadores.............................................................................................. 20 Aritmética...................................................................................................................... 20 Operadores unarios sobre expresiones numéricas......................................................... 22 Incremento y decrementos ............................................................................................ 23 Operadores de comparaciones....................................................................................... 23 Operadores entre valores booleanos (operadores lógicos) ............................................ 24 Conversiones: cast......................................................................................................... 25 Precedencia de Operadores ........................................................................................... 26 2.5 Declaración de variables ............................................................................................... 26 2.6 Arreglos, condicionales y ciclos.................................................................................... 28 2.6.1 Arreglos..................................................................................................................... 29 2.6.2 Condicionales ............................................................................................................ 30 2.6.2.1 Condicionales if......................................................................................................... 31 2.6.2.2 Condicionales switch................................................................................................. 32 2.6.3 Ciclos......................................................................................................................... 33 2.6.3.1 Ciclo for..................................................................................................................... 33 2.6.3.2 Ciclo while...do ......................................................................................................... 34 2.6.3.3 Ciclo do...while ......................................................................................................... 35 2.7 Trabajando con objetos ................................................................................................. 36 2.8 El cuerpo de una Clase Java.......................................................................................... 40 2.9 Implementar Métodos Java ........................................................................................... 41 2.10 Control de acceso los componentes de la Clase............................................................ 43 2.11 Applets .......................................................................................................................... 46 2.12 Gráficos ......................................................................................................................... 49
Instituto de Computación Activa de México S.C.
1
Diplomado Webmaster Avanzado 2.13 Componentes básicos de la intercaz de usuario AWT ................................................. 53 2.13.1 Botones...................................................................................................................... 53 2.13.2 Etiquetas .................................................................................................................... 58 2.13.3 Listas ......................................................................................................................... 59 2.13.4 Campo de Texto ........................................................................................................ 61 2.13.5 Áreas de Texto .......................................................................................................... 62 2.13.6 Canvas ....................................................................................................................... 64 2.13.7 Barras de desplazamiento.......................................................................................... 65 2.14 Practicas ........................................................................................................................ 68 3 Servlets .............................................................................................................................. 77 3.1 Introducción a los Servlets ............................................................................................ 77 3.2 ¿Porqué se afirma que los servlets podrán sustituir a los CGI's? .................................. 78 3.3 Ventajas de los Servlets................................................................................................. 79 3.4 Ejemplos de aplicación de los servlets .......................................................................... 80 3.5 Arquitectura del paquete Servlets ................................................................................. 81 3.6 Un Servlet Sencillo........................................................................................................ 83 3.7 Interactuar con los Clientes ........................................................................................... 84 3.8 Peticiones y Respuestas................................................................................................. 85 3.9 Manejo de peticiones GET y POST .............................................................................. 86 3.10 Inicializar un Servlet ..................................................................................................... 88 3.11 Destruir un Servlet ........................................................................................................ 90 3.12 Acceso a bases de datos mediante servlets y jdbc......................................................... 91 3.13 Ejemplo 1: Acceso a una base de datos Microsoft........................................................ 92 3.13.1 Ejecución de la aplicación......................................................................................... 93 3.13.2 Código del Servlet ServletOpinion2. java................................................................. 94 3.13.3 Pagina Web ............................................................................................................... 98 3.14 Practicas ........................................................................................................................ 98 4 Programando VBScript ................................................................................................... 100 4.1 Introducción a VBScript.............................................................................................. 100 4.2 Variables y Tipo de variables...................................................................................... 100 4.3 Entrada y Salida de datos ............................................................................................ 106 4.4 Condicionales .............................................................................................................. 109 4.4.1 Sentencias IF... THEN... ELSE ............................................................................... 110 4.4.2 Condicionales Múltiples SELECT CASE............................................................... 114 4.5 Ciclos........................................................................................................................... 115 4.5.1 FOR.... NEXT ......................................................................................................... 115 4.5.2 DO WHILE... LOOP............................................................................................... 117 4.5.3 DO UNTIL... LOOP................................................................................................ 118 4.5.4 Rompiendo Bucles .................................................................................................. 119 4.6 Procedimientos yFunciones......................................................................................... 120 4.6.1 Funciones ................................................................................................................ 121 4.6.2 Procedimientos ........................................................................................................ 124 4.7 Funciones del Lenguaje............................................................................................... 126 4.7.1 Ejemplos.................................................................................................................. 134 4.8 Jerarquía de Objetos en POO ...................................................................................... 138 4.8.1 Propiedades y métodos de los objeto ...................................................................... 142 4.8.2 Practicas .................................................................................................................. 147 Instituto de Computación Activa de México S.C.
2
Diplomado Webmaster Avanzado 5 ASP (Active Server Page) ............................................................................................... 153 5.1 Introducción a ASP ..................................................................................................... 153 5.2 Iniciando la programación de ASP.............................................................................. 153 5.3 Condicionales IF ......................................................................................................... 155 5.4 Ciclo FOR ................................................................................................................... 157 5.5 DO WHILE/LOOP...................................................................................................... 159 5.6 Objeto Request ............................................................................................................ 159 5.6.1 Transferir variables por URL .................................................................................. 160 5.6.2 Transferir variables por formulario ......................................................................... 161 5.7 Objeto Response.......................................................................................................... 162 5.8 Base de Datos con ASP............................................................................................... 164 5.8.1 Creación de un Driver para la BD........................................................................... 165 5.8.2 Consultas ................................................................................................................. 165 5.8.3 Altas ........................................................................................................................ 168 5.8.4 Modificaciones ........................................................................................................ 170 5.8.5 Bajas ........................................................................................................................ 172 5.9 Practica ........................................................................................................................ 174
Instituto de Computación Activa de México S.C.
3
Diplomado Webmaster Avanzado
www.icam.com.mx
Diplomado Webmaster Avanzado 1. Introducción a Java Al final del capitulo el alumno será capaz de... Comprender con exactitud que es Java Ventajas ante otros lenguajes de programación Sus características de Java Manejo de los conceptos de la Programación Orientada a Objetos (POO) Familiarizarse con la filosofía de POO.
Comprueba tu avance y marca con una √ los objetivos alcanzados.
Instituto de Computación Activa de México S.C.
4
Diplomado Webmaster Avanzado 1
Introducción a Java 1.1 ¿Qué es JAVA? Java es solo es otro lenguaje de programación con el que se pueden escribir programas que corran en Internet. Java es más parecido a lenguajes de programación como C, C++, Visual Basic o Pascal que a lenguajes de descripción como HTML o lenguajes para escribir guiones como JavaScript. Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems. Fundamentado en C++, el lenguaje Java se diseño para ser pequeño, sencillo y portátil a través de las plataformas y sistemas operativos. Java se menciona frecuentemente en el contexto del WWW, donde los Navegadores, reclaman ser “autorizados por Java” esto significa que el navegador puede en cuestión bajar y ejecutar programas en Java. Java se escribió como un lenguaje de programación de propósito general con el que se pueden abordar los mismos tipos de tarea o resolver el mismo tipo de problemas que con otros lenguajes de programación como C o C++.
1.2 La Simplicidad de Java Java ha sido diseñado de modo de eliminar las complejidades de otros lenguajes como C y C++. Si bien Java posee una sintaxis similar a C, con el objeto de facilitar la migración de C hacia a Java, Java es semánticamente muy distinto a C: • Java no posee aritmética de punteros: La aritmética de punteros es el origen de muchos errores de programación que no se manifiestan durante la depuración y que una vez que el usuario los detecta son difíciles de resolver. • No se necesita hacer delete: Determinar el momento en que se debe liberar el espacio ocupado por un objeto es un problema difícil de resolver correctamente. Esto también es el origen a errores difíciles de detectar y solucionar. • No hay herencia múltiple: En C++ esta característica da origen a muchas situaciones de borde en donde es difícil predecir cuál será el resultado. Por esta razón en Java se opta por herencia simple que es mucho más simple de aprender y dominar.
Instituto de Computación Activa de México S.C.
5
Diplomado Webmaster Avanzado
1.3 Java posee bibliotecas de clases estándares Toda implementación de Java debe tener las siguientes bibliotecas de clases: • Manejo de archivos • Comunicación de datos • Acceso a la red Internet • Acceso a bases de datos • Interfaces gráficas La interfaz de programación de estas clases es estándar, es decir en todas ellas las operaciones se invocan con el mismo nombre y los mismos argumentos.
1.4 Java es multiplataforma La independencia de plataforma es una de las ventas significativas que tiene Java sobre otros lenguajes de programación. Esto significa que un programa puede ejecutarse en cualquier sistema operativo. Los programas pueden ejecutarse en cualquier sistema que tenga instalado una maquina virtual. Si esta escribiendo software para el WWW, la posibilidad de correr el mismo programa en sistemas diferentes es crucial para el éxito del programa. Los programas en Java pueden ejecutarse en cualquiera de las siguientes plataformas, sin necesidad de hacer cambios: • Windows/95 y /NT • Power/Mac • Unix (Solaris, Silicon Graphics, ...) La compatibilidad es total: A nivel de fuentes: El lenguaje es exactamente el mismo en todas las plataformas. A nivel de bibliotecas: En todas las plataformas están presentes las mismas bibliotecas estándares. A nivel del código compilado: el código intermedio que genera el compilador es el mismo para todas las plataformas. Lo que cambia es el intérprete del código intermedio.
Instituto de Computación Activa de México S.C.
6
Diplomado Webmaster Avanzado
1.5 El Look-and-Feel Lo único que varia de acuerdo a la plataforma es el look-and-feel. Un programa en Windows/95 tendrá el aspecto característico de esta plataforma (en cuanto a la forma de los botones, barras de deslizamiento, menús, etc.). El mismo programa en Unix tendrá el aspecto característico de Motif. Y en Power/Mac se verá como un programa para Macintosh. Sin embargo el código que escriben los programadores no tiene que tener presente las características de ninguna de estas plataformas. Es la implementación de la interfaz gráfica estándar de Java la que se encarga de desplegar las ventanas con el look-and-feel de la plataforma local.
1.6 C es poco robusto
• •
•
•
Se dice que el lenguaje C es un lenguaje poco robusto porque a menudo un error de programación se traduce en un mensaje críptico del estilo segmentation fault. Este tipo de mensajes se origina en 4 errores clásicos: Se accesa un elemento de un arreglo con un índice fuera de rango. Ejemplo: a[-3]=5; Se usa un puntero como si referenciara a una estructura de tipo A, cuando en realidad en esa área de memoria hay una estructura de tipo B, incompatible con A. En C esto ocurre debido al uso de casts. Ejemplo: *(int*)pdistance Se usa un puntero a una estructura cuyo espacio ya se liberó. Luego volveremos a hablar de este punto. Ejemplo: free(p); *p= 1; Al usar aritmética de punteros se comete un error. Ejemplo: *(p+i*sizeof(*p)) Todos estos errores conducen a que tarde o temprano se use un puntero que direcciona un área de memoria no asignada por el sistema operativo. Esto es lo que detiene la ejecución con el mensaje segmentation fault. Lo más desagradable de este tipo de errores es que es muy difícil determinar en qué línea del código está la verdadera fuente del error. Podría ser en cualquier parte del programa. Encontrar la línea puede llevar varios días y hasta semanas, incluso en el caso de programadores expertos.
Instituto de Computación Activa de México S.C.
7
Diplomado Webmaster Avanzado
1.7 Java sí es robusto • •
•
•
En Java no se pueden cometer los 4 errores mencionados: Java siempre chequea los índices al accesar un arreglo. Java realiza chequeo de tipos durante la compilación (al igual que C). En una asignación entre punteros el compilador verifica que los tipos sean compatibles. Además, Java realiza chequeo de tipos durante la ejecución (cosa que C y C++ no hacen). Cuando un programa usa un cast para accesar un objeto como si fuese de un tipo específico, se verifica durante la ejecución que el objeto en cuestión sea compatible con el cast que se le aplica. Si el objeto no es compatible, entonces se levanta una excepción que informa al programador la línea exacta en donde está la fuente del error. Java posee un recolector de basuras que administra automáticamente la memoria. Es el recolector el que determina cuando se puede liberar el espacio ocupado por un objeto. El programador no puede liberar explícitamente el espacio ocupado por un objeto. Java no posee aritmética de punteros, porque es una propiedad que no se necesita para programar aplicaciones. En C sólo se necesita la aritmética de punteros para programa malloc/free o para programar el núcleo del sistema operativo.
Por lo tanto Java no es un lenguaje para hacer sistemas operativos o administradores de memoria, pero sí es un excelente lenguaje para programar aplicaciones.
1.8 Java es flexible Pascal también es un lenguaje robusto, pero logra su robustez prohibiendo tener punteros a objetos de tipo desconocido. Lamentablemente esta prohibición es demasiado rígida. Aunque son pocos los casos en que se necesita tener punteros a objetos de tipo desconocido, las contorsiones que están obligados a realizar los programadores cuando necesitan estos punteros dan origen a programas ilegibles. Lisp por su parte es un lenguaje flexible y robusto. Todas las variables son punteros a objetos de cualquier tipo (un arreglo, un elemento de lista, etc.). El tipo del objeto se encuentra almacenado en el mismo objeto. Durante la ejecución, en cada operación se chequea que el tipo del objeto manipulado sea del tipo apropiado. Esto da flexibilidad a los programadores sin sacrificar la robustez. Lamentablemente, esto hace que los programas en Lisp sean poco legibles debido a que al estudiar su código es difícil determinar cuál es el tipo del objeto que referencia una variable.
Instituto de Computación Activa de México S.C.
8
Diplomado Webmaster Avanzado Java combina flexibilidad, robustez y legibilidad gracias a una mezcla de chequeo de tipos durante la compilación y durante la ejecución. En Java se pueden tener punteros a objetos de un tipo específico y también se pueden tener punteros a objetos de cualquier tipo. Estos punteros se pueden convertir a punteros de un tipo específico aplicando un cast, en cuyo caso se chequea en tiempo de ejecución de que el objeto sea de un tipo compatible. El programador usa entonces punteros de tipo específico en la mayoría de los casos con el fin de ganar legibilidad y en unos pocos casos usa punteros a tipos desconocidos cuando necesita tener flexibilidad. Por lo tanto Java combina la robustez de Pascal con la flexibilidad de Lisp, sin que lo programas pierdan legibilidad en ningún caso.
1.9 Java administra automáticamente la memoria En Java los programadores no necesitan preocuparse de liberar un trozo de memoria cuando ya no lo necesitan. Es el recolector de basuras el que determina cuando se puede liberar la memoria ocupada por un objeto. Un recolector de basuras es un gran aporte a la productividad. Se ha estudiado en casos concretos que los programadores han dedicado un 40% del tiempo de desarrollo a determinar en qué momento se puede liberar un trozo de memoria. Además este porcentaje de tiempo aumenta a medida que aumenta la complejidad del software en desarrollo. Es relativamente sencillo liberar correctamente la memoria en un programa de 1000 líneas. Sin embargo, es difícil hacerlo en un programa de 10000 líneas. Y se puede postular que es imposible liberar correctamente la memoria en un programa de 100000 líneas. Para entender mejor esta afirmación, supongamos que hicimos un programa de 1000 líneas hace un par de meses y ahora necesitamos hacer algunas modificaciones. Ahora hemos olvidado gran parte de los detalles de la lógica de este programa y ya no es sencillo determinar si un puntero referencia un objeto que todavía existe, o si ya fue liberado. Peor aún, suponga que el programa fue hecho por otra persona y evalúe cuan probable es cometer errores de memoria al tratar de modificar ese programa. Ahora volvamos al caso de un programa de 100000 líneas. Este tipo de programas los desarrolla un grupo de programadores que pueden tomar años en terminarlo. Cada programador desarrolla un módulo que eventualmente utiliza objetos de otros módulos desarrollados por otros programadores. ¿Quién libera la memoria de estos objetos? ¿Cómo se
Instituto de Computación Activa de México S.C.
9
Diplomado Webmaster Avanzado ponen de acuerdo los programadores sobre cuándo y quién libera un objeto compartido? ¿Como probar el programa completo ante las infinitas condiciones de borde que pueden existir en un programa de 100000 líneas? Es inevitable que la fase de prueba dejará pasar errores en el manejo de memoria que sólo serán detectados más tarde por el usuario final. Probablemente se incorporan otros errores en la fase de mantención. Se puede concluir: • Todo programa de 100000 líneas que libera explícitamente la memoria tiene errores latentes. • Sin un recolector de basuras no hay verdadera modularidad. • Un recolector de basuras resuelve todos los problemas de manejo de memoria en forma trivial. La pregunta es: ¿Cuál es el impacto de un recolector de basura en el desempeño de un programa? El sobrecosto de la recolección de basuras no es superior al 100%. Es decir si se tiene un programa que libera explícitamente la memoria y que toma tiempo X, el mismo programa modificado de modo que utilice un recolector de basuras para liberar la memoria tomará un tiempo no superior a 2X. Este sobrecosto no es importante si se considera el periódico incremento en la velocidad de los procesadores. El impacto que un recolector de basura en el tiempo de desarrollo y en la confiabilidad del software resultante es muchos más importante que la pérdida en eficiencia.
1.10
Programación Orientada a Objetos La programación orientada a objetos (POO) se distingue por pensar en los problemas y sus soluciones a través de la implementación de objetos y sus comportamientos. Las características fundamentales de la Programación Orientada a objetos son: abstracción, encapsulamiento, herencia y polimorfismo. Abstracción. Por medio de la abstracción se consigue no detenerse en los detalles concretos de implementación en cada momento, sino generalizar y centrarse en los aspectos que permiten tener una visión del problema. Encapsulamiento. Permite ver un objeto como una caja negra en la que se ha introducido de alguna manera tosa la información relacionada con dicho objeto.
Instituto de Computación Activa de México S.C.
10
Diplomado Webmaster Avanzado Esto permite manipular los objetos como permaneciendo ocultar su estructura interna.
unidades
básicas,
Herencia. Permite el acceso automático a la información contenida en otras clases. De esta forma, la reutilización de código está garantizada. Con la herencia todas las clases están clasificadas en una jerarquía estricta. Polimorfismo. Esta característica permite implementar a una variedad de métodos (todos con el mismo nombre), utilizando el mismo medio de acceso. Constructores y destructores. Un constructor es un procedimiento especial de una clase que es llamada automáticamente siempre que crea un objeto de esa clase. Su función es iniciar esa clase. Un destructor es un procedimiento especial de una clase que es llamado automáticamente siempre que se destruye una de esta clase. Su función es realizar cualquier tarea final en el momento de destruir cualquier objeto.
1.11
Mecanismos básicos de la POO Los mecanismos (términos) )básicos son: objetos, mensajes, métodos y clases. Objetos Un programa orientado a objetos se compone únicamente de objetos, es decir, un objeto es una entidad que tiene atributos particulares (propiedades), y una forma de operar sobre de ellos es como los métodos (el comportamiento). Por ejemplo. Una ventana de Windows es un objeto. El color de fondo, la anchura, la altura, etc. son propiedades. Las rutinas que permiten maximizar, minimizar, etc. son los métodos. Métodos Un método se implementa en una clase de objetos y determina como tiene que actuar el objeto cuando recibe el mensaje vinculado con ese método. La estructura mas interna del objeto se oculta a los usuarios que lo vayan a utilizar, manteniendo como única conexión con el exterior, los mensajes.
Instituto de Computación Activa de México S.C.
11
Diplomado Webmaster Avanzado Clase Una clase es una platilla genérica para un conjunto de objetos con características similares.
1.12
Resumen Java es un lenguaje que ha sido diseñado para producir software: • • • • •
Confiable: Minimiza los errores que se escapan a la fase de prueba. Multiplataforma: Los mismos binarios funcionan correctamente en Windows/95 y /NT, Unix/Motif y Power/Mac. Seguro: Applets recuperados por medio de la red no pueden causar daño a los usuarios. Orientado a objetos: Beneficioso tanto para el proveedor de bibliotecas de clases como para el programador de aplicaciones. Robusto: Los errores se detectan en el momento de producirse, lo que facilita la depuración.
Instituto de Computación Activa de México S.C.
12
Diplomado Webmaster Avanzado
www.icam.com.mx
Diplomado Webmaster Avanzado 2. Programando Java Al final del capitulo el alumno será capaz de... Crear aplicaciones y Applets en Java, compilación y ejecución. Comprender y utilizar los fundamentos de Java: variables y tipo de datos, expresiones y operadores. Construcción y manejo de clases, objetos y métodos Utilizar las estructuras: arreglos, condicionales y ciclos. Crear Applets y entender los principios de su funcionamiento. Utilizar las primitivas de gráficos de Java y uso de imágenes Uso de los componentes de la interfaz de Usuario.
Comprueba tu avance y marca con una √ los objetivos alcanzados.
Instituto de Computación Activa de México S.C.
13
Diplomado Webmaster Avanzado
2 Programando JAVA 2.1 El compilador y el intérprete de Java El ambiente de desarrollo tiene dos partes: Un compilador y un intérprete. El compilador Java toma el programa fuente y, en vez de generar código de maquina para archivos fuentes, genera un código de bytes. Los códigos de bytes son instrucciones muy similares al código de maquina solo que no son específicos para un procesador en particular. Se corre un programa llamado interprete de código de bytes tomando el archivo en formato de código de bytes y lo ejecuta.. A este interprete se le conoce como maquina virtual de Java o interprete de tiempo de ejecución Java.
Código de bytes de Java (Independencia de plataforma)
Código Java
Interprete de Java (Pentium)
Interprete de Java (Power PC) Compilador Java Interprete de Java (Unix)
Compilación de programa JAVA
2.2 Estructura de un programa básico en java Al desarrollar una aplicación en java la sintaxis básica es: import ; puclic class [throws ] { public static void main(String arg[]) [throws ] {
} }
Instituto de Computación Activa de México S.C.
14
Diplomado Webmaster Avanzado 2.2.1
Tu Primera Aplicación de Java en Windows Tu primer programa, HolaMundo, simplemente mostrará el saludo "Hello world!". Para crear este programa, deberás. Para escribir tu primer programa, necesitarás. 1. El ambiente de desarrollo estándar de la Plataforma Java 2. 2. Un Editor de texto. En este ejemplo, usaremos el Bloc de notas. Crear un fichero fuente Java. Un fichero fuente contiene texto, escrito en el lenguaje de programación Java, que tu y otros programadores pueden entender. Se puede usar cualquier editor de texto para crear y editar ficheros fuente. Guarde el archivo HolaMundo.java en la carpeta donde esta instalado JDK dentro del directorio BIN (Ejemplo: c:\jdk1.2.2\bin). /* Programa: Mensaje de Hola Mundo. Profesor: Lic. Fernando Román Vega. */ class HolaMundo { public static void main (String args[]) { System.out.println("Hello Mundo!"); } } NOTA: Al momento de asignar nombre al archivo se debe seguir una regla muy importante: La línea en el código es el nombre de nuestra clase “class HolaMundo { “ por lo tanto el archivo se nombrara HolaMundo.java
Compilar el fichero fuente en un fichero de bytecodes. El compilador de Java, javac, toma nuestro fichero fuente y lo traduce en instrucciones que la Máquina Virtual Java (Java VM) puede entender. El compilar pone estas instrucciones en un fichero de bytecodes. Desde la línea de comando del MS-DOS realice lo que se muestra en la siguiente ventana. Microsoft Windows 2000 [Versión 5.00.2195] (C) Copyright 1985-1999 Microsoft Corp. C:\>cd jdk1.2.2 C:\jdk1.2.2>cd bin C:\jdk1.2.2\bin>javac HolaMundo.java Con ello se genera un archivo HolaMundo.class cuando al compilar no se genera algún error.
Instituto de Computación Activa de México S.C.
15
Diplomado Webmaster Avanzado Ejecutar le programa contenido en el fichero de bytecodes. La máquina virtual Java está implementada por un intérprete Java, java. Este intérprete toma nuestro fichero de bytecodes y lleva a cabo las instrucciones traduciéndolas a instrucciones que nuestro ordenador pude entender. C:\jdk1.2.2\bin>java HolaMundo Hello Mundo! C:\jdk1.2.2\bin>
2.2.2
Crear tu Primer Applet Ahora crearás un applet Java, llamado HelloWorld, que también muestra el salido "Hello world!". Sin embargo, al contrario que HolaMundo, el applet se ejecuta sobre un navegador compatible con Java, como HotJava, Netscape Navigator, o Microsoft Internet Explorer. Para crear este applet, debes realizar los mismos pasos básicos que antes: crear un archivo fuente Java; compilarlo y ejecutar el programa. Crear un Archivo Fuente Java. 1. Abrir NotePad y teclea el siguiente código en un nuevo documento. Graba este código como HelloWorld.java. /* Programa Esta clase es una implementación de un applet que simplemente despliega el mensaje Hola mundo. Profesor: Fernando Román Vega */ import java.applet.*; import java.awt.*; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } }
Instituto de Computación Activa de México S.C.
16
Diplomado Webmaster Avanzado 2. También necesitas un Archivo HTML que acompañe a al applet. Teclea el siguiente código en nuevo documento del NotePad. Graba este código como holamundo.html.
mostrar applet hola mundo
Este es mi primer applet.
3. Compilar el Código Fuente. En el prompt de MS-DOS: javac HelloWorld.java El compilador debería generar el fichero de bytecodes Java, HelloWorld.class. 4. Ejecutar el Programa. Abrir el archivo holamundo.html Aunque puedes ver tu applet usando un navegado, podrías encontrar más sencillo probarlos usando la aplicación appletviewer que viene con la plataforma Java . Para ver el applet HelloWorld usando el appletviewer, teclea esto en la línea de comandos. Appletviewer holamundo.html
2.3 Variables y Tipos Una variable en Java es un identificador que representa una palabra de memoria que contiene información. El tipo de información almacenado en una variable sólo puede ser del tipo con que se declaró esa variable. Una variable se declara usando la misma sintaxis de C. Por ejemplo la siguiente tabla indica una declaración, el nombre de la variable introducida y el tipo de información que almacena la variable: Declaración
identificador tipo
Instituto de Computación Activa de México S.C.
17
Diplomado Webmaster Avanzado int i; String s; int a[ ]; int[ ] b;
i s a b
Entero referencia a string referencia a arreglo de enteros referencia a arreglo de enteros
public static void main()String arg[]) { ... int M edad; String titulo; Boolean EsMayor; ... } Se puede encadenar varios de nombres de variables, que sean del mismo tipo, en una sola línea: int x,y,z; String nombre, apellido; Los nombres de las variables pueden comenzar por una letra un guión bajo o un signo de pesos ($) y después del primer carácter puede llevar cualquier letra, numero o símbolo
Java posee dos grandes categorías de tipos para las variables: Tipos Primitivos int, short, byte, long char, boolean float, double
referencias a Objetos Strings Arreglos otros objetos
Las variables de tipos primitivos almacenan directamente un valor que siempre pertenece al rango de ese tipo. Por ejemplo una variable int almacena un valor entero como 1, 2, 0, -1, etc. Esto significa que al asignar una variable entera a otra variable entera, se copia el valor de la primera en el espacio que ocupa la segunda variable. Las variables de tipo referencia a objetos en cambio almacenan direcciones y no valores directamente. Una referencia a un objeto es la dirección de un área en memoria destinada a representar ese objeto. El área de memoria se solicita con el operador new.
Instituto de Computación Activa de México S.C.
18
Diplomado Webmaster Avanzado Al asignar una variable de tipo referencia a objeto a otra variable se asigna la dirección y no el objeto referenciado por esa dirección. Esto significa que ambas variables quedan refenciando el mismo objeto. La diferencia entre ambas asignaciones se observa en la siguiente figura:
Esto tiene implicancias mayores ya que si se modifica el objeto referenciado por r, entonces también se modifica el objeto referenciado por s, puesto que son el mismo objeto. En Java una variable no puede almacenar directamente un objeto, como ocurre en C y C++. Por lo tanto cuando se dice en Java que una variable es un string, lo que se quiere decir en realidad es que la variable es una referencia a un string.
Tipos primitivos En la siguiente tabla se indica para cada tipo primitivo el número de bits que se emplea en su representación y el rango de valores que se puede almacenar en las variables de estos tipos. Tipo int short byte long boolean char float double
Bits 32 16 8 64 1 16 32 64
Rango -2**31 .. 2**31-1 -2**15 .. 2**15-1 -2**7 .. 2**7-1 -2**63 .. 2**63-1 n/a n/a IEEE IEEE
Instituto de Computación Activa de México S.C.
Ejemplos 0, 1, 5, -120, ... 0, 1, 5, -120, ... 0, 1, 5, -120, ... 0, 1, 5, -120, ... false, true 'a', 'A', '0', '*', ... 1.2 1.2
19
Diplomado Webmaster Avanzado Se dice que un tipo A es de mayor rango que un tipo B si A es un superconjunto de B. Esto quiere decir que las variables de tipo B siempre se pueden asignar a variables de tipo A (eventualmente con pérdida de significancia). Por ejemplo int es de mayor rango que short, que a su vez es de mayor rango que byte. Float y double son de mayor rango que int. Double es de mayor rango que float. Esto se puede resumir en: double > float > long > int > short > byte
2.4 Expresiones y operadores En Java cada expresión tiene un tipo que se determina durante la compilación, es decir es independiente del valor durante la ejecución. Una expresión puede ser: • Una constante: 1, 1.0, true, etc. El tipo de esta expresión es el tipo de la constante. En el ejemplo los tipos son int, double y boolean respectivamente. • Una variable: i, s, a El tipo de esta expresión es el tipo con que se declaró aquella variable. En el ejemplo los tipos son entero, referencia a string y referencia a arreglo. •
El resultado de una operación: i+1, a[1], etc.
El tipo se determina en función de los tipos de las expresiones que se indican como argumentos de la operación. Java tiene prácticamente los mismos operadores de C y C++. Cada operador acepta una, dos o tres expresiones de diversos tipos. A veces un operador no está definido para argumentos de ciertos tipos. Por ejemplo la resta entre strings no esta definida. Pero la suma de strings esta definida como la concatenación. A continuación veremos los operadores más frecuentes en Java. El operador es un símbolo especial que por lo común se utiliza con expresiones. Aritmética Java tiene 5 operadores para la aritmética básica como se muestra en la tabla siguiente.
Símbolo Instituto de Computación Activa de México S.C.
Operación
Ejemplo 20
Diplomado Webmaster Avanzado
+ * / %
Suma Resta Multiplicación División Resto
3+4 5–7 5*5 14 / 7 20 % 7
Ejemplo : El siguiente código realiza operaciones aritméticas. class Aritmetica { public static void main (String args[]) { short x = 6; int y = 4; float a = 12.5f; float b = 7f; System.out.println("x es " + x + ", y es " + y); System.out.println("x + y = " + (x + y)); System.out.println("x - y = " + (x - y)); System.out.println("x / y = " + (x / y)); System.out.println("x % y = " + (x % y)); System.out.println("a es " + a + ", b es " + b); System.out.println("a / b = " + (a / b)); } }
Operadores de asignación Puedes utilizar el operador de asignación =, para asignar un valor a otro. Además del operador de asignación básico, Java proporciona varios operadores de asignación que permiten realizar operaciones aritméticas, lógicas o de bits y una operación de asignación al mismo tiempo. Específicamente, supón que quieres añadir un número a una variable y asignar el resultado dentro de la misma variable, como esto: i = i + 2; Puedes ordenar esta sentencia utilizando el operador +=. i += 2; Las dos líneas de código anteriores son equivalentes. Esta tabla lista los operadores de asignación y sus equivalentes. Operador += -=
Uso op1 += op2 op1 -= op2
Instituto de Computación Activa de México S.C.
Equivale a op1 = op1 + op2 op1 = op1 - op2 21
Diplomado Webmaster Avanzado *= /= %= &= |= ^= = >>>=
op1 *= op2 op1 = op1 * op2 op1 /= op2 op1 = op1 / op2 op1 %= op2 op1 = op1 % op2 op1 &= op2 op1 = op1 & op2 op1 |= op2 op1 = op1 | op2 op1 ^= op2 op1 = op1 ^ op2 op1 op2 op1 >>>= op1 = op1 >>> op2 op2
Los operandos y el resultado de estos operadores pueden ser: Dominio int*int long*long float*float double*double • •
Rango int long float double
Al operar con byte y short, estos se convierten implícitamente a int. Cuando los tipos de los operandos no coinciden, el operando de menor rango se convierte implícitamente al tipo de mayor rango. El resultado de la operación es del tipo de mayor rango.
Ejemplos: int a=1, b=2; int c= a + b; short s= 1; int d= s + c; // s se convierte a int float f= 1.0 + a; // a se convierte a float
Operadores unarios sobre expresiones numéricas Símbolo Operación Argumento + exp nada int | long | float | double - exp cambio de signo int | long | float | double
Instituto de Computación Activa de México S.C.
22
Diplomado Webmaster Avanzado
El resultado de estas operaciones es siempre del mismo tipo del operando. Si el operando es byte o short entonces se convierte a int, se realiza la operación y el resultado es un int.
Incremento y decrementos Los operadore ++ y – se utilizan para aumentar o disminuir el valor de una variable. Por ejemplo el valor de var++ incrementa en 1, var— decrementa el valor de var en 1 (A diferencia de C y C++, java permite que var sea de punto flotante) Símbolo ++ var -- var var ++ var --
Operación preincremento predecremento postincremento postdecremento
Argumento int | short | byte | long int | short | byte | long int | short | byte | long int | short | byte | long
El resultado de estas operaciones es siempre del mismo tipo del operando. Ejemplos: int a=1, b=2; int c= +a; int d= -(c+1); b= a++; // b= 1, a=2 a= --b; // a=b= 0 (a+1)++; // error a+1 no es una variable float f= a; f++; // error f no es entero
Operadores de comparaciones Java tiene varias expresiones para evaluar la igualdad y la magnitud. Todas estas expresiones devuelven un valor booleano (true o false). Símbolo > < >=