zeppelin/java
Patrice Clement 1d10625598 ZEPPELIN-3880: Code refactoring: remove class files using a Java stream
### What is this PR for?
Make use of a Java stream instead of an ugly for-loop to get rid of class files.

### What type of PR is it?
Improvement

### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-3880

### How should this be tested?
* CI pass.

### Questions:
* Does the licenses files need update? No.
* Is there breaking changes for older versions? No.
* Does this needs documentation? No.

Author: Patrice Clement <monsieurp@gentoo.org>

Closes #3241 from monsieurp/ZEPPELIN-3880 and squashes the following commits:

e174285e8 [Patrice Clement] ZEPPELIN-3880: Code refactoring: remove class files using a Java stream
2019-01-30 15:36:41 +08:00
..
src ZEPPELIN-3880: Code refactoring: remove class files using a Java stream 2019-01-30 15:36:41 +08:00
pom.xml ZEPPELIN-3790. Move common interpreter dependencies into zeppelin-interpreter-parent 2018-10-01 08:58:05 +08:00
README.md [ZEPPELIN-3653] - New Java interpreter 2018-08-03 09:15:19 +08:00

Overview

Java interpreter for Apache Zeppelin

Architecture

Current interpreter implementation supports the static REPL. It compiles the code in memory, execute it and redirect the output to Zeppelin.

Technical overview

  • Upon starting an interpreter, an instance of JavaCompiler is created.

  • When the user runs commands with java, the JavaParser go through the code to get a class that contains the main method.

  • Then it replaces the class name with random class name to avoid overriding while compilation. It creates new out & err stream to get the data in new stream instead of the console, to redirect output to Zeppelin.

  • If there is any error during compilation, it can catch and redirect to Zeppelin.

  • JavaInterpreterUtils contains useful methods to print out Java collections and leverage Zeppelin's built in visualization.