アリーFastjson紹介

22830 ワード

Fastjson紹介
FastjsonはJava言語で作成されたJSONプロセッサで、アリババが開発しました.1、従うhttp://json.org標準では、公式サイトに収録されている参考の一つです.2、機能QiangはJDKの各種タイプをサポートしています.基本的なJavaBean、Collection、Map、Date、Enum、汎型を含みます.3、依存性がなく、例外的に追加のjarは必要なく、直接JDKを走ることができます.4、オープンソースは、Apache License 2.0を使ってオープンします.http://code.alibabatech.com/wiki/display/FastJSON/Home 5、超高い性能を持っています.java世界には他のjsonライブラリがありません.fastjsonと比べられます.
Fastjsonを手に入れたら?SVN:http://code.alibabatech.com/svn/fastjson/trunk/WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON
Mavenを使用したら、Maven repositoryの配置は以下の通りです.
<repository>
	<id>opensesame</id>
	<name>Alibaba OpenSource Repsoitory</name>
	<url>http://code.alibabatech.com/mvn/releases/</url> 	<snapshots>
		<enabled>false</enabled>
	</snapshots>
</repository>
pom.xmlファイルに依存関係を追加:
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.0.4</version>
</dependency>
mavenを使用していない場合は、直接ダウンロードできます.
Binary: http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1.jar Source:http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1-sources.jar Subversion: http://code.alibabatech.com/svn/fastjson/
使用紹介:Fastjsonの最も主要な使用入口はcomp.alibaba.fastjson.JSONです.
import com.alibaba.fastjson.JSON;

public static final Object parse(String text); //  JSON  parse JSONObject  JSONArray public static final JSONObject parseObject(String text); //  JSON  parse JSONObject public static final <T> T parseObject(String text, Class<T> clazz); //  JSON  parse JavaBean public static final JSONArray parseArray(String text); //  JSON  parse JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); // JSON  parse JavaBean   public static final String toJSONString(Object object); //  JavaBean    JSON   public static final String toJSONString(Object object, boolean prettyFormat); //  JavaBean        JSON   public static final Object toJSON(Object javaObject);  JavaBean   JSONObject  JSONArray。
コード例:コード例はクラスUserおよびGroupを使用する.
public class User {
	private Long id;
	private String name;

	public Long getId() { return id; }
	public void setId(Long id) { this.id = id; }

	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
}
public class Group {
	private Long id;
	private String name;
	private List<User> users = new ArrayList<User>();

	public Long getId() { return id; }
	public void setId(Long id) { this.id = id; }

	public String getName() { return name; }
	public void setName(String name) { this.name = name; }

	public List<User> getUsers() { return users; }
	public void setUsers(List<User> users) { this.users = users; }
}
Encoコードの例:
import com.alibaba.fastjson.JSON;

Group group = new Group();
group.setId(0L);
group.setName("admin");

User guestUser = new User();
guestUser.setId(2L);
guestUser.setName("guest");

User rootUser = new User();
rootUser.setId(3L);
rootUser.setName("root");

group.getUsers().add(guestUser);
group.getUsers().add(rootUser);

String jsonString = JSON.toJSONString(group);

System.out.println(jsonString);
Decodeコードの例:
Group group2 = JSON.parseObject(jsonString, Group.class);
以前のバージョンは1.1.0で、1.1.0はasmとSortFastMatchのアルゴリズムを採用して性能を向上させました.焦りのあまり、優れた性能を示すため、厳密なテストを行わずにリリースされました.
1.1.1は1.1.0に対して、これは比較的安定したバージョンであり、行テストのカバー率は90%以上に引き上げられ、build verify testcase 983個である.
このバージョンはさらにasmとSortFieldFastMatchのアルゴリズムを改善し、さらに性能を向上させ、同時に多くのtestcaseを補充し、安定性を向上させました.このバージョンをお勧めします.このバージョンを使うと、驚くべき性能が得られます.
1.1.1バージョンのasmソースはobject webのasmプロジェクトからなります.fastjsonの必要に応じて裁断します.asmを導入しながら、パッケージサイズの移行が大きくならないようにします.
sort field matchをよりよく使うために、最適化アルゴリズムはパーパーパーの性能を向上させ、fastjsonがプログレッシブ化される時、デフォルトはSerializer Feature.SortField特性を開きました.反プログレッシブ時もデフォルトでSortFeidFastMatchのオプションを開きました.このように、fastjsonでプログレッシブなテキストを使用すれば、出力の結果はfieldNameで並べ替えて出力されます.パー時もこの順序で最適化して読み取りができます.この場合、パーサーは非常に良い性能を得ることができる.
githb.com/eishary/jvm-serializers/提供するプログラムを使ってテストします.性能データは以下の通りです.
プログレッシブ時間
アンチプログレッシブ時間
サイズ
圧縮後のサイズ
javaプロローグ
8546
43199
889
541
hessian
6643
10043
501
313
protobuf
3008
1694
239
149
thrift
3182
1951
349
197
avロ
3575
2095
221
133
Json-lib
45734
149741
485
263
ジャックソン
3245
2986
503
271
fastjson
2292
1499
468
251
テスト走のシナリオは:
./run -chart -include=`cat serializers.txt | tr "\
"
","` data/media.1.cks
上記のデータから見ると、fastjsonの性能はすでにプロバグ、thrift、avroといったバイナリプロトコルを超えています.テキストプロトコルの性能はバイナリプロトコルを超えるのは難しいです.私は皆さんに私がやったことを宣言することができてとても嬉しいです.
fastjsonの優れた性能表現にかんがみ、次のようなことを提案します.1、他のすべてのjsonライブラリを交換して、java世界には他のjsonライブラリがありません.fastjsonと比べられます.2、fastjsonを使うプロローグとアンチプログレッシブをJava serializeに置換します.java serializeは性能が遅いだけでなく、体制も大きいです.3、fastjsonを使ってhessianを交替して、jsonプロトコルはhessian体積が大きい必要はなくて、その上fastjson性能は優越していて、数倍はhessian 4で、fastjsonをmemachedに使って対象データをキャッシュします.
How to get it
If you're Maven user,juse our maven repositoryhttp://code.alibabatech.com/mvn/releases/)withフォロギングdependency
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.1</version>
</dependency>
Downlaods
Binary: http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1.jar Source:http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/1.1.1/fastjson-1.1.1-sources.jar Subversion: http://code.alibabatech.com/svn/fastjson/