阅读更多
Firefly是一个高性能的一站式Java Web框架,涵盖了web开发的主要技术栈,包含模板引擎、IOC/MVC框架、HTTP服务器、Common工具、Log、Json解析器等模块。

项目主页:http://www.fireflysource.com/
Github地址:https://github.com/hypercube1024/firefly

为了使大家对Firefly有进一步的了解,本期我们采访了Firefly的作者邱鹏滔

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

先来个自我介绍吧! Top

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

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

Firefly是什么?有哪些功能? Top

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

Firefly提供的主要功能如下:

  • IOC/MVC框架
  • 模板语言
  • HTTP服务器
  • Json解析
  • 异步日志

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

在开发Firefly之前也一直用开源的Java框架,比如Spring、Struts、Hibernate、iBatis等等,但是始终觉得用这些框架搭建开发环境比较麻烦,其中一些框架升级之后兼容性也是个问题,而且SSH比较臃肿,运行速度慢。

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

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

Firefly 的设计思想? Top

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

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

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

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

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

Firefly包含IOC/MVC框架、模板语言、HTTP服务器以及Common工具类四大模块:

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

相比其他框架(SSH、Nutz等),Firefly的特点是什么? Top

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

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

Firefly的性能如何? Top

因为在互联网公司工作,我们的业务每天数亿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的学习成本? Top

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

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

Firefly在使用自带的HTTP服务器时不支持JSP只能使用Firefly模板语言,在标准Java EE服务器中可以使用JSP。

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

Firefly使用商业友好的Apache 2.0协议,可以直接在GitHub上发起pull request。

未来的开发计划? Top

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

SPDY协议在每个请求上增加了id,这样就可以在一个TCP连接上并发的发起多个请求,充分利用IO多路复用的能力,提高了网络连接的利用率,这是HTTP1.1和Apache JK协议做不到的。

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

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

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

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


评论 共 87 条
27 楼 ray_linn 2013-01-09 15:48
hypercube1024 写道
ray_linn 写道
没啥用处吧,这种东西现在都快烂大街了


诺基亚烂大街的时候,Apple还要推出iPhone。


那也得给点证据证明这个是 Apple,不是山寨MTK
26 楼 所谓码农 2013-01-09 15:21
所谓码农 写道
简单就意味着能做的事情少了,tomcat在裸启时也只需要几百毫秒,我们不需要很快的启动速度,我们需要更快的开发速度与运行速度。

楼主能大致介绍一下你的“轮子”好在哪里吗?
你所提到的性能方面,比freemarker快的模板引擎比比皆是,而且可以很方便的替换,json的解析能和fastjson或jackson比吗?
另外你提到tomcat的并发,能否告知tomcat的版本和你的测试方法?
事实上提升性能的方法是多种多样的,为什么要拘泥于框架本身?


还有模板引擎的比较不能简单的比下性能就了事了的
25 楼 所谓码农 2013-01-09 15:15
hypercube1024 写道
freezingsky 写道
轻量级的框架越来越多,但是大多都是个人或者三二个人的团队开发的,如果放到项目中应用的话,难免用户还是会有疑虑。当然不是说国内开源的不好,但是从事实来看,更多人还是愿意采用风险较小且被众人认可的东西。


即使使用国外开源软件,如果对源码不太熟悉只是停留在会用的阶段,同样有风险,除非愿意花钱购买技术支持

用的人多自然缺陷就少,相对而言风险还是要小很多的。
24 楼 所谓码农 2013-01-09 15:12
简单就意味着能做的事情少了,tomcat在裸启时也只需要几百毫秒,我们不需要很快的启动速度,我们需要更快的开发速度与运行速度。

楼主能大致介绍一下你的“轮子”好在哪里吗?
你所提到的性能方面,比freemarker快的模板引擎比比皆是,而且可以很方便的替换,json的解析能和fastjson或jackson比吗?
另外你提到tomcat的并发,能否告知tomcat的版本和你的测试方法?
事实上提升性能的方法是多种多样的,为什么要拘泥于框架本身?

23 楼 shishangzuiniubi 2013-01-09 14:18
shishangzuiniubi 写道
hypercube1024 写道
hypercube1024 写道
vivia 写道
github上连readme都没有,demo也没有,难道叫人看代码啊……
无语

https://github.com/hypercube1024/firefly/wiki


wiki上有很多文档:-)


同意!

很同意!
22 楼 shishangzuiniubi 2013-01-09 14:18
hypercube1024 写道
hypercube1024 写道
vivia 写道
github上连readme都没有,demo也没有,难道叫人看代码啊……
无语

https://github.com/hypercube1024/firefly/wiki


wiki上有很多文档:-)


同意!
21 楼 giraffeql 2013-01-09 13:51
“轮子”、“造轮子”是什么意思啊?
20 楼 hypercube1024 2013-01-09 13:30
ray_linn 写道
没啥用处吧,这种东西现在都快烂大街了


诺基亚烂大街的时候,Apple还要推出iPhone。
19 楼 zhangjidong2005 2013-01-09 12:49
老乡你的struts ,写错了
18 楼 ray_linn 2013-01-09 12:11
没啥用处吧,这种东西现在都快烂大街了
17 楼 hypercube1024 2013-01-09 10:44
hypercube1024 写道
vivia 写道
github上连readme都没有,demo也没有,难道叫人看代码啊……
无语

https://github.com/hypercube1024/firefly/wiki


wiki上有很多文档:-)
16 楼 hypercube1024 2013-01-09 10:44
vivia 写道
github上连readme都没有,demo也没有,难道叫人看代码啊……
无语

https://github.com/hypercube1024/firefly/wiki
15 楼 vivia 2013-01-09 10:13
github上连readme都没有,demo也没有,难道叫人看代码啊……
无语
14 楼 hypercube1024 2013-01-09 10:02
zznj1123 写道
支持。越来越多的越来越精

多谢支持^ ^
13 楼 hypercube1024 2013-01-09 09:25
freezingsky 写道
轻量级的框架越来越多,但是大多都是个人或者三二个人的团队开发的,如果放到项目中应用的话,难免用户还是会有疑虑。当然不是说国内开源的不好,但是从事实来看,更多人还是愿意采用风险较小且被众人认可的东西。


即使使用国外开源软件,如果对源码不太熟悉只是停留在会用的阶段,同样有风险,除非愿意花钱购买技术支持
12 楼 hypercube1024 2013-01-09 09:22
lonelybug 写道
不是像打击你,但是,我觉的你直接用netty作为网络核心更靠铺一些。而且你也能添加你自己的codec作为你定制语言模板之用。


netty的确是很优秀的网络框架,很多值得学习的地方
11 楼 velna_007 2013-01-09 07:14
这个框架没感觉多少约定优于配置,还不如我写的这个: https://github.com/velna/sothis/wiki/MVC%E6%89%8B%E5%86%8C 简单就是美
10 楼 lonelybug 2013-01-09 02:28
不是像打击你,但是,我觉的你直接用netty作为网络核心更靠铺一些。而且你也能添加你自己的codec作为你定制语言模板之用。
9 楼 freezingsky 2013-01-08 22:40
轻量级的框架越来越多,但是大多都是个人或者三二个人的团队开发的,如果放到项目中应用的话,难免用户还是会有疑虑。当然不是说国内开源的不好,但是从事实来看,更多人还是愿意采用风险较小且被众人认可的东西。
8 楼 hacxer 2013-01-08 19:59
支持楼主的开源行为,毕竟国内真正开源的不多啊,freecms都是假开源啊,jeecms才是真的开源啊,
7 楼 ansjsun 2013-01-08 17:15
isaiahzhong 写道
             国内的开源项目,我去网上下载的以后,都说什么开源,结果根本不是开源,而且怎么说呢?里面的代码都是大把的报错,根本没有提供完整的源码,国内生活压力大,没办法去奉献自己的技术,毕业老婆孩子要活命

这和人品有关....


对了楼主..我看到你复制和造了很多轮子..其实我感觉有时候..依赖一个guava包反而能让工作做的很轻松..不同的工具有时候和业务绑定太紧密..很难抽象出来公用....复制没问题..但是在更新的时候往往受到阻碍..有的时候我感觉还是拆开好点
6 楼 lief8888 2013-01-08 15:35
严重支持,看过你前两版的代码,你基础很好并且很有想法~支持,希望你能坚持下去。
5 楼 isaiahzhong 2013-01-08 15:34
      freecms这个开源项目,我前几天在研究,结果发现里面的源码很多都没有,以前看过shopxx,也是没有源码,所谓的SSH2做的开源项目,都是提供WAR包,根本就没有源码,没办法学习,我还是对写框架很有兴趣,那样能提高自己的技术,仅仅是copy,那样真的没意思
4 楼 isaiahzhong 2013-01-08 15:33
             国内的开源项目,我去网上下载的以后,都说什么开源,结果根本不是开源,而且怎么说呢?里面的代码都是大把的报错,根本没有提供完整的源码,国内生活压力大,没办法去奉献自己的技术,毕业老婆孩子要活命
3 楼 zznj1123 2013-01-08 15:19
回想10年前我搞java那会...往事不堪回首啊。
2 楼 zznj1123 2013-01-08 15:18
支持。越来越多的越来越精
1 楼 youjianbo_han_87 2013-01-08 14:36
国内类似的小框架越来越多了,同类型的还有 JFinal,eweb4j等。。。

发表评论

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

相关推荐

  • Java的Web框架 Firefly Framework.zip

    Java的Web框架 Firefly Framework ,Firefly是一个高性能一站式Java开发框架,它能帮助开发者快速高效的开发web应用、协议Ser...

  • firefly:Firefly是用于快速开发高性能Web应用程序的异步Web框架

    Firefly框架是异步Java Web框架。 它可以帮助您轻松快速地创建Web应用程序。 它提供了异步HTTP,Websocket,TCP Server / Client以及用于开发Web应用程序,协议服务器等的许多其他有用组件。这意味着您可以轻松部署...

  • 一站式 Java Web 框架 firefly

    Firefly是一个高性能一站式Web框架。 涵盖了web开发的主要技术栈。 包含Template engine、IOC、MVC framework、HTTP Server、Common tools、Log、Json parser等模块。 firefly-2.0_07修复了模版压缩对javascript...

  • 一站式 Java Web 框架 firefly-2.0_07发布

    Firefly是一个高性能一站式Web框架。 涵盖了web开发的主要技术栈。 包含Template engine、IOC、MVC framework、HTTP Server、Common tools、Log、Json parser等模块。 firefly-2.0_07修复了模版压缩对javascript...

  • gfirefly firefly-gevent是firefly的gevent版本基于coroutine的python网络开发框架

    gevent就是一个基于coroutine的python网络开发框架。协程是一种并发模型,但不同于thread和callback,它的所有task都是可以在一个线程里面执行,然后可以通过在一个task里面主动放弃执行来切换到另一个task执行,它...

  • java_firefly:java springboot2 开发脚手架,Mybatis

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

  • 开源Java Web开发框架-Firefly研究

    Firefly是一个高性能的一站式Java Web框架,涵盖了web开发的主要技术栈,包含模板引擎、IOC/MVC框架、HTTP服务器、Common工具、Log、Json解析器等模块。 Firefly是一个一站式高性能Java Web框架。Firefly使用简单...

  • firefly:Firefly是一个Web应用程序,旨在为Web开发人员提供功能强大,灵活的时间序列图

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

  • Java的Web框架 Firefly Framework

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

  • firefly并行开发版本管理规范docx

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

  • FireFly:基于paxos算法的强一致性同步框架

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

  • 麻将游戏简介&firefly游戏框架介绍

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

  • Android-Web-Server:适用于Android和Java的简单且很小的占用空间(<50kb)TCPIP Web服务器

    Android Web服务器(FireFly) 适用于Java的Android的简单和小型TCP / IP Web服务器这是独立的,多线程的,几乎没有依赖性! Java中的http服务器,并在Android中使用示例。 支持的功能支持基本的GET,POST请求渲染...

  • Firefly 3.0.3 发布,Java 的 Web 框架

    Firefly 3.0.3 稳定版发布,Firefly 3.0.3 修复了20多处bug,增强了框架的性能,并提供了更完善的文档和例子程序,文档地址:http://www.fireflysource.com/docs/firefly-guide.html 。 现在Firefly已经提交到...

  • Firefly Client - a Java Firefly Client-开源

    Firefly Client 是 Firefly Media Server 的独立 Java 客户端。 该软件允许远程连接到指定服务器名称和端口的 Firefly 媒体服务器。

  • 山东建筑大学在辽宁2020-2024各专业最低录取分数及位次表.pdf

    那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据

  • MATLAB中实现基于遗传算法(GA)优化的门控循环单元(GRU)进行数据多输入单输出回归预测(包含详细的完整的程序和数据)

    内容概要在本文档中详细介绍了在MATLAB环境中运用遗传算法(GA)对门控循环单元(GRU)网络模型进行优化,并实现多输入单一输出的数据回归预测的技术过程,涵盖数据生成、模型建立与配置、遗传算法优化以及最终的训练和效果测试。 适合人群本总结适用于从事深度学习特别是涉及序列数据研究的专业人士,如机器学习工程师、科研工作者或希望深化自己神经网络建模技能的学习者。 使用场景及目标包括但不限于:解决实际应用中遇到的时间序列预测问题、提升对于RNN家族中高级组件的理解水平以及掌握复杂任务下模型调参的具体手法,尤其着重于增强回归问题的精度表现。 附加说明随文提供的范例代码全面细致,使得初学者能顺利跟随教程建立起自身项目,在实践中探索遗传搜索法的优势所在。

  • 基于Vue框架的毕业生离校管理系统设计源码

    本项目为基于Vue框架开发的毕业生离校管理系统设计源码,包含322个文件,涵盖147个Vue组件、95个JavaScript脚本、46个SVG图形、9个SCSS样式表、3个Handlebars模板、2个YAML配置、2个Markdown文件、2个JSON数据、2个PNG图片和2个CSS样式文件。系统采用Vue、JavaScript、CSS和HTML等多种编程语言和技术构建,旨在实现毕业生的离校管理功能。

  • 基于Python语言的实训内容设计源码

    本项目是一款以Python为主开发语言的实训内容设计源码,共包含33个文件,涵盖21个Python源代码文件、5个编译后文件、3个图片文件、3个文本文件、1个JSON文件。这些文件共同构成了一个结构完整的实训项目,旨在为学生提供实际操作的学习平台。

Global site tag (gtag.js) - Google Analytics