What is Minimal Values Type?

Bjorn Vardal from IBM and Frederic Parain from Oracle report about value types being explored in the Value Types Valhalla project
08 August 2017   532

To provide a path towards earlier community involvement and feedback from early adopters, the Valhalla Value Types project is working on an experimental initial implementation step. The intent is to explore a subset of JVM changes that would be required to support Value Types, without exposing them through the Java language compiler. Through a clever use of MethodHandles and byte code generation, we can give an early taste of some of the capabilities of Value Types. This talk will focus on the subset of Value Types provided in the Minimal Value Types, models of usage,some of the design trade-offs we are making to provide a coherent subset and touch on some of the open issues.

Minimal Value Types is an early access preview of value types being explored in the Value Types Valhalla project. It has been built on top of early results from the project. This talk will review several of the key changes made to JVMs to support value types, covering the representation of value types in the JVM model (stack slot, experimental bytecodes, signatures). Possible strategies to implement and optimize value type handling will be presented, covering also data layout with the opportunity value types offer to be flattened in arrays or fields, and the consequence of this flattening on type dependencies and class loading/resolution. This talk will also present the new JIT optimizations put in place for value types, the modification the bytecode verification needs with the introduction of value types into the Java type system, and some early performance results

What is Web3j?

Small review of lightweight Java and Android library for integration with Ethereum clients
15 December 2017   831

What is webj3?

web3j is a lightweight, highly modular, reactive, type safe Java and Android library for working with Smart Contracts and integrating with clients (nodes) on the Ethereum network:

web3j architecture
Web3j Architecture

This allows you to work with the Ethereum blockchain, without the additional overhead of having to write your own integration code for the platform.

According to the developers, these are the features:

  • Complete implementation of Ethereum's JSON-RPC client API over HTTP and IPC
  • Ethereum wallet support
  • Auto-generation of Java smart contract wrappers to create, deploy, transact with and call smart contracts from native Java code (Solidity and Truffle definition formats supported)
  • Reactive-functional API for working with filters
  • Ethereum Name Service (ENS) support
  • Support for Parity's Personal, and Geth's Personal client APIs
  • Support for Infura, so you don't have to run an Ethereum client yourself
  • Comprehensive integration tests demonstrating a number of the above scenarios
  • Command line tools
  • Android compatible
  • Support for JP Morgan's Quorum via web3j-quorum

It has five runtime dependencies:

  • RxJava for its reactive-functional API
  • OKHttp for HTTP connections
  • Jackson Core for fast JSON serialisation/deserialisation
  • Bouncy Castle (Spongy Castle on Android) for crypto
  • Jnr-unixsocket for *nix IPC (not available on Android)

It also uses JavaPoet for generating smart contract wrappers.

Lear more at GitHub.