Buenas. Desde la experiencia, os corroboro EMO que PHP deberíamos usarlo sólo en proyectos pequeños.
Yo lo primero que utilicé fue ASP a secas. En cuanto el proyecto crecía, era muy difícil su mantenibilidad, por problemas derivados de su rapidez y potencia del lenguaje (VB Script).
Más tarde, reescribí el proyecto ASP anterior en PHP [php.net], esperando que con software libre obtuviera resultados mejores. Y lo fueron: PHP, además de ser libre, era más potente, disponía de más herramientas para facilitar el trabajo, más funcionalidades, etc.
Sin embargo, a medida que se va profundizando en PHP y los proyectos PHP van creciendo, se empiezan a ver proyectos para PHP que permiten tener más estructuradas las cosas: sistemas de plantillas como Smarty [php.net], frameworks MVC (Modelo Vista Controlador), e incluso la propia actualización de PHP4 a PHP5. Hasta que te das cuenta de que PHP, y todo su plataforma de desarrollo conjunta formada por estas herramientas, tiende a parecerse a cosas más robustas y estructuradas como las que existen para el mundo Java.
También he tocado Java con aplicaciones web, un poquito de JSP's y demás, pero no demasiado. Porque la verdad, yo también soy un poco reticente a Java, por el hecho de que no es software libre (no quiero iniciar un flame please).
Por eso, como veía que mi tendencia era llegar a Java sin usar Java, eché un vistazo a .NET. La plataforma .NET sin duda ofrece mucha productividad y el lenguaje C# se puede codear perfectamente con Java (incluso es mejor en algunas cosas EMNTHO, pero esto ya es discutible). Sin embargo, lo que echaba de menos con .NET eran dos cosas:
a) Una plataforma de desarrollo multiplataforma.
b) La tendencia "inherente" a los proyectos y plataformas de desarrollo del mundo Java de estructurar completamente y de forma exquisita el código, obteniendo capas de abstracción de la más mínima cosa.
El punto (b) viene fundado, sobre todo, por la tecnología ASP.NET con la que irremediablamente he tenido que tratar a la ahora de utilizar la plataforma .NET. La versión 1.1 para empezar tiene importantes fallos concernientes a la arquitectura, como que resulta difícil hacer páginas web que validen con los estándares, y sobre todo, páginas web accesibles, en las que el JavaScript sea solamente una opción. Ofrece una capa de abstracción que hace que el programador se olvide de todo, y que incluso no necesite saber ni CSS ni JavaScript. Esto es en mi opinión un error. Además, desde el punto de vista del backend de una aplicación web, con ASP.NET es más difícil elaborar una estructura MVC (al parecer, Microsoft se enorgullece de hacer desaparecer, por arte de magia, la capa del Controlador).
Sin embargo, en el mundo Java, un ejemplo del punto (b) puede ser el proyecto Maverick [sourceforge.net], que ofrece un framework MVC para desarrollar aplicaciones web. Algo bastante elegante.
¿Qué decisión tomé entonces? Una intermedia: no usar Java (J2EE), pero tampoco ASP.NET, ni nada que tenga que ver con Microsoft. Actualmente estoy utilizando un framework MVC denominado "Maverick.NET" [sourceforge.net], el cual es un port de Maverick de Java a C#, y me está dando unos resultados muy buenos. Para desarrollar utilizo MonoDevelop [monodevelop.org], y para los deployments utilizo el runtime de Mono [mono-project.com], Apache 2.0 [apache.org] y el módulo mod_mono [mono-project.com] que permite reenviar las peticiones al servidor XSP [go-mono.com] de Mono.
Para la vista estoy utilizando serialización XML de las clases del controlador de manera que su resultado es transformado en XHTML mediante XSLT. Para la vista también utilizo CSS2/CSS3 (usando IE7/FixIE/IEpatch [edwards.name]) y JavaScript no intrusivo (Unobstrusive JavaScript) [blogspot.com], al igual que JavaScript agnósitco ("crossbrowser") para la captura e implementación de eventos, y demás cosas, e incluso un poquito de AJAX [wikipedia.org]...
Para el controlador uso lenguaje C# compilado en una librería .DLL. No necesito a Microsoft para nada porque he conseguido hacer funcionar Maverick.NET con Mono.
Y para el modelo, me había planteado utilizar algún sistema de mapeado objeto-relacional, como NHibernate [sourceforge.net], pero me estoy dando cuenta de que al final lo más eficiente, y EMO lo que es el futuro, son las bases de datos ya de por sí orientadas a objetos como DB4O [mono-project.com] (¡y te olvidas del SQL!).
Agradecería, pues, cualquier sugerencia/comentario/crítica, para mejorar la arquitectura y forma de desarrollar que he escogido por el momento ;)
Me parece muy bien que cada uno elija desarrollar con .NET o Java. Para mí, la solidez y manejabilidad de Java es muy grande, cierto es que .NET no se ha quedado atrás, pero lo que todavía no trago yo muy bien es el híbrido que creó Msoft entre C++ y Java (llamado C# o CSharp).
Sinceramente, casi no lo he usado y a lo mejor mi opinion está un poco fuera de lugar, pero no creo que sea ni tan potente como C++ ni tan bueno como para eclipsar a Java.
¿Podríamos pensar entonces en un JPHP para abarcar proyectos grandes y pequeños? No se, pero pienso que fue un intento de ser mejor que Sun en algo, ya que, a mi opinión, Visual Basic no le llega ni a los talones a Oracle Forms Developer (hablando de proyectos de gestión de datos); porque aunque Visual sea muy utilizado, Oracle Forms te da la solidez inmensa en cuanto a base de datos y puedes hacer de TODO muy fácil y eficazmente, cosa que no lo es tanto en el primero.
La verdad es que no entiendo esta mania a java, hasta tal punto es el absurdo, que segun tu, decides no coger java... porque segun tu no es libre ....¿y en lugar de llo te vas por .NET? eim?
Si te hubieras leído el comentario entero te darías cuenta de que no "me voy por .NET". Después de haber mirado un poco Java/ASP/PHP, probé .NET, y me quedé con lo mejor de ello: Mono, que implementa una parte importante de .NET.
Por cierto, Mono es libre.
Vamos a ver: las especificaciones del lenguaje de java las hacen un compendio de empresas gigantescas. Teneis el codigo fuente de las librerías del sdk de java.
Eso es cierto, pero el código no es libre.
Hay maquinas virtuales de java de proyectos libres ¿que mas quereis?
Las máquinas virtuales libres, al parecer, dejan bastante que desear todavía.
Lo mismo te podría decir yo a ti: ¿qué manía a .NET? Si con Mono puedes utilizar herramientas libres. Y además, no te ciñes a un sólo lenguaje, puedes utilizar C#, Python, VB.NET (aunque el soporte de este lenguaje no es completo aún), ¡incluso Java! (y también había un proyecto para hacer que PHP emitiera código intermedio de .NET, aunque creo que está abandonado).
ejem, "no existe una implementación libre de Java", ejem, ejem...
no, que va... classpath para empezar y se esta desarrollando Harmony, apadrinada por Apache, IBM y mas empresas y que seguramente usara parte de classpath... no, no hay implementaciones libres, que va...
ahora mismo el soporte libre que tiene classpath para java es casi el mismo que mono para .net... es decir, la mayoria de las cosas funcionan pero no todas
en cuanto a sun y ms... de momento sun ha liberado mas cosas que ms... y por las noticias que se oyen al parecer se estan dando cuenta de su error al no liberar java, el futuro dira... ms? bueno, llevo tiempo leyendo cosas sobre que microsoft podria cambiar en cualquier momento eso de "especificacion libre" y entonces todo mono y demas a tomar por culo...
otra cosa es que tu solo sepas VB.net. Eso lo entenderia...
--
Dale fuego a un hombre y estara caliente un dia, prendele fuego y estara caliente el resto de su vida.
Desde la experiencia
(Puntos:3, Informativo)( http://knocte.blogspot.com/ )
Yo lo primero que utilicé fue ASP a secas. En cuanto el proyecto crecía, era muy difícil su mantenibilidad, por problemas derivados de su rapidez y potencia del lenguaje (VB Script).
Más tarde, reescribí el proyecto ASP anterior en PHP [php.net], esperando que con software libre obtuviera resultados mejores. Y lo fueron: PHP, además de ser libre, era más potente, disponía de más herramientas para facilitar el trabajo, más funcionalidades, etc.
Sin embargo, a medida que se va profundizando en PHP y los proyectos PHP van creciendo, se empiezan a ver proyectos para PHP que permiten tener más estructuradas las cosas: sistemas de plantillas como Smarty [php.net], frameworks MVC (Modelo Vista Controlador), e incluso la propia actualización de PHP4 a PHP5. Hasta que te das cuenta de que PHP, y todo su plataforma de desarrollo conjunta formada por estas herramientas, tiende a parecerse a cosas más robustas y estructuradas como las que existen para el mundo Java.
También he tocado Java con aplicaciones web, un poquito de JSP's y demás, pero no demasiado. Porque la verdad, yo también soy un poco reticente a Java, por el hecho de que no es software libre (no quiero iniciar un flame please).
Por eso, como veía que mi tendencia era llegar a Java sin usar Java, eché un vistazo a .NET. La plataforma .NET sin duda ofrece mucha productividad y el lenguaje C# se puede codear perfectamente con Java (incluso es mejor en algunas cosas EMNTHO, pero esto ya es discutible). Sin embargo, lo que echaba de menos con .NET eran dos cosas:
a) Una plataforma de desarrollo multiplataforma.
b) La tendencia "inherente" a los proyectos y plataformas de desarrollo del mundo Java de estructurar completamente y de forma exquisita el código, obteniendo capas de abstracción de la más mínima cosa.
El punto (b) viene fundado, sobre todo, por la tecnología ASP.NET con la que irremediablamente he tenido que tratar a la ahora de utilizar la plataforma .NET. La versión 1.1 para empezar tiene importantes fallos concernientes a la arquitectura, como que resulta difícil hacer páginas web que validen con los estándares, y sobre todo, páginas web accesibles, en las que el JavaScript sea solamente una opción. Ofrece una capa de abstracción que hace que el programador se olvide de todo, y que incluso no necesite saber ni CSS ni JavaScript. Esto es en mi opinión un error. Además, desde el punto de vista del backend de una aplicación web, con ASP.NET es más difícil elaborar una estructura MVC (al parecer, Microsoft se enorgullece de hacer desaparecer, por arte de magia, la capa del Controlador).
Sin embargo, en el mundo Java, un ejemplo del punto (b) puede ser el proyecto Maverick [sourceforge.net], que ofrece un framework MVC para desarrollar aplicaciones web. Algo bastante elegante.
¿Qué decisión tomé entonces? Una intermedia: no usar Java (J2EE), pero tampoco ASP.NET, ni nada que tenga que ver con Microsoft. Actualmente estoy utilizando un framework MVC denominado "Maverick.NET" [sourceforge.net], el cual es un port de Maverick de Java a C#, y me está dando unos resultados muy buenos. Para desarrollar utilizo MonoDevelop [monodevelop.org], y para los deployments utilizo el runtime de Mono [mono-project.com], Apache 2.0 [apache.org] y el módulo mod_mono [mono-project.com] que permite reenviar las peticiones al servidor XSP [go-mono.com] de Mono.
Para la vista estoy utilizando serialización XML de las clases del controlador de manera que su resultado es transformado en XHTML mediante XSLT. Para la vista también utilizo CSS2/CSS3 (usando IE7/FixIE/IEpatch [edwards.name]) y JavaScript no intrusivo (Unobstrusive JavaScript) [blogspot.com], al igual que JavaScript agnósitco ("crossbrowser") para la captura e implementación de eventos, y demás cosas, e incluso un poquito de AJAX [wikipedia.org]...
Para el controlador uso lenguaje C# compilado en una librería .DLL. No necesito a Microsoft para nada porque he conseguido hacer funcionar Maverick.NET con Mono.
Y para el modelo, me había planteado utilizar algún sistema de mapeado objeto-relacional, como NHibernate [sourceforge.net], pero me estoy dando cuenta de que al final lo más eficiente, y EMO lo que es el futuro, son las bases de datos ya de por sí orientadas a objetos como DB4O [mono-project.com] (¡y te olvidas del SQL!).
Agradecería, pues, cualquier sugerencia/comentario/crítica, para mejorar la arquitectura y forma de desarrollar que he escogido por el momento ;)
Saludos.
PD: Artículo original [blogspot.com].
Desde la ignorancia
(Puntos:1)( http://barrapunto.com/ | Última bitácora: Viernes, 27 Enero de 2006, 01:24h )
Sinceramente, casi no lo he usado y a lo mejor mi opinion está un poco fuera de lugar, pero no creo que sea ni tan potente como C++ ni tan bueno como para eclipsar a Java.
¿Podríamos pensar entonces en un JPHP para abarcar proyectos grandes y pequeños? No se, pero pienso que fue un intento de ser mejor que Sun en algo, ya que, a mi opinión, Visual Basic no le llega ni a los talones a Oracle Forms Developer (hablando de proyectos de gestión de datos); porque aunque Visual sea muy utilizado, Oracle Forms te da la solidez inmensa en cuanto a base de datos y puedes hacer de TODO muy fácil y eficazmente, cosa que no lo es tanto en el primero.
------
More bended than an alcayata
Re:Desde la experiencia
(Puntos:2)( http://knocte.blogspot.com/ )
Si te hubieras leído el comentario entero te darías cuenta de que no "me voy por .NET". Después de haber mirado un poco Java/ASP/PHP, probé .NET, y me quedé con lo mejor de ello: Mono, que implementa una parte importante de .NET.
Por cierto, Mono es libre.
Vamos a ver: las especificaciones del lenguaje de java las hacen un compendio de empresas gigantescas. Teneis el codigo fuente de las librerías del sdk de java.
Eso es cierto, pero el código no es libre.
Hay maquinas virtuales de java de proyectos libres ¿que mas quereis?
Las máquinas virtuales libres, al parecer, dejan bastante que desear todavía.
Lo mismo te podría decir yo a ti: ¿qué manía a .NET? Si con Mono puedes utilizar herramientas libres. Y además, no te ciñes a un sólo lenguaje, puedes utilizar C#, Python, VB.NET (aunque el soporte de este lenguaje no es completo aún), ¡incluso Java! (y también había un proyecto para hacer que PHP emitiera código intermedio de .NET, aunque creo que está abandonado).
Re:Pues yo no te entiendo a ti
(Puntos:2)( http://barrapunto.com/ | Última bitácora: Lunes, 24 Febrero de 2014, 10:03h )
no, que va... classpath para empezar y se esta desarrollando Harmony, apadrinada por Apache, IBM y mas empresas y que seguramente usara parte de classpath... no, no hay implementaciones libres, que va...
ahora mismo el soporte libre que tiene classpath para java es casi el mismo que mono para .net... es decir, la mayoria de las cosas funcionan pero no todas
en cuanto a sun y ms... de momento sun ha liberado mas cosas que ms... y por las noticias que se oyen al parecer se estan dando cuenta de su error al no liberar java, el futuro dira... ms? bueno, llevo tiempo leyendo cosas sobre que microsoft podria cambiar en cualquier momento eso de "especificacion libre" y entonces todo mono y demas a tomar por culo...
otra cosa es que tu solo sepas VB.net. Eso lo entenderia...
Dale fuego a un hombre y estara caliente un dia, prendele fuego y estara caliente el resto de su vida.