Zeppelin Interpreter is language backend. For example to use scala code in Zeppelin, you need scala interpreter.
Creating a new interpreter is quite simple. Just implementing com.nflabs.zeppelin.interpreter interface.
You can include com.nflabs.zeppelin:zeppelin-zengine:[VERSION] artifact in your build system.
Once you have build your interpreter, you can place your interpreter under directory with all the dependencies.
[ZEPPELIN_HOME]/interpreter/[INTERPRETER_NAME]/
You can configure zeppelin.interpreters property in conf/zeppelin-site.xml Property value is comma separated [INTERPRETER_CLASS_NAME]
for example,
<property>
<name>zeppelin.interpreters</name>
<value>com.nflabs.zeppelin.spark.SparkInterpreter,com.nflabs.zeppelin.spark.SparkSqlInterpreter,com.nflabs.zeppelin.markdown.Markdown,com.nflabs.zeppelin.shell.ShellInterpreter,com.me.MyNewInterpreter</value>
</property>
Inside of a notebook, %[INTERPRETER_NAME] directive will call your interpreter. Note that the first interpreter configuration in zeppelin.interpreters will be the default one.
for example
%myintp
val a = "My interpreter"
println(a)
Check some interpreters shipped by default.