En palabras de Microsoft, creadora de este engendro, un control ActiveX, formalmente conocido como controles OLE o controles OCX, son componentes (u objetos) que puedes insertar en una página Web u otra aplicación para reutilizar la funcionalidad empaquetada que alguna otra persona programó.
Una de las ventajas de los controles ActiveX sobre otros sistemas, tales como los applets del lenguaje Java (del que hablaremos seguidamente) o los "plug-ins" de Netscape, es que los controles ActiveX, una vez creados, pueden utilizarse en cualquier lenguaje que proporcione interfaz con ellos, es decir, en todos los de Microsoft y entre ellos, el propio Java.
Existe un procedimiento para hacer referencia a un control ActiveX desde una página Web u otra aplicación. En ese momento, éste es cargado en memoria (caso de que no residiera, es decir que bajo este punto de vista se comportan de un modo parecido a como lo hacen las funciones de las DLLs) y se puede establecer una comunicación desde la aplicación solicitante con el control para que éste realice las operaciones deseadas.
Además, y según Microsoft, si un programador lo desea, puede escribir sus propios controles ActiveX utilizando por ejemplo MS Visual C++. Lo que Microsoft no dice es que, mientras "enganchar" un ActiveX en una aplicación es sumamente simple, comunicarse con él no lo es tanto, y que crear un ActiveX en Visual C++ u otro lenguaje, por mucha OOP y mucha MFC que utilicemos es tan complejo que resulta casi inabordable para una empresa pequeña.
El problema que aquí se plantea es que, Microsoft, al margen de la idoneidad o no de poder incorporar controles ActiveX en Visual J++ (la versión de Java de MS), acaba de separarse de un estándar antes de que éste termine de especificarse. Si a esto le añadimos que en el nombre del producto no aparece la palabra "Java" por ninguna parte, alguna mente "malpensante" puede aventurar que Microsoft podría estar preparando una jugarreta de las suyas.
Tipos de Propiedades:
Los tipos de propiedades aplicables a un objeto ActiveX son tres. Hay que tener en cuenta que estos tipos solamente se ven desde el punto de vista de la programación y no desde el punto de vista de la utilización. Esto quiere decir que independientemente del tipo de implementación que elijamos, el usuario solamente va a ver propiedades y métodos.
Estas propiedades vienen definidas por el sistema como propiedades básicas
para un componente ActiveX. Su tipo e implementación está
predefinido por el sistema o, mejor dicho, por el contenedor. Eso sí,
podemos utilizarlas pero no como variables de nuestra clase C++.
Estas propiedades corresponden a aquellas que el usuario define de forma
normal teniendo una representación de variable en nuestra clase
C++ aunque hay que tener siempre presenteque las variables no dependen
de nuestra clase C++ sino del objeto ActiveX que estamos definiendo. Esto
implica que la modificación de dicha variable debe estar presente
en nuestra codificación ya que depende de las asignaciones del componente
que haga el usuario. Para evitar estas incomodidades, el sistema nos provee
de una función de aviso para dichas modificaciones externas. Esta
función se construye con OnPropiedadChanged y se ejecutará
cada vez que el usuario nos modifique el valor de dicha propiedad.
Por último están las variables de engaño, es decir, en realidad no se incorpora ninguna variable de representación de la propiedad sino que se incorporan dos métodos, uno de asignación y otro de lectura que se ejecutarán respectivamente en cualquier asignación o lectura que el usuario haga de dichas variables.
Por otro lado, y según confiesa la propia Microsoft en su " Reviewers Guide" de Visual J++: "si Microsoft tuviera que empezar desde cero a crear un lenguaje optimizado para controles ActiveX y COM, llegaría a algo muy parecido al Java".