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

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

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

欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如果您和您的团队希望展示创业理念和有趣之处,或者有朋友正在创造这样的价值,请联系我们,发信到blog@csdn.com即可。

先来个自我介绍吧!

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

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

Firefly是什么?有哪些功能?

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

Firefly提供的主要功能如下:

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

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

在开发Firefly之前也一直用开源的Java框架,比如Spring、Stucts、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:https://github.com/hypercube1024/firefly
  • Google Code:http://code.google.com/p/firefly/
  • QQ:95350530
  • 主页: http://www.fireflysource.com/

未来的开发计划?

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

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

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

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

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

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

一站式 Java Web 开发框架 Firefly 作者邱鹏滔专访相关推荐

  1. TSS翻译:帮我选一个Java Web开发框架吧

    TSS:帮我选一个Java Web开发框架吧 最近 TheServerSide.com 上一篇文章引起了常常的讨论.地址见这里:Chose a web client framework. Cheste ...

  2. java web开发(一) Java Web开发框架对比

    java web 非本人研究方向,只是作为拓展知识涉猎范围  原文链接:http://www.importnew.com/7957.html Web框架有点像酸酵母,你要么喜欢它,要么讨厌它!什么?你 ...

  3. Java Web开发框架对比

    Web框架有点像酸酵母,你要么喜欢它,要么讨厌它!什么?你从来没听过什么是酸酵母?没关系,那么你很有可能会讨厌它!使自己沉浸在一个新型语言中或者一个项目里,快速拥有高效生产力是十分重要的.学习一个We ...

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

    Firefly是一个高性能一站式Web框架. 涵盖了web开发的主要技术栈. 包含Template engine.IOC.MVC framework.HTTP Server.Common tools. ...

  5. 高效 Java Web 开发框架 JessMA v3.2.1 正式发布

    JessMA(原名:Portal-Basic)是由 JessMA Open Source 开发的一套高效 Java Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 ...

  6. 智能开发框架 JEECG 作者张代浩专访

    转自:http://blog.csdn.net/blogdevteam/article/details/8534797 目录(?)[-] 先做个自我介绍吧 JEECG是什么 有哪些功能 开发这个框架的 ...

  7. java开源框架有哪些_java web开发框架有哪些

    1 java web开发框架有哪些 java,互联网发展出来的产物,如今变成了屈指可数的几大编程语言之一,他的未来是不可限量的.因此很多人都想要学会这门技术,希望在以后能有他的一席之地.那么下面小编给 ...

  8. Java开源Web开发框架

     WebWork WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架.WebWork目前最新版本是2.1,现在的WebWork2.x前身 ...

  9. Java开源 Web开发框架

    WebWork WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架.WebWork目前最新版本是2.1,现在的WebWork2.x前身是 ...

最新文章

  1. 【摄像头】摄像机工作原理
  2. vim-addon-manager install youcompleteme
  3. linux 驱动开发 --- 字符设备与混杂设备区别
  4. 从脑电图(EEG)中提取稳定的模式进行识别
  5. 我看team work
  6. 内核与ramdisk到底是什么关系?
  7. selenium2与python自动化6-select下拉框
  8. php class使用方法,PHP调试类Krumo使用教程
  9. php使用hset报错,redis中set和hset的区别和使用场景
  10. 吴恩达机器学习编程题ex1上 单变量线性回归: (python版含题目要求、代码、注解)
  11. 当芯片教父遇上伊隆马斯克:自动驾驶路在何方
  12. JAVA算法:M个苹果放到N个盘子中的方法(JAVA代码)
  13. OOP的六大原则+一法则
  14. 阿里高维向量检索方法NSG介绍
  15. error:‘%include‘ expects a file name
  16. 为什么有必要开发一个APP?
  17. 学好Python的未来7大就业方向,月薪不低于2w!
  18. 第八章 界面外观——Qt
  19. 如今,我们已经长大,
  20. 课得软件丨成都web前端培训班哪儿好?

热门文章

  1. 转载:运用MQTT-JMeter插件测试MQTT服务器性能
  2. 抖音APP揭秘:抖音号怎么从无到有?
  3. win10安装jdk12并配置环境
  4. 训练营感想_为什么训练营很有价值
  5. 【计算机网络 15】简单几行Java代码实现迅雷功能,java流式编程原理
  6. 如何提高孩子的专注力?分享实战妈妈的训练妙招
  7. win10家庭版能学计算机吗,教你win10家庭版如何获取管理员权限
  8. 我的世界服务器无限tp,我的世界服务器怎么tp别人那
  9. antd vue 越过登录直接跳静态页面
  10. 充分利用闲置宽带容器魔方部署