FlatBuffers is an efficient cross platform serialization library for C++, Java, C#, Go, Python and JavaScript.
It was originally created at Google for game development and other performance-critical applications.
FlatBuffers is Open Source (Apache license V2) and available on GitHub.
It's currently used by:
It will be used using flatc to generate Java data model.
I used http://www.json-generator.com/ to generate a bigger JSON file (~4mb).
The file is here.
Following the used schema:
The Java classes are:
It was originally created at Google for game development and other performance-critical applications.
FlatBuffers is Open Source (Apache license V2) and available on GitHub.
It's currently used by:
- Cocos2d-x, the open source mobile game engine and used to serialize the game data.
- Facebook uses it for client-server communication in the Android app (see the article).
- Fun Propulsion Labs at Google in most of libraries and games.
Solution overview
- The schema will be defind in JSON format, then it will be converted to FlatBuffer format outside the application
- The Java classes of the Data model will be generated manually using flatc (FlatBuffer compiler)
Step 1: Build FlatBuffers
Download the source code in Google’s flatbuffers repository.
The build process is described on Google's documentation FlatBuffers Building.
On MacOS for example:
- Open the xcode project FlatBuffers.xcodeproj
Build the project
- flatc executable will appear in root directory.
Step 2: Prepare the schema file
Now we have to prepare schema file that defines the structure of the data we want to de-/serialize.It will be used using flatc to generate Java data model.
I used http://www.json-generator.com/ to generate a bigger JSON file (~4mb).
The file is here.
Following the used schema:
Step 3: Generate FlatBuffers files
Now we will,- Convert the json file (sample_json.json) to FlatBuffers binary file
- Generate Java Data Models
The Java classes are:
- PeopleList.java
- People.java
- Friend.java
Step 4:Create the Android application
Following the app/build.graddle file of the application:
Use FlatBuffers Java library
flatbuffers-java-1.2.0-SNAPSHOT.jar file can be used to handle the data format in java.
All we need is to put that jar inside the app/libs folder.
Android main activity
Following the code of the main activity:
Results
Following a screenshot of the application after parsing JSON as well as FlatBuffers data.
We can notice a huge difference between the two methods:
JSON parsing takes 1784ms while the FlatBuffers takes only 4ms!
Source code
Full source code can be found on Github.
Komentar
Posting Komentar