
Klientapplikationer kan skrivas för smart phones på ett liknande sätt som för en PC, antingen i Java eller i ett språk som stöds av klientens plattform. Utvecklingsresurser är den främsta begränsande faktorn när det gäller funktionaliteten i en klientapplikation, då det har visat sig vara mycket kostsamt och tidskrävande att ta fram lokala, kundanpassade klientapplikationer.
Till skillnad från dagens PC-datorer har dock den mobila terminalen stora begränsningar vad gäller minnes- och lagringskapacitet. Även det trådlösa nätet begränsar i vilken utsträckning lokala applikationer kan distribueras och uppdateras, då det helt enkelt kan ta för lång tid och bli för dyrt att ladda ner en stor lokal applikation.
Utveckling av mjukvara är tidskrävande för en PC-miljö, och än mer krävande för en mobil miljö där hänsyn måste tas till den begränsade CPU-kraften, minneskapaciteten och funktionaliteten i en mobiltelefon. Utbudet av funktionsbibliotek och utvecklingsverktyg, som är enormt stort i PC-världen, är i stort sett obefintligt för den mobila miljön. Likaså vad gäller vertyg för att bygga användargränssnitt och komponenter.
Kommunikationsprotokoll, såsom SOAP och XML-RPC, vilka fungerar mycket tillfredsställande för att låta en PC kommunicera med en server, är ofta alldeles för “tunga” för att en mobil applikation ska kunna göra det samma. Återigen, orsaken är begränsningarna i telefonerna och i det trådlösa nätet. Att utveckla specifika protokoll för att lösa problemet är dyrt och tidskrävande, främst på grund av behovet av långa testperioder, och det löser inte heller problemet med telefonens begränsade resurser.
Förändringar och uppgraderingar av en tjänst för specifika telefonapplikationer är komplicerat och kostsamt, då samtliga klienter måste installeras om, samt att protokollet mellan klient och server vanligen behöver revideras.
Att bygga klientapplikationer innebär stor flexibilitet vad gäller tjänstens funktionalitet, men till priset av långa utvecklingscykler och komplicerad hantering av förändringar.
