« Tiempo y vidaBúsquedas Febrero 2007 »

Web: PHP, Java o qué

Tal vez uno de los flames más populares de los últimos tiempos en desarrollo web, sea el de ¿qué usar, Java o PHP? Sí, cierto que tenemos Ruby, ROR, Python, Perl, C++ y etc. pero la pregunta sigue siendo la misma: ¿programa generador de páginas, o plantillas de página con programa?

La pregunta que realmente deberíamos hacernos a la hora de elegir, sería qué es lo que estamos haciendo realmente:

  • una web con aplicación
  • o una aplicación con web

Puede parecer una tontería, pero no lo es. Curiosamente, en este caso el orden de los productos SÍ altera el resultado; no es lo mismo una filosofía de desarrollo que otra, ni el método de trabajo, ni el rendimiento final, la mantenibilidad o los requisitos.

Aplicación con Web: Java

La forma más antigua, la más rápida, la inicial partiendo de generar textos en C, luego en Perl, y luego en Java. Su filosofía se basa en un modelo simple:

  1. Hay una aplicación que controla los datos...
  2. ...que se presentan en forma de página web.

Parece lógico, ¿no? Pues no, o depende.

Si lo más importante es el manejo de datos, si se usan metodologías avanzadas que no estén implementadas en ninguna otra herramienta, esta es la forma más adecuada de plantear el problema.

Sin embargo, en esta aproximación se sacrifica buena parte de la mantenibilidad de la aplicación al quedar la generación de la visualización (web) integrada en la lógica de aplicación. Tal vez resulte más rápido y cómodo en un primer momento, pero como haya que cambiar cualquier cosa... la hemos liado.

Por otro lado, la persistencia de datos en memoria de aplicación durante todo el tiempo de su ejecución, supone un gran beneficio de velocidad a la hora de manejarla... y al mismo tiempo es uno de los mayores defectos de Java, dado el caos que genera cualquier intento de escalar una aplicación monolítica.

Web con Aplicación: PHP

Aquí partimos de la web como una página de documento, que puede que cambie en algún momento. Para facilitar esos cambios primero se usó SSI, luego PHP... y básicamente ese es el máximo exponente hoy en día. Su filosofía se basa en:

  1. Queremos presentarle al usuario un documento (una web)...
  2. ...que en algún momento puede cambiar en función de algo.

Es una aproximación muy válida, pues realmente el cliente es lo que va a ver, un simple documento. La interactividad es relativamente ajena a la "aplicación", que se basa en otros mecanismos para mantener una ilusión de persistencia que realmente no es tal, usando para tal fin medios externos (normalmente una base de datos).

A diferencia de la filosofía Java, aquí la base de datos no es un mero repositorio de datos ordenados y fácilmente accesibles, sino un elemento esencial de la arquitectura.

Mezclado y revuelto: .NET

Y luego, tenemos un intento de aproximación de las dos filosofías por medio de .NET y su persistencia a nivel de aplicación. Desgraciadamente esta aproximación echa por tierra los beneficios de ambas, conservando sus defectos. Se podría expresar como:

  1. El cliente quiere un documento...
  2. ...así que lo generamos partiendo desde cero...
  3. ...pero dejamos trozos flotando por si los volvemos a necesitar.

En un primer momento puede parecer interesante la mezcla de arranque en frío con el acceso a un repositorio común, pero se acaba convirtiendo en una trampa mortal al perder tanto el beneficio de una aplicación pre-ejecutada (Java) como el de la separación total entre los procesos (PHP).

Aproximación

Aún así, dentro de ambas filosofías, tanto la "aplicación web" como la "web aplicación", hay elementos que se van vislumbrando como claramente ventajosos.

Uno de ellos es la separación MVC, que desgraciadamente en ambas filosofías tan a menudo se olvida; unas por exceso de Vista, otras por exceso de Control... y de la falta de Modelo ya no hablaremos, pues normalmente supone una catástrofe garantizada.

Tanto Java como PHP han desarrollado sistemas de plantillas. Java se ha incorporado en documentos con enlaces a la aplicación, PHP se ha extendido hacia el soporte de POO y algunas limitadas comprobaciones de tipos.

Al final, una elección razonada viene en función de dos factores básicamente, aparte de la familiaridad de quien vaya a aplicarlos:

  1. Java permite aplicaciones persistentes de alta velocidad e integración con otros elementos de lógica de negocio.
  2. PHP ofrece mayor robustez y fácil escalabilidad, sin preocuparse de corrupciones o interbloqueos (sienpre que -como es debido- se deleguen)

Las demás aproximaciones existentes, normalmente se pueden catalogar en uno de estos dos conjuntos. De las demás, como es el caso de .NET, lo mejor es simplemente desconfiar... y si hay que usarlas, andar con extremo cuidado para no caer en las trampas, tentaciones y falsas promesas que ofrece.

Trackback address for this post

This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)

No feedback yet

Deja un comentario


Your email address will not be revealed on this site.

Your URL will be displayed.
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)

¿Cuántos LOMOS hay en la foto?

(si fallas, puedes volver a intentarlo... al menos por ahora)

Jaroslaw Filiochowski
jar<QUIT@ESTO>fil@gmail.com
(e-mail, jabber, gtalk)
Desde: Bilbao, España

Enero 2009
Lun Mar Mié Jue Vie Sáb Dom
 << <   > >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Ordenar por:

Yo NO veo TV

Yo NO veo TV
00 horas de TV a la semana
image

powered by

powered by b2evolution free blog software

+

Gentoo
Gentoo


photos powered by

Foto de una cámara de fotos difital Nikon Coolpix 7600
Nikon Coolpix 7600

+

Foto de un móvil Nokia 3650 con logo personalizado
Nokia 3650

Por cortesía de NokiaGame 2002


Creative Commons License
Esta obra está bajo una licencia Creative Commons salvo donde se especifique explícitamente otra licencia.


IBSN: 3-3718-9164-1