English | Japanese | Korean

 



バージョン

開発中のバージョン

バージョン 4.0.5-SNAPSHOT
バージョン 4.0.4 からの JavaDoc diff

バージョン 2.2.x から 3.0.x への移行

- まずプロジェクトの再ビルドを!
Twitter API1.1の対応に伴いバージョン3.0.x は旧バージョンから若干の非互換箇所があります。旧バージョンを利用していたプロジェクトでバージョン3.0.xを利用する場合は必ずプロジェクトの再ビルドを行ってください。

- 変更・廃止になったメソッド
以下のメソッドは廃止になっています。同等の機能を持つ新しいメソッドに移行するか、当該機能の利用を停止する必要があります。
廃止メソッド移行先
disableNotification()updateFriendship()
enableNotification()updateFriendship()
getProfileImage()User#getBigger|Mini|OriginalProfileImageURL()
getBlockingUsersIDs()getBlocksIDs()
getLocationTrends()getPlaceTrends()
getAllUserLists()getUserLists()
getAvailableTrends(GeoLocation)getClosestTrends(GeoLocation)
getFavorites(int)getFavorites(Paging paging)
getBlockingUsers()getBlocksList(cursor)
getPublicTimeline()N/A
AccountTotals getAccountTotals()N/A
IDs getNoRetweetIds()N/A
IDs getRetweetedByIDs(long)N/A
IDs getRetweetedByIDs(long, Paging)N/A
getRetweetedByMe()N/A
getRetweetedByUser()N/A
getRetweetedToMe()N/A
getRetweetedToUser()N/A
getRetweetsOfMe()N/A
getDailyTrends()N/A
getWeeklyTrends()N/A
getRetweetedBy()N/A
boolean existsBlock()N/A
boolean existsFriendship()N/A
boolean test()N/A

- OAuth必須化
Twitter4J 3.0.xはTwitter API 1.1を使います。以前のバージョンと異なり全てのメソッドコールはOAuth認可が必須になります。

- 検索APIとREST APIの統合
歴史的な理由から検索APIとREST APIは分けられており、search()メソッドの返すQueryResultはTweetインスタンスを返しており他のメソッドの返すStatusインスタンスとは若干ことなるフィールドを持っていました。Twitter API 1.1でようやく検索APIとREST APIは統合され、QueryResultはStatusインスタンスを返すようになり、Tweetインターフェースは廃止されました。

- Androidビルドの廃止
これまで若干コンパクトなAndroid用ビルドを提供していましたが、バージョン3.0.3で本体をコンパクト化し、Android用ビルドは廃止しました。Androidプラットフォームは引き続きサポートします。通常版のビルドをお使いください。

- Java 1.4.xサポートの廃止
Twitter4J 3.0.xはJava 5以降をサポートします。Java 1.4.xとTwitter API 1.1両方に対応したバージョンのTwitter4Jの提供は個別対応になります。何らかの理由でJava 1.4.xでTwitter4Jを引き続き使う必要がある場合はyusuke@mac.comへお問い合わせください。

バージョン 2.1.x から 2.2.x への移行

- まずプロジェクトの再ビルドを!
バージョン2.2.0 は旧バージョンから若干の非互換箇所があります。旧バージョンを利用していたプロジェクトでバージョン2.2.0を利用する場合は必ずプロジェクトの再ビルドを行ってください。

- twitter4j.http.*パッケージの移行 (TFJ-559)
twitter4j.http.* は twitter4j.auth.* へ移動しました。

- Basic認証の廃止 (TFJ-560)
Basic認証の廃止に伴いTwitterFactory.getInstance(screenName,password)は廃止されました。xAuthでアクセストークンを取得するにはTwitter.getOAuthAccessToken(screenName, password)を使います。getOAuthAuthorizedInstance(Authorization) は廃止され、getInstance(Authorization)になりました。

- 非同期APIとストリーミングAPI専用artifactの導入 (TFJ-345)
非同期APIはtwitter4j-async(twitter4j-coreに依存)へ、ストリーミングAPIはtwitter4j-stream(twitter4j-asyncに依存)へ移動しました。

- JSONストアの無効化 (TFJ-562)
Twitterからのレスポンスの生JSONはDataObjectFactory#getRawJSON()で取得できますが、デフォルトでこの機能は無効になりました。生のJSONへアクセスが必要なアプリケーションではtwitte4j.proeperties内でjsonStoreEnabledオプションをtrueに設定してください。

- ライセンスの変更 (TFJ-446)
ライセンスはBSDからApache License 2.0へ変更になりました。

バージョン 2.1

2010/1/24 リリース: 最新APIセットを全てサポート。パフォーマンス、メモリ消費改善。Android 完全対応。

バージョン 2.0.x から 2.1.x への移行

- まずプロジェクトの再ビルドを!
バージョン2.1.0 は旧バージョンから若干の非互換箇所があります。旧バージョンを利用していたプロジェクトでバージョン2.1.0を利用する場合は必ずプロジェクトの再ビルドを行ってください。

- artifactId、groupId の変更 (TFJ-225)
artifactId は twiter4j から twitter4j-core へ変更されました。また groupId は net.homeip.yusuke から org.twitter4j へ変更されました。

- ファクトリクラスの導入、オブジェクトの不変(immutable)化 (TFJ-231)
Twitter, AsyncTwitter, TwitterStream のコンストラクタは非推奨となり、代わりに TwitterFactory, AsyncTwitterFactory, TwitterStreamFactory が導入されました。(TFJ-231)
Twitter, AsyncTwitter, TwitterStream は基本的に不変(immutable)オブジェクトとなり、OAuth関連以外の setter は廃止され、よりスレッドセーフになりました。
不変性(immutableness)に関しての例外は OAuth のトークンに関する状態です。OAuth を利用する場合は 1. Token なし 2. RequestToken 取得済み 3. AccessToken 取得済み という状態に変化します。AccessToken 取得済みの状態で RequestToken を取得しようとすると IllegalStateException が投げられます。

- AsyncTwitter / TwitterListener 関連の変更 (TFJ-244,TFJ-246,TFJ-284)
AsyncTwitter は Twitter クラスから独立しました。AsyncTwitter クラスは同期メソッドを持たず、メソッド名から 〜Async がとれました。またメソッドコール毎にリスナクラスを指定するのではなく、事前にファクトリにリスナクラスを渡しておくことでよりスレッドセーフな実装になりました。(TFJ-284)
TwitterListener.onException(TwitterException te, int method) は廃止され、替わりに TwitterListener.onException(TwitterException te, TwitterMethod method) が導入されました。 TwiteterListener を引数にとらない非同期メソッドは廃止されました。(TFJ-246)

- Streaming API サポートの削除、リミット通知対応 (TFJ-210)
StatusListener.onDeletionNotice(StatusDeletionNotice),StatusListener.onTrackLimitationNotice(int) が導入されました。 これに伴 StatusStream の next メソッドシグニチャは Status next() から void next(StatusListener listener) へと変更されました。

- 非推奨メソッドの廃止(TFJ-113,TFJ-240)
バージョン2.0.10で非推奨となっていたメソッド全てとgetFeatured()は廃止(削除)されました。

- getFriendsStatuses() と getFollowersStatuses()(TFJ-234) のカーソルベースのぺージング
getFriendsStatuses(Paging) と getFollowersStatuses(Paging) は廃止されました。
代わりにgetFriendsStatuses(long)getFollowersStatuses(long)でカーソルベースのページングを行えます。
これらのメソッドはCursorSupportを実装するPagableResponseList<twitter4j.List> を返します。
パラメータなしの getFriendsStatuses() と getFollowersStatuses() は getFriendsStatuses(-1l) または getFollowersStatuses(-1l) を呼び出すのと同じで、最初のページを返します。
getFriendsStatuses(前回のレスポンス.getNextCursor()) を呼ぶことで次のぺージを取得できます。

- java.util.List に替わる twitter4j.ResponseList
これまでクライアントコードはTwitterResponse のリストを返すメソッドを利用する場合、rate limit status を確認するのにリスト中の要素を見なければなりませんでした。
バージョン2.1.0ではjava.util.List の替わりに rate limit status を直接確認できる twitter4j.ResponseList を返します。

- screen_name と user_id の曖昧さの除去 (TFJ-207)
Stringを引数にとるものはユーザ関連のメソッドは、数値はユーザIDとして、非数値文字列はスクリーン名として解釈されていました。
以下のメソッドは (int userId)を引数にとるメソッドを追加し、スクリーン名が数値のユーザを適切に扱えるようになりました。
getUserTimeline()
showUser()
sendDirectMessage()
getFriendsStatuses()
getFollowersStatuses()
enableNotification()
disableNotification()
createBlock()
destroyBlock()
existsBlock()
createFriendShip()
destroyFriendShip()

- Rate limit status の全面導入
TwitterResponse に getRateLimitStatus() が導入されました。
また、Twitter のメソッドが返すリストの各要素の getRateLimitStatus() は null を返します。(Pagable)ResponseList.getRateLimitStatus() を代わりに使ってください。

導入されたメソッド:
 TwitterResponse.getRateLimitStatus()

削除されたクラス、メソッド:
 TwitterResponse.getRateLimitLimit() : RateLimitStatus.getHourlyLimit() をかわりに使ってください。
 TwitterResponse.getRateLimitRemaining() : RateLimitStatus.getRemainingHits() をかわりに使ってください。
 TwitterResponse.getRateLimitReset() : RateLimitStatus.getResetTime() をかわりに使ってください。

- GeoLoction クラスの導入 (TFJ-217)
GeoLocationクラスが導入されました。Status中に geo location が含まれているかどうかは null != status.getGeoLocation() で確認できます。

削除されたクラス、メソッド:
Status.getLongitude()
Status.getLatitude()
Query.setGeoCode(double latitude, double longitude, double radius, String unit)
Twitter.updateStatus(String status, double latitude, double longitude)
Twitter.updateStatus(String status, long inReplyToStatusId, double latitude, double longitude)

導入されたクラス、メソッド:
twitter4j.GeoLocation
Status.getGeoLocation()
Query.setGeoCode(GeoLocation location, double radius, String unit)
Twitter.updateStatus(String status, GeoLocation location)
Twitter.updateStatus(String status, long inReplyToStatusId, GeoLocation location)
AsyncTwitter.updateStatusAsync(String status, GeoLocation location, TwitterListener listener)
AsyncTwitter.updateStatusAsync(String status, long inReplyToStatusId, GeoLocation location, TwitterListener listener)

- メソッド名の修正 (TFJ-245,TFJ-264)
削除されたクラス、メソッド:
Twitter.updateDeliverlyDevice()
AsyncTwitter.updateDeliverlyDeviceAsync()
Twitter.rateLimitStatus()
AsyncTwitter.rateLimitStatus()

導入されたクラス、メソッド:
Twitter.updateDeliveryDevice()
AsyncTwitter.updateDeliveryDeviceAsync()
TwitterListener.updatedDeliverlyDevice()
TwitterListener.updatedDeliveryDevice()
Twitter.getRateLimitStatus()
AsyncTwitter.getRateLimitStatus()

- TwitterResponse はクラスではなくなりました
多くの場合、関係ありませんが、TwitterResponse は rate limit status のアクセサを意味するインターフェースになりました。もうレスポンスオブジェクトの親クラスではありません。より正確に、内部の話をするとバージョン2.1.0からほとんどのレスポンスクラスはTwitterResponseImpl を継承するようになりました。

バージョン 2.0

2009/04/19 リリース: OAuth, Twitpocalypse 問題に対応(バージョン2.0.8〜)

バージョン 1.0

2007/06/09 リリース: 初版リリース