Wczesne programy, jako sposobu ponownego wykorzystania kodu, używały podprogramów. Później, inne systemy programistyczne wprowadziły biblioteki kodu i inne sposoby jego ponownego użycia.
Obecnie preferowanym sposobem ponownego wykorzystania kodu jest programowanie zorientowane obiektowo. Istnieje wiele sposobów pisania programów obiektowych. Najprościej jest wykorzystać w tym celu język, który pozwala na pisanie obiektowe, na przykład SmallTalk. Można jednak pisać obiektowo w dowolnym języku, jeśli tylko zachowa się dyscyplinę. Język C++ jest pod tym względem nieco dziwny, gdyż pozwala używać konstrukcji obiektowych gdy się tego chce, lub zignorować je, jeśli ktoś tak woli.
Ale nawet wewnątrz C++, na ile Twój kod nadaje się do ponownego użycia? Oczywiście, możesz tworzyć obiekty kodu źródłowego, ale czy możesz przenieść je do innego kompilatora. Zwykle nie na poziomie kodu obiektu, a często nawet przeniesienie samego kodu źródłowego będzie wymagać pewnej pracy. A już z pewnością nie uda się to, gdy zechcesz ponownie wykorzystać kod w innym języku, na przykład w Visual Basicu czy Delphi. Jeśli Twój kod nie jest bardzo prosty, prawdopodobnie nie powiedzie się przeniesienie go na inną platformę, na przykład do Unixa.
Aby móc mówić o oprogramowaniu nadającym się do ponownego wykorzystania, powinno ono być łatwo przenaszalne pomiędzy różnymi językami i platformami. Jest to szczególnie ważne w dobie Internetu, gdzie są połączone ze sobą najróżnorodniejsze komputery.
Obecnie istnieją już różne rozwiązania tego problemu, a jednym z takich rozwiązań jest ActiveX. ActiveX to technologia używana do budowania binarnie zgodnych obiektów. Być może nie jest to stwierdzenie, które na ten temat słyszałeś. Wszyscy wiedzą, że ActiveX służy do osadzania dokumentów w pojemnikach i przekazywania kontrolek przez Internet, czyż nie? Nie całkiem. Pewnie, możesz robić to wszystko przy pomocy ActiveX, ale to nie jest samo ActiveX - podobnie jak sterta klocków Lego nie jest domkiem. Budując obiekty ActiveX możesz tworzyć kontrolki wykorzystywane w Internecie. Te obiekty są binarnie zgodne z innymi obiektami ActiveX używanymi przez przeglądarkę WWW. Możesz budować obiekty ActiveX pozwalające na umieszczanie dokumentów wewnątrz innych dokumentów (lub zarządzanie innymi dokumentami). Te dokumenty są obiektami ActiveX. Możesz użyć cegiełek Lego do zbudowania domku -możesz z nich także zbudować kozły do cięcia drewna. Podobnie, obiekty ActiveX mogą służyć do tworzenia dużych systemów lub małych (i efektywnych) elementów.
W czym ActiveX różni się od OLE, OCX i COM?
Gdy Microsoft stworzył technologię pozwalającą na umieszczenie (na przykład) arkusza kalkulacyjnego w dokumencie procesora tekstu, nazwał ją OLE, co oznacza osadzanie i łączenie obiektów (object linking and embedding). Jednak ten sam termin odnosił się do systemu używanego do tworzenia zgodnych binarnie obiektów. Z powodu stopnia skomplikowania łączącego się z konstruowaniem obiektów pozwalających na umieszczenie jednego dokumentu wewnątrz drugiego, wielu programistów uważało, że OLE było skomplikowane, nawet jeśli podstawowa technologia była dość prosta.
Microsoft dążył do tego, aby jak najwięcej osób wykorzystywało OLE, zdecydowano się więc na zmianę nazwy podstawowej technologii na COM (Component Object Model). Z pewnych powodów mogło się wydawać, że także ta nazwa odstrasza większość programistów. Także później podjęto wiele prób zmiany nazwy tej technologii. Kontrolki Visual Basica i podobne im programy stały się znane jako OCX (OLE Control Extensions).
Na koniec, aby zacząć z czystym kontem, Microsoft ogłosił, że następne główne wydanie specyfikacji OLE będzie określane jako ActiveX. W dalszym ciągu jednak spotyka się inne terminy. Osobiście przywykłem do tego, by jako OLE określać tradycyjne osadzanie jednego dokumentu w innym. Wizualne kontrolki w dalszym ciągu określam jako OCX. COM to proste obiekty nie zaprojektowane do działania wewnątrz pojemników takich jak Visual Basic, zaś ActiveX to technologia, która sprawia, że to wszystko działa. Oczywiście takie są moje osobiste przyzwyczajenia.
Czym jest obiekt ActiveX?
Może to być najprostsze stwierdzenie w tej książce: obiekt ActiveX to każdy kod, który zawiera jedną lub więcej tablic wskaźników do funkcji. Dopóki dostawca obiektu (serwer) i użytkownik tego obiektu (klient) zgadzają się co do przeznaczenia funkcji, nic innego nie jest ważne. Funkcja nie musi być nawet napisana w tym samym języku, ani nawet na tej samej platformie sprzętowej.
Więc gdzie, możesz spytać, jest część zorientowana obiektowo? Cóż, ActiveX jest nieco bardziej skomplikowane niż to do tej pory przedstawiłem (ale tylko nieco). Pierwsze trzy funkcje w każdej z tablic wskaźników służą zawsze do tego samego. Tablice wskaźników do funkcji w obiektach ActiveX noszą nazwę interfejsów, a trzy zawsze obecne funkcje tworzą interfejs o nazwie lUnknown.