Skip to main content
Version: 0.17

Scala Serialization Guide

Apache Fory™ Scala provides optimized serializers for Scala types, built on top of Fory Java. It supports all Scala object serialization:

  • case class serialization
  • pojo/bean class serialization
  • object singleton serialization
  • collection serialization (Seq, List, Map, etc.)
  • tuple and either types
  • Option types
  • Scala 2 and 3 enumerations

Both Scala 2 and Scala 3 are supported.

Features​

Fory Scala inherits all features from Fory Java, plus Scala-specific optimizations:

  • High Performance: JIT code generation, zero-copy, 20-170x faster than traditional serialization
  • Scala Type Support: Optimized serializers for case classes, singletons, collections, tuples, Option, Either
  • Default Value Support: Automatic handling of Scala class default parameters during schema evolution
  • Singleton Preservation: object singletons maintain referential equality after deserialization
  • Schema Evolution: Forward/backward compatibility for class schema changes

See Java Features for complete feature list.

Installation​

Add the dependency with sbt:

libraryDependencies += "org.apache.fory" %% "fory-scala" % "0.17.0"

Quick Start​

import org.apache.fory.Fory
import org.apache.fory.serializer.scala.ScalaSerializers

case class Person(name: String, id: Long, github: String)
case class Point(x: Int, y: Int, z: Int)

object ScalaExample {
// Create Fory with Scala optimization enabled
val fory: Fory = Fory.builder()
.withScalaOptimizationEnabled(true)
.build()

// Register optimized Fory serializers for Scala
ScalaSerializers.registerSerializers(fory)

// Register your classes
fory.register(classOf[Person])
fory.register(classOf[Point])

def main(args: Array[String]): Unit = {
val p = Person("Shawn Yang", 1, "https://github.com/chaokunyang")
println(fory.deserialize(fory.serialize(p)))
println(fory.deserialize(fory.serialize(Point(1, 2, 3))))
}
}

Built on Fory Java​

Fory Scala is built on top of Fory Java. Most configuration options, features, and concepts from Fory Java apply directly to Scala. Refer to the Java documentation for:

Scala-Specific Documentation​