International Symposium on Software Composition

ActiveX

ActiveX is a software framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies for content downloaded from a network, particularly from the World Wide Web. Microsoft introduced ActiveX in 1996. In principle, ActiveX is not dependent on Microsoft Windows operating systems, but in practice, most ActiveX controls only run on Windows. Most also require the client to be running on an x86-based computer because ActiveX controls contain compiled code.

ActiveX is still supported as of Windows 10 through Internet Explorer 11, while ActiveX is not supported in their default web browser Microsoft Edge (which has a different, incompatible extension system) and will be compatible with the new Chromium-based Microsoft Edge using IE Mode.

ActiveX is one of the major technologies used in component-based software engineering. Compared with JavaBeans, ActiveX supports more programming languages, but JavaBeans supports more platforms. ActiveX is supported in many rapid application development technologies, such as Active Template Library, Delphi, JavaBeans, Microsoft Foundation Class Library, Qt, Visual Basic, Windows Forms and wxWidgets, to enable application developers to embed ActiveX controls into their products.

Many Microsoft Windows applicationsŽincluding many of those from Microsoft itself, such as Internet Explorer, Microsoft Office, Microsoft Visual Studio, and Windows Media PlayerŽuse ActiveX controls to build their feature-set and also encapsulate their own functionality as ActiveX controls which can then be embedded into other applications. Internet Explorer also allows the embedding of ActiveX controls in web pages.

Faced with the complexity of OLE 2.0 and with poor support for COM in MFC, Microsoft simplified the specification and rebranded the technology as ActiveX in 1996. Even after simplification, users still required controls to implement about six core interfaces. In response to this complexity, Microsoft produced wizards, ATL base classes, macros and C++ language extensions to make it simpler to write controls.

Starting with Internet Explorer 3.0 (1996), Microsoft added support to host ActiveX controls within HTML content. If the browser encountered a page specifying an ActiveX control via an OBJECT tag, it would automatically download and install the control with little or no user intervention. This made the web "richer" but provoked objections (since such controls, in practice, ran only on Windows, and separate controls were required for each supported platform: one for Windows 3.1/Windows NT 3.51, one for Windows NT/95, and one for Macintosh F68K/PowerPC.) and security risks (especially given the lack of user intervention). Microsoft subsequently introduced security measures to make browsing including ActiveX safer.

In October 1996, Microsoft released a beta version of the ActiveX Software Development Kit (SDK) for the Macintosh, including a plug-in for Netscape Navigator on the Mac, and announced its plan to support ActiveX on Solaris later that year. Six months and two more beta releases later, there had yet to be any commercially available Macintosh ActiveX plugins.

Despite Microsoft's previous efforts to make ActiveX cross-platform, most ActiveX controls will not work on all platforms, so using ActiveX controls to implement essential functionality of a web page restricts its usefulness. South Korea has started to remove this technology from their public websites in order to make their web site accessible to more platforms.

While Microsoft made significant effort to push the cross-platform aspect of ActiveX by way of publishing the API, ultimately the cross-platform effort failed due to the ActiveX controls being written in C or C++ and being compiled in Intel x86 Assembly language, making them executable only on Windows machines where they can call the standard Win32 APIs.