lunes, 21 de noviembre de 2011

CLASES DE JAVA



PRODUCTOS DE TECNOLOGÍA JAVA



Existe una línea de productos de tecnología Java que abarca desde Kits de desarrollo de programas en Java hasta entorno de pruebas para dispositivos de consumo (teléfonos móviles).

Tipos:
  • Plataforma Java, Standard Edition (Java SE):Permite desarrollar applets y aplicaciones que se ejecutan en navegadores web y equipos de sobremesa. Podemos decir que es una plataforma monousuario y máquina local.
  • Plataforma Java, Enterprise Edition (Java EE): permite crear grandes aplicaciones empresariales distribuidas para los datos cliente y servidor. Por ejemplo, podemos utilizar el SDK de Java EE para crear una aplicación de  comercio electrónico y esta pueda utilizarse en el sitio web de una empresa. Podemos comentar que es una plataforma multiusuario y es una versión empresarial que aporta paquetes a JSE, por lo que es un subconjunto de esta.
  • Plataforma Java, Micro Edition (Java ME): permite crear aplicaciones para dispositivos móviles. Por ejemplo, el SDK de Java ME puede utilizarse para crear un juego de un móvil. 
      
En la siguiente imagen se muestra como encaja la plataforma Java EE entre las demás plataformas Java.








TEST-DRIVEN DEVELOPMENT (TDD)

Test-driven development (TDD) o desarrollo guiado por pruebas es una práctica de  programación que realiza:
                                                - Escribir las pruebas primero
                                                - Refactorizar

En primer lugar se debe de escribe una prueba y verificar que las pruebas fallen, luego se implementa el código que haga que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito. El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que los requisitos se hayan implementado correctamente.

Una ventaja de esta forma de programación es el evitar escribir código innecesario. Se intenta escribir el mínimo código posible, y si el código pasa una prueba aunque sepamos que es incorrecto nos da una idea de que tenemos que modificar nuestra lista de requerimientos agregando uno nuevo.
Otra característica del Test Driven Development es que requiere que el programador primero haga fallar los casos de prueba. La idea es asegurarse de que los casos de prueba realmente funcionen y puedan recoger un error.

La organización de una clase de prueba es la siguiente:
class PruebaEjemplo {
        @Test
        public void prueba () {
                //1. Escenario de la Prueba --> Nos referimos a objetos
                //2. Invocación al Programa --> x = obj.metodo ();
                //3. Assert x: "Mensaje de Error"
        }


Para el desarrollo e invocación de test utilizaremos la herramienta/librería TestNG. Se explica su instalación en el punto siguiente.






DESCARGA E INSTALACIÓN DE ECLIPSE JEE


En la página de Eclipse nos vamos a descargar y descargamos la versión Eclipse IDE for Java EE Developers. Definimos rutas de ide, workspace,librerias, repository ...


Instalación de plugins en eclipse IDE

  • -TestNG:
Aunque esta librería/herramienta/framework es para el desarrollo e invocación de tests, también se puede utilizar como alternativa al método public static void main(...) .

Se puede descargar gratuitamente desde http://testng.org/doc/download.html
Para que esta librería funcione correctamente y ejecutar una aplicación como TestNG Test, primero debemos instalarle a Eclipse un plugin:


Para su in instalación nos vamos a: HELP-->INSTALL NEW SOFTWARE-->TestNG

WIKI http://enjava.tiddlyspot.com/#CEA2010


Una vez actualizado Eclipse con el nuevo plugin debemos añadir a nuestro proyecto la nueva librería .
         -  Una vez descargada la librería (testng.org)
        - Sobre el proyecto cliqueamos botón derecho --> properties. Escribimos libraries y pulsamos en Java Build Path. En la pestaña add External JARS añadimos la librería.
Para que esta librería funcione correctamente habría que instalar en Eclipse un plugin. En eclipse -->Help-->Install new Software


Enlace de TestNG:
http://enjava.tiddlyspot.com/#TestNG


usuario:enjava

clave:urbanismo


Primer ejemplo Curso-Academia 
      a) PruebaCurso:
  • c1 != c2
  • c1 == c2
      Curso:
      + String referencia


      b) El curso no va a ser igual sólo por curso sino por la referencia + academia.
        Curso: referencia y academia
        Academia: CIF


Eclipse IDE:

Eclipse lleva integradas unas plantillas(que se pueden configurar en preferences>java>code style>code templates) que generan automáticamente javadoc al escribir encima del miembro(clase, metodo, field) que estamos desarrollando la cadena /** y pulsar retorno.

Con esto documentamos el código pero no generamos el javadoc, el cual lo hacemos a través del menú: Proyect>generate javadoc. Lo cual nos creará los archivos correspondientes en la carpeta doc de nuestro proyecto!

Comandos más utilizados en desarrollo:

* Navigate>Open Type o ventanita para indicar la clase que queremos editar/ver. Esta ventanita tiene un buscador y funciona la búsqueda por iniciales
* Navigate>Open Resource o lo mismo que la anterior pero nos devuelve como resultado otros tipos de archivos además de las clases java
* CTRL+SPACE : autocompleta
* CTRL+1: sugiere para la correción de error de compilación
* ALT+MAYS+CURSOR ARRIBA: seleccion incremental de código
* CTRL+MAYS+F: Formatear código
* Refactor>extract local variable: seleccionamos el código que representará la futura variable para extraerla/declararla antes
* Sobreescribir metodos: botón derecho>source>override implemet methods;

Debugging/Depuración de programas: 

http://es.wikipedia.org/wiki/Depuraci%C3%B3n_de_programas


Debugger/Depurador:





ESTÁDARES DE DESARROLLO EN JAVA

 Nomenclatura: 

  • Nombres de clases comienzan con mayúscula y continuan con sintaxis de camello 
  • Nombres de propiedades/objetos/variables comienzan con minúscula y continuan con sintaxis de camello
  • Nombres de métodos comienzan con misnúscula y continuan con sintaxis de camello
  • Nombres de paquetes: todas las letras en minúscula

Jerarquía de paquetes:

  • carpeta source foder:
    • src
    • test
  • todos los paquetes tendrán como paquete raiz el paquete eticom
  • el subpaquete será el que describa el módulo que se está desarrollando
  • todas las clases deben estar en un paquete

Resources de proyecto/Recursos comunes a proyectos/ Librerías

  • testNG.jar
    • suite de pruebas con las clases de prueba declaradas 
  • commons-logging.jar
  • apache-log4j.jar 
    • y configuración correcta de log4j.xml
     

SUBVERSIÓN

Subversion es un sistema de control de versiones de codigo abierto y gratuito, que mantiene los registros de todos los cambios que se han realizado a los archivos de un software, lo que permite el trabajo de distintos desarrolladores en un mismo proyecto.

El control de versiones se realiza principalmente en la industria informática para controlar las distintas versiones del código fuente.

Aunque un sistema de control de versiones puede realizarse de forma manual, es muy aconsejable disponer de herramientas que faciliten esta gestión como puede ser CVS.

Subversion puede acceder al repositorio a través de redes, lo que le permite ser usado por personas que se encuentran en distintos ordenadores, por lo que se maneja ficheros y directorios a través del tiempo. Hay un árbol de ficheros en un repositorio central. El repositorio es como un servidor de ficheros ordinario, excepto porque recuerda todos los cambios hechos a sus ficheros y directorios. Ésto le permite recuperar versiones antiguas de sus datos, o examinar el historial de cambios de los mismos. En este aspecto, mucha gente piensa en los sistemas de versiones como en una especie de “máquina del tiempo ”.


¿para qué y cuando utilizar un control de versiones?

  • varias personas trabajan en el mismo código y hay que evitar colisiones de versiones
  • posibilidad de recuperación de una versión anterior (mejor o más estable) de nuestro código
  • posibilidad de seguir la evolución de nuestro código.
  • posibilidad de ramificar nuestro código dando lugar a versiones diferentes, y cerrando las estables

¿qué es googlecode...?

Es un servicio de control de versiones que ofrece google y está implementado con la herramienta Subversión.
Al estar trabajando con un IDE (Entorno de Desarrollo Integrado) lo normal es integrar una nueva funcionalidad en este IDE que nos permita desde eclipse subir nuestro código sin necesidad de instalar más programas. Esto se consigue instalando el plugin subclipse:
HELP-->INSTALL NEW SOFTWARE-->URL
http://subclipse.tigris.org/update_1.8.x

utilizar googlecode como repositorio publico
ENTRAR EN http://code.google.com/hosting/ y hacer click en Create new Project


Subir un proyecto por primera vez:
Botón derecho del ratón sobre el proyecto -->Team -->ShareProject

Subir cambios en el proyecto:
Botón derecho del ratón sobre el proyecto -->Team -->Commit

Para traer un proyecto existente a nuestro workspace:
Team -->checkout



MAVEN

Maven es una herramienta de software para la gestión y construcción de proyectos Java.Su módulo de configuración está basado en un formato XML.
Realiza tareas de compilación, empaquetado (JAR, WAR..) run set, despliegue en un entorno web (incluyendo aplicaciones en un servidor)
Es una herramienta que estandariza proyecto porque tiene una serie de directorios comunes definidos:

  • SRC/MAIN/JAVA/...
  • SRC/MAIN/RESOURCES/...
  • SRC/TEST/JAVA/...
  • SRC/TEST/RESOURCES/...
Utiliza un Project Object Model (POM) (POM.XML) archivo donde se encuentra la información del proyecto.
Una aplicación usará librerías. Depende de esas librerías para funcionar. Maven ayuda a organizar y gestionar las dependencias que crean esas librerías en nuestra aplicación.
Maven está listo para ser usado en red.
Se conecta a un repositorio en Internet de donde se descarga las librerías que posteriormente guardará en un repositorio local o Repository.
Su instalación sólo necesita la descarga y descompresión de un archivo .zip
Una vez instalado podemos ejecutar nuestro proyecto como Maven Build. Haciendo clic sobre el botón derecho de nuestro proyecto y run as... 
http://enjava.tiddlyspot.com/#Maven

MAS MAVEN

JDBC

Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.
El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos.

El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión, para ello provee el localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede realizar con cualquier tipo de tareas con la base de datos a las que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas, ejecución de procedimientos almacenados en la base de datos, etc.


Paquete java.sql

JDBC ofrece el paquete java.sql, en el que existen clases muy útiles para trabajar con bases de datos.

Clase
Descripción
DriverManager
Para cargar un driver
Connection
Para establecer conexiones con las bases de datos
Statement
Para crear consultas SQL y enviarlas a las BBDD
ResultSet
Para almacenar el resultado de la consulta

  • Es necesario importar el paquete java.sql
  • Class.forName(“com.mysql.jdbc.Driver”); Con esta instrucción cargamos el driver de conexión a la base de datos en MySQL. Si somos algo curiosos, podemos notar que dentro del conector (en mi caso mysql-connector-java-5.1.5-bin.jar), se encuentra el archivo Driver.class dentro de las carpetas com/mysql/jdbc.
  • DriverManager.getConnection Luego de cargar el Driver, es necesario crear la conexión a la base de datos. Para ello usamos el método getConnection de la clase DriverManager (que implementa la clase Driver). A dicho método le pasamos como parámetro una URL de conexión a la base de datos, que se compone, por lo general, de tres partes separados por “:”, jdbc:nombre_dbms:datos_de_conexion. Aunque esto depende del tipo de DMBS y conector que usemos. (Para más detalles de la URL, ver la documentación específica para el conector).
    Este método además, devuelve un objeto Connection que usaremos para crear y ejecutar sentencias SQL, sobre la base de datos.
  • conexion.createStatement(); este método crea/decuelve un objeto Statement, con el cual podremos ejecutar sentencias en la base de datos.
  • instruccion.executeQuery(); este método sirve para ejecutar consultas sobre la base de datos (para inserción y modificación de datos usar executeUpdate()). Recibe como parametro una sentencia SQL, y devuelve un objeto ResultSet que contendrá los datos de la consulta.
  • while(tabla.next()) esto nos permitirá iterar indefinidamente, mientras en el objeto ResultSet hayan más registros.
    • Posteriormente, dentro del while, podemos obtener los datos de la fila actual con los métodos getInt(int) y getString(int) de ResultSet. A dichos métodos le pasamos como parametro el indice de la columna que queremos obtener.
      Es importante tener en cuenta que en dichos métodos, si una tabla tiene 3 columnas, las referenciamos como 1, 2 y 3. No como en otros lenguajes (PHP por ejemplo), en los que los índices serían 0, 1, 2.
  • Las excepciones que manejamos son básicamente: ClassNotFoundException, que se lanzará por lo general cuando el programa no encuentre el Driver. SQLException, que se lanzará cuando hayan errores a nivel de SQL (errores al insertar datos, errores de sintaxis en las consultas, etc.).
CÓDIGO JAVA PARA SELECCIONAR REGISTROS
1.     import java.sql.* ;  
2.     try  
3.     {  
4.     Class.forName("com.mysql.jdbc.Driver");  
5.     Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/holamundo","root", "root");  
6.     Statement s = conexion.createStatement();  
7.     ResultSet rs = s.executeQuery ("select * from tareas");  
8.     while (rs.next())  
9.     {  
10.       System.out.println (rs.getString (1) + " " + rs.getString (2));  
11.   }  
12.   } catch (Exception e)  
13.   {  
14.      e.printStackTrace();  
15.   }   
import java.sql.* ;
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/holamundo","root", "root");
Statement s = conexion.createStatement();
ResultSet rs = s.executeQuery ("select * from tareas");
while (rs.next())
{
    System.out.println (rs.getString (1) + " " + rs.getString (2));
}
} catch (Exception e)
{
   e.printStackTrace();
}


CÓDIGO JAVA PARA MODIFICAR REGISTROS
1.     import java.sql.* ;  
2.     try  
3.     {  
4.     Class.forName("com.mysql.jdbc.Driver");  
5.     Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/holamundo","root", "root");  
6.     Statement s = conexion.createStatement();  
7.     int update_count = s.executeUpdate("update tareas set descripcion='descripcion cambiada' where nombre='n1' ");  
8.       
9.     } catch (Exception e)  
10.   {  
11.      e.printStackTrace();  
12.  

  http://enjava.tiddlyspot.com/#[[JDBC%20II]] 

 Conexión a MySQL con JDBC

Driver/JAR de mysql
http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.6.zip/from/http://ftp.gwdg.de/pub/misc/mysql/






HTML

Es un lenguaje de etiquetas.

<html>
            <head>      Cabecera (Información relativa al documento)
            </head>              

            <body>      Cuerpo
            </body>
</html>

Dentro del cuerpo se puede incluir formularios. Un formulario tiene dos características: el method y el action..
·         Method: es como se envía el formulario.
·         Get: los datos pasan por la URL del navegador y son visibles.
·         Post: no se ven los datos y se suelen utilizar para enviar más datos que con los get.
·         Action: dirección donde se va a enviar el formulario.

Los formularios tienen campos de entrada y atributos:
<form method = “GET/POST” action= ” URL”>
<input type = “text” name = “usuario”/>
<input type = “text” name = “clave”/>
Para los proyectos web necesitamos un servidor ---> apache-tomcat
En Eclipse se crea un proyecto web: file---> new--->Dynamic web Project


Ejercicio clase: errs-web00/es.cea.web
Puntos a seguir:
1º Escuchar petición URL
2º Crear Servlet
3º doGet (request, response)






           |                |
                                        petición     respuesta

En el archivo HTML incluir en el cuerpo:
<body>
          BIENVENIDA: HOLA MUNDO WEB EN TOMCAT!!
 
           <form action = “/MiAplication” method = “GET”>
           NombreUsuario:<input type = “text” name = “nombreUsuario”><br>
          ClaveUsuario:<input type = “text” name = “claveUsuario”><br>
         <input type = “submit” value= “enviar!”>
           </form>
 </body>

Servlet:
public class SuperServlet extends HttpServlet   --->Serializable
private static final long serialVersionID = 1L    ---> Tipo de Serialización 
protected void doGet(Http ServletRequest, ….) throws ServletException, IOException { 
        Syso (“Pasando por el get”);


Ejercicio clase: errs-web00/es.cea.web

      Ejercicio clase: errs-web00/links


          Ejercicio clase: errs-web00/libro








          
        Ejercicio clase: errs-web00/listeners


 


GAE: GOOGLE APP ENGINE


 JPA: JAVA PERSISTENCE APPLICATION







MÉTODOS DE ENTITY MANAGER










ANOTACIONES, ENUM Y UTILIZACIÓN DE PLANTILLAS
 

Ejemplo: holaMundoConPlantilla

JSTL








FILTROS:
SPRING:

HIBERNATE:








- REPASO(SERVLET, STRUTS Y JSF)









- ORM









Continuará...



No hay comentarios:

Publicar un comentario