与 jvm 脚本语言混合编程

优质
小牛编辑
139浏览
2023-12-01

所有能编译出java .class文件的JVM脚本语言,都能在hi-nginx-java体系中工作。

例如groovy


package groovy

import hi.request
import hi.response
import hi.route
import java.util.regex.Matcher

class test  implements  hi.route.run_t {

    public void handler(hi.request req, hi.response res, Matcher m) {
        res.set_content_type('text/plain;charset=utf-8')
        res.content = 'hello,groovy\n'
        res.status = 200
    }

}

再例如scala:

package scala;

import hi.request
import hi.response
import hi.route
import java.util.regex.Matcher

class test extends hi.route.run_t {
  def handler(req: hi.request, res: hi.response, m: Matcher) {
    res.content = "hello,scala\n"
    res.status = 200
    res.set_content_type("text/plain;charset=utf-8")
  }
}

再例如kotlin:

package mykotlin

import hi.request
import hi.response
import hi.route
import java.util.regex.Matcher


class test:hi.route.run_t {
    override fun handler(req: hi.request, res: hi.response, m: Matcher){
        res.content = "hello,kotlin\n"
        res.status = 200
        res.set_content_type("text/plain;charset=utf-8")
    }
}

jvm脚本语言能加快开发进度,对于一些性能要求不甚严格的功能,完全可以胜任。无论哪种脚本,最终都需要编译成java能识别.class文件然后供给hi-nginx-java使用,性能损失其实很小——多数情况下不必在意。故而,完全可以把jvm脚本语言当做jdk的扩展库来使用。关键是配置好hi-nginx的hi_java_classpath指令。