一站式 java web 开发框架 firefly 作者邱鹏滔专访 -买球官网平台

2013-01-08  编辑 wangguo 评论(87条) 有68488人浏览
firefly是一个高性能的一站式java web框架,涵盖了web开发的主要技术栈,包含模板引擎、ioc/mvc框架、http服务器、common工具、log、json解析器等模块。

项目买球官网平台主页:
github地址:

为了使大家对firefly有进一步的了解,本期我们采访了firefly的作者。

iteye期待并致力于为国内优秀的开源项目提供一个免费的推广平台,如果你和你的团队希望将自己的开源项目介绍给更多的开发者,或者你希望我们对哪些开源项目进行专访,请告诉我们,发站内短信给或者发邮件到[email protected]即可。

先来个自我介绍吧!

我叫邱鹏滔,来自武汉,毕业后一直在北京,工作6年,目前在一家大型互联网公司工作。

我主要用的编程语言是java,平时也研究一下ios或者其他的编程技术,最近看了《黑客与画家》,对clojure开始有些兴趣了

firefly是什么?有哪些功能?

firefly是一个一站式高性能java web框架。firefly使用简单,在main函数中只需一行代码就可以启动一个web服务,并且超级轻量,jar包总共500k,启动一个web服务不到1秒。非常适合注重开发效率和服务性能的互联网应用。

firefly提供的主要功能如下:

  • ioc/mvc框架
  • 模板语言
  • http服务器
  • json解析
  • 异步日志

你开发这个项目的初衷是什么?这是ssh的一个“轮子”吗?

在开发firefly之前也一直用开源的java框架,比如spring、struts、hibernate、ibatis等等,但是始终觉得用这些框架搭建开发环境比较麻烦,其中一些框架升级之后兼容性也是个问题,而且ssh比较臃肿,运行速度慢。

心目中理想的web框架,应该在80%情况下不需要繁杂的配置就能运行并且轻量快速,所以决定开发firefly作为ssh的替代方案

firefly的确又是一个轮子,不过是一个更好的轮子,哈哈 ^_^

firefly 的设计思想?

firefly是基于约定优于配置的思想,框架会自动执行约定的或者被标注的函数,参数也是可变的。

firefly是无侵入的, 程序不需要实现任何接口,不会对业务代码产生污染。并且框架本身不依赖任何第三方jar包,不会发生框架依赖的第三方包和业务代码的依赖包产生冲突。

firefly非常注重功能的实用性,对于平时不常用的功能不会添加到firefly当中,这样可以避免像其他开源框架那样过于臃肿。

个人认为保持代码的简洁非常重要,代码越少越容易阅读,修复bug也越容易。借用c.a.r. hoare的名言:软件设计有两种方法:一种是尽可能地简单,这种设计明显没有什么缺陷;另一种是尽可能地复杂,这种设计没有明显的缺陷。

firefly包含了哪些组件和模块?都有什么特性?

firefly包含ioc/mvc框架、模板语言、http服务器以及common工具类四大模块:

  • ioc/mvc框架支持restful url、拦截链、多视图渲染等特性。
  • 模板语言编译方式执行性能很好,支持条件选择、循环、自定义函数等操作。
  • 基于nio开发的web服务器支持http1.1协议的大部分特性,支持动态模板页面、静态文件,本地session支持,也可以自己实现接口支持远程session。
  • common工具包里面有各种常用的工具类,比如:json解析、异步日志、lruconcurrenthashmap等。

相比其他框架(ssh、nutz等),firefly的特点是什么?

firefly是一个web开发框架,所有的功能都聚焦在web开发上面,没有数据访问以及orm功能。主要是考虑到面对互联网海量用户,关系型数据库不一定是数据存储的最佳选择,很多nosql数据库能直接支持对象存储。如果使用关系数据库个人更喜欢类似apache dbutil那样的工具类而不是orm。

ssh和nutz框架在功能上比firefly要丰富的多,但是firefly在提供了日常web开发的大部分功能的情况下,相比ssh更轻量,使用更简单,性能也要好得多。自身还提供了http服务器,不需要部署直接就能通过main函数启动,非常方便 :-)

firefly的性能如何?

因为在互联网公司工作,我们的业务每天数亿pv,面对海量用户,所以平时开发程序也会对性能比较敏感。

开发firefly的时候也会比较关注性能这块。firefly能轻松跑满网卡流量,整体性能上比 spring tomcat的组合快3倍。在我的macbook上(双核2.3g)用apache ab测试10w请求、100并发在3w req/s,同等硬件配置 spring tomcat只能达到1.2w req/s。模板语言比freemarker快 1.5~2 倍,json序列化速度是gson的4~8倍。

firefly的学习成本?

有spring使用经验的能直接上手,firefly保留了很多spring的使用习惯,而且比spring更简单。

使用firefly时需要注意哪些问题?

firefly在使用自带的http服务器时不支持jsp只能使用firefly模板语言,在标准java ee服务器中可以使用jsp。

采用什么开源协议?用户如何交流、反馈、参与贡献?

firefly使用商业友好的apache 2.0协议,可以直接在github上发起pull request。

  • github:
  • google code:
  • qq:95350530
  • 买球官网平台主页:

未来的开发计划?

最近研究了一下jetty的spdy实现,简单翻译了部分spdy v3的文档,空闲时整理以后也许会放到网上吧:-)。

spdy协议在每个请求上增加了id,这样就可以在一个tcp连接上并发的发起多个请求,充分利用io多路复用的能力,提高了网络连接的利用率,这是http1.1和apache jk协议做不到的。

firefly下个版本会支持spdy协议以及https,然后开发一个spdy proxy作为前端负载均衡和cache。另外firefly的json解析器的功能还需要加强一下,会增加循环引用的序列化以及流式接口支持。

在开源过程中有哪些感悟?怎么看待国内的开源环境?

开发开源软件主要是靠兴趣来维持,开发firefly之后对web开发技术栈以及各种网络协议的理解会更深刻,自己实现一个框架和去看懂别人的代码还是有些区别的。

国内的开源环境比国外还是差得远吧,毕竟在国内的生活压力非常大,注重技术的公司也不是很多。根据马斯洛需求理论,只要大家的生活都过得好了,相信会有更多的人投入到开源软件的开发行列。
  • 大小: 123.8 kb


评论 共 87 条
87 楼 2016-04-26 17:38
          
86 楼 2013-11-27 15:36
独木不成林,一个人盖不起高楼,
85 楼 2013-06-01 17:58
楼主的精神值得敬佩和学习!

但是个人觉得,我们中国的框架开发者之间目前缺乏一个合作关系的体现,个人精力有限,开发精而专的框架,也许会比大而广好一些,单独个人别妄想与it巨头比拼,除非你有很强的实力.比如开发ioc的专门开发ioc,开发持久化专门开发持久化框架,做web框架的就单独只做web框架,做框架集成的就只做框架集成,可以以现有流行优秀框架为参照物,浓缩其精华后可以模仿模式实现代码,如果功能点上没有创新,那怕造的与对方一样也行.看看中国的3g手机跟进式的发展还不错哦.

ssh之所以成功,一个重要的原因,是就它们之间互相协助,互相依赖,构造了一个应用生态链,并达到共赢局面,这点需要中国开元者的认识到:单打独斗难以成功.

要是有某个地方清点一下我们中国现有的框架有哪些,并以应用领域加以区分一下就好了.

自己不造轮子,永远只能用别人的轮子!轮子的制作体现了我们中国程序员自强不息和敢于奉献一面,值得尊敬和佩服,支持轮子的制作者!




84 楼 2013-05-24 08:07
zidafone 写道
请问这是什么意思:

caused by: com.firefly.utils.log.logexception: create dir /data/logs failure


看了下源码,原来是创建文件夹失败。汗。
已解决。
83 楼 2013-05-23 02:01
请问这是什么意思:

caused by: com.firefly.utils.log.logexception: create dir /data/logs failure
82 楼 2013-05-17 20:52
不简单哦,一个web框架中还包含一个ioc容器,这个ioc容器可以独立使用吗?

要是能支持数据库操作,感觉会更好. 怎么感觉搞ioc容器比较多啊,刚才在坛子里看到一个自称是java菜鸟的,也弄一个ioc容器,代码上感觉有点那么象spring了.

81 楼 2013-04-08 08:23
重复造轮子
80 楼 2013-03-27 22:18
老兄你这个能连接数据库吗?能连接redis或者mecache吗?
79 楼 2013-03-25 14:33
spring很好,但是我非常支持国内有更多的人搞开源框架研发,就像中国的汽车工业一样,不注重研发,没有过硬的引擎技术,永远也不过是个oem工厂罢了!
那些说不要重复发明轮子的人,真的是体现了中国it界的悲唉!
没有自己的深层次的技术,不过是永远的码穷罢了!!!
78 楼 2013-03-25 14:22
git了原码还是很不错的!就是原码的文件没有使用utf-8格式,中文备注变成乱码了。
不影响使用,但还是建议作者用utf-8保存源码的好。
77 楼 2013-03-01 22:36
allbin1983 写道
flashing 写道
pontifex 写道
lonelybug 写道
事实胜于雄辩,楼下的两位用户的问题根本就没人管啊! 这作者就是耍嘴皮子还比较“专业”。



所以说,敢于使用这些野鸡框架的人,乃大勇或无畏者

几年前iteye猛上买球买球官网平台官网平台首页的什么simpleframework,现在早死了,就是隔三差五的发个垃圾邮件给我说你多少天没登录论坛了,烦死了。


躺下中枪, simpleframework 4.0 都发布了,国内的开源大环境不太好,愤青也多,开源本身就是一个兴趣,包容心真不行,如果你自己的高见发表一下,也算对开源的支持。

写在 simpleframework 4 发布之际,为您而写。
76 楼 2013-03-01 13:38
flashing 写道
pontifex 写道
lonelybug 写道
事实胜于雄辩,楼下的两位用户的问题根本就没人管啊! 这作者就是耍嘴皮子还比较“专业”。



所以说,敢于使用这些野鸡框架的人,乃大勇或无畏者

几年前iteye猛上买球买球官网平台官网平台首页的什么simpleframework,现在早死了,就是隔三差五的发个垃圾邮件给我说你多少天没登录论坛了,烦死了。


躺下中枪, simpleframework 4.0 都发布了,国内的开源大环境不太好,愤青也多,开源本身就是一个兴趣,包容心真不行,如果你自己的高见发表一下,也算对开源的支持。
75 楼 2013-02-12 09:20
pontifex 写道
lonelybug 写道
事实胜于雄辩,楼下的两位用户的问题根本就没人管啊! 这作者就是耍嘴皮子还比较“专业”。



所以说,敢于使用这些野鸡框架的人,乃大勇或无畏者

几年前iteye猛上买球买球官网平台官网平台首页的什么simpleframework,现在早死了,就是隔三差五的发个垃圾邮件给我说你多少天没登录论坛了,烦死了。
74 楼 2013-02-12 00:03
lonelybug 写道
事实胜于雄辩,楼下的两位用户的问题根本就没人管啊! 这作者就是耍嘴皮子还比较“专业”。



所以说,敢于使用这些野鸡框架的人,乃大勇或无畏者
73 楼 2013-02-10 22:09
事实胜于雄辩,楼下的两位用户的问题根本就没人管啊! 这作者就是耍嘴皮子还比较“专业”。

72 楼 2013-02-07 16:15
下载后报异常没法用啊?
71 楼 2013-01-25 10:45
jj356302304 写道
我发现两个地方不太好用,我的是resin服务器
1.按照说明部署项目的时候,服务器无法启动,老是报错,后台查看源码发现需要在classpath下添加firefly-log.properties,才可以启动。那说明中为什么不说清楚呢?

2.servlet拦截的后缀比较死板,在web.xml中不能配置/*.do这样结尾的地址,必须要在actiopn中的@requestmapping(value = "/hello.do")这样配置才可以在链接中带.do的后缀。

另外:补充一点:视图怎么也无法跳过去
我的配置

action的代码
@requestmapping(value = "/hello.action")
    public view index(httpservletrequest request) {
        system.out.println("------exec--------");
        return new jspview("/index.jsp");
    }
action执行了,但是视图怎么也无法跳转
我分别
在web-inf下建了一个index.jsp
在web-inf/page下建了一个index.jsp
在webcontent下也建了一个index.jsp
但是结果是一个页面都显示不出来
70 楼 2013-01-25 10:32
我发现两个地方不太好用,我的是resin服务器
1.按照说明部署项目的时候,服务器无法启动,老是报错,后台查看源码发现需要在classpath下添加firefly-log.properties,才可以启动。那说明中为什么不说清楚呢?

2.servlet拦截的后缀比较死板,在web.xml中不能配置/*.do这样结尾的地址,必须要在actiopn中的@requestmapping(value = "/hello.do")这样配置才可以在链接中带.do的后缀。
69 楼 2013-01-14 12:40
youarestupid 写道
[size=large]不管怎么说,总是要支持国产开源项目的,开源是一种莫大的贡献,自己设计过平台或者框架的人都明白,一套框架凝聚了作者的很多汗水和希望,能把自己的劳动成果开源,在中国是一种非常大的勇气。

所以,我们一定要支持国产开源项目。

至于国产框架能不能在实际项目中使用,我的观点是:
1、如果这个框架确实比同类框架要优秀;
2、如果你的公司团队有技术扎实的技术人员,有重视技术而非赶工赚钱的领导层。

如果你的公司符合以上两点,那么可以放心地使用优秀的国产开源项目。

很多人担心使用国产开源框架,后期技术跟进没有保障,这主要是因为:
1、国产开源项目普遍不能持久地维护和演进,经常是作者一个人热乎劲头最多一年,然后整个项目就沉寂了,没人管了,有bug没人理会,有新功能需求没人去搭理,完全成了一个墓碑式项目,项目网址如果是独立域名,通常都渐渐地域名过期打不开了;如果使用的github.com或者google code这样的代码托管服务,通常是几年过去了,项目买球买球官网平台官网平台首页连一个字也没人去改动;
2、国产开源项目,普通是参与者程度不高,这体现在,没人参与开发,通常只有一两个项目维护者,然后渐渐的项目维护者自己也不去关心这个墓碑式项目了;
没人提交bug,没人提交功能需求,没人反馈项目实施中遇到的问题,没人参与讨论,甚至一两年都没人去访问一下它的项目买球官网平台主页。


这就是国产开源框架的现实。

所以,对于能不能在实际项目中使用国产开源框架,我认为最主要的一个前提是:
你的公司是否准备好了自己去维护所采用的整个国产开源框架,也就是:
你的公司是否有一批技术扎实的技术人员?
你的公司领导层是否真正重视技术?

如果你的公司满足了上面两个条件,你的公司有决心自己维护整套国产开源框架,那么你的公司可以考虑使用确实优秀的国产开源框架。[/size]
68 楼 2013-01-14 12:30
不管怎么说,总是要支持国产开源项目的,开源是一种莫大的贡献,自己设计过平台或者框架的人都明白,一套框架凝聚了作者的很多汗水和希望,能把自己的劳动成功开源,在中国是一种非常大的勇气。

所以,我们一定要支持国产开源项目。

至于国产框架能不能在实际项目中使用,我的观点是:
1、如果这个框架确实比同类框架要优秀;
2、如果你的公司团队有技术扎实的技术人员,有重视技术而非赶工赚钱的领导层。

如果你的公司符合以上两点,那么可以放心地使用优秀的国产开源项目。
67 楼 2013-01-14 09:56
august_000 写道
精神可嘉,那些使用开源框架的群体,别忘了。如果没有没有楼主这样的优秀的人,怎么可能有我们免费开源的ssh?如果有100个像楼主一样开源精神的人,firefly能飞不起来。所以,我鄙视那些只懂得用嘴巴的人,拿出点open的精神,打造属于国人自己的open source framework.支持楼主,加油...



野鸡open source也能变凤凰?
66 楼 2013-01-14 09:56
mengfei86 写道
zhuchao_ko 写道
顺便说下我自己也有一套框架,叫 superframe ,不过我没开源的精神 我只要自己能用的好就行 ~

哎,中国大部分人应该都这样吧。还是思想的区别,或者是差距


我也有一套,叫 one piece,,啊哦,错了,那是昨天看的海贼王。。
65 楼 2013-01-14 09:27
zhuchao_ko 写道
顺便说下我自己也有一套框架,叫 superframe ,不过我没开源的精神 我只要自己能用的好就行 ~

哎,中国大部分人应该都这样吧。还是思想的区别,或者是差距
64 楼 hypercube1024 2013-01-14 09:12
winwa 写道
如果在非controller中需要获取request或response,如何得到httpservletrequest对象,前提是不能用参数的形式传入?

你可以自己设置到threadlocal里面
63 楼 2013-01-14 08:26
如果在非controller中需要获取request或response,如何得到httpservletrequest对象,前提是不能用参数的形式传入?
62 楼 2013-01-13 10:31
野鸡框架太多了,有人敢用?
61 楼 2013-01-12 22:44
精神可嘉,那些使用开源框架的群体,别忘了。如果没有没有楼主这样的优秀的人,怎么可能有我们免费开源的ssh?如果有100个像楼主一样开源精神的人,firefly能飞不起来。所以,我鄙视那些只懂得用嘴巴的人,拿出点open的精神,打造属于国人自己的open source framework.支持楼主,加油...
60 楼 2013-01-12 16:49
顺便说下我自己也有一套框架,叫 superframe ,不过我没开源的精神 我只要自己能用的好就行 ~
59 楼 2013-01-12 16:47
iteye对愿意把自己的开发框架贡献出来的人是最支持的,诸位看看之前对楼主这样的框架要多要少,最后有谁在用?用的人不多吧。楼主你的东西始终还是你的东西,看看spring做的比你做的优秀的实在太多了,真的。你的这套框架也只有自己觉得好,要让天朝大众开发人员接受。。实在有点那个,不过对楼主的开源精神还是值得赞赏的,希望你的框架能为你所服务的公司带来效益。那些黑你的话我是不会说的。
58 楼 2013-01-12 15:05
为什么今天还有人用ssh,直接用sh就可以了,struts2可以废掉了,它的功能spring mvc全都有,而且更简单,用spring mvc真的很爽。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • java的web框架 firefly framework ,firefly是一个高性能一站式java开发框架,它能帮助开发者快速高效的开发web应用、协议ser...

  • firefly框架是异步java web框架。 它可以帮助您轻松快速地创建web应用程序。 它提供了异步http,websocket,tcp server / client以及用于开发web应用程序,协议服务器等的许多其他有用组件。这意味着您可以轻松部署...

  • firefly是一个高性能一站式web框架。 涵盖了web开发的主要技术栈。 包含template engine、ioc、mvc framework、http server、common tools、log、json parser等模块。 firefly-2.0_07修复了模版压缩对javascript...

  • firefly是一个追求高性能的应用程序框架,性能大幅超越spring3、struts2等 零依赖,仅仅依赖于jdk 精简、轻量、无侵入 core包含ioc、mvc、interceptor等常用功能 使用简单,基于约定优于配置的思想,可完全使用...

  • firefly是一个高性能一站式web框架。 涵盖了web开发的主要技术栈。 包含template engine、ioc、mvc framework、http server、common tools、log、json parser等模块。 firefly-2.0_07修复了模版压缩对javascript...

  • java_firefly 开发脚手架 基于springboot2,适合新手学习,简单,清爽 功能特点 前端基于layui,juicer前端模板引擎。 layui: juicer: 后端基于springboot gradle kotlin 开发。 mvc 设计模式,快速入门,方便上手...

  • firefly是一个高性能的一站式java web框架,涵盖了web开发的主要技术栈,包含模板引擎、ioc/mvc框架、http服务器、common工具、log、json解析器等模块。 firefly是一个一站式高性能java web框架。firefly使用简单...

  • firefly是一个追求高性能的应用程序框架,性能大幅超越spring3、struts2等 零依赖,仅仅依赖于jdk 精简、轻量、无侵入 core包含ioc、mvc、interceptor等常用功能 使用简单,基于约定优于配置的思想,可完全使用...

  • firefly是一个高性能的web开发框架,template engine,ioc、mvc framework,http server,common tools,log,json parser等模块一应俱全。 使用简单,无侵入。 仅仅依赖jdk,完全不会引入第三方库。 高性能,在...

  • firefly是一个web应用程序,旨在为web开发人员提供功能强大,灵活的时间序列图。 firefly提供了一个接口,用于从任意数量的服务器端数据存储中读取时间序列数据,并在web浏览器中生成相应的实时图形。 多个度量可以...

  • 该文档主要描述了使用firefly版本管理工具进行多个需求并行开发下的版本管理方式的最佳实践,这是一套用于实现生产上使用的版本管理规范文档

  • 1.如何做出一款麻将游戏 ⾃2000年python第⼀个稳定的2.7版本发布以来,python"简单、明确、优雅"设计哲学的根本出发点就决定了python这⻔语⾔的编程易⽤性和⼯作⾼效性。特别是近几年来,在游戏⾏业中传统的编程语⾔...

  • 一个基于paxos算法的强一致性同步框架。 firefly提供了三种同步的paxos方式,包括paxos管道以优化不同机房中的rt,路由计算将在使用成本最低的节点链之前进行。 在一个tcp中为一类paxosoperator提供强而一致的读取。...

  • firefly rk3399 sdk开发文档 . ├── avl │ ├── latest-release-avl-link.txt │ ├── rkemmcsupportlist ver1.51_20200810.pdf │ ├── rknandflashsupportlist ver2.73_20180615.pdf │ ├── rk ...

  • android web服务器(firefly) 适用于java的android的简单和小型tcp / ip web服务器这是独立的,多线程的,几乎没有依赖性! java中的http服务器,并在android中使用示例。 支持的功能支持基本的get,post请求渲染...

global site tag (gtag.js) - google analytics