阅读更多
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 媒体服务器。

  • go 生成基于 graphql 服务器库.zip

    格奇尔根 首页 > 文件 > gqlgen是什么?gqlgen是一个 Go 库,用于轻松构建 GraphQL 服务器。gqlgen 基于 Schema 优先方法— 您可以使用 GraphQL Schema 定义语言来定义您的 API 。gqlgen 优先考虑类型安全— 您永远不应该看到map[string]interface{}这里。gqlgen 启用 Codegen — 我们生成无聊的部分,以便您可以专注于快速构建您的应用程序。还不太确定如何使用gqlgen?将gqlgen与其他 Go graphql实现进行比较快速启动初始化一个新的 go 模块mkdir examplecd examplego mod init example添加github.com/99designs/gqlgen到项目的 tools.goprintf '//go:build tools\npackage tools\nimport (_ "github.com/99designs/gqlgen"\n _ "github.com/99designs/gqlgen

  • 基于JAVA+SpringBoot+Vue+MySQL的社区物资交易互助平台 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:maven 数据库工具:navicat

  • 法研杯2021类案检索赛道三等奖方案源码+项目说明+数据.zip

    法研杯2021类案检索赛道三等奖方案源码+项目说明+数据.zip是一个专为计算机相关专业(如计科、信息安全、数据科学与大数据技术等)学生设计的宝贵学习资源。该压缩包包含了完整的项目源码、详细的项目说明文档以及用于训练和测试的数据集,旨在帮助参赛者深入理解并掌握类案检索的相关技术和方法。该项目通过实际案例,展示了如何运用自然语言处理和机器学习技术对法律案件进行智能检索和匹配。项目内容涵盖了从数据预处理、特征提取到模型训练和评估的全过程,为学习和研究类案检索技术提供了全面的参考。本项目不仅适合作为课程设计、期末大作业或毕设项目的参考,也是企业员工提升技能、进行实践操作的优质学习资料。通过实际操作和学习该项目,用户可以加深对类案检索技术的理解,并在实践中不断提升自己的技能水平。请注意,由于该资源包含完整的项目源码和数据集,下载和使用时请确保遵守相关法律法规和道德规范,尊重知识产权和隐私权。同时,建议用户在使用前仔细阅读项目说明文档,了解项目的整体架构和使用方法,以便更好地利用该资源进行学习和研究。

  • 基于Cesium实现的对倾斜摄影模型的单体化分层方案源码.zip

    本资源提供了基于Cesium实现的倾斜摄影模型单体化分层方案的完整源码,旨在帮助开发者深入理解并实践三维地理空间数据的处理与展示。通过Cesium平台,用户能够将倾斜摄影获取的高精度三维模型进行单体化和分层处理,实现对模型中每个独立元素的精细管理和交互操作。该资源适合具备一定计算机编程基础的学习者,特别是对Cesium感兴趣的学生、研究人员及GIS行业从业者。通过下载并学习这些源码,用户可以掌握倾斜摄影模型在Cesium中的加载、单体化以及分层显示等关键技术,进而提升自己在三维地理信息系统开发领域的技能水平。

Global site tag (gtag.js) - Google Analytics