The most obvious differences are in overall complexity. ActiveX lets you share documents as well as components. ActiveX controls make use of type libraries, normally contained in .TLB files, to publish their functionality. By installing a type library into the system registry, an ActiveX control enables another component to determine what services it provides. Normally, there is a separate development step, though it can be automated, for creating .TLB files.
Objects can talk to one another without knowing the particulars of how each one operates.
Yet, despite its language independence, ActiveX is proprietary and platform-dependent. A JavaBean control, in contrast, involves no extra step to publish its functionality. By conforming to naming conventions for properties and methods, any JavaBean-based tool can read what capabilities are available in a JavaBean. Because of these naming conventions, there is a basic level of interoperability among JavaBeans that developers get for free. The result is platform-independent components that will run just as happily in a Windows browser as under Unix.