Anda di halaman 1dari 13

ANLISIS COMPARATIVO DE LAS HERRAMIENTAS DE PROGRAMACIN JAVA Y PHP

En este documento se pretende comparar las plataformas de desarrollo PHP frente a la tecnologa Java. Para ello ser necesario dar una definicin de cada uno de ellos. PHP: (PHP Hypertext Preprocessor) Un lenguaje de scripting. El trmino de scripting principalmente se refiere al hecho de que este lenguaje necesita de otro programa sobre el cual ejecutar los scripts, trmino con el cual se denomina al cdigo escrito en un lenguaje de scripting. Este otro programa es encargado de traducir el cdigo cada vez que sea necesario ejecutarlo, es decir la traduccin se realiza una y otra vez en tiempo de ejecucin y sin ningn proceso previo de traduccin. Java: Un lenguaje de programacin orientado a objetos. Como lenguaje de programacin su cdigo es primeramente compilado es decir traducido a un formato legible para la mquina (en este caso no directamente para permitir la caracterstica de portabilidad) permitiendo su verificacin en tiempo de compilacin. Java es un lenguaje portable, es decir se puede ejecutar aplicaciones escritas en Java en cualquier entorno que disponga del intrprete de cdigo compilado (bytecode) o Maquina Virtual de Java (JVM).

Anlisis de las caractersticas tcnicas: Modularizacin Modularizacin es la separacin modular de un sistema o aplicacin sea cual sea su naturaleza o propsito. La modularidad de un sistema tiene vital importancia en el aspecto de la consistencia, robustez, mantenibilidad y dems aspectos que detallaremos ms adelante. Atendiendo a la definicin y estructura de PHP y Java podemos decir que existe una gran diferencia entre ambos en este mbito. La tecnologa Java usada en cualquier portal web posee una estructura claramente diferenciada, pudiendo diferenciar con facilidad el modelo MVC con sus diferentes mdulos:

La tecnologa PHP en su mbito no tiene definida esta estructura, pero en la actualidad existen herramientas que permiten separar en capas cada aspecto que involucra una aplicacin de forma similar a como lo hace Java.

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 tecnologa que hayamos elegido en la etapa de diseo. Para realizar el anlisis de las tcnicas que estamos tratando debemos remontarnos de nuevo al punto anterior (modularizacin) para conseguir sacar una conclusin firme. Un sistema en el que exista una estructura clara de sus componentes ser ms fcilmente mantenible en un futuro ya que ser necesario el seguimiento de una metodologa ya definida, lo que evitar un empobrecimiento de su cdigo y por tanto de su rendimiento. Crecimiento del sistema Cuando se realiza el diseo de un proyecto y se elige una tecnologa a usar, durante la etapa de desarrollo se debe orientar el proceso al pensamiento de que una vez implementado y puesto en funcionamiento, sern 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. Ambos lenguajes poseen herramientas que nos permiten estructurar nuestro proyecto de manera eficiente, pero JAVA tiene una ventaja que radica en el hecho de que la reglas de programacin que nos impone nos obliga a separar los elementos de manera ms ordenada.

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.

Coste de Desarrollo El coste estimado en un proyecto PHP siempre ser menor que en un proyecto Java. Mientras que la programacin de un sistema PHP es mucho ms directa con resultados inmediatos, el uso de Java supone el montaje de la estructura mencionada en los puntos anteriores (La separacin por capas del proyecto en desarrollo), lo que alarga el tiempo de desarrollo y con esto, su coste. Sin embargo, en el caso de Java este coste de desarrollo tiende a disminuir gradualmente a travs del tiempo debido a las ventajas que Java ofrece sobre todo en la labor de mantenimiento del sistema gracias a su forma de desarrollo. Otro punto a tener en cuenta en la estimacin de costes es el hecho de que, para la programacin de un sistema Java es necesaria mayor preparacin y experiencia, lo que puede aumentar el coste total. Toda inversin 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 ms orientado a grandes proyectos ya que, como hablaremos ms adelante proporciona una mayor escalabilidad que PHP. Formacin Est claro que para lograr el xito en un sistema, este ha debido ser diseado y desarrollado por los mejores y en su mejor versin. A los costes de desarrollo mencionados anteriormente debemos sumar otros, que si bien pueden no ser econmicos, tambin debemos tener en cuenta cuando diseamos un proyecto de software. Como hemos visto desde el inicio del documento, est demostrado que Java es una tecnologa mucho ms amplia y desarrollada que PHP, lo que nos llevar a un coste de formacin mayor. PHP es mucho ms fcil. La curva de aprendizaje de Java es ms inclinada que la de PHP porque el lenguaje es ms rico y ms poderoso, claramente orientado a aplicaciones de gran escala. Java es un lenguaje para programadores profesionales. Este ofrece un modelo que permite distribuir responsabilidades entre miembros del equipo de manera precisa, de acuerdo a sus habilidades (por ejemplo un grupo se encarga de la presentacin, otro de la lgica de negocios y otro de la instalacin y manteniendo de la aplicacin). PHP es bueno para proyectos pequeos o donde el nmero de desarrolladores no requiere mucha coordinacin. Con este lenguaje es posible desarrollar ms rpido y es ms fcil de depurar en proyectos pequeos. Java se ha convertido en un entorno de programacin bastante popular, la cantidad de documentacin, bibliografa, bibliotecas de clases y proyectos disponibles as lo reflejan (http://www.tiobe.com/tpci.htm). Integracin externa La comunidad informtica 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 Integracin externa como el uso de

herramientas, mtodos y funcionalidades desarrollados por otros programadores y que son integrables fcilmente en nuestro sistema. Java y PHP cuentan con una comunidad de desarrolladores bastante amplia y variada. Esto supone una ventaja tanto en el mbito del desarrollo como en su repercusin final. Por un lado existen diferentes frameworks (herramientas de desarrollo de software) que facilitarn la tarea de los programadores, pudiendo obtener los mismos resultados (o incluso mejores) que sin ellos en un tiempo ms breve. Por otro lado, existe lo que podemos llamar mdulos ya desarrollados y de libre distribucin que podemos usar en nuestro proyecto. Seguridad El aspecto de la seguridad siempre ha sido un punto a tener muy en cuenta en cualquier sistema informtico y un portal web es especialmente vulnerable por estar expuesto a todo el pblico en internet. Uno de los ataques a los portales y aplicaciones web se realiza en la validacin de usuarios, punto bastante vulnerable si no se ha desarrollado el sistema a conciencia. Java implementa en diferentes niveles un sistema seguro de validacin que en PHP echamos en falta. En el desarrollo de un portal web con PHP debemos controlar la seguridad de acceso a nuestro sistema de una forma mucho ms manual, realizando comprobaciones minuciosas de los diferentes ataques que podemos recibir (como por ejemplo SQL Inyection, que no es ms que insertar o "inyectar" cdigo SQL invasor dentro del cdigo SQL programado, a fin de alterar el funcionamiento normal del programa y lograr as que se ejecute la porcin de cdigo "invasor" incrustado, en la base de datos.). Rendimiento En cuanto a rendimiento, segn las pruebas realizadas ambos lenguajes tienen un desempeo muy parecido, la variacin de tiempos entre Java y PHP se da dependiendo del tipo de procesos y la cantidad de solicitudes realizadas al servidor en el que est corriendo la aplicacin. Este aspecto ser evaluado con ms profundidad en la seccin pruebas de software. 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 nmero creciente de usuarios. Desde hace mucho tiempo siempre se ha dicho que la tecnologa Java es mucho ms escalable que PHP, demostrndose la prdida de rendimiento de este ltimo ante un aumento considerable de usuarios concurrentes. Con PHP5, los desarrolladores y seguidores de esta tecnologa apoyan que dicha deficiencia ha sido solucionada aunque sigue sin demostrarse de manera real.

Conclusiones del Anlisis de las caractersticas tcnicas Es necesario mencionar que no se puede afirmar tajantemente que una herramienta sea mejor que la otra; lo que se comprob es que cada una posee fortalezas y debilidades ante determinadas circunstancias Para intentar dar una valoracin final y a modo de resumen, plasmamos en una grfica a modo estimativo la comparacin entre las dos tecnologas tratadas.

Pruebas de Software

Como parte del estudio de las tecnologas se realiz un conjunto de pruebas de software para cuantificar la respuesta o el rendimiento de cada una bajo las mismas condiciones. Estas fueron las siguientes: Prueba 1 Consisti en la elaboracin de un programa de consola que tuviera los elementos bsicos (interacciones, salidas por consola). Para ello se ejecut una interaccin de 100000 veces. Resultados en microsegundos: Lenguaje Java PHP T1 1.94 ms 849 ms T2 1.72 ms 886.06 ms T3 1.809 ms 818.85 ms

Prueba 2 Consisti en la elaboracin de un programa Web que tuviera los elementos bsicos (interacciones) y que accedieran a una BD. Para ello se ejecut una interaccin de 10 veces. Resultados en segundos: Lenguaje Java (JDBC) PHP (PDO) T1 93.80 72.3524631739 T2 151.00 121.4801205873 T3 86.80 130.4337937117

Prueba 3 Consisti en la elaboracin de un programa consola que tuviera los elementos bsicos (interacciones) y que accedieran a una BD. Para ello se ejecut una interaccin de 10 veces.

Resultados en segundos: Lenguaje Java (JDBC) PHP (PDO) T1 47.20 61.5381362200 T2 44.30 62.8474326611 T3 51.20 66.1032424688

Nota: Las pruebas 2 y 3 se realizaron ejecutando el siguiente comando de DB: SELECT COUNT(*) FROM inv_h_movim_invent WHERE fecha_proceso >=2011-0101 AND fecha_proceso <= 2011-12-31

Entre otros aspectos encontrados en la investigacin podemos mencionar los siguientes: Lenguaje ms usado Si echamos un vistazo a la actualidad, nos damos cuenta de que Java se ha convertido en uno de los lenguajes ms usados y ms demandados por los desarrolladores. Para dar consistencia a esta suposicin, observamos en forma de grfica, los lenguajes ms buscados en los principales buscadores (actualizados Abril 13 de 2011), esta tendencia se mantiene actualmente inclinndose un poco ms hacia Java. No hay que dejar de lado que aunque Java es un lenguaje altamente demandado en la actualidad PHP es el lenguaje con mayor presencia en la web.

Mercado Laboral Para establecer criterios con base para la eleccin del mejor lenguaje para iniciar desarrollos de aplicaciones Web, se realiz una investigacin de mercado para determinar la presencia de cada uno de ellos en el mbito laboral y las necesidades de las empresas para con cada uno de ellos. Se evaluaron los requerimientos para Java y PHP no solo en la cantidad de solicitudes existentes, sino tambin el ramo o tipo de empresa que lo solicita.

Este estudio fue realizado a partir de revisin de pginas de empleo a travs de la Web y algunos medios de prensa escrita; tomando como base los requerimientos de las ltimas 3 semanas. Aqu estn los resultados:
Est a dist ica d e Em p le o s por Le ng ua j e d e P ro gra m a cio n
Le ngua je / M e dio Ja v a Php A mbos Emple a t e 15 11 4 Bume r a n 12 6 3 Pe r filne t 3 4 0 P r e ns a Es cr it a 5 0 0 Comput r a ba jo 3 8 1 To t a le s 38 29 8

Ofertas de Empleo
Java 16 14 12 10 Cantidad 8 6 4 2 0 0 Empleate Bumeran Perfilnet 0 0 4 6 3 3 4 5 3 1 8 15 12 11 Php Ambos

Prensa Escrita Computrabajo

Est a d ist ica d e Em p leo s p o r L e n g u a je d e P ro g ra m a cio n y Tip o d e Em p resa Tip o d e Em p re sa/ L e n g u a je S o lu c Tecn o lo In f o rm a t ica y S ist V en t a s C o n su lt o ria S eg u ro s y Fin a n ciero s t eleco m u n ica io n e s Ot ro s S er v icio s S alu d In g e n ieria M e d io s In f o r R R HH Ed u ca cio n
J ava 14 P hp

J av a 13 2 2 1 3 3 9 2 2 0 1 0 0
A mbos

Php 1 5 4 1 1 1 9 3 1 2 1 1 1

Ambos 2 0 3 1 0 1 1 0 0 0 0 0 0

To t a l 16 7 9 3 4 5 19 5 3 2 2 1 1

12 10

8 C antidad 6 4

2 0 Soluc Tecnolo

V entas

Seguros y Financieros

Otros

Salud

M edios Infor

Educacion

Comparativa de Salarios Internacional Como sabemos, nuestra profesin cuenta con una gran variedad de tecnologas y reas de conocimiento en las que uno se puede especializar. Qu lenguajes de programacin son los ms cotizados? Cuales son las certificaciones mejor pagadas? Cul es el valor de los empleados para las empresas?. En los siguientes grficos veremos como las empresas y el mercado ha valorado a las personas basados en Conocimientos y Habilidades. Veamos los resultados: JAVA, PHP, .NET, VISUAL BASIC, COBOL

Fuente Argentina

Fuente Mexicana

PHP Ventajas y desventajas Ventajas: Muy fcil de aprender. Se caracteriza por ser un lenguaje muy rpido. Soporta en cierta medida la orientacin a objeto. Clases y herencia. Es un lenguaje multiplataforma: Linux, Windows, entre otros. Capacidad de conexin con la mayora de los manejadores de base de datos Capacidad de expandir su potencial utilizando mdulos. Incluye gran cantidad de funciones.

Desventajas: Se necesita instalar un servidor web. La legibilidad del cdigo puede verse afectada al mezclar sentencias HTML y PHP. Lenguaje Interpretado.

Java Ventajas y Desventajas.

El JDK es una herramienta libre de licencias (sin costo), creada por Sun y ahora ORACLE como dueo. Est respaldado por un gran nmero de proveedores. Existe soporte dado por Sun. Debido a que existen diferentes productos de Java, hay ms de un proveedor de servicios. Sun saca al mercado cada 6 meses una nueva versin del JDK. Es independiente de la plataforma de desarrollo. Existen dentro de su librera clases grficas como AWT y Swing, las cuales permiten crear objetos grficos comunes altamente configurables y con una arquitectura independiente de la plataforma. Permite a los desarrolladores aprovechar la flexibilidad de la Programacin Orientada a Objetos en el diseo de sus aplicaciones. Se puede acceder a bases de datos fcilmente con JDBC, independientemente de la plataforma utilizada. El manejo de las bases de datos es uniforme, es decir transparente y simple.

Desventajas:

Se necesita instalar un servidor web.

Dificultad de aprendizaje

Como ventaja para cada lenguaje de programacin y como estndar de uso para el desarrollo actual de aplicaciones de gran tamao, para ambos existen tecnologas creadas por externos llamados Framework; que son herramientas de nivel avanzado que reducen significativamente el costo hora-desarrollo debido a que nos brindan capacidades para dejar de lado todos aquellos aspectos comunes al desarrollo de aplicaciones como del desarrollo de la interfaz, el manejo eficiente de las conexiones a bases de datos, entre otras y enfocarnos en la lgica del negocio; que es realmente lo que el desarrollador debe prestar especial atencin. Entre ellos podemos mencionar: PHP Symfony, Zend, CakePHP ORM tales como Propel y Doctrine

Java Strut, Spring, Jsf ORM tales como Hibernate, Jpa