不需要编译的Java

以Java版本实时编译和执行C代码。

请把这个保存为J1的名称。

#!/usr/bin/env bash

temp=$(mktemp /tmp/JXXXXXX)
class=$(basename $temp)
outdir=$(dirname $temp)

{
  echo 'public class '$class'{'
  echo 'public static void main(String[] args){'
  echo $@
  echo ';}}'
} >> $temp.java

#cat $temp.java

{
  javac $temp.java
  java -cp $outdir $class < /dev/stdin
}

虽然会变成这样,但并不比C更开心。

~/s/c ❯❯❯ ./j1 'System.out.println("Hello world.")'
Hello world.

对于常规用途,我建议使用Java REPL,Nashorn,JRuby,Groovy,Clojure等。

bannerAds