jueves, 18 de noviembre de 2010

*Lenguaje Java

Materia: Lenguajes de Programación - PUNTOS EXTRA
Hora: Jueves v1

Hola a todos, en esta entrada les hablaré un poco acerca del Lenguaje Java.

El lenguaje Java fue desarrollado por Sun Microsystems en los años 90, toma mucha sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores como la manipulación directa de punteros o memoria.

- El lenguaje Java se creó con 5 objetivos principales:

1.Debería usar la metodología de la programación orientada a objetos.



2.Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.


3.Debería incluir por defecto soporte para trabajo en red.


4.Debería diseñarse para ejecutar código en sistemas remotos de forma segura.


5.Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.


La sintaxis de Java se deriva gran parte de C++, sólo que Java combina la sintaxis para programación genérica, estructurada y orientada a objetos. Ejemplo del programa "Hola Mundo" en Java:
 
// Hola.java

public class Hola {
          public static void main(String[] args) {
                    System.out.println("Hola, mundo!");
        }
}

La explicación de este ejemplo es la siguiente:

- Todo en Java está dentro de una clase, incluyendo programas autónomos. El código fuente se guarda en archivos con el mismo nombre que la clase que contienen y con extensión “.java”. Una clase (class) declarada pública (public) debe seguir este convenio. En el ejemplo anterior, la clase es Hola, por lo que el código fuente debe guardarse en el fichero “Hola.java”


- El compilador genera un archivo de clase (con extensión “.class”) por cada una de las clases definidas en el archivo fuente. Una clase anónima se trata como si su nombre fuera la concatenación del nombre de la clase que la encierra, el símbolo “$”, y un número entero.


- Los programas que se ejecutan de forma independiente y autónoma, deben contener el método ”main()”. La palabra reservada ”void” indica que el método main no devuelve nada. El método main debe aceptar un array de objetos tipo String. Por acuerdo se referencia como ”args”, aunque puede emplearse cualquier otro identificador.


- La palabra reservada ”static” indica que el método es un método de clase, asociado a la clase en vez de una instancias de la misma. El método main debe ser estático o ’’de clase’’.


- La palabra reservada public significa que un método puede ser llamado desde otras clases, o que la clase puede ser usada por clases fuera de la jerarquía de la propia clase. Otros tipos de acceso son ”private” o ”protected”.


- Las aplicaciones autónomas se ejecutan dando al entorno de ejecución de Java el nombre de la clase cuyo método main debe invocarse. 


* Applets

Los applet Java son programas incrustados en otras aplicaciones, normalmente una página Web que se muestra en un navegador.

gc.drawString("Hola, mundo!", 65, 95);





La sentencia import indica al compilador de Java que incluya las clases java.applet. Applet y java.awt. Graphics, para poder referenciarlas por sus nombres.

La clase Hola extiende (extends) a la clase Applet, es decir, es una subclase de ésta. La clase Applet permite a la aplicación mostrar y controlar el estado del applet. La clase Applet es un componente del AWT (Abstract Window Toolkit), que permite al applet mostrar una interfaz gráfica de usuario o GUI (Graphical User Interface), y responder a eventos generados por el usuario.


La clase Hola sobrecarga el método paint (Graphics) heredado de la superclase contenedora (Applet), para acceder al código encargado de dibujar. El método paint( ) recibe un objeto Graphics que contiene el contexto gráfico para dibujar el applet. El método paint( ) llama al método drawString (String, int, int) del objeto.



* Servlets

Los servlets son componentes de la parte del servidor de Java, y son los encargados de generar respuestas a las peticiones recibidas por los clientes.
// Hola.java

import java.io.IOException;
import javax.servlet.*;
public class Hola extends GenericServlet
{
           public void service(ServletRequest request, ServletResponse response)
                   throws ServletException, IOException
           {
                     response.setContentType("text/html");
                     PrintWriter pw = response.getWriter();
                     pw.println("Hola, mundo!");
                     pw.close();
            }
}


Las sentencias import indican al compilador de Java la inclusión de todas las clases públicas e interfaces de los paquetes java.io y javax.servlet en la compilación.
 
La clase Hola extiende (extends), es heredera de la clase GenericServlet. Esta clase proporciona la interfaz para que el servidor le pase las peticiones al servlet y el mecanismo para controlar el ciclo de vida del servlet.


El método service() recibe un objeto de tipo ServletRequest que contiene la petición del cliente y un objeto de tipo ServletResponse, usado para generar la respuesta que se devuelve al cliente. El método service() puede lanzar (throws) excepciones de tipo ServletException e IOException si ocurre algún tipo de error.

El método getWriter() del objeto respuesta devuelve un objeto de tipo PrintWriter, usado como una tubería por la que viajarán los datos al cliente. El método println (String) escribe la cadena "Hola, mundo!" en la respuesta y finalmente se llama al método close() para cerrar la conexión, que hace que los datos escritos en la tubería o stream sean devueltos al cliente.

* Swing es la biblioteca para la interfaz gráfica de usuario avanzada de la plataforma Java SE. Y un ejemplo en donde quedaría implementada es el siguiente:
// Hola.java

import javax.swing.*;

public class Hola extends JFrame {
           Hola() {
                  setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
                  add(new JLabel("Hola, mundo!"));
                  pack();
}

public static void main(String[] args) {
           new Hola().setVisible(true);
           }
}








Bueno esto es todo sobre mi entrada del Lenguaje Java, espero les sea útil.

Saludos :)

1 comentario: