¿Suponiendo que “código / arquitectura limpios” existe una diferencia en el “esfuerzo” entre el desarrollo de aplicaciones web PHP / Java / J2EE? [cerrado]

7

Un cliente nos pidió que estimáramos el esfuerzo al seleccionar PHP como el lenguaje de implementación para su próxima aplicación basada en web. Pasamos aproximadamente una semana explorando PHP, creación de prototipos, pruebas, etc. Somos bastante nuevos en este lenguaje; puede que lo hayamos pirateado en el pasado pero, vamos con PHP-noobs pero expertos en desarrollo de aplicaciones (por falta de un mejor, palabra menos halagadora :)

Parece que si escribimos, limpiamos el código mantenible, seguimos la separación de las preocupaciones, los patrones de arquitectura empresarial (DAO, etc.), el 'esfuerzo' en crear una aplicación web basada en PHP orientada a objetos parece ser el mismo para un Basado en Java.

Aquí está nuestra ecuación para estimar el esfuerzo (tiempo de desarrollo / entrega):

ConstructionEffort = f(analysis, design, coding, testing, review, deployment)

Estábamos comparando específicamente las estimaciones de esfuerzo al crear una aplicación empresarial con lo siguiente:

  1. PHP + CakePHP / CodeIgniter (¿deberíamos haber considerado a otros?)
  2. Java + Spring + Restlet

Es una aplicación de extremo a extremo:

  1. Cliente: Javascript / jQuery + HTML / CSS
  2. Nivel intermedio / Lógica de negocios - (Todavía estoy evaluando PHP / Java)
  3. Base de datos: MySQL

Las estimaciones de esfuerzo del 1er y 3er nivel son constantes y relativamente independientes de la tecnología del nivel medio. En un nivel alto con un desglose inicial en las historias de usuario de las funciones solicitadas, así como un SWAG de alto nivel en el gran número de clases / SLOC que se requerirían para PHP, no parece diferir mucho de lo que se requiere de Lo mismo en Java. ¿Es esto correcto?

Estamos basando nuestras estimaciones iniciales en la creación de prototipos / codificación inicial que hemos hecho con PHP. Actualmente estamos ignorando la fluidez con el lenguaje como un factor, ya que será un obstáculo inicial y no un impedimento a largo plazo. también tenemos tiempo suficiente para ser bastante fluidos con PHP).

Me interesa conocer la perspectiva de los programadores con respecto al esfuerzo al crear aplicaciones similares con cualquiera de los lenguajes para justificar la elección de uno sobre el otro. ¿Nos estamos perdiendo algo aquí? Parece que vamos en contra de la creencia popular de que PHP está más rápido al mercado (o somos muy fluidos con Java y nuestra visión está nublada). No parece que se haya ahorrado ningún esfuerzo de programación / codificación de lo que hemos jugado.

    
pregunta PhD 11.02.2012 - 21:05

5 respuestas

5

Su respuesta: en absoluto

Tengo una amplia experiencia con PHP y Java y puedo decirle que si conoce PHP lo suficientemente bien y no es un noobie total y sabe que PHP puede hacer clases, interfaces (y pronto ahora incluso rasgos para reutilización horizontal) , excepciones, carga automática de clases, etc., su código PHP puede verse mejor que el código Java e incluso funcionar mejor.

¿No me crees?, revisa el marco de trabajo de Symfony para ver (IMHO) la mejor pieza de software PHP con arquitectura que hay, mira su manual para ejemplos de código.

El problema real detrás de PHP

Noobies, guiones infantiles y programadores mediocres ... hay muchos, y todos parecen recurrir a PHP por ser demasiado fáciles. PHP es demasiado fácil de hecho, y eso no es algo malo (culpe a la excelente documentación en lenguaje).

Cada idioma tiene sus defectos y, de hecho, uno de los idiomas más defectuosos es el javascript, y mire donde está ahora (sugerencia: en todas partes).

Algunas de las ventajas al seleccionar PHP

  • Mercado más amplio y barato para desarrolladores. Solo busque desarrolladores de PHP con experiencia en OO y una buena actitud hacia el aprendizaje si elige Symfony (no se arrepentirá, especialmente debido a la Doctrine , usa ORM Symfony), pero hay una curva de aprendizaje (más pequeña de lo que parece, a veces parece grande).
  • Servicios de alojamiento más baratos.
  • Más fácil de configurar sus entornos de desarrollo y producción.

Entonces, el esfuerzo podría ser más o menos igual, pero los beneficios anteriores son los que lo separan de Java, y estoy seguro de que hay más.

    
respondido por el dukeofgaming 12.02.2012 - 05:29
1

No estoy familiarizado con ningún estudio formal con respecto al esfuerzo o la productividad de PHP y Java de forma explícita. La mayoría de los trabajos analizan los idiomas de las diferentes generaciones . Sé que Java es un lenguaje de tercera generación , y estoy bastante seguro de que PHP también es un tercero. lenguaje de generacion Esto dice que, en igualdad de condiciones, el esfuerzo inherente necesario para producir el mismo producto con ambos idiomas es lo suficientemente cercano como para no tener un impacto significativo en el proyecto.

Sin embargo, se ha demostrado que el conocimiento de los lenguajes de programación indica una diferencia en la productividad de 1.20. Es uno de los factores más pequeños: la capacidad del equipo, la complejidad del proyecto, incluso las herramientas utilizadas tienen un impacto mucho mayor en el rendimiento del proyecto que los lenguajes de programación.

En resumen, la elección del lenguaje de programación tendrá una diferencia en la productividad. Sin embargo, es una de las diferencias más pequeñas. Yo estaría mucho más preocupado por los otros aspectos del proyecto.

Si te interesa más, buscaré herramientas como COCOMO y SLIM y la investigación subyacente que se incluyó en ellos. Estas herramientas de modelado de estimaciones le permiten tener en cuenta sus conocimientos y capacidades en diferentes aspectos de los proyectos y determinar cómo afectan su planificación, presupuesto y niveles de esfuerzo / productividad.

    
respondido por el Thomas Owens 11.02.2012 - 21:50
1

Se tardará menos tiempo en desarrollar la aplicación en PHP , pero lo más probable es que no sea lo suficientemente coherente arquitectónicamente y, por lo tanto, tendrá más errores. Sin embargo, el costo del cambio de la aplicación PHP será menor en comparación con la aplicación Java.

Por otro lado, la aplicación Java tardará más tiempo en diseñar y desarrollar, pero será más robusta y coherente. Es muy probable que tenga menos errores, pero será más difícil implementar cambios.

Aunque pueda parecer que los idiomas son iguales en términos de tiempo y estimación de esfuerzos, eso no es cierto. Realmente depende del dominio de la aplicación específica si será bueno usar PHP o Java. El lenguaje no importa, la tecnología sí. Y hay tecnología PHP y tecnología Java. Eso es lo que realmente debe tener en cuenta porque tanto la tecnología PHP como la tecnología Java no se pueden aplicar a algunos dominios específicos debido a las características específicas de la tecnología del lenguaje. Por ejemplo, nunca intentaría aplicar tecnologías PHP para el procesamiento de lenguaje natural. Si bien sería una sobrecarga desarrollar un panel de administración simple en Java.

dominio de aplicación es lo que realmente importa.

    
respondido por el altern 11.02.2012 - 22:29
0

En general, será más productivo en un lenguaje / marco que conozca bien. Es probable que este sea un factor más importante en la productividad que cualquier diferencia intrínseca entre los lenguajes / marcos.

Con respecto a los idiomas particulares que está considerando:

  • PHP es bueno para sitios web rápidos y dinámicos. Aquí es donde PHP tiene sus raíces.
  • Java es mejor para aplicaciones empresariales más robustas que necesitan mantenimiento / desarrollo a largo plazo

Vale la pena señalar que la plataforma de Java (que puede considerar por separado del lenguaje) es extremadamente poderosa con probablemente el mejor GC, la compilación de JIT excepcional y un enorme ecosistema de bibliotecas y herramientas. A largo plazo, esta será probablemente una opción estratégica más atractiva para aplicaciones serias.

Ya que suena como si ya tuvieras habilidades de plataforma Java pero no conocieras PHP, definitivamente elegiría Java sobre PHP para tu implementación de nivel medio. Si está interesado en una alta productividad, también puede considerar:

  • Los lenguajes JVM dinámicos como Groovy o Clojure: ofrecen toda la alta productividad de los lenguajes dinámicos modernos con las ventajas de estar bien integrados en la plataforma Java.
  • Marcos web de Java modernos, como Play o Vaadin - los marcos más nuevos son, en mi opinión, mucho más productivos que J2EE. J2EE es probablemente una exageración a menos que esté creando una aplicación empresarial de misión crítica.
respondido por el mikera 12.02.2012 - 10:21
-1

Respuesta corta rápida

PHP, es fácil & Rápido por primera vez, pero si se complica cuando se realizan las actualizaciones del código. Java puede parecer complicado al principio, pero ayudará a las cosas más adelante.

En ambos casos, considere, no solo el progr. lang Además de frameworks, también, especialmente si vas para PHP.

    
respondido por el umlcat 12.02.2012 - 01:09

Lea otras preguntas en las etiquetas