20061004 miércoles octubre 04, 2006

Java vs LAMP: maceración (I) Finalmente, ya perdí el miedo. O más bien, me he deshecho de las anteojeras que sólo me permitían ver Java, aplicaciones Java, servidores Java y protocolos y API's Java. Y no, ¡Hay luz al otro lado de Java!, hay otros mundos paralelos. Hace algún tiempo, tuve que recomendar una herramienta con las típicas funcionalidades de un CRM. Las premisas que me impuse fueron: que evidentemente fuera opensource, que fuera un proyecto con continuidad, y tal vez por que pensé que quizás me tendría que pelear con el código o que era buena cosa conocerlo o poderl trastear cómodamente, la última premisa fué QUE ESTUVIESE HECHO EN JAVA. Buscando por La Red, curiosamente casi siempre iva a parar a algo hecho para LAMP. Pero yo no me veía instalando dicha plataforma. Aunque comparando, con los ojos de un usuario de a pié, las soluciones Java con las LAMP, no había color, LAMP ganaba en número y vistosidad. Y ciertamente, sólo hay que escoger alguno de java-source.net y compararlo con cualquier otro W/LAMP (SugarCRM, SplendidCRM, vTiger; Daffodil CRM; CiviCRM; XRMS; etc...), para percatarse que las Javeras son las tías feas de la discoteca, mientras que las otras son las chatis con las que quieres roze. Finalmente, escogí un Java, que me salió rana, y tras unos meses tuve que cambiar a otro también Java, que también tiene su vena anfíbia (pero promete mucho), con el agravante de ver como los productos LAMP mejoraban rápida y notablemente con cada nueva versión, y esto daba bastante envídia (y rábia).
Antes de verano, surgió el proyecto de crear una web dinámica con contenido comercial, naturalmente se tendría que hacer con el mega-chachi-framework-xml-javero de turno. Evidentemente mi rápida respuesta fué -"Eso ya está inventado, se llama CMS, y le das una patada a una piedra y salen cuatro.". Y evidentemente, con el escepticismo que da el hacer una propuesta innovadora, me cayó el marrón proyecto en mis manos. Pero entonces ya no fuí tan escrupuloso, decidí mirar 'otras' alternativas con otros ojos, con otro espíritu más abierto, sin la premisa de 'Java'. Evidentemente, de nuevo, tras hacer varias evaluaciones, el veredicto final recayó en 'EL' CMS por ontonomasia de LAMPhp. Estoy plenamente convencido de que fué la decisión más acertada.. Posted by Feliciano Borrego in FLOSS at 20061004 Comentarios[8]

Comentarios:

Ciertamente yo creo que donde ha fallado el open source en Java es en la escasez de producto final de calidad: existen innumerables librerías y frameworks de calidad para los desarrolladores, pero en PHP existen muchos más productos finales. Tal vez sea la facilidad de instalación de PHP, o la existencia de hostings incluso gratuítos, pero es un hecho.
Otra cosa es que yo me decante por ellas: si tenemos en cuenta el mantenimiento que siempre habrá que dar, meterme en el código espagueti que he visto que muchas de esas soluciones tienen me produce sudores fríos. No digo que no haya cosas bien hechas: digo que si de esa multitud de soluciones descontamos aquellas cuyo código fuente es un infierno, tal vez nos encontremos con las mismas alternativas que en Java.
Salu2

Enviado por ibon en octubre 04, 2006 a las 10:05 AM CEST #

El código espagueti no tiene nada que ver con el lenguaje escogido sino con la persona que lo utiliza. Te puedo asegurar que se puede hacer una aplicación web con PHP totalmente mantenible y limpia, aplicando patrones de diseño como el omnipresente MVC.

He visto churros (espagueti se queda corto), hechos por supuestos profesionales expertos en Java, con toda la logica metida en las JSP, que mas que sudores frios lo que producen son ganas de llorar.

Se puede programar muy mal en Java, a lo PHP-cutre-style, pero tambien se puede programa en PHP a lo Java-molonaarquitectura-style.

Enviado por Horrabin en octubre 04, 2006 a las 10:55 AM CEST #

Por supuesto que sí. Por eso decía: "No digo que no haya cosas bien hechas". Lo único que digo es que de todos los proyectos que he visto en php un alto grado de ellos eran espagueti puro y duro, por mucho éxito que hayan tenido (PHPNuke es un ejemplo, o dotproject, en el que el desarrollador comentaba en uno de sus posts "si era interesante usar MVC en la nueva versión" :-), por no hablar de phpcollab).
Siempre habrá chapuceros, pero la verdad, la experiencia me dice que sin una orientación a objetos es más difícil ser ordenado, y hasta php 5 no existía. Osea que si comparamos código bueno en Java o php no creo que hay tanta diferencia en número de proyectos. Sólo eso.
Salu2

Enviado por ibon en octubre 04, 2006 a las 12:50 PM CEST #

Tienes razon en que muchos de los proyectos "open source" hechos con PHP son espaguetis chungos de digerir, no voy a defender lo evidente.

Tambien tienes razón en que se es mas ordenado con orientación a objetos, lo que ocurre es que si en Java no la usas te salen churros aun peores de mantener que cualquiera de los espaguetis anteriormente citados. Y he visto y sufrido en mis carnes unos cuantos...

Solo discrepo contigo cuando dices que hasta PHP5 no existia orientación a objetos, con PHP4 ya se podia hacer, lo unico es que con la nueva versión es más estricto y completo en ese aspecto.

Un saludo de un programador enamorado de ambos lenguajes ;-)

Enviado por Horrabin en octubre 04, 2006 a las 01:07 PM CEST #

Estamos de acuerdo :-) Me suena que en php 4 se podían definir clases, pero cuando lo ví en su momento no me pareció "OO" :-)
Sobre mi amor a php, la verdad es más bien desamor. Últimamente empiezo a flirtear con ruby, que me parece una chica mucho más guapa :-)
Salu2

Enviado por ibon en octubre 04, 2006 a las 01:15 PM CEST #

Estoy de acuerdo en que es un punto a favor el contar con varias posibilidades a la hora de hacer algo en concreto, PHP vs Java en este caso para montar un CMS. Lo malo de hoy en dia es que convertirse en experto en una tecnologia puede llevarte anyos/decadas, no es como hace anyos que ser experto en una plataforma consistia en el lenguaje, el IDE de facto y unas pocas APIs oficiales. Ahora, imaginad lo que cuesta llegar a desenvolverse minimamente en, no ya Java, sino J2EE, o J2ME, etc. Es un poco abrumador, asi que en mi caso me pasa como a ti, cuando hay que abordar un nuevo proyecto siempre lo veo implementado en Java. Es donde mas seguro me siento y donde mas productivo soy. Sin embargo, evidentemente existen otras alternativas frente a Java en ciertos casos, mas validas en cuanto a la calidad. Yo lo que intento siempre es leer y escuchar lo que dice la gente buena tecnicamente, tanto en blogs como en la vida real. Pegarse a "los buenos" es una buena forma de madurar profesionalmente, creo yo.

Saludos desde NYC y enhorabuena por el blog!

-rb

Enviado por rb en octubre 04, 2006 a las 05:01 PM CEST #

Una vez vino un compañero a enseñarme un problema que tenia, si cortaba un metodo en la linea 10 000 y lo pegaba en la 30000 no compilaba, pero si lo ponia en la 10 000 no hacia lo que queria.

Este compañero es actualmente profesor de la universidad, y el problema que tenia es que un metodo que solo tenia 10 if acabo teniendo mas de 3000 if, resultaba que habia ido creando un sistema experto a base de if.

Los buenos proyectos son los que tienen buenos principios.

Para desarrollar, ya sea LAMP o Java, hay que contar con las personas, los proyectos aunque parezca mentira no los hacen las herramientas sino las personas, cada persona tiene algun tipo de conocimiento, interes etc si recomiendas en funcion de las herramientas y no de las personas, el proyecto te puede salir, bien o mal, pero siempre vas a tener que remar solo o luchar para que remen contigo.

Las recomendaciones de herramientas para proyectos deben siempre tener en cuenta a las personas que lo van a desarrollar/mantener/utilizar.

Nunca recomendaria lo mismo para una empresa que dispone de personas con intereses .NET que para Java, ni para PHP.

Enviado por batch4j en octubre 05, 2006 a las 09:15 AM CEST #

¿Cuál e EL CMS por ontonomasia de LAMPhp?
Yo he visto algunos proyectos en php. Uno de ellos es drupal, un CMS. Lo que sorprende es la cantidad de cosas (módulos) que tiene, "para hacer de todo". Y una comunidad muy grande y activa.

Y esta suele ser una de las diferencias con proyectos hechos en java, que en muchas ocasiones son sustentados por empresas privadas. Por ejemplo hablando de CMSs, Liferay y JBoss Portal (con sus respectivos portlets de CMS).

También sorprende la forma como han tenido que abordar las deficiencias del lenguaje. Y no, no me parece código espagueti, pero no deja de resultar "chocante" algunos malabares hechos con el lenguaje. También resulta interesante leer porque programaron NO POO:

http://api.drupal.org/api/4.7/file/developer/topics/oop.html

Usualmente en mi caso escoger algo hecho en php puede darse por razones económicas ("siempre" es más barato montar algo en php que en java, ya sea por el costo y disponibilidad de los hosting o los requerimientos del sistema) y disponibilidad (lo dicho en php, hay muchas cosas listas para usar y que ahorra mucho tiempo y dinero, eso sí, para escoger bien hay que pasarsela estudiando como ratón de biblioteca :D).

En cuanto a Ruby (o python), igual no hay tantos productos finales hecho en este lenguaje.

Enviado por Ricardo en octubre 05, 2006 a las 11:56 AM CEST #

Enviar un comentario:
Los comentarios han sido deshabilitados.