本文共 2936 字,大约阅读时间需要 9 分钟。
自己开发框架和用开源的框架
软件已经吞噬了世界 。 但是开发人员对软件的看法有所不同。 就我们 ,我们 。 随着问题变得越来越大,解决方案变得更加复杂,务实的(而不是过于泄漏的)抽象比以往任何时候都变得更加重要。
结果:从注重生产力的开发人员的角度来看, 框架正在吞噬整个世界。 但是,哪些人正在吞食世界上哪些地区?
考虑到可用的一流开放源码框架的疯狂变化,我不是从单个排名而是从堆栈的各个级别中选出了2015年排名前5位的开放源代码框架。 (对于前端,我专注于Web以及更狭窄的是真正的客户端框架,这是因为浏览器和移动设备的功能越来越强大,并且SPA [单页应用程序]等避免了通过不必要的电线。)
让我们从堆栈的顶部开始:表示层,开发人员和我们共同接触的东西。 在这里,明显的赢家仍然是 。 该 以及诸如类的新产品。 Bootstrap主导了使用趋势,在GitHub上,它仍然很容易成为 和 。
而且Bootstrap仍在积极开发中。 8月,Bootstrap推出了第 ,庆祝了它的第四个生日,这是对已经强大的功能集的 。 更新的要点:一切都变得更具编程性。 Bootstrap从Less转移到Sass,将所有HTML重置集中在一个模块中,将样式自定义的负载直接扔到Sass变量中,并对所有JavaScript插件进行ES6标准化。 该团队甚至启动了 ,以补充已经庞大的 。
随着Web平台的不断 ,开发人员享受着与仍标记了颜色的DOM精心设计的抽象距离。 通过XMLHttpRequest的开始工作达到其在现代单页面应用程序(水疗)天顶,以及 迄今为止SPA框架 。
AngularJS有什么特别之处? 一言以蔽之: 。 只需一点点ng-
就可ng-
(动态,JavaScript执行)生活带来一个(静态,标记)标签。 (依赖注入也非常简洁,就像Angular的许多功能旨在简化维护并更全面地从DOM进行抽象一样。)基本原理只是将声明式视图与命令式域逻辑完全合理地分隔开,这对任何拥有此功能的人都是熟悉的扫描了POM文件或与ORM争斗(嘿,我们中有些人也曾经喜欢XAML)。 这既令人振奋,又自由,而且有点怪异—赋予了HTML确实不该具有的功能。
也许令人遗憾的是背后最激进的概念-双向数据绑定,它毫不费力地使视图和模型保持同步- ,它 。 因此,一点魔力将消失,但是大规模的性能头痛和大规模的令人费解的调试工作也将消失(只是想一想双向 ,就会感觉到悬崖从脚下掉下),这是一个折衷方案随着页面大小和SPA复杂性气球的增长,其价值越来越大。
Java有什么优点? 快速,成熟,全面的类库,巨大的生态系统,到处运行一次写入,活跃的社区-但不是很容易的自举。 甚至核心的Java开发人员都使用Ruby或Python编写快速的一次性程序( 承认 )。 但是,由于上述其他原因,Java仍继续主导企业。
输入样板蒸发器Spring Boot,这是一个框架,可让您在一个鸣叫中适合运行的Spring应用程序:
类ThisWillActuallyRun { (“ /”) String home(){“ Hello World!” }}
— Rob Winch(@rob_winch)
没有令人不快的XML配置,没有草率的生成代码。 这怎么可能? 简单:Spring Boot有一些非常强烈的意见。 阅读上面的那条推文,突然之间一切都变得有意义了! 当您意识到该框架会自动启动一个嵌入式Servlet容器以处理端口8080上的传入请求时-您没有明确配置它进行的决定,而是常规(对防火墙友好)的调用。
Spring Boot有多热? 到目前为止这是和下载最多的Spring项目(不包括主框架本身)。 并且在2015年,Google首次 。
曾几何时(2004年),谷歌开发了一种编程模型( ),该模型对许多分布式批处理工作结构进行概括,然后 。 然后,一些Yahoo员工编写了一个Java框架( ),该框架实现了MapReduce和一个以简化MapReduce任务的数据访问。
尽管解决(最佳)批处理的问题空间有限,但是在近十年中,Hadoop主导了“大数据”框架生态系统,部分原因是企业和科学用户习惯于对大型数据集进行批处理分析。 但是,并非所有大型数据集都可以按批次进行优化处理。 特别是,流数据(例如传感器输入)和迭代分析的数据(例如喜欢机器学习算法的数据)不喜欢批处理。 因此诞生了数十个新的大数据框架, 和受到关注(包括针对Hadoop本身的与MapReduce分离的 )。
但是在所有这些新框架中, ( )是2015年的最佳选择。 调查( ; ; )显示,Spark的采用取得了巨大的增长。 ,GitHub提交量一直 ,而Google趋势显示 。
因此Spark很受欢迎。 但是它是做什么的呢? 好,非常快速的批处理; 但这取决于一项杀手级功能,该功能所允许的编程模型比Hadoop多得多。 Spark使数据在弹性分布式数据集中(RDD)中可用,这些数据在处理后仍保留在多个节点上的内存中,但是没有复制 (通过存储有关如何重新创建的信息;与 , , 进行比较)。 这(显然)使算法得以迭代,而无需从分布式内存层次结构中的(较低)梯级重新加载。 这意味着批处理不再需要Nathan Marz的的“长冲程”的尊严。 RDD甚至允许Spark通过足够快地运行小批处理作业以将延迟保持在许多应用程序的“有效流”范围内,从而模拟真实(推送)流处理。
好的,从“慷慨定义的代码库,它强加了一套特定的约定来解决大型且反复出现的问题集”的意义上讲, 并不是一个“框架”。 但是,如果框架只是让您以更合适的抽象级别编写代码的事物,那么Docker是框架的佼佼者。 (我们称其为外骨骼框架 ,只是为了混淆混淆地使用隐喻。)而且,将“ 2015年开发人员排名前茅”命名为不包含Docker的列表将是一件很有趣的事情。
Docker为什么很棒? 首先,为什么容器(早期:FreeBSD Jail,Solaris Zones,OpenVZ,LXC)很棒? 简单:无需完整的操作系统即可进行隔离; 或者,虚拟机的安全性和便利性,而开销却少得多。 但是隔离采取了多种形式(想到了chroot
,或者实际上是任何虚拟内存系统),并且没有Docker的systemd-nspawn
相当容易。 仅能够隔离进程是不够的。 为什么Docker ?
原因有两个:Dockerfiles(“新的tarball”)增加了可移植性; Dockerfile格式现已成为事实上的标准。 第一个减轻了应用程序交付的麻烦(而早期的容器仅创建了较轻的VM)。 第二个使容器共享成为社会性的(而不仅仅是在 )。 我可以尝试您的应用程序,而无需花几个小时不尝试您的应用程序。 (还记得如何apt-get
自由apt-get
感觉吗?)
翻译自:
自己开发框架和用开源的框架
转载地址:http://yvnzd.baihongyu.com/