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. 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. More InformationRelated ArticlesScala 3 Released With Major Changes 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.
Comments
or email your comment to: comments@i-programmer.info |
Last Updated ( Thursday, 31 October 2024 ) |