开发人员必知的5种开源框架--Spark/Docker/Spring Boot/Bootstrap/AngularJS

开发人员必知的5种开源框架 | Ji ZHANG's Blog
http://shzhangji.com/blog/2016/03/13/top-5-frameworks/

作者:John Esposito
软件侵吞着世界已经四年多了,但开发人员看待软件的方式稍有不同。我们一直在致力于解决实际问题,而很少思考软件开发的基石。当问题变得更庞大、解决方案更复杂时,一些实用的、不怎么产生泄漏的抽象工具就显得越来越重要。
简单地来说,在那些追求生产效率的开发者眼中,框架正在吞食着世界。那究竟是哪些框架、各自又在吞食着哪一部分呢?
开源界的开发框架实在太多了,多到近乎疯狂的地步。我从2015年各种领域的榜单中选取了最受欢迎的5种框架。对于前端框架(我所擅长的领域),我只选取那些真正的客户端框架,这是因为现今的浏览器和移动设备已经具备非常好的性能,越来越多的单页应用(SPA)正在避免和服务端交换数据。
1. 展现层:Bootstrap
我们从技术栈的顶端开始看——展现层,这一开发者和普通用户都会接触到的技术。展现层的赢家毫无疑问仍是Bootstrap。Bootstrap的流行度非常之惊人,远远甩开了它的老对手Foundation,以及新星Material Design Lite。在BuiltWith上,Bootstrap占据主导地位;而在GitHub上则长期保持Star数Fork数最多的记录。
如今,Bootstrap仍然有着非常活跃的开发社区。8月,Bootstrap发布了v4内测版,庆祝它的四岁生日。这个版本是对现有功能的简化和扩充,主要包括:增强可编程性;从Less迁移至Sass;将所有HTML重置代码集中到一个模块;大量自定义样式可直接通过Sass变量指定;所有JavaScript插件都改用ES6重写等。开发团队还开设了官方主题市场,进一步扩充现有的主题生态
2. 网页MVC:AngularJS
随着网页平台技术越来越成熟,开发者们可以远离仍在使用标记语言进行着色的DOM对象,转而面对日渐完善的抽象层进行开发。这一趋势始于现代单页应用(SPA)对XMLHttpRequest的高度依赖,而其中流行的SPA框架当属AngularJS
AngularJS有什么特别之处呢?一个词:指令(directive)。一个简单的ng-
就能让标签“起死回生”(从静态的标记到动态的JS代码)。依赖注入也是很重要的功能,许多Angular特性都致力于简化维护成本,并进一步从DOM中抽象出来。其基本原则就是将声明式的展现层代码和命令式的领域逻辑充分隔离开来,这种做法对于使用过POM或ORM的人尤为熟悉(我们之中还有人体验过XAML)。这一思想令人振奋,解放了开发者,甚至让人第一眼看上去有些奇怪——因为它赋予了HTML所不该拥有的能力。
有些遗憾的是,AngualrJS的“杀手锏”双向绑定(让视图和模型数据保持一致)将在Angular2中移除,已经临近公测。虽然这一魔法般的特性即将消失,却带来了极大的性能提升,并降低了调试的难度(可以想象一下在悬崖边行走的感觉)。随着单页应用越来越庞大和复杂,这种权衡会变得更有价值。
3. 企业级Java:Spring Boot
Java的优点是什么?运行速度快,成熟,完善的类库,庞大的生态环境,一处编译处处执行,活跃的社区等等——除了痛苦的项目起始阶段。即便是最忠实的Java开发者也会转而使用Ruby或Python来快速编写一些只会用到一次的小型脚本(别不承认)。然而,鉴于以上种种原因,Java仍然是企业级应用的首选语言。
这时,Spring Boot出现了,它是模板代码的终结者,有了它,你就能在一条推文中写出一个Java应用程序来:
https://twitter.com/rob_winch/status/364871658483351552
1
2
3
4
5
6
7
8
9

// spring run app.groovy
@Controller
class ThisWillActuallyRun {
@RequestMapping("/")
@ResponseBody
String home() {
"Hello World!"
}
}

没有让人不快的XML配置,无需生成别扭的代码。这怎么可能?很简单,Spring Boot在背后做了很多工作,读上面的代码就能看出,框架会自动生成一个内嵌的servlet容器,监听8080端口,处理接收到的请求。这些都无需用户配置,而是遵从Spring Boot的约定。
Spring Boot有多流行?它是目前为止fork数和下载量最高的Spring应用(主框架除外)。2015年,在谷歌上搜索Spring Boot的人数首次超过搜索Spring框架的人
4. 数据处理:Apache Spark
很久很久以前(2004年),谷歌研发出一种编程模型(MapReduce),将分布式批处理任务通用化了,并撰写了一篇著名的论文。之后,Yahoo的工程师用Java编写了一个框架(Hadoop)实现了MapReduce,以及一个分布式文件系统,使得MapReduce任务能够更简便地读写数据。
将近十年的时间,Hadoop主宰了大数据处理框架的生态系统,即使批处理只能解决有限的问题——也许大多数企业和科学工作者已经习惯了大数据量的批处理分析吧。然而,并不是所有大型数据集都适合使用批处理。特别地,流式数据(如传感器数据)和迭代式数据分析(机器学习算法中最为常见)都不适合使用批处理。因此,大数据领域诞生了很多新的编程模型、应用架构、以及各类数据存储也逐渐流行开来(甚至还从MapReduce中分离出了一种新的集群管理系统)。
在这些新兴的系统之中,伯克利AMPLab研发的Apache Spark在2015年脱颖而出。各类调研和报告(DZoneDatabricksTypesafe)都显示Spark的成长速度非常之快。GitHub提交数从2013年开始就呈线性增长,而谷歌趋势则在2015年呈现出指数级的增长
Spark如此流行,它究竟是做什么的呢?答案很简单,非常快速的批处理,不过这点是构建在Spark的一个杀手级特性之上的,能够应用到比Hadoop多得多的编程模型中。Spark将数据表达为弹性分布式数据集(RDD),处理结果保存在多个节点的内存中,不进行复制,只是记录数据的计算过程(这点可以和CQRS实用主义Kolmogorov复杂度相较)。这一特点可以让迭代算法无需从底层(较慢的)分布式存储层读取数据。同时也意味着批处理流程无需再背负Nathan Marz在Lambda架构中所描述的“数据卡顿”之恶名。RDD还能让Spark模拟实时流数据处理,通过将数据切分成小块,降低延迟时间,达到大部分应用对“准实时”的要求。
5. 软件交付:Docker
严格意义上说,Docker并不是符合“框架”的定义:代码库,通用性好,使用一系列特殊约定来解决大型重复性问题。但是,如果框架指的是能够让程序员在一种舒适的抽象层之上进行编码,那Docker将是框架中的佼佼者(我们可以称它为“外壳型框架”,多制造一些命名上的混乱吧)。而且,如果将本文的标题改为“开发人员必知的5样东西”,又不把Docker包含进来,就显得太奇怪了。
为什么Docker很出色?首先我们应该问什么容器很受欢迎(FreeBSD Jail, Solaries Zones, OpenVZ, LXC)?很简单:无需使用一个完整的操作系统来实现隔离;或者说,在获得安全性和便利性的提升时,无需承担额外的开销。但是,隔离也有很多种形式(比如最先想到的chroot
,以及各种虚拟内存技术),而且可以非常方便地用systemd-nspawn
来启动程序,而不使用Docker。然而,仅仅隔离进程还不够,那Docker有什么过人之处呢?
两个原因:Dockefile(新型的tar包)增加了便携性;它的格式成为了现行的标准。第一个原因使得应用程序交付变得容易(之前人们是通过创建轻型虚拟机来实现的)。第二个原因则让容器更容易分享(不单是DockerHub)。我可以很容易地尝试你编写的应用程序,而不是先要做些不相关的事(想想apt-get
给你的体验)。
关于作者

John Esposito
John Esposito是DZone的主编,最近刚刚完成古典学博士学位的学习,养了两只猫。之前他是VBA和Force.com的开发者、DBA、网络管理员。(但说真的,Lisp是最棒的!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容