Efficient Compilation and Execution of JVM-Based Data Processing Frameworks on Heterogeneous Co-Processors