Czym jest XMPP?
XMPP jest protokołem, który pozwala budować sieci komunikatorów internetowych. Szerszemu gronu użytkowników technologia ta znana jest jako jabber. Protokół pozwala przesyłać wiadomości, informacje o kontaktach i ich statusach, a nawet pliki i media (np. VoIP).
Jedną z największych zalet samego protkokołu XMPP jest możliwość “zaembedowania” go wewnątrz protokołu HTTP, dzięki czemu udaje się omijać firewalle, co daje mu przewagę nad innymi rozwiązaniami jak np GaduGadu czy ICQ. Użycie HTTP odbiega od standardowego modelu: zwykle klient HTTP wysyła żadanie do serwera, serwer je przetwarza i wysyła odpowiedź do klienta, po czym zamyka połączenie. Taki model nie nadaje się do implementacji usług typu chat, toteż zmodyfikowano go tak, że serwer po wysłaniu odpowiedzi nie zamyka połączenia. Na trwającym nadal połączeniu może dosyłać do klienta dochodzące wiadomości, zmieny statusów jego kontaktów itd. Gdyby nie to, klient musiałby co kilka sekund pytać się serwera o nowe wiadomości i update kontaktów.
Tę ciekawą funkcjonalność ostatnio wykorzystuje się do budowania usług webowych, wymagających ciągłego dostępu do informacji. Można np napisać aplikację webową wyświetlającą bieżące kursy akcji – wystarczy zrobić klienta XMPP, który otwiera połączenie do usługi, a serwer wysyła zmiany cen na bieżąco, dzięki czemu klient takiej usługi zawsze będzie poinformowany natychmiast. Podobny model oferuje technologia Comet.
XMPP jest przez wielu widziany jako “następca HTTP”, albo przynajmniej jego rozszerzenie i dlatego powołano XMPP Standards Foundation, organizację mającą na celu propagowanie, standaryzowanie i wynajdywanie nowych możliwych zastosowań tej technologii.
Google dodaje XMPP
Wielu developerów ucieszyło się, gdy w Android SDK znalazła się obsługa XMPP. Zaczęły powstawać aplikacje oparte na załączonych w SDK bibliotekach. Uznawano nawet pewną przewagę Androida nad innymi techonologiami właśnie ze względu na wbudowaną możliwość komunikacji poprzez XMPP.
Google wyrzuca XMPP i wstawia GTalkService
Ku zaskoczeniu (i głównie rozczarowaniu) entuzjastów Androida, Google zdecydował się w najnowszym SDK zamienić XMPP na GTalkService. Spowodowało to popsucie kodu istniejących już aplikacji. Ale co gorsza odebrano to jako sygnał, iż Google rezygnuje ze wspierania XMPP na Androdzie. Powodów może być kilka, mowi się np o tym, że Google woli GTalka domyślnie na telefonach wyposażonych w Androida, zamiast darmowego jabbera, inni wskauja na to, iż operatorzy GSM mogą być niezadowoleni, jesli ich użytkownicy zamiast wysyłać płatne SMSy zaczną przesyłać wiadomości jabberem.
Oczywiście, developerzy mogą używać istniejących już bibliotek takich jak Smack, ale to zwiększa rozmiar aplikacji, ponadto wielu programistów uważa, iż tak fundamentalna funkcjonalność powinna być częścią SDK, co ułątwiło by sam proces projektowania i implementacji aplikacji.
Ostatecznie okazało się, że głównym powodem, dla którego Google zrezygnował z XMPP jest ogromne zużycie baterii do jakiego dochodzi, gdy telefon jest cały czas połączony z serwerem. Telefon utrzymując otwarte połączenie zużywa sporo energii na obsługę komunikacji radiowej. Ponadto XMPP oparty jest o XML, przez co komunikaty są niepotrzebnie duże. Jest to problem samego XMPP, a jego rozwiązaniem może się okazać specjalna, być może binarna wersja protokołu XMPP zoptymalizowana na platformy mobile.
Tymczasem uczestnicy projektu OpenIntents podjęli już pierwsze działania mające na celu zreimplementowanie wyrzuconego fragmentu API.