PHP vs Java

Hola a todos, me surgió la inquietud de si hay algún framework de php que le pueda competir a los frameworks JEE, ya que considero que los frameworks de java superan en muchos aspectos los de php, como seguridad, robustez, etc., pero puede que me equivoque, así que adelante con las opiniones a cerca de este tema.

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 luxspes

Frameworks PHP

Pues, depende, por un lado, si quieres lo mejor de ambos mundos, puedes usar PHP dentro de un container JEE con Quercus

Por ejemplo para transacciones distribuidas (two phase commit) hasta donde se no hay nada en PHP "nativo" equivalente a JTA/XA en Java, si necesitaras algo asi, hasta donde se, la opcion seria Quercus (con lo que basicament estarias usando a PHP como un lenguage para la JVM)

Por otro lado, si lo que buscas es un MVC para PHP esta por ejemplo: http://www.symfony-project.org/

O tambien el clasico: http://framework.zend.com/?src=hpbt

Si estas buscando un ORM (como JPA/Hibernate, pero para PHP) estan http://www.doctrine-project.org/ o http://www.propelorm.org/ entre otros...

En general, yo siento que no es bueno afirmar que PHP es inferior o superior a Java en todo sentido, mas bien se puede decir que para determinados requerimientos, PHP o Java, usados dentro del contexto de determinado framework, satisfacen de mejor o peor manera a los mismos.

Imagen de ezamudio

Framework JEE?

Qué no JEE es en sí mismo un framework? Bueno, estrictamente hablando, es sólo una especificación (en realidad un montón de especificaciones). Y el montón de frameworks web para Java existen porque JEE apesta, por eso tenemos Tapestry, Spring MVC, Play, Grails, Struts, JSF, Hibernate, Cayenne, ZK, GWT, Vaadin, iBatis, etc etc. Algunos de esos siguen uno de los estándares JEE, otros se desentienden por completo y ofrecen una manera totalmente distinta de hacer las cosas.

Imagen de bferro

JEE no apesta; huele bien

Las primeras impresiones son muy duraderas y eso sucedió con Java Enterprise Edition en sus primeras versiones.
Nada de lo que decían los enemigos de J2EE es válido para la versión actual. En mi opinión personal hasta se exageró un poco en las críticas que se hacían.
Uno de los servidores de aplicaciones de open source más usados es JBoss con su tremendo soporte para Java EE. Algunos de los frameworks que menciona Enrique no dan ningún soporte para un modelo de componentes de negocios de manera directa. Lo hacen estableciendo puentes con un contenedor de EJB´s, que entre otras cosas brindan un soporte muy sólido para transacciones distribuidas, y para separar en un servidor remoto el Biz Tier.
Muchas de las aplicaciones de "peso completo" en la industria usan Java Enterprise Edition, lo que no quiere decir que no usen Spring u otros marcos de trabajo como parte de la aplicación. Ninguno de ellos está peleado con Java EE.

JEE apesta, pero PHP solito también

Pues es que en mi opinión es cómo todo.

Aunque parte de razón tiene el Dr. Ferro, por lo que he visto de JEE la verdad se esfuerzan por hacer una especificación robusta y muy completa, pero en mi opinión dejan de lado algo muy importante: LA PRODUCTIVIDAD.

A pesar de que en Java EE se han dado algunos pasos (las anotaciones, un pequeño ejemplo), todavía no es posible hacer proyectos web rápidos con Java EE, a menos que tengas mucho código que reutilizar y eso muchas veces toca cambiar algo, así que, la productividad cae (si a esto agregamos varias configuraciones que hay que hacer, aunque eso con las anotaciones también se redujo mucho).

Con PHP, pues la verdad a mí no me gusta...Pero es eso cuestión de gusto, y la razón de ese 'disgusto', es que hay que ser extremadamente cuidadosos cuando estamos usando código para bases de datos (creo que una frase de @ezamudio dice: "A veces pienso que PHP es un DSL creado expresamente para codificar ejemplos de SQL-Injection."), supongo que existe algo cómo PreparedStatements o algo así (francamente no conozco tanto PHP). Otra cosa por la que no me gusta PHP es porqué aunque sea 'fácil' de aprender y que sea un lenguaje barato (ley de oferta y demanda) es porqué es muy lento, incluso yo cómo rubyista honorario pude notar la lentitud de PHP cuando hay mucha carga o peticiones en un sitio.

La razón de los frameworks en cualquier lenguaje de programación es complementar, no tanto sustituir.

En fin. Mi recomendación es que también evalúes tipos de proyectos que realices o vayas a realizar, muchos con Grails ya van sobrados, pero otros necesitan fijar algún requerimiento del cliente (a mi me ha tocado ver clientes que me dicen: "Esto quiero que lo hagan en ${lenguaje} con ${framework}, porqué el mantenimiento lo queremos dar nosotros", claro que ahí ya se hace una negociación por el código fuente y demás) o porqué tus requerimientos (técnicos) requieren una arquitectura específica.

Para Java esto es una bendición y maldición a la vez, cuando empiezas no sabes ni que; pero luego que entiendes un poco ya te cae la onda de porqué se manejan así.

Imagen de Algus Dark

Yo creo que PHP es muy bueno

Yo creo que PHP es muy bueno y está en crecimiento. Aclaro que tiene muchas cosas que implementar y que la JVM nos da muchas herramientas que hoy en día se aplican muy bien. Sobre los Injections tienen mucha razón, PHP sigue luchando con ello, un ejemplo son las "escaped strings".

Sobre Frameworks en PHP, hay algunos muy buenos, sin embargo, el uso excesivo de estos frameworks nos hace olvidarnos de la cuestión de seguridad y dejárselos a otras personas, cosa que no me ha gustado mucho, por eso el uso de frameworks lo dejo en algunos casos.

Saludos!

Imagen de bferro

Las aplicaciones Web con Java se hacen con JavaEE

Todo parece ser que los que dicen que Java EE apesta no se han percatado que las aplicaciones Web en Java son aplicaciones Java EE. Que cualquier aplicación Web que se hace con Spring es una aplicación Java EE. Que cualquier proyecto que se "despliegue en Tomcat u otro contenedor de servlets está haciendo uso de Java EE. Que cualquier proyecto que haga uso de JPA está usando Java EE, y así numerosos ejemplos.

Lo que fue muy criticado en su momento fue el modelo de componentes EJB, tanto en lo referente a los EJB de sesión como a los EJB de entidad, y principalmente estos últimos. Ninguna de las cosas criticables de esa versión aparecen en EJB 3.1. Más bien todo lo contrario; metieron todo lo bueno de los POJOs y añadieron cosas novedosas.

wishmaster77 dice:

A pesar de que en Java EE se han dado algunos pasos (las anotaciones, un pequeño ejemplo), todavía no es posible hacer proyectos web rápidos con Java EE ....

Ojala y puedas comentar las razones que consideras para afirmar eso. Yo en lo personal no lo creo. Quien sabe hacer un modelo de componentes de negocio con POJOs, lo sabe hacer con la misma facilidad con EJB 3.x. Tiene por supuesto que tener claro que al usar un marco de trabajo con componentes orientados a contenedores como Spring, está obligado a operar con otro contenedor de componentes de negocio. Pero ese contenedor ofrece servicios que muchas aplicaciones necesitan.

Re: Yo creo que PHP es muy bueno

Yo creo que PHP es muy bueno y está en crecimiento.

¿Seguro?. ¿Sabes qué es TIOBE?...TIOBE es el índice de los lenguajes de programación más populares, y la información que de momento nos brinda TIOBE es que PHP ha ido perdiendo gente (en la comunidad Rails se ve mucho el caso de gente que antes usaba PHP). (Link para tiobe)

Ahora con los frameworks, alguien me dijo que muy seguramente los frameworks se hicieron para cubrir una necesidad -en la mayoría de los casos, básicas-, y es por ello que tenemos ORM, sistemas de plantillas y un sin fin de frameworks para cubrir un sin fin de necesidades. Sin embargo hay que recordar que los frameworks (algunos, no todos) son experiencia de otras personas que tuvieron un problema, desde este punto de vista a mi me gusta ver si esa experiencia es la necesaria. Lo que yo no veo es lo de la seguridad, puede ser cierto que haya problemas de seguridad en un framework, pero, la seguridad se maneja de otras maneras y no se mide por el framework que usas.

Re: Las aplicaciones Web con Java se hacen con JavaEE

Pues difiero un poco con usted Dr. aunque ya me podrá corregir.

Muchos frameworks web no cumplen con la especificación Java EE, por lo tanto por muy Java que sea no es Java EE. Un ejemplo de ello es Play! (que si uno desea puede hacer un war y subirlo a un contenedor cómo tomcat o jboss, pero no es necesario para poner la aplicación en producción -ni el empaquetar a war ni subirlo al contenedor-).

Con lo de que no es posible hacer proyectos web rápidos con JavaEE, pues eso. Que si usas Spring, a configurar, que si usas JPA de mínimo el persistence.xml, que si usar X Y Z configurar....En fin, siempre que hago proyectos web con JavaEE lo que me atrasa es el configurar cada cosa, es lento. Que si, las anotaciones ayudan hasta cierto punto, pero también hay veces que son "kilos y kilos" de anotaciones solo para decir que un atributo es requerido, con una longitud de 5 caractéres y que nada puede ser nulo. Y pues los EJB, la verdad se me hicieron una de no parar, hablo de los mencionados en su comentario, bastante raro, complicado y los ejemplos que vi no mostraban una clara separación.

Para poder hacer algo rápido con JavaEE es necesario tener multitud de código que reutilizar...y vaya que con JavaEE uno teclea bastante código.

No sé, si hay mucha chamba por el lado JavaEE, si es muy usado y demás; pero de verdad es demasiada abstracción que pocas organizaciones/aplicaciones necesitan. Hace rato hubo en la red una entrada muy buena que se llama: "Keep the JVM, dump the rest", hablando precisamente de este mismo tema (JavaEE demasiado pesado para desarrollar).

Imagen de Algus Dark

En mi experiencia, PHP me ha

En mi experiencia, PHP me ha dado buenos resultados, es cierto que no me dará los mejores, pero puede resolverte problemas cómo los que me topé al tener usuarios que no querían pagar host's buenos. Sobre el TIOBE fíjate que si no había visto cómo va perdiendo PHP. Sobre los framworks sólo me refería a PHP, los que he usado si tienen ése tipo de problemas por el hecho de que se actualiza muy rápdamente PHP al ser encontrado muchos Bugs.

La verdad me gusta PHP, no creo que sea tan malo, sólo digo que en ciertos lugares me ha ayudado. No he usado Rails, pero sí que he escuchado muy buenas cosas de Rails, pretendo usarlo. Algo que es cierto es que ya no uso PHP, todo lo que hago es con Java.

Saludos!

PHP es ....

PHP es para nenas bigotonas y java es para Machos !!!, jajaja, no no se crean, al fin de cuentas son herramientas y punto. Si eres bueno en java, bien !!! FELICIDADES, si eres bueno en PHP también, con sus reservas , jejeje. :D lol !!!