2009-05-12 10 views
62

Il sito API twitter elenca 3 librerie java twitter.La migliore libreria di java twitter?

Sai altri? Quali sono le vostre esperienze in supporto, facilità d'uso, stabilità, comunità, ecc

+0

Sto per fare il grande passo e vorrei anche un buon confronto. –

+0

Non dimenticare "Spring Social, Twitter". –

+0

Ho creato una proposta di sito per fornire a domande come questa una casa ufficiale di Stack Overflow. Si chiama [raccomandazioni del Codice] (http://area51.stackexchange.com/proposals/66606/code-recommendations?referrer=S-_R40wBFZh6TlZ3Al4_Sw2) contribuire a rendere una realtà unendo e facendo domande ora! – daviewales

risposta

25

penso Twitter4j è buona è data più fino API

+0

grazie per questo !! – swiftBoy

+9

Dio, vorrei aver detto "Penso che sia il migliore" e ottengo subito 15 upvotes – diegoaguilar

39

Ho appena dato un'occhiata al loro.

JTwitter sembra decisamente il più debole dei tre. Non sembra essere stato aggiornato di recente, non copre gran parte dell'API di Twitter e non sembra avere alcuna versione oltre a quella iniziale. Al rialzo, è concesso in licenza LPGL, viene fornito con quel piccolo extra di cui ha bisogno e sembra piccolo e semplice da capire.

Gli altri due, java-twitter e Twtter4J sono molto più vicini alla qualità. Entrambi coprono l'API di base ed entrambi hanno tutti gli accorgimenti dei normali progetti open source: repository di codice sorgente pubblicamente disponibile, documenti on-line, mailing list attive e attività di sviluppo recenti.

Tuttavia, Twitter4J sembra essere il leader. Dai documenti, la copertura API sembra essere più completa. La mailing list è decisamente più attiva. I documenti sono molto meglio. E, cosa più importante per me, le versioni sono state più frequenti. java-twitter ha rilasciato una release, la release "0.9-SNAPSHOT" circa 4 mesi fa. Twitter4J ha avuto diverse versioni in quel periodo di tempo, tra cui 2.0.0 e versioni incrementali fino alla 2.0.8, risolvendo problemi e aggiungendo supporto per le nuove API di Twitter.

Ho intenzione di iniziare con Twitter4J; se non lo senti, supponi che sia stato semplicemente fantastico per me.

+7

Dopo un mese di ricerche, Twitter4J sembra molto bello. Sono completamente a favore di esso. –

+0

I tuoi commenti su JTwitter non sono accurati, anche se la natura breve e semplice del sito web di JTwitter (1 pagina + javadoc, 0 bumpf) può essere in parte la colpa. –

+0

Credo che i commenti fossero accurati all'epoca (giugno 2009). Immagino che alcune cose siano cambiate nei 32 mesi successivi. Forse potresti commentare la biblioteca come è oggi? –

0

Ho selezionato Twitter4j perché un sacco di persone ci stanno lavorando. Ed è facile trovare alcuni contenuti su Internet a riguardo.

8

Uso Twitter4J e devo ancora avere un problema. In realtà mi piace molto.

L'esempio di OAuth sul loro sito Web è il più grande fastidio: non è utile. Ecco il mio codice OAuthServlet se sei interessato (o qualcun altro). So che questa domanda è piuttosto vecchia, quindi la sto mettendo qui di più per i risultati di ricerca.

package com.example.oauth; 

import java.io.PrintWriter; 
import java.io.IOException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
import twitter4j.*; 
import twitter4j.http.*; 


@SuppressWarnings("serial") 
public class OAuthServlet extends HttpServlet { 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 

     HttpSession sess = req.getSession(true); 
     RequestToken requestToken = (RequestToken) sess.getAttribute("requestToken"); 



     if (sess.getAttribute("twitter_user_id") != null) { 
      resp.setContentType("text/plain"); 
      PrintWriter out = resp.getWriter(); 
      if (req.getRequestURI().indexOf("logout") > 3) { 
       sess.removeAttribute("twitter_user_id"); 
       out.println("You're now logged out."); 
      } else { 
       out.println("You're already logged in!"); 
      } 
     } else if (req.getRequestURI().indexOf("callback") > 3 && req.getParameter("oauth_token").length() > 0 && requestToken != null) { 

      handleCallback(req, resp, sess); 
      if (sess.getAttribute("oauth_previous") != null) { 
       resp.sendRedirect((String) sess.getAttribute("oauth_previous")); 
       sess.removeAttribute("oauth_previous"); 
      } 

     } else { 

      sendToTwitter(resp, sess); 
      sess.setAttribute("oauth_previous", req.getHeader("Referer")); 
     } 

    } 

    private void sendToTwitter(HttpServletResponse resp, HttpSession sess) throws IOException { 

     RequestToken requestToken = (RequestToken) sess.getAttribute("requestToken"); 

     try { 
      Twitter twitter = new TwitterCnx().registerOAuth().get(); 

      requestToken = twitter.getOAuthRequestToken(); 
      sess.setAttribute("requestToken", requestToken); 

      resp.sendRedirect(requestToken.getAuthorizationURL()); 


     } catch (TwitterException e) { 
      PrintWriter out = resp.getWriter(); 
      out.println(e.getStackTrace()); 
     } 
    } 

    private void handleCallback(HttpServletRequest req, HttpServletResponse resp, HttpSession sess) throws IOException { 

     RequestToken requestToken = (RequestToken) sess.getAttribute("requestToken"); 
     sess.removeAttribute("requestToken"); 
     String secret = req.getParameter("oauth_token"); 

     resp.setContentType("text/plain"); 
     PrintWriter out = resp.getWriter(); 

     try { 
      Twitter t = new TwitterCnx().registerOAuth().get(); 

      AccessToken accessToken = t.getOAuthAccessToken(requestToken.getToken(), secret); 
      long id = (long) t.verifyCredentials().getId(); 

      storeAccessToken(id, accessToken,sess); 
      sess.setAttribute("twitter_user_id", id); 

      out.println("You're now logged in!"); 

     } catch (TwitterException e) { 
      out.println("Something went wrong. Sorry about that. Please try again."); 
     } 

    } 



    private void storeAccessToken(Long id, AccessToken at, HttpSession sess) { 
     //you probably want to persist this somewhere other than in sessions. 
     sess.setAttribute("secret", at.getTokenSecret()); 
     sess.setAttribute("token", at.getToken()); 
     //also, don't forget to persist the user id alongside the token. 
    } 
} 

Uso la classe TwitterCnx come wrapper per twitter4j.Twitter. TwitterCnx definisce il mio materiale di consumo OAuth e restituisce un oggetto Twitter. È una classe finale con metodi statici quindi non produco più di un oggetto Twitter per istanza di app.

10

Ahem; JTwitter viene mantenuto attivamente, aggiornato regolarmente (versione 1.6.2 rilasciata oggi) e copre la maggior parte delle API di Twitter.

Manca solo un metodo per impostare l'immagine del profilo e alcune altre impostazioni del profilo. Oltre a questo, è abbastanza completo. Aggiornamenti di stato, scadenze, amicizie, liste, ricerche, streaming, ecc.

È anche veloce e robusto.Twitter può essere traballante in alcuni luoghi e JTwitter ha degli aggettivi e delle eccezioni informative per semplificarti la vita.

Come sviluppatore JTwitter principale, sono piuttosto prevenuto! Ma anche il feedback degli sviluppatori che usano JTwitter è molto positivo.

0

C'è anche TweetStream4J che è un collegamento Java per l'API di streaming di Twitter. È piuttosto semplice e, a differenza dell'ultima volta che l'ho usato, l'autore lo ha aggiornato per includere un file pom.xml in modo da poterlo costruire. È abbastanza semplice e veloce quando l'ho usato (da Scala).

2

Per tutti coloro che ancora guardando a questa domanda, vale la pena ricordare che l'unico API che Twitter currently lists on its website per Java è Twitter4J. Quindi, se avessi avuto bisogno di più convincente che quello era quello da usare, bene, ecco qua!

Problemi correlati