You can do both. It supports nvidia's cuTile programming model through Tilecontext API or you can write megakernels in Java and compile then to CUDA or even add native libraries in the mix like cudnn. JITllm is a good example how all these can work together