Sematycznie applet to mały program osadzony wewnątrz innego programu/środowiska, w którym jest uruchamiany. Zwyczajowo jednak mówiąc applet ma się co innego na myśli.

W zamierzchłych czasach, czyli jakieś 10-15 lat temu, przeglądarki internetowe były upośledzone i implementowały standard HTML w wersji 4, która nie pozwalała na zbyt wiele. Sporo dostawców oprogramowania chciało jednak dać swoim odbiorcom większe możliwości, niż te, które oferowała zwykła strona internetowa, np. możliwość strumieniowania wideo, odtwarzanie muzyki, interaktywne prezentacje, etc. Obecnie można to zrobić za pomocą standardowych narzędzi, jednak kiedyś to nie było takie proste. Ideą była możliwość umieszczenia aplikacji na stronie www tak, aby przełamać bariery standardu i umożliwić takiej aplikacji integrację np. z systemem plików, sprzętem czy komunikację z innymi serwerami. Zostało to osiągnięte poprzez wprowadzenie tagu <object>.

Ten tag odblokował potencjał drzemiący w innych technologiach, które wcześniej wymagały instalacji osobnych programów, aby mogły działać. Za pomocą <object> można osadzać flash (teraz nikt nie lubi flash, a kiedyś… to było coś!) a także… programy napisane w Java, zwane właśnie Java applets (w skrócie applety). Taki program, specjalnie przygotowany przez programistę mógł zostać osadzony na stronie internetowej, integrować się z nią i umożliwić programiście wykorzystanie w pełni swojego potencjału, jak np. animacje czy integracja z systemem operacyjnym użytkownika. Swego czasu, z kolegą tworzyliśmy grę karcianą właśnie przy użyciu appletu Javy.

Jedyne ograniczenie, które należało pokonać, to upewnić się, że przeglądarka użytkownika wspierała daną technologię. Aby applet mógł zostać uruchomiony przeglądarka musi najpierw poprawnie go rozpoznać. To znaczy sprawdzić jakiej technologii dotyczy obiekt, a następnie upewnić się, że system operacyjny użytkownika posiada odpowiednie oprogramowanie- w przypadku Java musi to być środowisko uruchomieniowe Java (Java Runtime Environment). W innym przypadku applet nie zostanie uruchomiony.

Obecnie applety są pase, ponieważ dzisiejsza technologia web umożliwia ogromną ilość funkcji, z których może skorzystać programista, z tą zaletą, że na pewno będzie ona działać- nie ma ryzyka, że dostarczymy applet użytkownikowi, którego system operacyjny nie wspiera konkretnej technologii. Po drugie applety są poddane restrykcjom, muszą zostać podpisane cyfrowo a to rodzi kolejne komplikacje, których programiści, ze względu na swoją leniwą naturę, wolą unikać.

Twoje doświadczenia z <object>? Wykorzystywałeś kiedykolwiek? Jakie problemy napotkałeś z appletami javy (poza tym, że nie działają)?

Dobry kontent!

Piotr Poźniak

Piotr Poźniak

Programuję od ponad 15 lat. Prowadzę software house. Angażuję i zachęcam wszystkich do programowania w ramach inicjatywy Programowanie jest łatwe.

Twoja opinia

Komentarzy: 2

Avatar użytkownika Piotr Poźniak
Piotr Poźniak · 4 lata temu

@Paweł, ostatnio rozmawiałem ze znajomym właśnie na ten temat- jak połączyć urządzenie z web. Moim zdaniem najrozsądniejszym wyjściem jest "wystawić" interface takiego urządzenia na zewnątrz, aby wysyłał dane do backendu, a na frontendzie jedynie aktualizować status z bazy danych (czy innego serverless dziwactwa). Wtedy nie ma potrzeby tworzyć takich potwornych rozwiązań jak applet.

Avatar użytkownika Paweł
Paweł · edytowany 4 lata temu

Jedenaście już prawie lat temu brałem udział w dużym projekcie gdzie właśnie java applety były bardzo mocno wykorzystywane (i śmiem twierdzić, że nadal są). Już wtedy była to technologia "pase" i programiści dziwili się, że tego używamy.

Wydaje mi się że spora część nowych programistów w ogóle może nie wiedzieć o istenieniu tej technologii - i dobrze!

Problemów mieliśmy z tym niesamowicie dużo, a to że jeden z apletów współpracował z kartami od podpisów cyfrowych tak mocno skomplikowało sprawę, że finalnie aplikacja webowa która teoretycznie powinna działać na "wszystkich" (to jeszcze były czasy IE6!) przeglądarkach działała na tylko wyłącznie jendej wersji FireFox (odpowiednie skonfigurowanej) - pod Windows oczywiście.

Swoją drogą - jak dziś obsłużyć urządzenia niestandardowe z przeglądarki? Skanery, kasy fiskalne, dziwne drukarki itp. Może dałoby radę z https://electronjs.org... no ale to już nie jest typowa strona www. Chyba nadal nie ma dobrego rozwiązania aby pogodzić świat webowy ze światem natywnym. A może jest?