CLX (Delphi)

CLX son las siglas de Component Library X (cross) -Platform , que significa "biblioteca de componentes entre plataformas". Este es un marco escrito en Object Pascal en Borland cuando el editor decidió usar Delphi bajo Linux creando Kylix . Si bien CLX no es exactamente el VCL en Linux , está diseñado para tener en cuenta la mayor parte de su funcionalidad, y Borland ha realizado un esfuerzo significativo para garantizar que las dos bibliotecas tengan dos interfaces muy similares.

El objetivo de CLX es producir fácilmente aplicaciones para Windows o Linux con el mismo código .

Diseño e implementación

Al igual que VCL, CLX consta de varios módulos: NetCLX (componentes de Internet), VisualCLX (componentes visuales) y BaseCLX (biblioteca de tiempo de ejecución estándar). Cuando el VCL se basa en API Win32 o .NET , CLX interactuará principalmente en la versión Linux en la biblioteca C estándar y el administrador de ventanas X a través de la biblioteca de componentes Qt de Trolltech .

Usando DisplayCLX , los objetos gráficos CLX interactúan con Qt . Esta comunicación pasa primero por un archivo de interfaces, Qt.pas , que describe funciones estándar "aplanadas" (es decir, procedimientos, no métodos de clase) para crear y administrar widgets Qt . Las funciones son implementadas por una biblioteca escrita en C ++ proporcionada por Borland, libqtintf.so , que carga dinámicamente la biblioteca Qt , libqt.so . Este complejo encadenamiento, supuesto sin duda al principio, para permitir una fácil actualización de los enlaces a medida que evoluciona la biblioteca Trolltech, requiere el despliegue de los dos archivos en una estación de trabajo que desee ejecutar la aplicación gráfica. El mismo sistema está presente

El CLX también gestiona objetos y conceptos de Linux como IPC o señales en Kylix .

En Windows , la administración de objetos gráficos siempre permanece delegada a Qt (esta vez implementamos la versión de Windows de la biblioteca), y a diferencia de la VCL, ya no hay una llamada a las API de Windows para la creación de instancias de componentes visuales o el dibujo de dibujos en la pantalla.

Adopción del CLX

Muchos desarrolladores de Delphi solo esperaban tener que recompilar su aplicación de Windows con Kylix en aplicaciones reales de Linux . Obviamente, este no fue el caso, y la creación de un proyecto multiplataforma necesariamente requirió el abandono de la VCL a favor de la CLX (sin mencionar la eliminación de cualquier código que invocara directamente una API de Windows). Esta necesidad de reescritura fue un primer obstáculo para el desarrollo de esta biblioteca.

Además, el CLX sufrió la falta de experiencia de los desarrolladores de Borland con Linux . Por ejemplo, algunas declaraciones de objetos de comunicación o sincronización entre procesos eran incorrectas y se necesitaron varias versiones sucesivas antes de que se corrigieran (parcialmente) los errores. Incluso hoy en día, desarrolladores independientes proponen e incluyen muchas mejoras como parches no oficiales.

El CLX también requirió la distribución de varias bibliotecas específicas de Borland, especialmente para interactuar con Qt . La implementación de aplicaciones gráficas en Linux no fue trivial y, a menudo, problemática. El aspecto no "nativo" de una aplicación Qt en Windows también fue un obstáculo para el desarrollo de esta biblioteca.

Con el abandono de Kylix por Borland , CLX no es una solución tópica. Habría requerido un esfuerzo constante de adaptación a medida que avanzan las nuevas versiones de libc y Qt , así como una inversión real en la corrección de errores residentes en particular en VisualCLX  : por lo tanto, solo el VCL permanece como un desarrollo de framework bajo Delphi y C ++ Constructor .

FreeCLX

Como el kit de herramientas Qt se puede utilizar con la opción de una licencia patentada, de pago o una licencia " copyleft " gratuita   , lo mismo ocurre con CLX. De hecho, Kylix se ofreció en versiones de pago ( Professional , Enterprise ) para el desarrollo de aplicaciones propietarias y una versión gratuita (bastante limitada) llamada Open Edition que solo permite el desarrollo de aplicaciones gratuitas debido al copyleft de la licencia. La versión Open Edition incluía el subconjunto FreeCLX, que debía constituir la biblioteca de código abierto , cuya evolución debería haber sido asegurada por la "comunidad". El sitio SourceForge.net alberga este proyecto , pero ha estado inactivo desde finales de 2001.