Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,890 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MessagePack for Java

MessagePack is a binary serialization format. If you need a fast and compact alternative of JSON, MessagePack is your friend. For example, a small integer can be encoded in a single byte, and short strings only need a single byte prefix + the original byte array. MessagePack implementation is already available in various languages (See also the list in http://msgpack.org) and works as a universal data format.

MessagePack v7 (or later) is a faster implementation of the previous version v06, and supports all of the message pack types, including extension format.

JavaDoc is available at javadoc.io.

Quick Start

Maven Central Javadoc

For Maven users:

<dependency>
   <groupId>org.msgpack</groupId>
   <artifactId>msgpack-core</artifactId>
   <version>(version)</version>
</dependency>

For sbt users:

libraryDependencies += "org.msgpack" % "msgpack-core" % "(version)"

For gradle users:

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.msgpack:msgpack-core:(version)'
}

Java 17 Support

For using DirectByteBuffer (off-heap memory access methods) in JDK17, you need to specify two JVM options:

--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED

Integration with Jackson ObjectMapper (jackson-databind)

msgpack-java supports serialization and deserialization of Java objects through jackson-databind. The template-based serialization mechanism used in v06 is deprecated.

Two artifacts are published depending on which Jackson major version your project uses:

Jackson version groupId artifactId Java package Requirements
Jackson 3.x org.msgpack.jackson3 jackson-dataformat-msgpack org.msgpack.jackson3.dataformat Java 17+
Jackson 2.x org.msgpack jackson-dataformat-msgpack (maintenance mode) org.msgpack.jackson.dataformat Java 8+

The Jackson 2.x artifact keeps the same Maven coordinates and Java package as before, so existing users need no changes. The Jackson 3.x support is published under a new groupId (org.msgpack.jackson3) with a new Java package, following the same convention as Jackson itself (com.fasterxml.jackson.dataformattools.jackson.dataformat); renaming the Maven coordinates and the Java package together allows both artifacts to coexist on the same classpath for incremental migration. See each module's README for install instructions and usage details.

For MessagePack Developers Travis CI

msgpack-java uses sbt for building the projects. For the basic usage of sbt, see:

Coding style

Basic sbt commands

Enter the sbt console:

$ ./sbt

Here is a list of sbt commands for daily development:

> ~compile                                 # Compile source codes
> ~"Test / compile"                        # Compile both source and test codes
> ~test                                    # Run tests upon source code change
> ~testOnly *MessagePackTest               # Run tests in the specified class
> ~testOnly *MessagePackTest -- (pattern)  # Run tests matching the pattern 
> project msgpack-core                     # Focus on a specific project
> package                                  # Create a jar file in the target folder of each project
> jcheckStyle                              # Run check style
> scalafmtAll                              # Format all Scala and sbt code

Publishing

> publishLocal            # Install to local .ivy2 repository
> publishM2               # Install to local .m2 Maven repository
> publish                 # Publishing a snapshot version to the Sonatype repository

Publish to Sonatype (Maven Central)

To publish a new version, add a new git tag and push it to GitHub. GitHub Action will deploy a new release version to Maven Central (Sonatype).

$ git tag v0.x.y
$ git push origin v0.x.y

A new release note will be generated automatically at the GitHub Releases page.

Publishing to Sonatype from Local Machine

If you need to publish to Maven central using a local machine, you need to configure credentials for Sonatype Central. First set Sonatype account information (user name and password) in the global sbt settings. To protect your password, never include this file in your project.

$HOME/.sbt/1.0/credentials.sbt

credentials += Credentials(Path.userHome / ".sbt" / "sonatype_central_credentials")

Then create a credentials file at ~/.sbt/sonatype_central_credentials:

host=central.sonatype.com
user=<your username>
password=<your password>

Alternatively, you can use environment variables:

export SONATYPE_USERNAME=<your username>
export SONATYPE_PASSWORD=<your password>

You may also need to configure GPG. See the instruction in sbt-pgp.

Then, run publishSigned followed by sonaRelease:

# [optional] When you need to perform the individual release steps manually, use the following commands:
> publishSigned           # Publish GPG signed artifacts to the Sonatype repository
> sonaRelease             # Publish to the Maven Central (It will be synched within less than 4 hours)

If some sporadic error happens (e.g., Sonatype timeout), rerun sonaRelease again.

Project Structure

msgpack-core                 # Contains packer/unpacker implementation that never uses third-party libraries
msgpack-jackson              # org.msgpack:jackson-dataformat-msgpack: Jackson 2.x integration (maintenance mode)
msgpack-jackson3             # org.msgpack.jackson3:jackson-dataformat-msgpack: Jackson 3.x integration (Java 17+)

About

MessagePack serializer implementation for Java / msgpack.org[Java]

Resources

Stars

1.5k stars

Watchers

82 watching

Forks

Releases

Packages

Used by

Contributors

Languages