PHP Vs Java

10
96973

PHP Vs Java

Índice de contenidos

1. Introducción

El cometido de este documento es el de realizar un análisis en profundidad de dos tecnologías ampliamente aceptadas por la comunidad diseñadora de portales web, como son PHP y Java.

Se analizarán todos los aspectos importantes y distinguibles de ambas tecnologías y que debemos tener en cuenta a la hora de decantarnos por uno u otro ante un nuevo proyecto, concretamente, un portal web. Se prestará especial antención a los puntos fuertes y débiles de cada lenguaje y cómo su rival se comporta ante eso.

PHP y Java son dos tecnologias que desde su lanzamiento siempre han venido precedidas de debates acerca de las ventajas y desventajas. Moviéndonos por el mundo de los desarrolladores nos damos cuenta que como en la mayoría de los temas, no existe una opinión general acerca de cual es mejor. La conclusión final nunca es blanco o negro, sino que siempre cada una tendrá sus seguidores y detractores.

Debido a la cantidad de variables que de deben tener en cuenta a la hora de elegir una opción se ha creado este documento, con la intención de dar un poco de luz al asunto.

2. Una mirada a PHP

PHP (PHP Hypertext Pre-processor) se trata de un lenguaje de programación interpretado en el servidor (server-side scripting). Creado originalmente por Rasmus Lerdorf en 1994, en la actualidad está publicado bajo la licencia PHP, considerada por la Free Software Fundation como una una licencia de Sofware Libre.

En la actualidad es ampliamente usado en entornos de desarrollo web por su facilidad de uso, su integración perfecta con HTML y su versatilidad de uso en diferentes Sistemas Operativos. Tanto es su expansión, que se calcula su uso en torno a más de 20 millones de sitios web y un millón de servidores en todo el mundo. Podemos ver una gráfica de la web oficial de PHP (www.php.net) en la que nos muestra el crecimiento desde el año 2000 al 2007.

PHP Usage

En la actualidad, la versión estable más reciente del lenguaje es la “5.2.12” del 17 de Diciembre de 2009. Con el lanzamiento de PHP5 en Junio de 2004 se introdujeron importantes mejoras tales como mejoras de rendimiento, mejora en el soporte de Programación orientada a Objetos, soporte mejorado de conexiones a Base de datos, etc. Con vistas a futuro, se han difundido diversas noticias de la salida próxima de PHP6 con diversas mejoras aunque aún no se ha desvelado ninguna fecha concreta.

Con el crecimiento de PHP surgieron proyectos asociados, tales como Frameworks, IDE’s (Entorno de desarrollo integrado) que le han dado al lenguaje una robustez y consistencia aún mayor y que trataremos posteriormente.

Otro aspecto a tener en cuenta y que nos da confianza del lenguaje, es el hecho de que muchas de las páginas con mayor número de visitas del planeta hayan sido desarrolladas utilizando esta tecnología. Las detallaremos más adelante.

3. Una mirada a Java

Java como lenguaje de programación, al contrario que PHP no puede ser tratado de una manera tan a la ligera y superficial, ya que si estamos hablando del desarrollo web, debemos centrarnos en un sector de todo el mundo que rodea a Java, concretamente en el de JSP, Servlets y demás.

De manera genérica, se trata de un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. Todo el desarrollo del lenguaje fue controlado por el Java Community Process por parte de Sun hasta que finalemente entre Noviembre de 2006 y Mayo de 2007, estos liberaron la mayor parte de sus tecnologías bajo licencia GNU GPL, por tanto podemos considerar el lenguaje Java como se Software Libre.

Si echamos un vistazo a la actualidad, nos damos cuenta de que java se ha convertido en uno de los lenguajes más usados y más demandados por los desarrolladores. Para dar consistencia a esta suposición, observamos en forma de gráfica, los lenguajes más buscados en los principales buscadores (actualizado a 29 de Diciembre de 2009).

Java Usage

La comunidad Java es actualmente uno de los grupos más extendidos en el universo de Internet y diversos sitios web dedicados al apoyo, información y soporte de esta tecnología. Según avancemos en su análisis iremos nombrando algunas de ellas.

4. Análisis

4.1. Modularización

Por el término Modularización entendemos la separación modular de un sistema o aplicación sea cual sea su naturaleza o propósito. Concretamente en este documento, al tratarse de un análisis entre dos tecnologías de desarrollo web, consideramos el término Modularización como la separación en capas definidas en un modelo MVC (Modelo Vista-Controlador). La modularidad de un sistema tiene vital importancia en el aspecto de la consistencia, robustez, mantenibilidad y demás aspectos que detallaremos más adelante.

Posiblemente en esta característica se apoyaren otras que veremos posteriormente por lo que debemos prestarla especial atención. Atendiendo a la definición y estructura de PHP y Java podemos decir que existe una gran diferencia entre ambos en este ámbito.

La tecnología Java usada en cualquier portal web posee una estructura claramente diferenciada, pudiendo diferenciar con facilidad el modelo MVC con sus diferentes módulos:

Layers

En cuanto a PHP, podemos decir que perdemos un tanto la pista de la modularidad que hemos destacado en java puesto que todas las capas lógicas son implementadas en un mismo archivo .php.

4.2. Mantenibilidad

La mantenibilidad del sistema es una parte fundamental en el ciclo de vida de cualquier proyecto que estemos tratando, y está estrechamente relacionada con la tecnología que hayamos elegido en la etapa de diseño.

Para realizar el análisis de las técnicas que estamos tratando debemos remontarnos de nuevo al punto anterior para conseguir sacar una conclusión firme. Un sistema en el que exista una estructura clara de sus componentes será más facilmente mantenible en un futuro ya que será necesario el seguimiento de una metodología ya definida, lo que evitará un empobrecimiento de su código y por tanto de su rendimiento.

4.3. Crecimiento del sistema

Cuando se realiza el diseño de un proyecto y se elige una tecnología a usar, durante la etapa de desarrollo se debe orientar el proceso al pensamiento de que una vez implementado y puesto en funcionamiento, serán necesarias nuevas mejoras, que no deben suponer un coste demasiado elevado ni que mucho menos produzca un empobrecimiento del sistema actual.

Por experiencia sabemos que una vez finalizado el desarrollo, puede ocurrir que las mejoras del sistema no sean implementadas por su programador original y sí por otra persona o empresa externa. El hecho de que PHP sea una técnica poco estructurada y que el desarrollador no sea pleno conocedor de la estrategia seguida en la programación original, puede dar origen a un empobrecimiento del código, repercutiendo normalmente a su rendimiento.

Grow

Aunque lo dicho anteriormente sea un hecho, siempre debemos mencionar que todo está supeditado a la experiencia, habilidad y conocimiento del programador de las mejoras.

4.4. Coste de desarrollo

El coste estimado en un proyecto PHP siempre será menor que en un proyecto Java. Mientras que la programación de un sistema PHP es mucho más directa con resultados inmediatos, el uso de Java supone el montaje de la estructura mencionada en los puntos anteriores, lo que alarga el tiempo de desarrollo y con esto, su coste.

Otro punto a tener en cuenta en la estimación de costes es el hecho de que, para la programación de un sistema java es necesaria mayor preparación y experiencia, lo que puede aumentar el coste total.

Toda inversión en un proyecto debe ser estimada de una manera realista, teniendo en cuenta la magnitud del mismo y echando un vistazo a largo plazo. El sistema Java está más orientada a grandes proyectos ya que, como hablaremos más adelante proporciona una mayor escalabilidad que PHP.

4.5. Formación

Está claro que para lograr el éxito en un sistema, este ha debido ser diseñado y desarrollado por los mejores y en su mejor versión. A los costes de desarrollo mencionados anteriormente debemos sumar otros, que si bien pueden no ser económicos, también debemos tener en cuenta cuando diseñamos un proyecto Software.

Como llevamos viendo desde el inicio del documento, está demostrado que Java es una tecnología mucho más amplia y desarrollada que PHP, lo que nos llevará a un coste de formación mayor.

4.6. Integración externa

La comunidad informática y desarrolladora de Software es muy grande y extensa, lo que siempre es una ayuda y apoyo a la hora de embarcarnos en un nuevo proyecto. Nos referimos a “Integración externa” como el uso de herramientas, métodos y funcionalidades desarrollados por otros programadores y que son integrables fácilmente en nuestro sistema.

El mundo Java es muy ámplio y variado. Esto supone una ventaja tanto en el ámbito del desarrollo como en su repercusión final. Por un lado existen diferentes Frameworks que facilitarán la tarea de los programadores, pudiendo obtener los mismos resultados (o incluso mejores) que sin ellos en un tiempo más breve. Por otro lado, existen lo que podemos llamar “módulos” ya desarrollados y de libre distribución que podemos usar en nuestro proyecto.

Si realizamos la comparación con PHP, existe una gran diferencia, ya que este último como vimos al principio es mucho menos estructurado (podemos llamarlo “all-in-one”) y es mucho más complicado encontrar un módulo complejo completo integrable con facilidad.

4.7. Seguridad

El aspecto de la seguridad siempre ha sido un punto a tener muy en cuenta en cualquier sistema informático y un portal web es especialmente vulnerable por estar expuesto a todo el publico en internet.

Uno de los ataques a los portales y aplicaciones web se realizan en la validación de usuarios, punto bastante vulnerable si no se ha desarrollado el sistema a conciencia. Java implementa en diferentes niveles un sistema seguro de validación que en PHP echamos en falta.

Como sistemas de seguridad usados en proyectos Java cabe destacar los que se implementan a nivel de Servidor de aplicaciones (como “JAAS”) y los que están incluidos en Frameworks externos (como por ejemplo “Spring Security” o “ACEGI”), ámbos eficaces y tranparentes a usuarios y programadores. En el desarrollo de un portal web con PHP debemos controlar la seguridad de acceso a nuestro sistema de una forma mucho más manual, realizando comprobaciones minuciosas de los diferentes ataques que podemos recibir (como por ejemplo SQL Inyection).

4.8. Rendimiento

Quizás una de las ventajas de PHP frente a Java sea en cuestión de rendimiento ya que el primero es mucho menos pesado, lo que produce una sensación al usuario de rapidez y mayor usabilidad.

4.9. Escalabilidad

Uno de los temas que siempre ha seguido al debate de PHP o Java ha sido el tema de la escalabilidad del sistema, es decir, propiedad por la cual un sistema no empeora su rendimiento y funcionalidad ante un número creciente de usuarios.

Desde hace mucho tiempo siempre se ha dicho que la tecnología Java es mucho más escalable que PHP, demostrándose la pérdida de rendimiento de este último ante un aumento considerable de usuarios concurrentes. Con PHP5, los desarrolladores y seguidores de esta tecnología apoyan que dicha deficiencia ha sido solucionada aunque sigue sin demostrarse de manera real.

5. Conclusiones

Como en todos los estudios, las conclusiones nunca son Blanco o Negro, siempre existen diferentes variables que nos influyen a la hora de tomar una decisión. En este caso concreto quizás las variables más importantes a tener en cuenta sean el propósito del portal web y sus dimensiones.

Se deben sopesar todos los puntos descritos anteriormente para encontrar un equilibrio entre lo que la tecnología nos ofrece y lo que necesitamos nosotros de ella. Para intentar dar una valoración final y a modo de resumen, plasmamos en una gráfica a modo estimativo la comparación entre las dos tecnologias tratadas.

Conclusions

6. Referencias

Un saludo.

Rubén Gómez

mailto:rgomez@autentia.com

10 COMENTARIOS

  1. Utilizo ambos lenguajes y he leido bastante sobre comparativas de este tipo y estas es una de las peores.
    Java es un lenguaje muy potente y al ser compilado mas eficiente que cualquier lenguaje interpretado como PHP.
    Algunas puntualizaciones:

    1.Modularización: \\\»todas las capas lógicas son implementadas en un mismo archivo .php\\\». Entiendo que por desconocimiento no sabe nada de frameworks MVC para PHP5 como Symfony o Zend Framework.

    2.Mantenibilidad: ver punto 1.

    3.Crecimiento del sistema: ver punto 1 y la documentacion del proyecto que no tiene nada que ver con la tecnologia elegida para desarrollar.

    4.Coste de desarrollo: Todo dependera del alcance y complejidad del proyecto. Existen profesionales con altos conocimientos de analisis que usan PHP a diario

    5.Formacion: Siguiendo con el punto 4. A mas complejidad mas formacion. En Java se realizan proyectos pequeños que no requieren conocimientos de los mejores gurus

    6.Integración externa: De acuerdo en este punto ya que al ser mas usado para entornos empresariales Java es normal encontrar mas librerias/proyectos para integrar con plataformas legacy.

    7.Seguridad: ¿ Quiere usted decir que los proyectos no tienen errores de seguridad simplemente por usar Acegi ? A parte le doy la razon en la calidad de Acegi y similares

    8.Rendimiento \\\»Java es ejecutada en cliente mientras que PHP es ejecutado en Servidor, lo que libera de tareas al cliente y suele mejorar su rendimiento.\\\»
    En PHP se puede crear aplicaciones cliente mediante la libreria PHP/GTK pero si no consideramos esto pues comparemos PHP vs Servlets/JSP que seria una comparativa mas justa.

    9.Escabilidad \\\»propiedad por la cual un sistema no empeora su rendimiento y funcionalidad ante un número creciente de usuarios\\\»
    Si algunos de los sitios de internet mas visitados (wikipedia y facebook entre otros) utilizan PHP puede ser que esten equivocados y desaprovenchado sus servidores.
    Lea el articulo de Oreilly sobre este tema http://onjava.com/pub/a/onjava/2003/10/15/php_scalability.html

    En mi opinion no se puede comparar Java en su conjunto como usted hace: JAVA SE y JAVA EE contra un lenguaje intepretado como PHP y algunas librerias.

    PHP va retradasado en cuanto a JAVA en ciertos aspectos (OOP,Entorno de desarrollo,Librerias profesionales) pero avanza cada dia y funciona para ciertas tareas haciendolas igual o mejor que otras.

    Como comenta en cierto libro hay utilizar la herramienta mas adecuada.

    Saludos

  2. Muy elaborado el articulo, sin embargo esta parcializaso, esto es compresible y natural en cualquier programador que desarrolla tecnicas de programacion en algun lenguaje y lo defiende a capa y espada.

    Los aspectos tomados en cuenta para el analisis son correctos sin embargo me llamo mucho la atencion que se mencione en el tema de seguridad los ataques de inyeccion de SQL, cuando estos ya no son novedad, puesto que cualquier otro lenguaje decente posee funciones muy maduras de filtrado de textos y URLS, si una web es rota por un ataque de este tipo ya no es problema del lenguaje; es deficiencia del programador.

    Esto me hace recordar al eterno debate de los motores Diesel y gasolina, sobre cual de ellos es mejor, cada grupo de un lado echando barro al otro y defendiendo el suyo, lo cierto es que pasaron las decadas y las manufacturas de ambos se mantienen,
    estoy convencido que hay mucha gente que se esmera en enseñar el interior de los procesos cuando lo que finalmente valen los RESULTADOS FINALES. Sin salir de esta idea menciono al famoso escarabajo VOLKSWAGEN, fue tan util y aceptado por el mundo y los usuarios finales poco se interesaron en detalles tecnicos de produccion, tan solo encendieron el motor y comenzaron a andar….

    Programo en Java me parece una excelente saga de herramientas, es enorme, tambien programo en PHP que me parece muy fexible y rapido. Sin embargo
    no me aventuraria a decir que uno es mejor que otro por una razon muy sencilla :
    DEPENDE DE LO QUE QUIERAS LOGRAR EN TIEMPO Y DINERO, Creanme que para un cliente no es sencillo entender cuestiones de MVC, capas de abstraccion, curvas de desarrollo Frameworks, etc, esos son detalles que manejamos nosotros los programadores, ellos quieren RESULTADOS A CORTO PLAZO.

    Para terminar quisiera agregar algo al articulo; ya que no se ha mencionado: PHP cuenta tambien con frameworks que siguen la filosofia MVC, y cubriendo la mayoria de los 9 aspectos mencionados. Y es por esto ultimo que un lenguaje no debe de verse como otra cosa que no sea una herramienta lista para usarse sin entrar en comparaciones , los resultados y las tecnicas y los limites los pone la otra herramienta, quizas la mas maravillosa por sobre todas las cosas : LA MENTE HUMANA.

    Un saludo muy cordial a los que lean este post:

    Julian Ramirez Tenorio
    hipogea@hotmail.com
    Lima Peru

  3. Me pareció interesante tu artículo, pero no comparto algunos de tus puntos como lo de Modularización, mantenibilidad, entre otros.

    En la actualidad es posible implementar patrones de diseño en PHP utilizando un framework propio o utilizando frameworks de terceros como Symfony o Zend Framework.

    Estos framework generan un montón de ventajas como: reducen el tiempo de desarrollo, escalabilidad, modularización, Seguridad entre otros.

    De todas formas JAVA es mas grande y está mas avanzado en el tema de POO.

    Bueno un saludo a todos los lectores de este POST desde Lima-Perú 🙂

  4. hola A todos

    mi nombre es rocha y tengo una duda,

    He venido trabajando con java durante el desarrollo de mi carrera, ahora en la parte final para el desarrollo de mi tesis, me recomendaron PHP, lo estudie y en menos de un mes concidero que lo manejo a tal grado que puedo realizar un desarrollo si ningun problema.

    mi duda es la siguiente:

    Tengo que presentar mi tesis de grado, y es orientada a la WEB en este caso lo pensaba hacer en JSP.

    Pero viendo la fascilidad de php , he entreado en dudas, sobre que lenguaje escojer, ademas que el tiempo de desarrollo en php, es mucho mas rapido, he conocido el framework kumbiaPHP (http://www.kumbiaphp.com/blog/) y me parece super facil.

    Mi proyecto se trata de procesos , consultas, validaciones , esta orientado a una industria en la parte de produccion, es decir que constantemente estara atentiendo multiples peticiones y realizando diferentes procesos.

    Seria bueno reemplazar a java por php teniendo en cuenta la anterior informacion? ademas que cuento con pocos meses para su desarrollo?

  5. Buenas noches gracias por la oportunidad para expresar mi opinión sobre el tema PHP VS JAVA, primeramente quiero saludar al compañero y colega Rubén y demás especialistas de esta página.
    Mi opinión favorable y recomendación siempre será hacia php ya que lo considera más rápido y flexible que JAVA además en la actualidad la combinación PHP+ JQuery permite crear sitios web rápidos, poderoso y seguros.
    Actualmente implemente un sistema de control de Nomina y personal al cual se conectan más de 30 personas y el tiempo de respuesta es optimo, claro cuento con un servidor con hardware muy poderoso y como sistema operativo Windows server 2010 y NO PUEDO QUEJARME.

    Gracias por la oportunidad escribió David Rafael Blanco León desde Caracas Venezuela.

  6. Parece que el que hizo el artículo le gusta programar en Java porque lo defiende de una manera increíble con poco fundamento real.

    Yo uso el Framework Codeigniter en PHP para crear aplicaciones MVC y como framework este la puedes ejecutar en un mismo servidor como monocapa o separarlo en múltiples capas.

    Con respecto a la seguridad yo llevo casi 10 años programando en java y php y puedo decir con propiedad que java es mas inseguro que php de manera nativa, incluso con algún ids o sistema de seguridad adicional por los siguientes motivos:

    * Java ha presentado mas agujeros de seguridad críticos en el tiempo que PHP y su mayoría explotables remotamente así que aunque hagas un sitio web que no tenga inyecciones sql, csrf o xss será vulnerable igual debido a su motor.

    * PHP no utiliza sistemas adicionales de seguridad sino que se basa en funciones creadas para prevenir agujeros de seguridad ajustándose a los estándares de cada tecnología lo cual es mucho mas importante que lo que hace Java ya que Java te puede dar un falso positivo y si tiene unyección sql tenga los sistemas que tenga siempre podrá haber alguna forma de bypasearlos y explotarlos, en cambio con php esto no sucede como por ejemplo el uso correcto de $mysqli->real_escape_string() que se utiliza para escapar un valor a una secuencia segura utilizando los caracteres de secuencia de escape diseñado por mysql y no por php, php solo se ajusta, lo mismo sucede con html, php utiliza htmlspecialchars($foo, ENT_QUOTES) para escapar código html e imprimirlo y no interpretarlo utilizando la secuencia de escape estandarizada por w3c previniendo los xss, nuevamente php se adapta y previene y no tapa con parches como lo hace java, en java no tienes todas las funciones nativas para prevenir la cantidad de agujeros de seguridad que puede prevenir php tan solo adaptándose.

    Bajo estos argumentos puedo decir con una base real que php puede lograr ejecutar una aplicación web mucho mas segura de lo que puede hacerlo java, si a esto le sumas su rendimiento y le sumas codeigniter para su separación de capas, su bajo coste y flexibilidad (puedes cambiar una línea de código sobre la marcha no como java que necesitas compilar y subir todo nuevamente tienes un sistema mucho mejor valorado tanto en su desempeño como en su coste.

  7. En mi experiencia, si quieres algo de desarrollo rápido y 100% web, es mejor PHP. La curva de aprendizaje es menor, y se integra fácilmente. Claro pienso que necesitaras aprender algo de Javascript para hacer mas completo el desarrollo.
    JAVA es si quieres algo mas robusto y con mas interacción del lado del cliente, o si estas mas orientado al escritorio. Adicionalmente, en tiempo de ejecución es mas rápido que PHP. La desventaja de JAVA, es que al parecer es considerado inseguro. Por ejemplo Chrome ya no soporta applets, y en general parece que se esta relegando a JAVA.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad