Apache Fury Adds Optimized Serializers For Scala
Written by Kay Ewbank   
Thursday, 31 October 2024

Apache Fury has been updated to add GraalVM native images and with optimized serializers for Scala collection. The update also reduces Scala collection serialization cost via the use of  encoding.

Apache Fury is an incubator project from Apache. It's a multi-language serialization framework powered by JIT dynamic compilation and zero copy. It implements multi-language SDKs, including Java, Python, Golang, JavaScript, Rust, C++. It provides automatic multi-language objects serialization features, and 170x speedup compared to JDK serialization.

fury

Serialization is used in software development fo the efficient exchange of data between systems. It lets the application share the state of a data object made up of a combination of code and data represented within a region of data storage. That object is converted by the serialization into a series of bytes that incorporates the state of the object in an easily transmittable form.

Apache Fury aims to provide a better alternative to existing serialization libraries and frameworks. Data transfer between processes, languages, nodes, or object persistence, state read-write and copy, all need serialization, and the performance of serialization can affect the efficiency of the system.

The Fury team says that static serialization frameworks like Protobuf or FlatBuffers can't be used for cross-language application development directly, because they don't support shared reference and polymorphism, and also need to generate code ahead. In contrast, dynamic serialization frameworks such as JDK serialization, Kryo, Fst, Hessian, Pickle provide ease-of-use and dynamics, but don't support cross-language and suffer significant performance issues, which is problematic for high throughput, low latency, and large-scale data transfer usage.

Fury, which is open-sourced, combines highly optimized serialization primitives, JIT dynamic compilation and zero-copy technologies. It is a library that can handle complex data structures and large data volumes efficiently, and the developers say it offers minimal overhead during serialization and deserialization processes. Fury supports multiple programming languages, and it can be used to serialize complex data structures.

The improvements to the latest release are the addition of GraalVM Native Image support through the addition of AOT (ahead of time) compilation serialization, meaning no reflection/serialization JSON config is necessary. GraalVM native image can compile Java code into native code ahead to build faster, smaller, leaner applications, but the native image doesn't have a JIT compiler to compile bytecode into machine code.

The additional support for Scala collections extends the previous Scala support, in which normal classes and case classes were well supported. However, Scala also includes its own collections, which are different from jdk collections. The additions add support for these.

Fury 0.8 is available now.

fury

More Information

Fury Website

Fury On GitHub

Related Articles

Scala 3 Released With Major Changes

GraalVM 21.3 Released

Serialization Will Go From Java - Sometime

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


Wasmer 5 Adds iOS Support
12/11/2024

The Wasmer team has released Wasmer 5.0. The WebAssembly runtime adds experimental support for more back ends including V8, Wasmi and WAMR. It also now has iOS support, and upgraded compilers includin [ ... ]



Apollo Adds REST APIs For GraphQL
29/10/2024

Apollo has added a simpler way to integrate REST APIs into a federated GraphQL environment. Available now in public preview, can be used to map REST API endpoints to their GraphQL schema using a decla [ ... ]


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Thursday, 31 October 2024 )