Vývoj aplikací pro Facebook v Javě – 1

V tomto příspěvku rozeberu postup, jak psát aplikace pro Facebook platformu v jazyce Java. Celý příspěvek jsem rozdělil na několik částí.

Nejdříve tedy krátký úvod, co je to Facebook a proč by vás mohl jakožto vývojáře zajímat.

Úvod

O Facebooku jistě většina z vás již slyšela. Jedná se o další social network projekt, tedy web poskytující vám služby sociální sítě. Více se dočtete více zde nebo zde.

Pokud nejste na Facebooku zaregistrovaní a nevyzkoušeli jste si ho, vřele vám to doporučuju. Facebook totiž není jen „yet another Orkut“ 😉 a osobně si myslím, že Facebook je na dobré cestě, aby porazil všechny ostatní sítě. Uvidíme ještě, jak dopadne snaha o standardizaci API v oblasti social networků, ve které se výrazně angažuje i Google – viz OpenSocial.

Btw. Pokud chcete, můžete si přidat můj kontakt mezi své kontakty – link na můj profil je zde.

Čím je Facebook zajímavý a čím vybočuje z řady? Jednak je to jeho obrovská popularita a raketový nárůst počtu uživatelů. Zaregistrujte se, použijte Friend Finder nástroj a garantuji vám, že budete překvapeni, kdo všechno z vašich známých již na Facebooku je 😉 Pro zajímavost ohledně vývoje popularity, podívejte se třeba na Google Trends graf pro Facebook, Orkut a LinkedIn.

Co Facebook ale výrazně odlišuje od předchůdců jako Orkut je fakt, že Facebook se otevřel pro vývoj dalších aplikací a vznikla tak Facebook platforma.

Přínos

Facebook vám umožňuje relativně jednodušše napsat aplikaci (nebo vzít existující aplikaci) a zaintegrovat jí do Facebooku. Proč byste to měli dělat?

  1. Facebook používá obrovské množství lidí a počet stále roste. Roste tak počet potenciálních uživatelů vaší aplikace (a tedy i vašich příjmů 🙂
  2. Přidat si novou aplikaci ve Facebooku je mnohem snažší než najít a zaregistrovat se na nějakém novém webu. Prvotní bariéra proto, aby uživatel začal používat vaší aplikaci je minimální.
  3. Úspěch a popularita aplikací na Facebooku se šíří virálně. To je další podstatný rys Facebooku. Po přihlášení se do Facebooku se vám šikovně zobrazí stránka s news feedem , kde vidíte co se ve vaší síti děje.

    Např. zaujme, že váš kamarád používá aplikaci, která by vás mohla zajímat též, jste dva kliky od toho, abyste jí začali používat taky. No a virus se začíná šířit ;-]

Pokud tedy vlastníte fungující web, chtěli byste ho dále rozvíjet a získat větší počet uživatelů, neváhal bych a už dneska bych začal pracovat na jeho integraci s Facebookem.

Jako pěkný příklad uvedu Flickr vs. Facebook Photo, služby pro sdílení fotek. Flickr byl donedávna jasnou jedničkou, co se týká sdílení fotek na webu. Nyní jej (v USA) už předstihl Facebook Photos (viz zde). Přitom Facebook Photos je jen základní služba, kterou dostanete pokud se na Facebooku zaregistrujete. Stejně jako možnost používat sdílené kalendáře (Events), inzerci (MarketPlace) atd. Takže tu roste nová konkurence pro Evite.com resp. eBay.com.

Celé je to hrozně jednoduché. Proč bych měl být registrován na tolika webech, když mi to Facebook poskytne všechno pod jednou střechou. Pod jednou střechou ale neznamená, že by Facebook napsal všechny služby znova a vytvořil tak konkurenční služby jako v případě Flickru. Facebook je platforma, která umožňuje vznik a existenci konkurečních projektů a až trh rozhodne 🙂

Pokračování příště…

Takže to by na úvod stačilo. V dalších dílech rozeberu architekturu Facebook aplikací, API které máte možnost použít pro integraci s platformou a tím se dostanu až k Javě, kterou můžete použít jako jednu z možností (kromě PHP, Pythonu, Ruby, C# atd.).

PS: Pokud vás (vývoj pro) Facebook zajímá, ať už z pohledu vývojáře nebo z pohledu spíše podnikatelského, přidejte se do facebookové groupy Czech Facebook User Group.

Web Services Standards Poster

Pokud vás zajímají webové služby (web services), SOA a podobná témata, rozhodně doporučuji pěkný poster s přehledem existujících Web Service standardů (stav 2007):

WS-Standards Poster 2007-02.pdf

který vytvořila a dala k dispozici německá firma innoQ.

Pro zajímavost. Před pár měsíci jsem procházel nové WS standardy a projekty a pro přehledné vyjádření vzájemných souvislostí jsem použil kontextové mapy vytvořené pomocí CMapTools (více zde).

Contextual map Web Services - Metro and Tango
Příklad: kontextová mapa pro projekty Metro a Tango

TunnelliJ a Idea plugin API

Nedávno jsem navštívil zajímavou přednášku pořádanou českou Java User Group s názvem Jak psát API, které přežije nástrahy času prezentovanou architektem Netbeans Jardou Tulachem. V rámci přednášky proběhla diskuse o (ne)kompatibilitě IDE pluginů s postupem času (jakožto současný uživatel Eclipsu vím moc dobře, o čem je řeč).

Napadlo mě tedy, že se mrknu jaká je situace v Idee, zda ještě pořád funguje plugin Tunnellij (TCP tunnel integrovaný do IDE), který jsem napsal před pár lety pro verzi Idea 3.5 (jakožto pomůcku pro sniffování SOAP zpráv). Mrknul jsem na stránky Jetbrains a zjistil jsem, že udělali v této oblasti velký kus práce. Nové a pěkně udělané stránky plugin repository, relativně velké množství pluginů (vzhledem k tomu že Idea je komerční IDE).

Takže jsem vzal poslední build Idea verze 7 a zkusil jsem, zda můj Tunnellij (popis) plugin bude i nadále fungovat. Funguje bez problému, takže plugin API v Idee se zda být celkem stabilní, minimálně pro featury které jsem použil. Lehce se změnil a rozšířil plugin XML descriptor, takže jsem doplnil chybějící údaje (vsuvka – na zmiňované přednášce se mi líbilo, že Jarda zdůraznil, že návrh API není jenom o Java kódu a public interfacech, ale týká se mnohem více věcí, od proměnných prostředí OS přes různé deskriptory, konfigurace atd…) a znova rebuildoval celou package a nahrál do plugin centra. Paradoxem je, že tento build Idea pluginu jsem již dělal z Eclipsu 😉

A co mě nakonec příjemně překvapilo je počet downloadů – přes 5700 downloadů je pěkné číslo 😉

JBuilder 2007 aneb veletoc Borlandu

Vrátím se ještě k nedávné podcast debatě na téma java vývojových prostředí. Zmiňovali jsme zde JBuilder – javovské IDE od firmy Borland – a pokus o jeho“zmrtvýchvstání“ v podobě nové verze postavené na platformě Eclipse. Zdá se, že nový JBuilder se již klube na svět. Jako již tradičně u Borlandu jsou o něco dříve připravene webové stránky a tiskové zprávy před samotným produktem. Ačkoliv na titulní stránce je JBuilder 2007 masivně inzerován, sami si ho zatím vyzkoušet nemůžete (v sekci Downloads ho totiž zatím nenajdete).

Proč bychom si ho ale měli chtít vyzkoušet? Sám nevím. JBuilder nebyl špatné IDE, ale v časech kolem verzí 6, 7, 8 (ano Borland chrlil major verze každý půlrok) podle mě zaspal dobu. Co nám může nabídnout za nemalé peníze dnes? Nejdříve se podívejme, co jsou to ty nemalé peníze. Licenční model zůstáva zachován, verze Enterprise, Professional a nejchudší Developer stojí 1.999 resp. 799 resp. 399 dolarů (cena za nové licence, ceny za upgrade jsou o něco nižší). Poplatky za podporu nejsou v této sumě zahrnuty a nemalé peníze se platí se zvlášť. Čtyřista babek za Developer verzi, určenou pro individuální a open-source uživatele mi přijde jako silná káva a nerozumím nikomu, kdo by do toho tyto peníze investoval. Podíváteli se na seznam funkcí, je tato verze silně okleštěná (či vykleštěná ;-)) a argument, že můžete IDE rozšířit o pluginy produkované eclipse komunitou zde jaksi nemá smysl.

Dalším důvodem proč podlě mě NEinvestovat do JBuilderu je evidentní nejistota co se týče směřování tohoto produktu a potažmo celé firmy. Investovali byste (sta)tisíce dolarů do software firmy, která v únoru tohoto roku oznamovala, že se zbaví své divize zabývající se vývojovými nástroji (JBuilder, Delphi, C++Builder, C#Builder,…) protože to, co je podle nich „hot“, je trh application life management (ALM) softwaru. Tento týden (o devět měsíců později) naopak Borland oznámil, že nejlepší bude divizi nástrojů si ponechat, ale vyčlenit jí jako samostatnou odnož se jménem CodeGear. Pěkný veletoč 😉 Tyto zvraty jsou pro Borland celkem typické, vzpomeňme několikaletou neúspěšnou přeměnu v Inprise a pozdější návrat k původnímu firemnímu jménu Borland.

Nyní se podívejme na technickou stránku věci. Co nového JBuilder 2007 přinese. Čerpám pouze z dostupné dokumentace, což je především web a pdfka: Data Sheet a Feature Matrix.

Již úvodní věta je celkem odvážná 🙂

The latest JBuilder is the first application server independent enterprise class IDE built on open source Eclipse.

Pokračujme dále:

It provides all the economic benefits of an open source platform, with the reliability of a trusted, turnkey solution provider.

S výše zmiňovanou cenovou politikou mi přijde poukazovat na ekonomické benefity open source platformy také celkem zcestné 😉

Krásné fráze.

Z inzerovaných featur:

  • postavený na platformě Eclipse 3.2
  • podpora JEE5,
  • podpora JSE5
  • oboustranné modelování v UML 2.0
  • Visual Web Services Designer
  • vizualizace usnadňující EJB development (Visual EJB Workbench)
  • integrovaný OptimizeIt 2007 (což může být celkem zajímavý argument)
  • ProjectAssist a
  • další čím dál víc enterprise-abstraktně-marketingové funkce.

Jak už jsem řekl jsem k osudu JBuilderu dost skeptický. Ani ne kvůli Eclipse a Netbeans, které jsou zdarma. Ani ne kvůli IntellJ Idee, která je o dost levnější a v některých věcech stále nepřekonaná, ale podle mě míří na trochu jiný segment trhu. Skutečná konkurence pro JBuilder jsou produkty jako IBM RAD nebo Oracle JDeveloper. Jenže ti to mají snazší. IBM i Oracle mají sílu s dalšími produkty a službami protlačit svá IDE k zákazníkovi. Borland tuto sílu už dávno nemá!