Tovacompu Sistemas

Contenido

Módulos

Información del Usuario
Bienvenido, Anónimo

Membresías:
Ultimo: Cirlclehict
Total: 114

Gente en línea:
Miembros: 0
Huéspedes: 1
Total: 1

Encuesta
Cual debe ser la prioridad de trabajo del CIISCLO
Fomentar la creación de empresas de software
Capacitación contínua de los miembros
Defensa de derechos de los agremiados
Concienciar lo importante del licenciamiento del S
Promover la utilización de software abierto
Fiscalizar proyectos informáticos de la zona
Resultados de la encuesta
 
Votos: 284
Comentarios: 0

Enciclopedia

Accesos al sitio
Hemos recibido 142858 revisiones de páginas

Enlaces más visitados
· 1: UOC, universidad virtual
· 2: IEEE Computer Society
· 3: IEEE - the world's leading professional association for the advancement of technology

 
ESTUDIO COMPARATIVO DE LAS PLATAFORMAS PHP y JAVA EN EL DESARROLLO WEB
All

El presente estudio comparativo de las características se ha desarrollado bajo términos absolutamente técnicos y representa la forma de pensar del autor en base al análisis de las características técnicas de las plataformas evaluadas.

Marco Referencial


Las plataformas de desarrollo Web han estado en escena a partir de la década pasada, cuando el boom de la Internet hizo que esta herramienta requiera un mayor nivel de interacción con el usuario, lo cual estaba mas allá de las posibilidades concebidas inicialmente para un lenguaje de presentación como HTML.


Debe notarse que los primeros esfuerzos se hicieron en base a la premura del tiempo, y la creación de un lenguaje específico no era para ese tiempo un requerimiento esencial. Por esta razón, las primeras aplicaciones utilizaron lenguajes existentes para ese entonces como C o C++ junto con todas sus APIs ya desarrolladas.


La tecnología que resultó de esto fue llamada CGI, (Common Gateway Interface) o Interfaz de compuerta común, que no era otra cosa que la creación de una interfaz común para intercambiar información entre aplicaciones y el servidor WEB, permitiendo que la generación de las páginas sea dinámica. Aparecen también los primeros lenguajes de scripting como Perl o PHP.


Posteriormente, con el aparecimiento de los primeros lenguajes orientados a objetos con éxito comercial y con APIs específicos orientados al manejo de los asuntos relacionados a Internet, se presentan nuevas formas de realizar las actividades de desarrollo, simplificando su desarrollo en muchos aspectos e incluyendo interfaces de programación que logran una abstracción adecuada de toda la tecnología subyacente. Entre estos podemos mencionar a Java como pionero en el área y a .Net y su conjunto de lenguajes como (C# y VB.net) de Microsoft.


Descripción de los productos en análisis.


En este documento se pretende comparar las plataformas de desarrollo PHP frente a la tecnología Java.


Para ello será necesario dar una definición de cada uno de ellos.


PHP: (PHP Hypertext Preprocessor) Un lenguaje de scripting. El término de scripting principalmente se refiere al hecho de que este lenguaje necesita de otro programa sobre el cual ejecutar los “scripts”, término con el cual se denomina al código escrito en un lenguaje de scripting. Este otro programa es encargado de traducir el código cada vez que sea necesario ejecutarlo, es decir la traducción se realiza una y otra vez en tiempo de ejecución y sin ningún proceso previo de traducción.


Java: Un lenguaje de programación orientado a objetos. Como lenguaje de programación su código es primeramente compilado es decir traducido a un formato legible para la máquina (en este caso no directamente para permitir la característica de portabilidad) permitiendo su verificación en tiempo de compilación. Java es un lenguaje portable, es decir se puede ejecutar aplicaciones escritas en Java en cualquier entorno que disponga del intérprete de código compilado (bytecode) o Maquina Virtual de Java (JVM).


Técnicamente podría decirse que tanto el ByteCode Java como el código fuente de PHP son interpretados, solo que en tiempo de ejecución el rendimiento de ByteCode llegará a ser mejor en la mayoría de los casos.


Análisis de las características técnicas.


Es necesario mencionar que la clave para finalizar satisfactoriamente un proceso de desarrollo de software recae no sobre la tecnología, sino mas bien sobre la simplificación del modelo de desarrollo de software y en la comprensión global de la tecnología utilizada. De hecho el solo escoger una u otra tecnología para el desarrollo sin tener la experiencia previa en ella puede llevar a un proyecto a fallar en su desarrollo y entrega. Dicho esto, mencionaremos las siguientes consideraciones de tipo técnico que deberían ser consideradas siempre y cuando el grupo de desarrolladores tenga una adecuado conocimiento de la tecnología subyacente.


En este análisis se toman en cuenta criterios para desarrollos y su mantenimiento posterior y no únicamente la implantación de algún producto. Técnicamente hablando es muy difícil encontrar un aplicativo de usuario final en el que “un tamaño fije a todos” o “instalar y usar”, es decir las aplicaciones desarrolladas con anterioridad no siempre satisfacen las expectativas para las cuales fueron creadas, conviene entonces revisar la arquitectura de la aplicación y el rango de soporte a los requerimientos de la institución o empresa en donde se va a aplicar. Dicho de otro modo, la aplicación que está sirviendo a una empresa cuyo tráfico es 10 usuarios simultáneos no podrá jamás compararse a otra en la cual el tráfico sea mayor.


Paradigma de programación


PHP puede catalogarse como un lenguaje basado en objetos. Es decir las versiones 4 y 5 de PHP tienen un soporte para la definición de clases, sin embargo carecen -por ejemplo- de capacidad para encapsulamiento a través de modificadores de acceso a los miembros de la clase. Lo cual hace que peligrosamente pueda accederse a los atributos como atributos públicos. Esta clase de carencias sin embargo podría ser cubierta aplicando buenos estándares de codificación como un buen esquema de nombrado de atributos.


Java es un lenguaje totalmente orientado a objetos, ello obliga a que las aplicaciones desarrolladas sean creadas en base a este modelo, lo cual trae consigo todas las ventajas del paradigma, herencia, polimorfismo, encapsulamiento, soporte de interfaces, etc.. El lenguaje en muchos casos obliga por su estructura al uso de estándares de codificación adecuados. La versión última de Java ha incluido un gran soporte de características nuevas como genéricos y enumeraciones.


He incluido este apartado debido a que en mi criterio el paradigma de programación influye mucho en la facilidad de mantenimiento posterior al desarrollo y flexibilidad para el crecimiento de las aplicaciones. Es, en cierto sentido verdadero el argumento de que en PHP pueden construirse aplicaciones en menor tiempo que usando tecnología Java. Pero esta afirmación es a la vez subjetiva ya que por lo general a lo que se refiere es a que las aplicaciones desarrolladas en PHP o en cualquier lenguaje permisivo ya sea en tipos o en estructura tienen muy poco trabajo de arquitectura en su desarrollo.


Escalabilidad


La escalabilidad de las aplicaciones no solo se mide en función de cuan bien se comporta la tecnología cuando las aplicaciones van a servir a un número mayor de usuarios, sino también en relación a la cantidad de recursos que son usados a medida que este crecimiento se presenta.


En la mayor parte de casos, los problemas de escalabilidad se deben no precisamente al lenguaje sino generalmente a cuestiones de afinación de los recursos de software y hardware en los cuáles la aplicación se basa.


Sin embargo también es necesario comprender que la arquitectura de la aplicación juega un papel adecuado en este tema, el uso de frameworks (software de esquemas de trabajo) probados en el desarrollo como WASP en PHP, Rails en Rubi o JSF en Java.


Uso de recursos


En cuanto a este tema, son los recursos de memoria y procesamiento aquellos a tener en cuenta en el uso de recursos físicos, ya que estos impactan directamente en la escalabilidad.


En principio la tecnología de CGI en la cual se basa PHP supone la creación de un objeto pesado y la carga del script cada vez que un usuario lo utiliza. Esto implica que el consumo tanto de memoria como de procesador es bastante grande. Esta situación no es así en Java, en donde la ejecución de uno de los procesos de la aplicación (servlets) levanta solamente un hilo de ejecución para un único conjunto de código cargado en memoria, haciendo que el manejo de sesiones de usuario se incluya en el contexto de la sesión.


Seguridad


El hecho de que CGI deba acceder a un proceso de nivel de sistema operativo cada vez que necesita ejecutar un script, indica que puede lanzarse cualquier proceso desde el, a diferencia de ello, java al mantener una jaula de proceso dentro del servidor en el cual se ejecuta, y levantar únicamente hilos de ejecución del proceso global puede prohibir -y de hecho lo hace- la ejecución de procesos desde código no autorizado a través de algún mecanismo de firma digital.


Manejo de sesiones


El manejo de sesiones es un punto importante a considerar ya que el protocolo de enlace entre el usuario final y el servidor WEB es HTTP, un protocolo no orientado a conexión. Esto implica que la aplicación de usuario es la que debe realizar el seguimiento de la sesión de usuario. La arquitectura de Java basada en servlets incluye varios niveles de contextos de aplicación, sesión y solicitud. Las aplicaciones basadas en CGI


Filosofía del entorno


La plataforma PHP es basada completamente en software libre, de hecho la plataforma denominada LAMP es la propuesta de software libre para el desarrollo Web, esto implica que el costo de propiedad de la plataforma para el desarrollo es cero, esto siempre y cuando se considere que se tienen los recursos técnicos y humanos capacitados a nivel de uso de frameworks y mejores prácticas de diseño y arquitectura de software. El conjunto de APIs disponibles es extenso y desarrollado en torno a proyectos bien organizados.


Java por su parte es licenciado sin costo, sin embargo Sun Microsystems es aun propietario de las licencias, la filosofía de Sun es el desarrollo de la plataforma basado en estándares abiertos y el involucramiento de la comunidad en las mejoras. Java propone la documentación de referencia y una implementación de lo propuesto, sin embargo no restringe el uso de dichos estándares para que otras organizaciones hagan sus propias implementaciones. Es así como puede conseguirse un entorno sin costo para obtener una plataforma empresarial completa, el proyecto Jakarta de la fundación Apache es uno de los que mas aportan en este sentido, aunque existe un sinnúmero de desarrollo de software de código libre que puede ser usado e integrado con la plataforma Java.


Conclusiones:


  1. Java es un lenguaje orientado a objetos totalmente, lo cual obliga a una preparación adecuada antes de iniciar un desarrollo. PHP dispone de ciertas características orientadas a objetos pero no cumple con dicha funcionalidad.

  2. El desarrollo de aplicaciones y la estructuración de una buena arquitectura son fundamentales a la hora del desarrollo, PHP es una plataforma bastante flexible pero ello puede llevar a evitar un proceso de construcción adecuado, en tanto que la estructura de un lenguaje orientado a objetos como Java beneficia ese tipo de prácticas.

  3. Se puede lograr tener plataformas de costo cero para ambos entornos, es decir el costo de propiedad de la plataforma no necesariamente debe ser cubierto ni se deben pagar licencias.

  4. El esquema de trabajo de los scripts es basado en un interprete y no es compilado. Esto obliga a que el procesamiento previo a la ejecución se haga cada vez que el script se ejecuta, situación que no ocurre con los lenguajes compilados. En el caso de Java existe un proceso de compilación previo, y si bien requiere de una máquina virtual para ejecutar los programas (lo cual es un interprete también), la traducción no realiza ya una verificación de la sintaxis cada vez y se limita solo a transformar las instrucciones bytecode a código nativo

  5. Ambos entornos son portables, esto quiere decir que la ejecución se realizará en cualquier sistema operativo que tenga un interprete de PHP o una máquina virtual de Java.

  6. El consumo de recursos en PHP es mayor al de Java, dado que en tiempo de ejecución esto lleva a la creación y destrucción de procesos a nivel del sistema, situación que en java no ocurre debido a que los procesos son cargados una sola vez cuando se los necesita y posteriormente solo se crean hilos del proceso por cada usuario que necesite el mismo código.

  7. Java puede soportar clustering o ejecución de la aplicación en varios servidores permitiendo así la escalabilidad de la aplicación, algo complejo de conseguir en PHP.

  8. Java es mas difícil de depurar que PHP, en proyectos pequeños esto puede ser una ventaja, especialmente si los tiempos de entrega son cortos.

  9. Java está convirtiendose en un entorno de programación bastante popular, la cantidad de documentación, biliografía, bibliotecas de clases y proyectos disponibles asi lo reflejan (http://www.tiobe.com/tpci.htm).

Notas:

Gerson Zaragocín Arrobo
INGENIERO DE PROYECTOS-INNOVUS IdS.

Enviado por Admin on Aug 3, 2006 10:59:23 AM
Enlaces Relacionados
· Más Acerca de All
· Noticias de 2

Most read story about All:
Nuevos campos de acción del Ingeniero Informático, de Sistemas y Computación


Article Rating

Puntuación Promedio: 4
Votos: 3


Por favor tómate un segundo y vota por este artículo:

Excelente
Muy Bueno
Bueno
Regular
Bad


Opciones

 Versión ImprimibleVersión Imprimible

 Enviar a un AmigoEnviar a un Amigo


   
Loja-Ecuador
Innovus 2006
Page Generation: 0.037 seconds.

RSS 0.91  RSS 1.0  RSS 2.0  RSS Atom 0.3 RSS Atom 1.0