Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/msgpack/msgpack-java
MessagePack serializer implementation for Java / msgpack.org[Java]
https://github.com/msgpack/msgpack-java
Last synced: about 2 months ago
JSON representation
MessagePack serializer implementation for Java / msgpack.org[Java]
- Host: GitHub
- URL: https://github.com/msgpack/msgpack-java
- Owner: msgpack
- License: apache-2.0
- Created: 2011-06-29T08:45:39.000Z (almost 13 years ago)
- Default Branch: main
- Last Pushed: 2024-04-25T17:57:20.000Z (about 2 months ago)
- Last Synced: 2024-04-25T18:57:06.329Z (about 2 months ago)
- Language: Java
- Homepage: http://msgpack.org/
- Size: 3.49 MB
- Stars: 1,378
- Watchers: 88
- Forks: 318
- Open Issues: 53
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Authors: AUTHORS
Lists
- awesome-java - MessagePack - Efficient binary serialization format. (Projects / Serialization)
- useful-java-links - MessagePack - MessagePack serializer implementation for Java. License: [Apache 2](http://www.apache.org/licenses/LICENSE-2.0) , [![GitHub stars](https://img.shields.io/github/stars/msgpack/msgpack-java.svg?style=social&label=Star&maxAge=2592000)](https://github.com/msgpack/msgpack-java). ![business friendly license](https://github.com/Vedenin/useful-java-links/blob/master/img/business-friendly.png?raw=true) (I. Development / 6. Useful libraries)
- awesome-tech - MessagePack - Efficient binary serialization format. (Solutions / Serialization)
- awesome-java-zh - MessagePack - 高效的二进制序列化格式。 (项目 / 序列化)
- awesome-java - MessagePack - Efficient binary serialization format. (Projects / Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Projects / Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Projects / Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Projects / Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Projects / Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Projects / Serialization)
- awesome-java - MessagePack - Efficient binary serialization format. (Serialization)
README
MessagePack for Java
===[MessagePack](http://msgpack.org) 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.
* Message Pack specification:
MessagePack v7 (or later) is a faster implementation of the previous version [v06](https://github.com/msgpack/msgpack-java/tree/v06), and
supports all of the message pack types, including [extension format](https://github.com/msgpack/msgpack/blob/master/spec.md#formats-ext).[JavaDoc is available at javadoc.io](https://www.javadoc.io/doc/org.msgpack/msgpack-core).
## Quick Start
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.msgpack/msgpack-core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.msgpack/msgpack-core/)
[![Javadoc](https://javadoc.io/badge/org.msgpack/msgpack-core.svg)](https://www.javadoc.io/doc/org.msgpack/msgpack-core)For Maven users:
```org.msgpack
msgpack-core
(version)```
For sbt users:
```
libraryDependencies += "org.msgpack" % "msgpack-core" % "(version)"
```For gradle users:
```
repositories {
mavenCentral()
}dependencies {
compile 'org.msgpack:msgpack-core:(version)'
}
```- [Usage examples](https://github.com/msgpack/msgpack-java/blob/develop/msgpack-core/src/test/java/org/msgpack/core/example/MessagePackExample.java)
### 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](https://github.com/FasterXML/jackson-databind).
For details, see [msgpack-jackson/README.md](https://github.com/msgpack/msgpack-java/blob/develop/msgpack-jackson/README.md). The template-based serialization mechanism used in v06 is deprecated.- [Release Notes](https://github.com/msgpack/msgpack-java/blob/develop/RELEASE_NOTES.md)
## For MessagePack Developers [![Travis CI](https://travis-ci.org/msgpack/msgpack-java.svg?branch=v07-develop)](https://travis-ci.org/msgpack/msgpack-java)
msgpack-java uses [sbt](http://www.scala-sbt.org/) for building the projects. For the basic usage of sbt, see:
* [Building Java projects with sbt](http://xerial.org/blog/2014/03/24/sbt/)Coding style
* msgpack-java uses [the same coding style](https://github.com/airlift/codestyle) with Facebook Presto
* [IntelliJ setting file](https://raw.githubusercontent.com/airlift/codestyle/master/IntelliJIdea14/Airlift.xml)### 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 # Reformat 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).
```scala
$ git tag v0.x.y
$ git push origin v0.x.y
```A new release note will be generated automatically at the [GitHub Releases](https://github.com/msgpack/msgpack-java/releases) page.
#### Publishing to Sonatype from Local Machine
If you need to publish to Maven central using a local machine, you need to configure [sbt-sonatype](https://github.com/xerial/sbt-sonatype) plugin. 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/(sbt-version)/sonatype.sbt___
```
credentials += Credentials("Sonatype Nexus Repository Manager",
"oss.sonatype.org",
"(Sonatype user name)",
"(Sonatype password)")
```You may also need to configure GPG. See the instruction in [sbt-pgp](https://github.com/sbt/sbt-pgp).
Then, run `publishedSigned` followed by `sonatypeBundleRelease`:
```
# [optional] When you need to perform the individual release steps manually, use the following commands:
> publishSigned # Publish GPG signed artifacts to the Sonatype repository
> sonatypeBundleRelease # Publish to the Maven Central (It will be synched within less than 4 hours)
```If some sporadic error happens (e.g., Sonatype timeout), rerun `sonatypeBundleRelease` again.
### Project Structure
```
msgpack-core # Contains packer/unpacker implementation that never uses third-party libraries
msgpack-jackson # Contains jackson-dataformat-java implementation
```