精华内容
下载资源
问答
  • 本文并没有具体描述如何去开发,只是介绍应该如何选择正确的方法。在开始之前我们有必要明确一下这次实践的目标。一般来说,想要构建网站的人可分为两类:这两种目标是截然不同的,所以相应的技术方法也不同。前者...
  • 本文并没有具体描述如何去开发,只是介绍应该如何选择正确的方法。在开始之前我们有必要明确一下这次实践的目标。一般来说,想要构建网站的人可分为两类: 改造现有的网站,使其可以通过移动设备访问; 从头...

    英文原文:Mobile web content adaptation techniques

      译者:赵建光

      如果你要构建移动网站,那么本文可以帮你选择合适的技术方案。本文并没有具体描述如何去开发,只是介绍应该如何选择正确的方法。在开始之前我们有必要明确一下这次实践的目标。一般来说,想要构建网站的人可分为两大类:

    • 改造现有的网站,使其可以通过移动设备访问;
    • 从头开始构建全新的移动网站

      这两种目标是截然不同的,所以相应的技术方法也不同。前者的目标可以归结为:构建一个无缝缩放的网站。这样的网站可以在不同尺寸的屏幕上正常显示,而网站原有的结构、导航等则保持不变;后者的目标是构建一个全新的移动网站,以满足移动用户的需求(无论用户是否处于运动状态),这需要不同的视图设置和交互设计。

      为了区分现有的不同技术,本文使用了术语:“无缝缩放”和“内容自适应”。前者的意思是当现有的网站面向不同分辨率的屏幕时具有更大的灵活性和适应性;后者的意思是为移动用户量身定做。

      内容自适应技术的演变

      21世纪的头 10 年里,移动 Web 和桌面 Web 之间的区别还是很明显的。当时只有一种技术可以实现不同设备之间的内容适应——即在服务器端进行内容适应。这就意味着服务器要对设备进行识别以切换内容保证其正确显示。

      实际上,服务器端的内容适应技术很重要。如果没有此技术,Web 上的内容将无法在设备上正确显示。然而,在近 5 年情况变得更加复杂了。各种手机、平板电脑的出现使得移动浏览器与桌面浏览器之间的功能差异越来越小了。即使是最普通的功能手机也内嵌了功能丰富的浏览器。这就导致了三种结果:

    • 移动设备和桌面设备之间将不再有明显区别。
    • 既然这么多的设备都具有了功能强大且支持 JavaScript 的浏览器,也就有越来越多的新技术为这些新设备提供内容适应服务。
    • 有些人质疑内容适应技术的必要性,理由是智能手机几乎可以显示所有网站的内容。

      本文旨在介绍诸多内容自适应技术,说明各技术的优缺点,以供参考

      下表列出了当今的主流技术:

    此表可能存在争议,因为,为了简洁起见,一些复杂的及细微的特征在表中没有表现出来。

      1、响应式设计

      响应式设计这个术语之所以如此流行是因为 Ethan Marcotte 于 2010 年 5 月份在超具影响力的网站A List Apart 上发表的一篇文章及其 2011 年发表的书籍《Responsive Web Design》中都极力推广该术语。Ethan 介绍了一系列的设计原则和技术,能够保证网站在任何情况下都可以在移动设备上运行。实际上,流畅的设计一直是资深 Web 开发人员的追求目标,但是 Ethan 所介绍的是一套具体的技术,大多数 Web 开发者都可以在不使用其它新工具的情况下轻松实现这些技术,这就是该解决方案的诱人之处。

      上述的响应式设计是基于以下三种技术的:

    • 流体网格——确保底层页面的网格可以很好地适应于各种尺寸的屏幕。
    • 响应式图像——图像在可变网格中可以正确显示。
    • CSS media queries——所使用的 CSS 样式可适用于不同分辨率、不同类型的设备。

      这些技术使得一个 HTML 页面可以运行于不同设备,达到我们所期望的结果:采用这种技术所构建的网站可以很好地支持旧版本的浏览器,可以在所有桌面浏览器及大多数智能手机上运行。Media Queries 上有很多这样的例子。(注:Ethan 那本书的发行者 Jeffrey Zeldman 后来指出,响应式设计不应仅仅局限于 Ethan 所介绍的技术,而应该包含所有可以实现这一目标的方法。)

      响应式设计这一术语只是该技术的标签。该技术包含了一整套的设计原则,以实现无缝缩放功能。可是,响应式设计容易与移动 Web 相混淆,导致开发者产生错觉,他们会以为只要使用了响应式设计的网站就是对移动用户友好的网站,就完成了移动网站的开发。当然了,做一个反应速度快的网站是好事,但缺少一个充分发挥移动设备本身功能的解决方案。

      说实话,Ethan 并不提倡用这种方法来构建移动网站,他有一个很明智的建议:要根据具体项目来选择合适的方法。他在书中指出:“最重要的是,Web 响应式设计不是用来代替移动网站的。响应式设计只是一个设计理念,一个前端的开发策略。既然是开发策略,这就意味着要根据具体项目来做出正确的评估。

      作为一种实现移动网站的方法,响应式设计存在以下三个问题:

    • 只可以做到无缝缩放,而没有实现内容自适应。从移动领域的角度来看,这种技术效率低下。(即使图片在某移动设备上不能全屏查看或者根本无法显示,也需要将整个图片下载下来。)
    • 由于响应式设计理念中,HMTL 代码是要传递到所有设备中的(无论大小),这就使得它不能很好地支持低端设备。波士顿环球报网站上大肆宣扬:“所谓的响应式设计杰作,在主流手机(如:Motorola RAZR、Nokia 6100)上却不能很好地运行,甚至根本无法运行。”
    • 不能很好地处理实时数据,所以用户体验不够好。

      响应式设计虽然可以实现无缝缩放,但是所支持的用例很有限,并不是一个很好的移动 Web 解决方案。

      2、Mobile-First 响应式设计

      自从 Ethan 的文章及著作发表以来,许多人指出,如果将响应式设计反过来用可能会更合理:如果你设计的网页风格默认就是对移动用户友好的,那么一些响应式设计问题也就不存在了。特别地,避免下载不必要的大图片问题就可以由该方法来解决。目前,这种技术的最佳实践是:首先为所有设备提供合适的图片,然后用这些图片来代替大图片。来自The Filament Group 的 Scott Jehl 已经做到了这点。

      Mobile-First 设计理念的另一个优点是:该设计理念可以作为一个楔子,使得设计人员找到了一个充分的理由来清除多年来在桌面网站上积累下来的不必要的混乱。因为按照 Mobile-First 的设计理念,这些混乱是必须要被剔除的。

      Mobile-First 响应式设计是对原有技术的重大革新,但也存在以下问题:

    • 只实现了无缝缩放,而没有实现内容自适应。
    • 桌面网站需要从头开始重新设计。也许你认为这反倒是件好事。

      总之,如果你的目标是构建移动网站,Mobile-First 响应式设计是唯一实用的响应式设计理念,因为从低端设备到桌面浏览器都可以使用该方案。

      3、渐进增强(PE)

      渐进增强(PE)是一个新近流行的有关内容适应方面的术语。最初是在约 10 年前由 Steven Champeon 和 Nick Finck 在他们的文章《Inclusive Web Design Future》中提出来的,该文章发表于SXSW。渐进增强的核心思想是:在单一的网页上实现 JavaScript 增强逻辑,使其能够服务于所有类型的设备。如果设备过于简陋,则 JavaScript 可能得不到运行或报错,因此用户体验会很差;如果是智能设备或桌面浏览器,则 JavaScript 会逐渐向页面增加新的功能,充分发挥设备的硬件功能。理论上讲,分层是没有上限的,可以逐渐从功能手机浏览器渐渐过度到台式电脑浏览器。

      PE 的诱人之处是很明显的:它可以满足所有类型的设备(包括低端设备),因为它是故障安全的解决方案;高端设备的功能又不会因为这个“最低限度共同点”而受到限制。刚刚发布的 jQuery Mobile 库就用到了 PE 解决方案,实际上,PE 将内容适应逻辑从服务器端移到了客户端。这种方案存在两个问题:

    • 该技术的核心“渐进增强”的执行是需要一定时间的,所需时间的长短主要取决于设备的硬件性能,当然也可能与网速有关。举个例子,某些型号的黑莓手机理论上是支持 JavaScript 的,但实际上运行速度太慢以至于没有什么实际用途。
    • 和以往的技术一样,该技术中多个用例共用同一个基本的 HTML 文件,这在功能上似乎很受限。

      实际上,PE 技术的最佳应用是消除移动设备之间的差异,而不是作为一个综合的内容适应解决方案。

      4、服务器端内容适应技术

      服务器端内容适应技术早在 12 年前移动 Web 刚刚出现时就开始使用了。该技术依赖于设备检测库或依赖于安装在 Web 服务器(或远程 Web 服务)上的数据库,检测访问网站的设备并返回设备的性能信息。服务器端可以根据这些信息对页面进行微调,使之很好的适应设备的性能。由于服务端内容适应技术中包含了设备检测技术,所以有时也被称为“浏览器嗅探”。尽管也有不少反对者,但浏览器嗅探确实很稳定很精准,据统计,该解决方案检测设备的精准度达到了 99.5% 以上。

      该技术的有效性不言自明:它仍然是迄今为止最常用的内容适应技术,几乎所有重视移动用户体验的知名互联网公司都在使用该技术,包括 Google、Facebook、Amazon、Youtube、Ebay 以及 Yahoo。你很难找到一个没使用服务器端内容适应技术而又取得成功的移动网站。

      然而,服务器端内容适应技术也不是没有缺点。其缺点主要有以下两点:

    • 所用到的设备检测技术需要 Web 开发者不断进行更新,并且大多数设备检测技术都是商业化的。
    • 不能很好地使用浏览器的实时数据(例如,GPS 定位或者设备当前的方向)以帮助 Web 开发者更好地服务于用户。

      目前,WURFL 和 DeviceAtlas 是设备检测方面的领军产品,这两款产品都是商业化的。

      5、混合方法

      最后要介绍的技术是混合方法,该方法把服务器端内容适应技术与渐进增强技术结合在了一起。这种技术的工作原理是,当服务器收到客户端的页面请求时,服务器端首先向客户端提交一个基于服务器端内容适应原则的初始页面,然后由客户端的 JavaScript 来捕获设备的性能信息并返回给服务器端,服务器端根据所捕获的信息对发向该设备的后续页面进行微调,使页面更好地适应该设备。

      该技术首先是由 Bryan Rieger 和 Stephanie Rieger 发布的,他们在 yiibu.com 上很详细地记录了他们探索各种内容适应技术的曲折而漫长的道路。有趣的是,他们在尝试该技术之前几乎已经尝试过了所有上文已经介绍过的技术。

      他们使用了设备检测技术和浏览器属性“隐性数据库”,还使用了 modernizr-like JavaScript 脚本。在此不详述细节,建议大家看看他们的介绍:“适应:为什么响应式设计始于服务器端?”

      这种混合方法对用户端和服务器端来说都是最合适的方式——既可以利用高速的服务器端内容适应,又可以利用来源于设备自身的属性来调整页面。用户可以得到一个初始的适合当前设备的页面,又不会有什么性能开销,并且后续页面会根据此页面自动进行调整。但是,这种方法也存在两个缺点:

    • 实现起来相对复杂,这点 Riegers 两位也欣然承认。复杂性源于以下两个因素:复杂性源于以下两个因素:1)需要建立一个数据库以保存浏览器的属性;2)需要写 JavaScript 代码,以实现从浏览器中提取属性并存入数据库。
    • 首次访问服务器时,在用户得到有用信息之前,需要一个从浏览器到服务器之间的往返时间的延迟开销。在后续请求中可以使用 cookies 来消除该延迟。

      总结:

      所有可用的技术都介绍过了,接下来你会如何选择呢?当然,要视具体情况而定。笔者认为,任何以“单个 HTML 文档来满足所有设备”为前提的技术,本是就是有缺陷的,就如同:大多数的电视内容不是多次播放的电影,大多数的网站也不是纸质报纸的完美复制品。用户对某些类型的网站(例如博客)的交互需求是有限的,这样单一的一套交互方案是可以同时满足桌面与移动用户的。但是,在更一般的情况下,如果也让桌面与移动用户共用同一套方案,最好的结果是:功能严重受限; 最坏的结果是:根本无法运行。

      正如一位 CTO 所说:“客户端功能检测如何将一个航空公司的介绍性网站转变成为移动电子登机服务呢?渐进增强理念是以‘所有用户的需求都相同,只是界面布局不同’的假设为前提的。”

      如果航空公司所构建的移动网站和桌面网站采用相同的基本模板,这样真的可行吗?如果你真的想提供一流的移动用户体验,那么响应式设计和渐进增强将得不到很好的体现。你在 Alexa 网站上快速看一眼就会知道,想要提供优质的移动用户体验需要对 HTML 进行量身定做,而不是简单地调整像素和 div 元素。

      总之,如果你的网站只是运行在一些高端移动设备上,并且你不会特意去照顾某些移动 Web 用户,那么你可以采用响应式设计方案,或者 Mobile-First 响应式设计方案。如果你的网站元素不太复杂,那么这两种方案会很奏效。

      如果你想提供一个全新的移动用户体验设计或者你想满足所有的移动设备,那么你只能使用服务器端内容适应方案或混合方法。这也是所有知名互联网公司都采用这种方案的原因。

      上述观点都是基于对新媒体的信仰:移动 Web 是一种新媒体,绝不是旧媒体的缩略版本;是一种功能强大的媒体,而不是功能弱小的媒体;是一种全新的 Web,而不是合成的杂牌 Web。只有这样看待和使用该新媒体,它才能得到最合理、最成功的应用。

      参考文章:

    展开全文
  • 本文并没有具体描述如何去开发,只是介绍应该如何选择正确的方法。在开始之前我们有必要明确一下这次实践的目标。一般来说,想要构建网站的人可分为两类: 改造现有的网站,使其可以通过移动设备访问; 从头开始...

    译者:赵建光

      如果你要构建移动网站,那么本文可以帮你选择合适的技术方案。本文并没有具体描述如何去开发,只是介绍应该如何选择正确的方法。在开始之前我们有必要明确一下这次实践的目标。一般来说,想要构建网站的人可分为两大类:

    • 改造现有的网站,使其可以通过移动设备访问;
    • 从头开始构建全新的移动网站。​
    • 这两种目标是截然不同的,所以相应的技术方法也不同。前者的目标可以归结为:构建一个无缝缩放的网站。这样的网站可以在不同尺寸的屏幕上正常显示,而网站原有的结构、导航等则保持不变;后者的目标是构建一个全新的移动网站,以满足移动用户的需求(无论用户是否处于运动状态),这需要不同的视图设置和交互设计。

      为了区分现有的不同技术,本文使用了术语:“无缝缩放”和“内容自适应”。前者的意思是当现有的网站面向不同分辨率的屏幕时具有更大的灵活性和适应性;后者的意思是为移动用户量身定做。

    阅读全文

    更多java,java面试题,java学习  http://techfoxbbs.com

    展开全文
  • 主标题下全文的总目的是试图从现代物理、分子生物学与脑神经解剖等学科领域的最新实验事实 ,以及相应的前沿理论领域围绕着演化概念研究的展开所获得的已有理念与成就为基础 ,按照“由爆炸理论所描述的物理世界之...
  • 本专栏共分五大部分,第一部分是从零起步的基础内容,共 4 篇,帮助大家快速认识 Spring Boot,我会带领大家熟悉 Spring Boot 产生的背景和设计理念,同时也会讲解 Spring Boot 的环境搭建和项目介绍,最后以一个 ...

    本专栏共分五大部分,第一部分是从零起步的基础内容,共 4 篇,帮助大家快速认识 Spring Boot,我会带领大家熟悉 Spring Boot 产生的背景和设计理念,同时也会讲解 Spring Boot 的环境搭建和项目介绍,最后以一个 Hello World 为例,来测试一下环境的搭建以及熟悉开发的流程。本部分的重点内容是 Spring Boot 2.0 的新变化。下面我们就具体进入第一讲的内容。

    要了解 Spring Boot 产生的背景,我们就必须要先了解一下 Spring 的发展史,不仅因为 Spring Boot 来源于 Spring 体系,而且 Spring Boot 的诞生和 Spring 框架的发展息息相关。

    Spring 的发展史

    时间回到 2002 年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。

    他为了证明自己的想法是正确的,在 2002 年 10 月写了一本书《Expert One-on-One J2EE》,介绍了当时 Java 企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。

    在书中,他展示了如何在不使用 EJB 的情况下构建高质量、可扩展的在线座位预留系统。为了构建应用程序,他编写了超过 30,000 行的基础结构代码,项目中的根包命名为 com.interface21,所以人们最初称这套开源框架为 interface21,这就是 Spring 的前身。

    他是谁呢?他就是大名鼎鼎的 Rod Johnson(下图),Rod Johnson 在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位,更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位。现在 Rod Johnson 已经离开了 Spring,成为了一个天使投资人,同时也是多个公司的董事,早已走上人生巅峰。

    在这本书发布后,一对一的 J2EE 设计和开发一炮而红。这本书免费提供的大部分基础架构代码都是高度可重用的。2003 年 Rod Johnson 和同伴在此框架的基础上开发了一个全新的框架命名为 Spring,据 Rod Johnson 介绍 Spring 是传统 J2EE 新的开始,随后 Spring 发展进入快车道。

    • 2004 年 03 月,1.0 版发布。
    • 2006 年 10 月,2.0 版发布。
    • 2007 年 11 月,更名为 SpringSource,同时发布了 Spring 2.5。
    • 2009 年 12 月,Spring 3.0 发布。
    • 2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0。
    • 2017 年 09 月,Spring 5.0 发布。

    Spring Boot 的诞生

    多年以来,Spring 平台饱受非议的一点就是大量的 XML 配置以及复杂的依赖管理。

    随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring 的边界不断进行扩充,到了后来 Spring 几乎可以做任何事情,市面上主流的开源软件、中间件都有 Spring 对应组件支持,人们在享用 Spring 的便利之后,也遇到了一些问题。

    Spring 每集成一个开源软件,就需要增加一些基础配置,随着开发项目的逐渐庞大,往往需要集成很多开源软件。后期使用 Spring 开发大型项目需要引入很多配置文件,导致配置工作难以理解且出错率高,到了后来人们甚至称 Spring 为配置地狱。

    在 2013 年的 SpringOne 2GX 会议上,Pivotal 的 CTO Adrian Colyer 回应了这些批评,并且特别提到该平台将来的目标之一就是实现免 XML 配置的开发体验。Spring Boot 所实现的功能超出了这个任务的描述,开发人员不仅不再需要编写 XML,而且在一些场景中甚至不需要编写繁琐的 import 语句。

    2013 年,微服务的概念也慢慢兴起,快速开发微小独立的应用变得更为急迫,Spring 刚好处在这样一个交叉点上,于 2013 年初启动了 Spring Boot 项目的研发。2014 年,Spring Boot 伴随着 Spring 4.0 诞生发布了第一个正式版本。

    Spring Boot 并不是要成为 Spring 平台里面众多“Foundation”层项目的替代者。Spring Boot 的目标不在于为已解决的问题域提供新的解决方案,而是为平台带来另一种开发体验,从而简化对这些已有技术的使用。对于已经熟悉 Spring 生态系统的开发人员来说,Spring Boot 是一个很理想的选择;对于采用 Spring 技术的新人来说,Spring Boot 提供一种更简洁的方式来使用这些技术。

    Spring Boot 开发团队

    我们经常会看到在介绍 Spring Boot 的时候有这么一句:Spring Boot 是由 Pivotal 团队提供的全新框架。由此我们得知 Spring Boot 是由 Pivotal 团队所研发,那么 Pivotal 团队到底是一个什么样的团队呢?其实这里的 Pivotal 团队是指 Pivotal 公司。

    Pivotal 公司:致力于“改变世界构造软件的方式(We are transforming how the world builds software)”,提供云原生应用开发 PaaS 平台及服务,帮助企业客户采用敏捷软件开发方法论,从而提高软件开发人员工作效率、减少运维成本,实现数字化转型、IT 创新,并最终实现业务创新。

    Pivotal 公司可谓是大牛云集,公司的开源产品有:Spring 以及 Spring 衍生产品、Web 服务器 Tomcat、缓存中间件 Redis、消息中间件 RabbitMQ、平台即服务的 Cloud Foundry、Greenplum 数据引擎、还有大名鼎鼎的 GemFire(12306 系统解决方案组件之一)。这些著名开源产品背后的开发者都在 Pivotal 公司,其研发团队汇集了全球的一流开发者,Spring Boot 为什么如此优秀,或许在这里可以找到一些答案。

    回顾 Pivotal 公司的发展历史,简直就是一场商业并购大片:

    • 1989 年,罗伯·米创立 Pivotal Labs 公司,它的主营业务是帮助客户开发软件,曾给谷歌、Twitter 公司做技术支持;
    • 2003 年,EMC 收购了 VMware;
    • 2009 年,VMware 收购了 Spring 公司;
    • 2012 年,EMC 以现金方式收购了 Pivotal Labs 公司;
    • 2013 年,EMC 和 VMware 分拆出其 Cloud Foundry、Pivotal Labs、Greenplum 等云计算、大数据资源,GE 投资 1.05 亿美元,成立新公司 Pivotal;
    • 2015 年,EMC 又被 DELL 所收购。

    Pivotal 公司成立之后,于 2014 年发布了 Spring Boot,2015 年发布了 Spring Cloud,2018 年 Pivotal 公司在纽约上市。我们可以通过一张图来了解 Pivotal 公司的发展史。

    《精通 Spring Boot 42 讲》

    Spring Boot 的核心:约定优于配置

    那么什么是约定优于配置呢?

    约定优于配置(Convention Over Configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量、获得简单的好处,而又不失灵活性。

    本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时,例如将该表命名为“user_info”,才需写有关这个名字的配置。

    我们可以按照这个思路来设想,我们约定 Controller 层就是 Web 请求层可以省略 MVC 的配置;我们约定在 Service 结尾的类自动注入事务,就可以省略了 Spring 的切面事务配置。

    在 Spring 体系中,Spring Boot JPA 就是约定优于配置最佳实现之一,不需要关注表结构,我们约定类名即是表名,属性名即是表的字段,String 对应 varchar,long 对应 bigint,只有需要一些特殊要求的属性,我们再单独进行配置,按照这个约定我们可以将以前的工作大大简化。

    Spring Boot 体系将约定优于配置的思想展现得淋漓尽致,小到配置文件、中间件的默认配置,大到内置容器、生态中的各种 Starters 无不遵循此设计规则。Spring Boot 鼓励各软件组织方创建自己的 Starter,创建 Starter 的核心组件之一就是 autoconfigure 模块,也是 Starter 的核心功能,在启动的时候进行自动装配,属性默认化配置。

    可以说正是因为 Spring Boot 简化的配置和众多的 Starters 才让 Spring Boot 变得简单、易用、快速上手,也可以说正是约定优于配置的思想彻底落地才让 Spring Boot 走向辉煌。Spring Boot 约定优于配置的思想让 Spring Boot 项目非常容易上手,让编程变得更简单,其实编程本该很简单,简单才是编程的美。

    Starters

    Spring Boot Starters 基于约定优于配置的理念来设计,Spring Boot Starter 中有两个核心组件:自动配置代码和提供自动配置模块及其它有用的依赖。也就意味着当我们项目中引入某个 Starter,即拥有了此软件的默认使用能力,除非我们需要特定的配置,一般情况下我仅需要少量的配置或者不配置即可使用组件对应的功能。

    Spring Boot 由众多 Starter 组成,随着版本的推移 Starter 家族成员也与日俱增。在传统 Maven 项目中通常将一些层、组件拆分为模块来管理,以便相互依赖复用,在 Spring Boot 项目中我们则可以创建自定义 Spring Boot Starter 来达成该目的。

    Spring Boot 拥有强大融合社区开源软件的能力,在没有使用 Spring Boot 之前,我们需要按照每个开源软件的特性,将对应的组件包集成到我们的开发项目中,因为每个组件的设计理念和开发团队都不一致,因此会有很多不同的调用风格在我们的项目中。

    Spring Boot 整合了主流的开源软件形成了一系列的 Starter,让我们有了一致的编程体验来集成各种软件,Spring Boot 在集成的时候做了大量的优化,让我们在集成的时候往往只需要很少的配置和代码就可以完成。可以说各种 Starters 就是 Spring Boot 最大的优势之一。

    以下为常用的 Spring Boot Starter 列表。

    名称 描述 Pom
    spring-boot-starter 核心 Starter,包括自动配置支持,日志和 YAML Pom
    spring-boot-starter-activemq 用于使用 Apache ActiveMQ 实现 JMS 消息 Pom
    spring-boot-starter-amqp 用于使用 Spring AMQP 和 Rabbit MQ Pom
    spring-boot-starter-cache 用于使用 Spring 框架的缓存支持 Pom
    spring-boot-starter-data-elasticsearch 用于使用 ElasticSearch 搜索,分析引擎和 Spring Data ElasticSearch Pom
    spring-boot-starter-data-jpa 用于使用 Hibernate 实现 Spring Data JPA Pom
    spring-boot-starter-data-mongodb 用于使用基于文档的数据库 MongoDB 和 Spring Data MongoDB Pom
    spring-boot-starter-data-redis 用于使用 Spring Data Redis 和 Jedis 客户端操作键—值数据存储 Redis Pom
    spring-boot-starter-jta-atomikos 用于使用 Atomikos 实现 JTA 事务 Pom
    sring-boot-starter-mail 用于使用 Java Mail 和 Spring 框架 Email 发送支持 Pom
    spring-boot-starter-quartz 用于定时任务 Quartz 的支持 Pom
    spring-boot-starter-security 对 Spring Security 的支持 Pom
    spring-boot-starter-test 用于测试 Spring Boot 应用,支持常用测试类库,包括 JUnit、Hamcrest 和 Mockito Pom
    spring-boot-starter-thymeleaf 用于使用 Thymeleaf 模板引擎构建 MVC Web 应用 Pom
    spring-boot-starter-validation 用于使用 Hibernate Validator 实现 Java Bean 校验 Pom
    spring-boot-starter-web 用于使用 Spring MVC 构建 Web 应用,包括 RESTful。Tomcat 是默认的内嵌容器 Pom
    spring-boot-starter-websocket 用于使用 Spring 框架的 WebSocket 支持构建 WebSocket 应用 Pom

    这里只节选了我们最常使用的 Starter,完整的 Starter 参考这里:Spring Boot application starters

    因为 Spring Boot 足够的强大,很多第三方社区都进行了主动的集成。比如:MyBatis、RabbitMQ(高级用法)等,第三方社区支持的列表,可以在这里查看 Community Contributions,可以看到社区贡献的其他 Starters 列表。

    看完这些 Starters 会不会瞬间觉得 Spring Boot 很强大?几乎我们涉及的开源软件 Spring Boot 都做了支持,在 Spring Boot 环境下使用这些软件,只需要引入对应的 Starter 包即可。

    Spring、Spring Boot 和 Spring Cloud 的关系

    Spring 最初核心的两大核心功能 Spring IoC 和 Spring Aop 成就了 Spring,Spring 在这两大核心功能上不断地发展,才有了 Spring 事务、Spring MVC 等一系列伟大的产品,最终成就了 Spring 帝国,到了后期 Spring 几乎可以解决企业开发中的所有问题。

    Spring Boot 是在强大的 Spring 帝国生态基础上面发展而来,发明 Spring Boot 不是为了取代 Spring,是为了让人们更容易的使用 Spring。所以说没有 Spring 强大的功能和生态,就不会有后期 Spring Boot 的火热,Spring Boot 使用约定优于配置的理念,重新重构了 Spring 的使用,让 Spring 后续的发展更有生命力。

    Spring 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装并屏蔽掉复杂的配置和实现原理,最终给开发者提供了一套简单易懂、易部署、易维护的分布式系统开发工具包。

    Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发。服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。

    Spring Cloud 是为了解决微服务架构中服务治理而提供的具备一系列功能的开发框架,并且 Spring Cloud 是完全基于 Spring Boot 而开发,Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。

    综上我们可以这样来理解,正是由于 Spring IoC 和 Spring Aop 两个强大的功能才有了 Spring,Spring 生态不断的发展才有了 Spring Boot,使用 Spring Boot 让 Spring 更易用更有生命力,Spring Cloud 是基于 Spring Boot 开发的一套微服务架构下的服务治理方案。

    以下为它们之间的关系。

    Spring Ioc/Aop > Spring > Spring Boot > Spring Cloud

    总结

    Spring Boot 诞生一方面是因为 Spring 自身发展所遇到的问题,另一方面在微服务思想诞生之际,急需要一款快速开发工具来实现微服务技术落地,在这样的背景下诞生了 Spring Boot。

    Spring Boot 整体的设计思想是:约定优于配置。依赖此设计思路,Spring Boot 进行了大刀阔斧的改革,让开发、测试、部署更为便捷。众多的 Starters 成就了 Spring Boot 的发展,让使用 Spring Boot 开发项目变得更加简单。

    展开全文
  • 小学年级家长会PPT内容: 欢迎家长,请家长们按到会先后签到 谢谢! 班级理念: •我班的核心理念 和融教育 自主发展 成人成才 我班的愿景:办学生喜欢的班级,办家长满意的班级,办教师喜欢的班级。 ...
  • 网站中央是内容,分别包含五大板块,每个版块由不同的div块组成,右上角是主题,下面是详情的文字介绍,右边配上相应的图片,增加网站的观赏性,吸引性。港珠澳大桥美的恰恰是其在不同场景下的景色图。网站底部分别...
  • 目标一模糊,就很难落实到具体的实施工作中,不顾重点,胡子眉毛一把抓,导致投资过、收效甚微、实施乏力的状况。明确的实施目标对实施ERP项目而言,就好像大海彼岸的港湾,如果没有具体、明确的航行目标和方向,...
  • 《我的大学职业规划》PowerPoint内容简介: 我的大学职业规划 学院:环境与土木建筑学院 专业:旅游管理 姓名: 规划期限:年 起止时间: 2006年9月至2011年7月 年龄跨度: 20岁至25岁 阶段目标:顺利毕业;成为...
  • C++_Primer_Plus中文第版  C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言, 是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序...
  • C++_Primer_Plus中文第版  C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言, 是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序...
  • C++_Primer_Plus中文第版  C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言, 是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序...
  • C++_Primer_Plus中文第版  C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言, 是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序...
  • 精通 Spring Boot 42 讲

    2019-04-20 09:39:51
    《精通 Spring Boot 42 讲》共分五大部分,第一部分是从零起步的基础内容,共4课,帮助大家快速认识 Spring Boot ,我会带领大家熟悉 Spring Boot 产生的背景和设计理念,同时也会讲解 Spring Boot 的环境搭建和项目...
  • 实例部分采用Linux操作系统内核、UNIX系统V的内核,具体五大任务,使同学在学习理论的同时对操作系统中的每一部分有具体认识;第三部分,针对操作系统的设计理念、安全机制及新型的、与操作系统相关的软硬件技术的...
  • 二、活动主题 绿色校园和谐汕 三、主办单位 汕头大学环境委员会 共青团汕头大学委员会 四、承办单位 汕头大学工学院团委 、活动时间 xx年11月17日至xx年12月06日 六、活动地点 汕校园内外 七、活动对象 汕头...
  • 作为十八届五中全会提出的"五大发展"理念的重要内容之一,绿色发展将有利于进一步促进我国经济增长、优化能源结构、保护生态环境和维护社会平衡发展。针对新常态下我国在绿色转型中遇到的如相关法律体系不完善、生态...
  • 业内观察人士们就企业工作负载最佳应用案例以及IT从业人士如何在市场上未雨绸缪规划变更等内容具体讨论了融合系统的前景。 在佛罗里达州奥兰多市,融合的理念是非常吸引人的:它将服务器、存储、网络和软件整合为...

    业内观察人士们就企业工作负载最佳应用案例以及IT从业人士如何在市场上未雨绸缪规划变更等内容,具体讨论了融合系统的前景。

    在佛罗里达州奥兰多市,融合的理念是非常吸引人的:它将服务器、存储、网络和软件整合为单一的集成产品。如果能够妥善实施,融合平台能够有效解决部分或全部典型异构数据中心所面临的集成、互操作性、管理和性能的挑战。

    最近的五年里,在大量供应商的努力下,融合基础设施融合已经进化和发展成为更强大的超融合系统。但是当下有哪些亮点?技术的走向如何?谁将成为关键的玩家?为了准确解答这些问题,Gartner的研究副总裁Philip Dawson在Gartner Symposium/ITxpo栏目中组织了一场Magic Quadrant会话。

    让工作负载决定系统类型

    Dawson提示说,尽管融合的目的是将各个子系统整合成单一产品,但当今可以提供的服务几乎比比皆是,超融合产品不断涌现来满足企业工作负载的不同类型的需求。

    Gartner Magic Quadrant供应商: 截止2016年秋天的融合供应商列表

    行业领导者

    有远见的挑战者

    行业挑战者

    初入行业

    Cisco

    Dell

    Fujitsu

    Atlantis Computing

    EMC

    Pivot3

    Hitachi

    Atos

    HPE

    SGI

    (正在被HPE收购)

    Teradata

    Huawei

    NetApp

     

     

    Lenovo

    Nutanix

    Riverbed

    Oracle

    Scale Computing

    SimpliVity

    “我认为从应用程序的角度,集成解决方案是有意义的,就像传统的单片应用程序并不适合你典型的私有云,但仍然需要一个可扩展的平台实现增长”,6connect公司的联合创始人及首席运营官Pete Sclafani如是说道,该公司位于旧金山,提供网络自动化服务。“在我们实验室的某些测试中,我们应用CI(Converged Infrastructure,融合基础设施)留出更多的自定义选项,能让我们根据应用程序所需的增长领域来调整环境”。

    举例来说,Lenovo融合系统推出的融合集成基础设施系统产品,与Oracle和Teradata的产品一样,将服务器、存储和网络硬件整合到一起提供共享基础设施。此种类型的融合系统既适用于常规使用、在线交易处理/内存控制(OLTP/MC)工作负载,也是典型服务器虚拟化以及数据中心整理项目的理想选择。

    融合集成参考架构有力推动软件栈的定义功能以及面向更加具体工作负载的功能的应用。案例之一即是NetApp的FlexPod产品,其配置和工作负载被认证为Cisco Validated Designs,包括FlexPod Datacenter、FlexPod Express和FlexPod Select产品。这些融合系统也是常规使用、在线交易处理/内存控制(OLTP/MC)工作负载以及数据中心整理项目的理想选择。

    超融合基础设施系统(Hyper-Converged Infrastructure System,HCIS)参考架构将服务器、存储和网络硬件紧密耦合——通常采取从阵列推送存储到服务器的方式,并且通过软件内包含的管理栈动态管理向外扩展的运营活动,能够进行备份、恢复、去重删除以及压缩等处理。

    Nutanix的产品是采用了HCIS的方法,其虚拟桌面基础设施和分析工作负载的产品评价很不错。HCIS系统也可以被整合成类设备产品,如Riverbed SteelFusion超融合边缘基础设施,允许部署到远程办公室/分支机构(Remote Office/Branch Office,Robo)或其他边缘位置。

    Dawson注意到其他的基于软件的HCIS带入系统的实施,尽管相对其他类型的产品,这些产品相对不那么成熟,并不能很好地应对所有类型的工作负载。

    “我喜欢集成解决方案的概念”,Sclafani说,“但我仍然欣赏软件驱动解决方案所能够提供的灵活性——使得硬件不再成为一个区分点”。

    融合系统的前景展望

    Dawson说他估计并购会影响到融合基础设施(的发展)。“戴尔和EMC明年会怎样?”,他说,因为注意到像VCE这类的产品未来可能会受到不利影响。HP企业级部门也正在并购Silicon Graphics International公司。这些并购将导致供应商版图和排位的变化,可能会对当前用户造成不利的影响。

    “我认为软件定义存储(Software-Defined Storage,SDS)的发展曾是戴尔和EMC并购背后的驱动因素,因为两家公司都看到了从离散存储系统到基于服务器的存储集群的过渡这一前景”,位于科罗拉多州博尔德市的Evaluator Group集团公司的高级分析师Eric Slack说,“我认为VxRack产品正式此类技术过渡的一个很好的例证”。

    融合系统可能在DevOps项目中扮演更加重要的角色,融合提供的灵活性和可扩展性支持了快速开发和开发模式的动态特性——特别是超融合以及ROBO产品的提供。“ROBO应用案例是基于产品的应用案例”,Dawson说。

    越来越多的供应商会在未来一年进入市场。Dawson说他认为纯粹的基于软件的HCIS产品是企业软件定义容量的重点。同时,Dawson表示他预计更多的数据中心供应商和参考架构将专注于软件层面——而初创公司将围绕着争夺市场份额进行合作和竞争。

    系统供应商可能致力于开发下一代超融合系统,使更模块化和基于结构的架构将成为产品的显著特性。Dawson还说他预见在软件定义的基础设施上将运行在无服务器的计算平台——这在本质上和云端的HCI是一致的。

    其他分析人士也同意该观点。“SDS是HCI的基础,更是实现其自身优势的基础”,Slack说。“具体而言,优势是商品硬件的经济性,多个硬件配置选项的灵活性,加密设备的简单性,集群架构的可扩展性等”。

    CI不断发展

    当下,超融合的概念在IT术语中的印象已是根深蒂固。需要强调是该技术还在进化以及完善中,以满足各种各样的需求。但不论你支持哪一种方法——CI、HCIS亦或者置于两者之间——潜在目标的业务敏捷性和可扩展性总是相同的。随着产品的激增和发展,用户可以采用收敛来适应企业应用程序的需要,满足业务需求。

    本文转自d1net(转载)

    展开全文
  • “魅力青春 激情飞跃”广播体操大赛策划书 为了积极响应国家《全民健身纲要》的健康运动精神号召,贯彻“每天运动一小时,健康工作十年,幸福生活一辈子”的大众健身理念,提升当代大学生的人文素质,心理素质和...
  • 体育文化节活动策划书 一、活动目的 塑造人文体育风貌... 六、活动内容 (一)开幕式及表演 1、开幕式(20分钟) 2、节目表演(40分钟):6——8个节目(具体待定) (二)民族体育文化板块 1、武术表演 2、?..
  • ~ 三、活动时间:xx年8月14日 10:00~不定 四、活动集合地点:上海杜莎夫人蜡像馆(上海市南京西路2-68号新世界商厦10楼) 、活动人员:某某大学某某专业08届11班有效成员 六、活动内容: 1)12日、13日发布通知...
  • 护士节活动策划方案范例推荐 一、活动主题 转变护理理念,推进优质护理 二、活动内容 (一)开展以“如何当好一名护士长”为主题的护士长管理座谈会; (二)开展以“用阳光的心态面对工作”为主题的低年资护士座谈会...
  • 核心Java程序设计技术

    2021-04-16 12:20:13
    当前,我已经完成本书第一卷前章和第六章部分内容的录制,现在共有105讲(52.5小时)的视频,幻灯片达到1,222页。其中包括212个程序示例,共5,130行代码。在完成本书的全部录制之后,本课程将成为国内全网范围内...

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

五大理念具体内容