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


GitHub Announces Free Copilot
19/12/2024

GitHub has launched GitHub Copilot Free, a free version of Copilot that provides limited access to selected features of Copilot and is automatically integrated into VS Code. The free tier is aimed at  [ ... ]



Knuth's Xmas Lecture 2024 - Strong And Weak
22/12/2024

Could  the festive season be complete without Donald Knuth putting on his flamboyant xmas top and talking to us about something that most of us know nothing about? Of course not.


More News

espbook

 

Comments




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

Last Updated ( Thursday, 31 October 2024 )