For now, lance java(including spark) uses arrow schema to build dataset and retrieval from dataset.
However, when we need to config compression or other field level configurations, the field ids need to be known, which is stored in lance dominated schema. That's why we need to bring lance schema into java module, which has been done in python and rust modules.
The type transformation between java and rust could be dirty. Try best to make it light