介绍

概要

Tropic是一套支持跑在JVM上的Web开发框架,允许开发人员以JS的语法来开发后台程序。这一点有点类似 NodeJs,但是本质上又不同于NodeJs。

var index = {
service: function(req, resp) {
        try {
            resp.body.append("Hello!! Welcome to Tropic engine.");
            resp.msg.append("Version:1.0");
        } catch (e) {
            println(e);
        }
        return resp;
    }
}

这么一段代码,启动我们的Tropic后,访问 http://127.0.0.1:9999/ 。即可在浏览器里看到:

{"code":200,"msg":"Version:1.0","body":"Hello!! Welcome to Tropic engine."}

创作背景

众所周知,Java是一种比较让人又爱又恨的编程语言。你说它是编译型语言,好像也对;你说它是解释性语言,好像也没毛病。JVM的字节码技术的确做到了一次编译 到处运行,这一点也是其最大的成功之处,备受推崇。尽管它具有面向对象的能力和泛型的加持,加上lambda表达式的助推,按说Java这编程语言已经没有啥槽点让人诟病了吧。可是, 放眼业内,还有很多动态脚本解释性语言(当然也有些介于解释和编译之间的),比如PHP,Ruby on rails,Python之Django,以及国人后起之秀beego。这些技术都希望 热部署,及时改及时生效,使用起来真的是爽出天际,当然性能打折扣也再算难免。 其实吧,Java也不是不可以,Java领域的JSP技术本身就是可以随时改随时编译运行的。你看,技术总是有很多相通之处,但是JSP技术也有很多 蹩脚之处,比如不够灵活,只能针对页面动态编译,如果考虑逻辑分层处理,总不至于所有的代码都往一个JSP页面里塞吧。 Spring的横空出世,让无数程序员眼前一亮,爱不释手。但,Spring本质上只是个无关痛痒的框架,这个框架也越来越繁冗,API很多设计已经有了API绑架的影子,而且还有很多 设计上的坑。

所以,我觉得距离我想要的还差很远。于是,不如自己写个超级迷你的小框架吧,要超级轻量迷你。于是,就有了Tropic。总是,希望热部署,那就取名回归线好了,够热。

需要澄清的是,这框架本身并不预期解决所有用Java语言来开发程序的能力,但是提供了一种无需编译即可运行的能力,这一点不同OSGI技术,更加不同于JSP技术。需要补充说明的是运行JS 的能力本身就是JVM自带的特性之一,本框架只是稍微往前走了那么一小步,使其更容易开发一些小微服务,动态灵活热部署,同时呢又可以完全拥抱强大的Java开源 生态。整个框架的核心代码不超过600行,做到超小体积。并且,辅助核心工具库的API设计也向Jquery致敬,尽可能语义化,秉持少就是多的理念。

在这里,也希望有更多志同道合的朋友一起加入,将其打造得更优秀。