platform

我最近结束了在拉斯维加斯参加SpringOne Platform会议的总结。 这是我第一次参加SpringOne。 这是聆听演讲并与软件开发领域的一些顶级专家进行对话的一种体验。

如果您没有参加SpringOne,那么您肯定会想要阅读这篇文章。 我们将讨论这四个主题,以及如何将它们潜在地应用到您今后的工作中。

  • React设计
  • 使用Spring Boot 1.4简化测试
  • 缩短开发反馈循环
  • 为开源社区做贡献

React设计

将Spring Reactive包含到Spring核心框架中是Spring 5发布的路线图 。 结果,SpringOne的许多会议都专门讨论了什么是React式设计以及如何使用它。

Node.js开发人员应该已经熟悉该模式,这确实是Node.js的存在理由。 响应式设计基于事件驱动的非阻塞I / O原理。 如果这一切听起来令人困惑,那就更好地知道您不是唯一对此概念感到困惑的人–我也仍在努力吸收它。

用简单的术语表示什么:以“标准”(命令式)方式编写程序时,对外部源(无论是数据库还是服务)的调用将使调用线程在继续执行之前等待响应。 响应式设计通过创建承诺(即事件)并稍后读取返回结果(非阻塞)来更改此设置。

由于大大减少了执行相同工作量所需的线程数(每个线程占用内存,数据库和服务只能同时服务于有限数量的连接),因此可以大大减少系统资源的使用。

会谈中经常提及的React式设计的另一个关键概念是背压 。 背压会在订户和生产者之间产生反转。 生产者通常会规定返回给订阅者的金额,通常是整个结果集的大小,而背压则使订阅者可以定义自己希望在何时以及何时接收多少(即订阅者只会处理完先前的退货后,向生产者请求更多)。 这有助于防止订户被大型数据集淹没,并通过仅发送订户准备就绪的工作以及随时间分配负载来减少对生产者的需求。

这些背压功能共同帮助创建了更可靠的服务。 我认为,这是整个行业从React设计中获得真正好处的地方。

为了对React式编程进行更正式的介绍,Spring的David Syer撰写了一个由三部分组成的出色的系列文章,内容涉及使用Spring React进行编程: 第1 部分 / 第2 部分 / 第3部分 。

使用Spring Boot 1.4简化测试

Pivotal最近发布了Spring Boot 1.4 ,它具有许多有趣的新功能( 例如,从类路径中的图片自动生成ascii横幅! ),并引入了Spring Core 4.3 ,使开发人员的工作更加轻松。

在添加的所有功能中,我最兴奋的是所有新的测试支持。 对像Spring这样的IoC / DI容器的普遍批评是,由于开发人员为了测试其代码而必须编写所有上下文设置,这会使代码的测试更加困难(尽管也可以通过更好地缓解这些问题来缓解这种情况)代码设计)。 幸运的是,Pivotal和社区已经做出了回应,并添加了一套新功能,以减轻编写单元测试的负担。 有关所有新测试功能的全文,请参见此处 。

使代码易于测试是缩短反馈循环的最重要的使能功能之一,我将在本文中稍后进行介绍。 有关Spring Boot 1.4的完整发行说明,请查看此链接 。

缩短开发反馈循环

我参加过的以前的会议和演讲通常都集中在新工具,新样式或新技术上。 尽管好处可能显而易见,但通常很难将其引入组织。 但是,我很高兴看到Pivotal将两个主题演讲的大部分内容投入到我最近阅读的一个领域; 持续交付 。

连续交付的主要原则是,每次提交都应启动一系列自动化过程(测试,部署),最后将代码交付给至少一个类似于生产的环境(如果不是生产本身)。

为了实现这一目标,连续交付在很大程度上取决于自动化。 验证代码是否满足质量阈值的单元测试,确保应用程序在环境中正常运行的集成测试以及防止部署到环境中的配置问题的部署脚本。

在这些过程中,有一些功能可以延长开发周期,例如可以使开发人员更快地验证更改的单元测试,完全审核更改/部署的能力以及使回滚部署的过程变得非常容易的功能。 所有这些过程本质上都有助于降低风险,但与生产的频繁部署一起通过缩小部署之间的增量来降低风险。

尽管开发环境中没有灵丹妙药,但连续交付,快速而自信地部署到生产环境(有时一天数百次)的能力可能是将优秀软件公司与劣质软件公司区分开的定义特征。 而且,任何编写一行代码的组织都是一家软件公司。

为开源社区做贡献

紧接着以缩短反馈循环为主题,这是开源项目从我们的操作系统(Linux),框架(Spring)和平台(Cloud Foundry)以及许多其他领域接管软件世界的一个核心原因,这是因为开源提供了封闭项目无法提供的反馈循环:工具的用户可以为此做出贡献!

这就是使Spring从成为IoC / DI容器发展到几乎包罗万象的生态系统( https://spring.io/projects )的原因。 为开源项目做贡献是建立知识库,学习新想法以及在组织或直接地理区域之外建立联系的绝佳方法。 对开源项目的贡献范围从修复问题到添加新功能 。

所以,如果你有兴趣的贡献, 也 有 很多的更多 机会 ,以 做 如此。

最后的想法

参加SpringOne平台是一次很棒的经历。 看到Spring社区在过去几年中在将新项目添加到平台和扩展他们已经拥有的项目的功能方面所取得的进步,真是令人惊讶。

有关Spring的继续更新,请访问以下博客: https : //spring.io/blog 。 另外,请通过订阅右侧边栏中的内容确保在Keyhole上关注我们的博客!

Spring 5的新功能以及与Pivotal员工的对话使我对Spring和Java的未来感到非常兴奋!

翻译自: https://www.javacodegeeks.com/2016/08/springone-platform-2016-retrospective.html

platform

platform_SpringOne Platform 2016回顾相关推荐

  1. SpringOne Platform 2016回顾

    我最近结束了在拉斯维加斯参加SpringOne Platform会议的总结. 这是我第一次参加SpringOne. 这是聆听演讲并与软件开发领域的一些顶级专家进行对话的一种体验. 如果您没有参加Spr ...

  2. 使用VS Code 插件, 快速入门超账Fabric(一) : 知识回顾

    本文2670字, 预计10分钟 学习目标: 了解什么是区块链及其重要性 了解有关Linux Foundation Hyperledger Project和Hyperledger Fabric的信息 了 ...

  3. 回首2016,展望2017

    回首2016,展望2017   起初看到CSDN征文时,自己就决定要在2016结束之前回顾自己度过的一年.无论参评与否,都是对自己过去一年的考量.   有的人可能会在新的一年设定很多目标,而自己却从未 ...

  4. 我的2016书单以及为2017年准备的书单

    看见博客园不少博友都在晒书单,我也想梳理下自己2016年读了哪些书.这些书大多都是在手机上读的,电子书确实比纸质书要方便许多.写下这些东西给自己做个记录,回顾下2016,展望下2017. 2016年读 ...

  5. 使用VS Code 插件, 快速入门超账Fabric(一) : 知识回复

    本文2670字, 预计10分钟 学习目标: 了解什么是区块链及其重要性 了解有关Linux Foundation Hyperledger Project和Hyperledger Fabric的信息 了 ...

  6. 重磅 | 中国工程院提出新一代智能制造

    来源:WPR 近日,中国工程院院刊<Engineering>推出最新观点性文章"走向新一代智能制造",作者周济.李培根.周艳红等,文章指出智能制造是一个不断演进发展的大 ...

  7. 重磅 | 中国工程院提出新一代智能制造【附下载】

    来源:走向智能论坛 近日,中国工程院院刊<Engineering>推出最新观点性文章"走向新一代智能制造",作者周济.李培根.周艳红等,文章指出智能制造是一个不断演进发 ...

  8. 【智能制造】中国工程院正式提出新一代智能制造,理论自信引领制造强国

    近日,中国工程院院刊<Engineering>推出最新观点性文章"走向新一代智能制造",作者周济.李培根.周艳红等,文章指出智能制造是一个不断演进发展的大概念,可归纳为 ...

  9. 【年终盘点】2019上海人工智能发展十大事记

    可以说,上海人工智能就是中国人工智能发展的缩影. 12月2日,上海市经济和信息化发展研究中心发布<2019上海市智慧城市发展水平评估报告>.报告显示,目前,上海全市 人工智能重点企业已突破 ...

最新文章

  1. python语言的理解-使用Python语言理解递归
  2. AB1601spi传输慢的问题
  3. 大作文_p2_v1.0
  4. html中地图的绘制toolbars,三维GIS实验一:Surfer8地理信息制图.doc
  5. Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(1)
  6. 计算机二进制基础列式,计算机基础;十进制数100对应的二进制数、八进制数和十六进制数分别是...
  7. oracle 静态监听 端口,侦听动态注册静态注册local_listener参数端口PORT
  8. 计算机的硬件技能,计算机的最基础——软硬件
  9. MySQL中将查询所得结果集的某一字段拼接成字符串
  10. php yii开发工具,开源PHP开发框架Yii教程
  11. HttpURLConnection请求数据流的写入(write)和读取(read)
  12. Linux系统攻略关于vi替换命令的使用说明
  13. kettle Windows下载
  14. abaqus 帮助文档 Substructure(子结构) 理论
  15. 电商物流就是昨天的外卖乱战?千亿市场到底该如何整合
  16. 计算机文化基础课程实验,计算机文化基础课程实验.doc
  17. android studio 魅族真机 flyme6 下logcat 打印自定义日志
  18. oracle 输出全角空格,mac系统中如何切换全角半角?苹果电脑输入法全角半角切换快捷键介绍...
  19. zynq Linux软件中断,zynq7010 在 linux 系统下 irq_f2p 中断驱动-Go语言中文社区
  20. 科技风PPT模板百度网盘下载

热门文章

  1. AT1981-[AGC001C]Shorten Diameter
  2. YbtOJ#20073-[NOIP2020模拟赛B组Day6]钻石守卫【构造】
  3. jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
  4. bzoj1791,P4381-[IOI2008]Island【基环树,树形dp,单调队列dp,树的直径】
  5. Codeforces Round #684 (Div. 2)
  6. 【状压DP】剑之修炼(jzoj 2130)
  7. 【DP】楼梯(jzoj 1520)
  8. [AGC014D] Black and White Tree(树形DP,博弈)
  9. 牛客网暑期ACM多校训练营(第九场)
  10. codeforces 935E Fafa and Ancient Mathematics 语法树、动态规划