Phalanger[1][2] es básicamente un compilador e intérprete de PHP genera código intermedio CLI[3] compatible con la plataforma .NET[4], de modo que convierte un lenguaje dinámico en código intermedio estáticamente tipado. Esto significa que podríamos coger nuestro CMS favorito, compilarlo con Phalanger y obtendríamos una serie de ensamblados que podríamos ejecutar con cualquier implementación de .NET (mono o .NetFramework de windows).
Las principales características que destacan de Phalanger son:
- Interoperatibilidad con librerías de .NET y el runtime de .NET. Es posible incluso usar genéricos en PHP.
- Ofuscación, firmado de ensamblados, seguridad de tipos, gestión automática de memoría y todas las demás ventajas de la plataforma .NET.
- Compatibilidad con ASP.NET, de modo que podemos escribir páginas en PHP dentro de nuestra aplicación en ASP.NET y servir peticiones directamente desde ellas.
- Mayor velocidad de ejecución gracias al compilador JIT (Just-In-Time) de .NET que genera código máquina para la plataforma de hardware concreta.
- Completa compatibilidad con plataformas de 64bits (si no se usan extensiones nativas).
También soportan todas las extensiones de PHP 4 y aquellas que fueron integradas en el core de PHP en el paso a PHP 5.
La empresa detrás de Phalanger, denominada Devsense, ofrece soporte comercial y una extensión para Visual Studio para poder desarrollar en PHP (coloreado de sintaxis, autocompletado, …). Dicha empresa se creó en 2009 tras los inicios de Phalanger como proyecto en la Universidad de Charles en Praga durante los cuales contó con soporte de Microsoft y esponsorización durante 2008 de la empresa Jadu.
Algunas de las aplicaciones que corren perfectamente sin ningún cambio sobre Phalanger son WordPress y phpbb los cuales son usados en el blog y en el foro de Phalanger.
Phalanger ofrece a los desarrolladores de PHP un camino para introducirse en el desarrollo de aplicaciones web para la plataforma .NET y de reaprovechar (quizás con algunas modificaciones) la gran cantidad de aplicaciones escritas para PHP en aplicaciones web ASP.NET.
Esto es un gran punto estratégico a favor de Phalanger, según la web w3techs.com[5] PHP es el lenguaje más usado para el desarrollo de aplicaciones web cliente-servidor seguido de lejos por ASP.NET y Java.
Mientras que por otro lado, según el índice TIOBE de popularidad de lenguajes de programación para Julio de 2012[6], PHP ocupa el séptimo puesto por detrás de Visual Basic (O_o doh!), C#, C++, Objetive-C (impulsado por la popularidad de los productos de Apple), Java y finalmente C.
Por tanto supongamos que Phalanger funcionara perfectamente con cualquier aplicación PHP, entonces no habría en principio impedimentos para que C# disparara su popularidad debido a la integración con un gigantesco ecosistema de aplicaciones web y ASP.NET ganara puestos en el share de aplicaciones cliente-servidor (una vez PHP se compila y despliega es una aplicación .NET más), en detrimento de los malogrados programadores de PHP menos expertos en la plataforma donde ahora corren sus aplicaciones y obligados a comenzar a escribir en C# parte de su trabajo por ser más popular que PHP y no tener que cargar con los problemas y críticas actuales al mismo[7][8][9] (lo cual no quita que sea un lenguaje totalmente válido si está en las manos adecuadas).
Por otro lado la gran popularidad de PHP para la creación de soluciones web (Facebook está desarrollado en PHP) viene también dada por la facilidad que se crean aplicaciones sin tener que pelear con el sistema estático de tipos o incluir todas las referencias a espacios de nombres necesarios para que la aplicación compile. Con PHP directamente escribimos el código y lo ejecutamos, mientras que Phalanger además tiene que compilarlo a CIL y luego el JIT compilar el CIL a código máquina para ejecutarlo, lo cual ralentiza en cierta medida el ciclo de desarrollo y desespera al desarrollador con prisa por acabar su trabajo a tiempo …
Pero no creo que la hipótesis inicial sobre el futuro de Phalanger vaya a cumplirse, ya que aunque Phalanger puede funcionar bajo Linux con Mono el soporte para este siempre será inferior y con más problemas que para Windows, como siempre ha sido, siendo por tanto la plataforma principal Windows y eso nos lleva a la diferencia de precio que hay entre un hosting Windows y otro Linux (siendo más caro Windows por las licencias necesarias para el desarrollo y el SO del hosting de aplicaciones). Coste que se ve incrementado con el hecho de que Phalanger no es perfecto[10] y no toda aplicación PHP va a funcionar correctamente sin tener que modificarla y quizás instalar módulos manejados adicionales para Phalanger, lo cual no se puede hacer en los hostings más baratos que son los compartidos donde los clientes no suelen poder alterar la configuración e instalación de sofware de la máquina y requeriría un hosting dedicado (real o virtual) lo cual dispara el coste. Y nos estamos dejando atrás el coste de la adaptación de la aplicación PHP para que funcione o que el cliente quiera integrarla con su web en ASP.NET.
Esto en el ambiente global de crisis y contención de costes es el punto decisivo que hace que muchas empresas se decanten por soluciones LAMP [11] con una amplia disponibilidad de aplicaciones de todo tipo y entornos de desarrollo completamente Open Source en los que sólo hay que pagar por el hardware y los desarrolladores.
Referencias:
[1] https://www.php-compiler.net/
[2] https://en.wikipedia.org/wiki/Phalanger_%28compiler%29
[3] https://en.wikipedia.org/wiki/Common_Intermediate_Language
[4] https://www.microsoft.com/net
[5] https://w3techs.com/technologies/overview/programming_language/all
[6] https://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
[7] https://www.phpsadness.com/
[8] https://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
[9] www.codinghorror.com/blog/2012/06/the-php-singularity.html
[10] https://wiki.php-compiler.net/Compatibility
[11] https://en.wikipedia.org/wiki/LAMP_%28software_bundle%29
Pingback: Phalanger, compilador de PHP a .NET | Inicia Tecnologia