Instalación y configuración de NetBeans para creación de servicios Java

En este tutorial, vamos a ver cómo instalar y configurar NetBeans para trabajar tanto con Java como con PHP y crear nuestros primeros servicios, Pruebas de Unidad de las funciones de las clases,etc.

INSTALACIÓN de NetBeans

  1. Descargar e instalar Java SE JDK 6 de Sun y su Documentación (ZIP): aquí
  2. Descargar e instalar NetBeans: aquí (recomendado instalarlo en una ruta sin espacios)
  3. Arrancar NetBeans, actualizar, y después ir a “Tools -> Java Platforms -> J2SE -> JDK 1.6″ (o vuestra versión) y pinchar en la pestaña JavaDoc -> Add Zip/Folder -> y elegís el fichero ZIP de la documentación del paso uno, ahora podemos consultar la documentación al estar en cualquier miembro de la SE JDK mediante el segundo botón del ratón -> “Show JavaDoc”

CREACIÓN del PRIMER PROYECTO CON NetBeans:

  1. Vamos al menú: File -> New Project -> Elejimos el tipo Java -> Java Application
  2. En el nombre ponemos “BSGModelo”  y en “Create Main Class” ponemos: es.ugr.battlegalactica.Prueba
    este nombre indica que la clase se llama Prueba e irá dentro de un paquete cuya jerarquía empieza por battlegalactica como contenedor dentro de UGR dentro de España…
  3. Se debe de haber creado la estructura de directorios y los ficheros necesarios
  4. Ahora dejaremos el código fuente de Prueba.java como sigue:
    //
    //Web 2.0: Arquitectura Orientada a Servicios en Java
    //Primer Modelo: BSGModelo con la clase Prueba
    //@author Juan Belón Pérez
    //package es.ugr.battlegalactica;
     
    //
    //Clase con los 3 primeros ejercicios propuestos
    //@author Juan Belón Pérez
    //
    public class Prueba {
     
    //
    //Función principal.
    //Imprime por pantalla un mensaje fijo.
    //Dependiendo de si en los argumentos, separados por comas,
    //se usa el título Adama, se saluda a la persona de distinta forma
    //que si no se usa o se usa Piloto.
    //@param args la linea de argumentos del programa
    //
    public static void main(String[] args) {
    System.out.println("Prueba del modelo de datos BattleStarGallactica");
    String todo ="";
    String[] nombres ;
    for (int i=0; i<args.length; i++){
    todo += args[i]+" ";
    }
    System.out.println("Cadena de entrada: \n- -\n" + todo + "\n- -\n");
    nombres = todo.split(",");
    for (int i=0; i<nombres.length; i++){
    System.out.println(crearSaludoRespeto(nombres[i]));
    }
    }
    //
    //Utiliza los espacios para separar los títulos y las comas para separar
    //las personas. Devuelve un saludo con el respeto adecuado al rango.
    //@param String nombre
    //@return String
    //
    public static String crearSaludoRespeto(String nombre){
    String saludo = "";
    if (nombre==null) return "Hay alguien ahi?";
    String[] partes = nombre.split(" ");
     
    if (partes.length>1){
    if (partes[0].equalsIgnoreCase("adama")){
    saludo = "Bienvenido, comandante " + partes[1];
    } else if (partes[0].equalsIgnoreCase("piloto")) {
    saludo = "Bienvenido, piloto " + partes[1];
    } else { //nombre compuesto
    saludo = "Bienvenido, civil " + nombre;
    }
    } else { //solo nombre, es un civil
    if (partes.length>0)
    saludo = "Bienvenido, civil " + nombre;
    else
    saludo = "Hay alguien ahi?";
    }
    return saludo;
    }
    }
  5. Ahora compilamos, y para probar que funciona en todos los casos le metemos las siguientes entradas a mediante el menú : Pestaña “Projects -> BSGModelo” -> Segundo botón del ratón-> “Set configuration -> Customize…” y en argumentos colocamos la cadena: Adama Juax,Piloto Migue,Sara,Jesús González, la salida debe ser como esta:
    Prueba del modelo de datos BattleStarGallactica
    Cadena de entrada:
    - -
    Adama Juax,Piloto Migue,Sara,Jesús González
    - -
    Bienvenido, comandante Juax
    Bienvenido, piloto Migue
    Bienvenido, civil Sara
    Bienvenido, civil Jesús González
    BUILD SUCCESSFUL (total time: 0 seconds)
  6. Sólo resta, crear una prueba para esta clase mediante el menú del segundo botón sobre es.ugr.battlegalactica: “Tools -> Create JUnit Tests” -> desmarcamos “Test Finalizer” por ahora, ya os explicaré por qué…-> OK
  7. Para probar todos los casos de la función crearSaludoRespeto primero quitamos todo de testMain para que no falle ya que no hace nada y luego añadimos las pruebas a la función testCrearSaludoRespeto y dejamos el fichero tal que así:
     
    package es.ugr.battlegalactica;
     
    import org.junit.AfterClass;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import static org.junit.Assert.*;
     
    //
    ////@author webser22
    //
    public class PruebaTest {
     
    public PruebaTest() {
    }
     
    @BeforeClass
    public static void setUpClass() throws Exception {
    }
     
    @AfterClass
    public static void tearDownClass() throws Exception {
    }
     
    @Before
    public void setUp() {
    }
     
    //
    //Test of main method, of class Prueba.
    //
    @Test
    public void testMain() {
     
    }
     
    //
    // Test of crearSaludoRespeto method, of class Prueba.
    //
    @Test
    public void testCrearSaludoRespeto() {
    System.out.println(
    "Probando la función crearSaludoRespeto de la clase Prueba");
    assertEquals("Correcto", Prueba.crearSaludoRespeto(null),
    "Hay alguien ahi?");
    assertEquals("Correcto", Prueba.crearSaludoRespeto("Adama Juax"),
    "Bienvenido, comandante Juax");
    assertEquals("Correcto", Prueba.crearSaludoRespeto("Piloto Migue"),
    "Bienvenido, piloto Migue");
    assertEquals("Correcto", Prueba.crearSaludoRespeto("Sara"),
    "Bienvenido, civil Sara");
    assertEquals("Correcto", Prueba.crearSaludoRespeto("Jesús González"),
    "Bienvenido, civil Jesús González");
    }
     
    }

    Entonces probamos mediante el menú “Run -> Test ‘BSGModelo’ ” y ha de aparecer “passed” en el output y el mensaje “Probando la función crearSaludoRespeto de la clase Prueba” en la salida de los resultados de JUnit Results. ¿Para qué sirven las Pruebas de Unidad?

Y esto es todo, el fichero con el proyecto se puede descargar aquí, tiene la documentación generada (hay que actualizarla).

Para el que esté impaciente ,puede continuar por aprender cómo utilizar el editor NetBeans para PHP o bien volver al índice de este Curso de Arquitectura de Servicios en Java en comunicación con PHP.

Curso de Arquitectura de Servicios en Java en comunicación con PHP

Este curso consta de diferentes partes

  1. Instalación y configuración de NetBeans para creación de servicios Java
  2. Breve repaso a Java y la Programación Orientada a Objetos: herencia, polimorfismo, Tipos como en C++ mediante especificaciones Clase<tipo_dato>, uso de netbeans, excepciones, etc.
  3. Conceptos básicos de la comunicación entre aplicaciones mediante servicios: XML, XML-RPC, SOA, RSS, SAX, DOM, JDOM y WSDL
  4. Creación del modelo de datos para los servicios web con JAVA, las operaciones de dichos servicios y los clientes que los utilizan también en JAVA
  5. Creación del conjunto de servicios web (cloud computing) que utiliza el modelo de datos del punto 4
  6. Tutorial de PHP e iniciación a la creación y comunicación con servicios web usando WSDL
  7. BPEL y OpenESB: Orquestación de Servicios Web

Resumen: Otras Arquitecturas y metodologías SOA, ejercicios a realizar

Proponen: Departamento de Arquitectura y Tecnología de Computadores de la UGR
Dirección y Coordinación:
CASTILLO VALDIVIESO, PEDRO ÁNGEL (DIRECTOR) : pedro [en] atc.ugr.es
GARCÍA SÁNCHEZ, PABLO (COORDINADOR): pgarcia[en]atc.ugr.es
Profesorado:
CASTILLO VALDIVIESO, PEDRO ÁNGEL (Propio): pedro[en]atc.ugr.es
GARCIA ARENAS, Mª ISABEL (Propio): maribel[en]geneura.ugr.es
GARCÍA SÁNCHEZ, PABLO (Propio): pgarcia[en]atc.ugr.es
GONZÁLEZ PEÑALVER, JESÚS (Propio) :  jesus[en]atc.ugr.es
LOPEZ MONTELLANO, MIGUEL ANGEL (Nacional)

Licencia del curso: GPL

El Curso en la UGR >

Algunos consejos para mejorar como arquitecto de aplicaciones web

Leyendo por Internet he encontrado a un experienciado programador llamado Jim Plush que nos habla en su blog (donde demuestra que es un fanático de todo lo Zend) sobre lo que deberíamos conocer para mejorar siendo programadores web [de php o lo que sea].

Vamos a poner estos consejos para mejorar como arquitecto de aplicaciones web en modo lista:

  • Conocer qué ofrecen las versiones de PHP 4 y 5 , conocer las mejoras de la versión 6:
    En la versión 4 existe la posibilidad de especificar en las declaraciones de las funciones y operaciones de clases, las variables por referencia o por valor, esto se hace siempre por referencia a partir de la 5, en esta además se pueden especificar partes públicas y privadas en las clases además de poder usar el patrón Singleton y autocarga de clases, la versión 6 añade Unicode para nombrar clases, variables y funciones de la tabla de símbolos, y eliminan register_globals, magic_quotes y safe_mode, y atención : paso por referencias peligroso!
  • PHP, ASP.NET y Ruby on Rails, cuándo es mejor utilizar uno u otro lenguaje y sus tecnologías directamente asociadas que implican también otra forma de pensar y actuar frente a los problemas que puedan ocasionarse…
    Si vas a construir un sitio que necesite ser escalable y muy grande (una gran red social o una tienda que vaya a sufrir muchísimos cambios) entonces es mejor utilizar RoR, en otro caso, si necesitas un lenguaje con el que construir una aplicación web puedes usar PHP o ASP, el segundo es más fácil para los que les gusta diseñar con un IDE y el primero para los que quieren tener un motor potente de un gestor de contenidos o hacerlo todo desde cero o con un framework de aplicaciones rápidas…
  • Ser capaz de realizar programas con sockets para implementar servicios (ftp, telnet, etc.)…un programa con sockets puede ser un plugin de WordPress que haga fetching (algoritmo capturador de contenidos) desde una URL, esto lo publicaré en futuro no muy lejano, mientras podéis ver un ejemplo de programación con sockets en PHP
  • Programación Orientada a Objetos: POO
    + por qué especificar un método como privado o público
    + conceptos que son útiles de conocer: interfaces, constructores, destructores, private-public-protected, herencia, polimorfismo, métodos estáticos, etc.
  • Bases de datos: conocer qué es la normalización de base de datos y como exportar/importar esquemas de bases de datos con XML (además de saber como comprimir una base de datos con ZIP o GZIP y enviarlo por mail como adjunto)…ejemplo, además es imprescindible antes de empezar a crear las tablas, hacer nuestro diagrama de E/R
  • Patrones de diseño
  • Control de código fuente (SVN, CSV, etc): esto sirve sobre todo para trabajar en equipo y mantener un control sobre los cambios que vamos realizando en nuestro código fuente (usaremos OHLOH)
  • Unit Testing o Pruebas de Unidad
  • Ser parte de la Comunidad, participar en foros, debates, ayudar a extender los conocimientos, contribuir con algún proyecto aunque sólo sea traduciéndolo a tu idioma…OsCommerce, OpenCMS, Joomla, WordPress, etc.
  • Habilidades con JavaScript, conocer los framework JS existentes (JQuery,  Prototype, MooTools, Dojo, ext,etc.) y hacer ejemplos donde arreglar los problemas de compatibilidad entre ellos…
  • Habilidades con CSS (utilizar CSS dinámico): diseñar online el esqueleto XHTML+CSS de una web
  • Conocer el modelo de caja y cómo AJAX  “encaja” perfectamente en esto :)
  • Saber qué es y como se contruye un sistema gestor de contenidos
  • Usabilidad y Arquitectura de la Información
  • Integrar las redes sociales en nuestra aplicación: login, registro, etc, con facebook, gmail, twitter, menéame, (sharethis),etc.
  • Conocer las herramientas de ayuda para el arquitecto integrables en el navegador: firebug ( y derivados ) ,selenium, etc.
  • Pasión por mejorar (ganar amigos e influenciar para generar más conocimientos que compartir)

Para los avanzados que ya han superado todos los puntos anteriores también tenemos los siguientes:

footer
jbelon © | sitemap.xml