La odisea ingresando a Java en la facultad (2)

De regreso por estos lugares!
Esta vez continuando con la odisea de "aprender" a programar en Java.

Querido Blog:
- Pues el curso sige su marcha, es divertido ver la cara de algunos compañeros que no entendieron nada, ver como otros progresan bastante bien, ver como el maestro se divierto hablando de cosas muy tecnicas, despues rie y nos ve con su cara de "jaja los pille".
El maestro nos compartio una documentacion, bastante buena, de lectura pesada pero muy util. (proximamente lo subire y les paso la ligua)
El curso se basa en programacion de servlets, elementos por demas interesantes.

Que en resumen los definia como:
- La parte ejecutable del servidor que se encarga de regresar cierta respuesta ante una llamada HTML.

Su funcionamiento es bastante basico, solo agrega la parte del metodo de envio HTML.

Este es un ejemplo simple de un servlet:

/**
 *  Autor:    ISI
 *  Fecha:    Agosto 2009
 *  Descripción: Servlet que despliega un mensaje de bienvenida.
 */

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HtmlWelcome extends HttpServlet {
    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
    throws ServletException, IOException {

        /**
         *  Indica el tipo de contenido (por ejemplo, text/html),
         *  que será regresado como respuesta
         */

        response.setContentType("text/html");

        /**
         *  Regresa un flujo de salida usado para enviar datos al cliente
         */

        PrintWriter out = response.getWriter();

        /**
         *     Escribe la respuesta
         */

        out.println(
            "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>");
        out.println("<HTML>");
        out.println("<HEAD>");
        out.println("<TITLE>");
        out.println("Bienvenido");
        out.println("</TITLE>");
        out.println("<BODY>");
        out.println("Bienvenido a JavaMexico.org!");
        out.println("</BODY>");
        out.println("</HTML>");
    }
}

Como pueden ver el codigo es muy simple para solo desplegar un saludo, que obviamente se puede cambiar por cualquier proceso que ustedes necesiten.
En la ultima parte se puede agregar una respuesta HTML que sera mostrado por el navegador del cliente, como alternativa a que se envie respuesta que sería interpretada por el HTML (recordemos que es un lenguaje interpretativo).

Sin mucho mas por el momento me despido, deseenme suerte en el proximo examen!

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

HTTP

No es ante una llamada HTML, es ante una llamada HTTP. Recuerda que HTTP es el protocolo y HTML es el código en el que haces las páginas web. Lás páginas de HTML se piden y devuelven por medio de HTTP.

Buen ejemplo de "hello world" en servlet; lo que sigue sin gustarme es que necesita un post mucho más extenso para explicar cómo compilar y probar ese fragmento tan pequeño de código. O son plugins en un IDE, o es instalar un contenedor (Jetty o Tomcat son lo más sencillo), configurarlo, etc y aventar ahí la clase para poder ver cómo funciona, saber qué URL poner en el navegador... en fin. Por eso luego se nos van algunos al inframundo de PHP.

Imagen de cfpmx

¿Por qué comentas que

¿Por qué comentas que luego se van algunos al inframundo de PHP? ¿Es más fácil? ¿Mas sencillo? ¿Se pueden hacer las mismas cosas en J2EE que con PHP? ¿Que diferencias, ventajas y desventajas traen?

Re: ¿Por qué comentas que

¿Por qué comentas que luego se van algunos al inframundo de PHP? ¿Es más fácil?

¿Mas sencillo?

¿Se pueden hacer las mismas cosas en J2EE que con PHP?

¿Que diferencias, ventajas y desventajas traen?

Lo primero que se me ocurre acerca de J2EE:

0. Utiliza un modelo basado en contenedores que proporcionan muchos servicios de bajo nivel que ya no hay que preocuparse por programar: conexión a bases de datos, gestión de sesiones, etc.
1. Promueve (fuerza) el desarrollo de componentes desacoplados (desde una instancia de servlet no puedes obtener una referencia directa a otra instacia de servlet, por ejemplo). Nada de actualizar un archivito y subirlo al servidor para hacer un cambio a una aplicación. Si vas a hacer un cambio es "la enchilada completa".
2. Provee un modelo bien organizado para ensamblar aplicaciones. Inclusive tiene predefinido un ciclo de vida para distintos tipos de componentes.
3. Tiene una avanzada "administrabilidad": si truena un componente puedes darlo de baja sin afectar a los demás,

Es decir, J2EE no se preocupa sólo por problemas de tiempo de diseño/implementación, sino es una plataforma que también pensó desde un principio en atender problemas de tiempo de ejecución.

Esto tiene un costo asociado: el ciclo de desarrollo es muy doloroso. Hay que compilar, empaquetar, desplegar una y otra vez hasta la náusea todos los días. Yo pienso que si la aplicación que estás desarrollando debe tener características "enterprise" como las mencionadas, o un estándar corporativo te obliga, deberías usar J2EE. Pero si no es el caso, para desarrollar aplicaciones web usaría Python o Ruby. Tal vez PHP. Pero no perdería mi tiempo con ambientes y prácticas taaan complicados como los requeridos/utilizados en J2EE.

Saludos

Javier

Imagen de Jvan

No explicas porque es mas

No explicas porque es mas facil y mas sencillo

Imagen de ezamudio

PHP

ya te contestó Javier respecto a varias preguntas.

La versión corta de mi respuesta es: PHP significa Personal Home Page. Eso te dice todo en cuanto a para qué fue hecho ese lenguaje.

Las desventajas que yo le veo a PHP es que es muy fácil hacer porquerías en ese lenguaje. Ciertamente se pueden hacer porquerías en cualquier lenguaje, pero en PHP es muy fácil. Las broncas que yo he visto:

  • Si defines un objeto con tres propiedades a, b, c y luego le pones un valor a la propiedad d, te lo acepta, no hay error
  • Si quieres convertir una cadena a número, haces un cast; si no se puede hacer el cast se vuelve 0. Si la cadena viene de fuera (datos que el usuario puso en algun lado), nunca sabrás si la cadena era "0" o si era otra cosa (tienes que comprobarlo a manita para ver si era "0", "00", "000000", etc o si era "juan" que no se puede convertir a entero).
  • Los cambios menores de versión no son tan menores. De una versión a otra aparecen clases que si se te ocurre usar y el cliente tiene un PHP tantito más viejo, ya valiste (comparado con Java que las versiones no salen tan rápido y tienes muy claro qué hace cada una).
  • PHP ha crecido de manera medio orgánica (medio como enredadera, medio a lo idiota, de manera reactiva, como lo quieras ver). Por ejemplo al principio no había pools de conexiones a base de datos, no había manera de parametrizar SQL sino que tenían que concatenarlo; los sistemas en PHP históricamente han sido los más vulnerables a ataques de inyección de SQL. Le pusieron parches para evitar esto pero pues eso es para los nuevos sistemas, a ver quién arregla lo que ya está hecho...
  • PHP no maneja tipos de dato, hay a quienes les gusta eso y hay a quienes no les gusta. Es decir tú declaras tu variable X y le pones un entero, luego una cadena, luego un objeto, etc etc. Muy flexible para programar; el problema es cuando tienes que leer el código de alguien más; de repente ves que en X tienen una cadena, pero más adelante en X tienen un objeto de una clase de una librería de quién sabe quién, entonces tienes que ir rastreando muy de cerca lo que hacen con la variable porque pueden tener cualquier valor de cualquier tipo.

Las ventajas de PHP es que si tienes un servidor Apache ya casi es seguro que trae el mod_php y nada más tienes que ver si está activado y configurado (y si no, con dos líneas de texto lo dejas funcionando). Luego agarras tu archivito pagina.php y lo avientas en cualquier directorio y listo, tienes una página PHP funcionando en un web server. Comparado con configurar Tomcat, conectarlo con Apache (compilar e instalar mod_jk), compilar este servletito que pusieron de ejemplo, empaquetarlo en un WAR, meterlo a Tomcat y probar si funciona, pues sí, Java es mucho más complicado. Pero como dice Javier, a cambio de esa talacha engorrosa tienes muchas ventajas.

Podemos decir que PHP y Java son herramientas para solucionar distintos problemas. Mi opinión muy personal es que PHP es el Visual Basic del nuevo milenio; un lenguaje para que cualquier persona con un mínimo entendimiento de programación, de las computadoras y del mundo en general pueda hacer un disque sistemita.

Re: PHP

Mi opinión muy personal es que PHP es el Visual Basic del nuevo milenio; un lenguaje para que cualquier persona con un mínimo entendimiento de programación, de las computadoras y del mundo en general pueda hacer un disque sistemita

Yo mismo he recomendado a amigos con empresas pequeñas, que deben hacer alguna aplicación para su página web porque no les basta con un tríptico virtual, que utilicen PHP y busquen cualquier estudiante de licenciatura que por una paga determinada les de mantenimiento a su paginita. Un amigo me cuestionó que por qué no les recomendaba mejor otro lenguaje menos propenso a ataques, y es que en realidad sólo estaba pensando en algo que cualquiera pudiera programar y mantener, que fuera ventajoso para una microempresa y también para ayudar a pagar los estudios de alguien.

Por supuesto Yahoo usa cantidades colosales de PHP, y PHP muy bien hecho, pero quiero ver qué porcentaje de desarrolladores PHP tiene la disciplina que los desarrolladores de aplicaciones PHP de Yahoo.

Saludos

Javier

Imagen de 1a1iux

No sólo HTML

En efecto un JavaServlet tiene la capacidad de atender peticiones HTTP, pero no sólo sirve para mandar código HTML al cliente.

De manera genérica, un JavaServlet se puede usar para generar contenido dinámico de distinto tipo. Por ejemplo, imágenes GIF, JPEG, PNG, documentos MSWord y MSExcel, documentos PDF, y algunos otros.

Sale y vale
Byte