之前做了个Java项目MockSocks,要做UI,用Swing写实在是又low又费劲,跟前端同事聊起node-webkit,觉得很不错。但是我大部分业务都在Java上,于是就涉及到Java与js通信问题。
当然最常用的解决方案就是用Java写一个Web后端。但是这样解决太重,大部分时间都要花费在web的配置上,最终还要使用一个容器去启动它,程序流程也无法由我来控制了。
其实挺喜欢JMX的控制方式,只是用其他语言连接它成本有点高。于是就想仿照JMX的方式写一个Web Server,同时可嵌入到应用中。直接使用Jetty又太原生态了,URL路由/参数映射和转换总是要做的,于是参考了express的语法,就有了一个非常小的Web框架express.java。
本来开始雄心勃勃的要用netty自己写一个,但是后来遇到尴尬的地方:自己写一套HttpMessage类,设计API其实挺麻烦的,设计得好更是需要时间。如果要重用HttpServletRequest/Response呢,实现起来又太费劲。于是后来还是直接用Jetty写了,就不重复造轮子了。
Web框架已经到了汗牛充栋的地步,所以也没想跟谁谁比,完成的是自己的需求就够了。这东西不支持任何servlet规范(HttpServletRequest/Response两个对象基于servlet 3.0),要的就是简单。
这个WebServer可以在程序内启动,由UrlRouter
来完成路由,并路由到对应的Controller
上。比较大的特色就是支持动态增加Controller和映射,这样对于新增是非常方便的。例如我有个service里有个状态count
,那么我可以这么写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
当然这样分散式分配其实会带来一些url的管理问题,不过小项目呢,应该是更方便了。没有想过用这个写web应用,所以目前的定位就是这样子了。
顺便玩了玩angular.js以及less、boostrap、node-webkit等东东。
这只猴子是一个博客中找到的,出自一个自由设计师之手,貌似已经卖给某个客户了http://blog.coghillcartooning.com/2436/monkey-cartoon-character-sketch/。估计真正开源的时候,会把它换掉吧,目前仅仅自己用用,也就无所谓了。