政策变化:Android Chrome也将依赖谷歌的服务框架

要知道,许多 Google 旗下的 App 以及市面上的一些游戏都需要依赖 Google 服务框架。现在有消息传出,即日起,Chrome for Android 也必须依赖 Google 服务框架才能正常运行。

这项变化可能对于 Google 是好事,但对于我朝那些没装 Google 服务框架的 Chrome for Android 用户来说,这又是一次沉重的打击。不过,有政策就有对策,花点心思把 Google 服务框架装上就好了。笔者也扒出一篇简单的入门教程——《Android 入门教程:Google 服务框架的安装》,以助此次变故的受难者顺利安装上 Google 服务框架。

15用于Web开发的Angular框架和库

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。

我们将讨论继续占据主导地位的顶级 Angular 框架,以及一些较小但有前途的后起之秀。

随着我们接近 2023 年,Web 开发变得越来越复杂。新框架不断涌现,老框架也在更新以满足新的需求。开发人员可以使用这么多不同的选项,确定哪个框架适合任何给定项目可能具有挑战性。

在本文中,我们将讨论继续占据主导地位的前 15 个 Angular 框架以及一些规模较小但很有前途的后起之秀。

这些框架中的每一个都有自己的优点和缺点。根据您的特定需求和项目要求,有些可能比其他更有用。

但是,您现在做出的选择将对您未来的项目和作为软件工程师的职业轨迹产生持久的影响。这就是选择正确的 Angular 框架的关键所在。

用于 Web 应用开发的 15 大 Angular 框架和库

查看一些用于 Web 应用程序开发的最流行的 Angular 框架:

1.Angular Material

Angular Material 是 Angular 团队认可的 CSS 框架,是最好的 Angular UI 框架之一。它是一个 UI 组件库,具有高质量、可重用的模板、管理面板和组件。

Angular Material 建立在 Google Material Design 的基础上,包括 30 多个用于 AngularJS 应用程序的 UI 组件,包括输入、日期选择器、数据标签和卡片。

由于 Angular Material 提供了一个包含排版和类似组件的丰富 CSS 库,因此它在全球开发人员中非常受欢迎。

使用 Angular Material,Web 开发人员可以通过确保遵循当代设计实践和原则(例如设备独立性、浏览器可移植性和优雅降级)来创建有吸引力、引人入胜、快速且响应迅速的网站。

强调

  • 使用谷歌材料设计。
  • 可重复使用的模板。
  • 包括 UI 组件,如输入、日期选择器、卡片和数据标签。
  • 丰富的 CSS 库。
  • 浏览器可移植性。

2.LumX _

LumX 是一个用于前端开发的 Angular 框架,它使用 Google Material Design 技术来创建具有视觉吸引力和用户友好的界面。这个 SaaS 框架可以被认为是 Angular 的最佳 CSS 框架。它可用于自定义 Web 应用程序的设计。

此外,它使用 Gulp 优化了您的 JS 文件和 SaaS,从而提高了应用程序的性能。jQuery 也可以与 LumX 一起使用,无需任何插件。

强调

  • 使用谷歌材料设计。
  • 支持 jQuery。
  • 使用 Gulp 优化 JS 文件和 SaaS。

3. NGX-Bootstrap

NGX-Bootstrap 是 Angular 的一个开源库,它提供了许多有用的功能,例如按钮、警报、分页、选项卡、进度条、弹出框等。这些组件使您的网页设计工作更轻松。它们还可以帮助您根据需要定制流程。

此外,例如,模态对话框、下拉菜单和工具提示都包含在此库中。这些元素适用于键盘、触摸屏和鼠标用户。

开发人员可以在构建 Web 应用程序时选择他们喜欢的选项。尽管它们不必使用单独的 JS 组件作为拖放功能,但 Bootstrap 中的 CSS 和 HTML 组件可用于创建 Web 应用程序。NGX-Bootstrap 正在不断改进,并且始终有新版本可用。

所以,去吧。

强调

  • 提供按钮、警报、分页、进度条、选项卡、弹出框等组件。
  • 支持拖放功能、CSS 和 HTML。

4. Angular UI Bootstrap

Angular UI Bootstrap 是一个以 Bootstrap 为基础的 AngularJS 框架。因此,Angular UI Bootstrap 是最好的软件开发前端框架之一。

Angular UI Bootstrap 是那些想要将 Bootstrap 与 Angular 一起使用的人的答案。您不能在 Angular 项目中直接使用 Bootstrap,因为它依赖于 jQuery,这可能会干扰 Angular 的特定功能。

从好的方面来说,这个框架是在基于 CSS 和 Bootstrap HTML 元素的纯 AngularJS 指令上创建的,因此它不需要 jQuery,并且可以用于将 Bootstrap 组件集成到 Angular 作业中。

强调

  • 消除了对 jQuery 的需求。
  • 在纯 AngularJS 指令上创建。
  • 使用 Bootstrap 作为其基础。

5.流畅的用户界面

Suave UI 帮助开发人员在 Angular 上创建 Web UI 界面。Suave UI 最棒的地方在于其广泛的指令、CSS 定义(如网格、分层元素和彩色按钮)和服务,允许开发人员试验各种 UI 组件。

它还将 UI 组件存储在捆绑文件中,无需单独包含它们。开发人员不必单独包含这些捆绑的组件库,因为它们已经包含在内。因此,他们只需一个浏览器命令即可完成任务。

强调

  • 提供网格、分层元素和彩色按钮等组件。
  • 将 UI 组件存储在捆绑文件中。

6.Ionic

Ionic 是在多个平台上运行的最著名的 Angular 框架之一。因为它是开源的,Ionic 是一个混合移动应用程序开发框架,它使用 CSS、HTML5 和 SASS 等 Web 技术。

因此,Ionic 提供了一个基于 Cordova 和 AngularJS 的前端 SDK,它支持生产跨多个平台(包括 iOS 和 Android)工作的混合移动应用程序。

Ionic 框架包含大量 Angular 组件和指令,使得生成 AngularJS 移动应用程序变得简单。

强调

  • 开源
  • 在多个平台上运行。
  • 使用 CSS、HTML5 和 SASS 等 Web 技术。
  • 提供基于 Cordova 和 AngularJS 的前端 SDK。
  • 包括大量的 Angular 组件和指令。

7. Angular UI Grid

Angular UI Grid 为数据库驱动的 Web 应用程序开发过程提供了全新的视角。框架网格提供了多种功能,包括可视化、e2e 测试、过滤、分组、用户交互、排序等等。

除了原生 AngularJS 功能之外,该框架还允许在没有 jQuery 的情况下使用 AngularJS。该插件允许您仅选择所需的功能,以最大限度地减少构建网站所需的时间和精力。

使用这个库的预定义组件自定义您的网站外观是一件轻而易举的事,因为它允许您将 CSS 文件转换为使用 Angular UI Gird 的预配置组件。使用此框架,您可以使您的应用程序更具吸引力,这将有助于您更好地定位用户的需求并吸引更多的访问者返回。

强调

  • 提供原生 AngularJS 功能。
  • 允许您转换 CSS 文件以使用预配置的组件。
  • 在没有 jQuery 的情况下运行。

8. Angular UI Tree

Angular UI Tree 是开发人员中流行的 Angular UI 框架,用于对嵌套列表进行排序。Angular UI Tree 不需要 jQuery,让您可以轻松地更改树中的项目。此外,Angular UI Tree 利用了 AngularJS 的原生作用域并阻止组件中的子节点,以确保数据绑定正常工作。

尽管仅此框架不足以构建 Web 应用程序的整个前端,但您可以将其与其他 Angular 框架结合使用以加快 Web 应用程序 UI 开发。

强调

  • 用于对嵌套列表进行排序。
  • 不需要 jQuery。
  • 利用 AngularJS 的原生作用域并阻止子节点。

9.Radian

Radian 是一个由 Angular 主导的 JS 库,是一个简单的开源库,使开发人员能够在 HTML 文档中制作嵌入式绘图。

使用 Radian,开发人员不必创建 JavaScript;相反,他们可以使用 HTML 来表示绘图。此外,Radian 在绑定 JavaScript 变量和 HTML 元素方面起着至关重要的作用。这个 JS 库主要用于处理贝叶斯统计的平台。

Radian 提供了在 HTML 组件和 JavaScript 变量之间实现双向数据绑定的技术,除了 D3.js 用于允许创建 SVG 组件的图形生成。此外,这些组件可以直接嵌入到页面中,从而可以从任何浏览器访问它们。

Radian 的另一个重要组成部分是它提供了全面的文档,并以自由许可证为后盾,这使得开始使用这个特定的 Angular 小部件框架变得轻而易举。

最后,这个开源库是多功能的,您可以使用它来完成与 Web 开发项目相关的不同任务。

强调

  • 开源 Angular 库。
  • 在 HTML 组件和 JavaScript 变量之间启用双向数据绑定。
  • 允许创建 SVG 组件。
  • 提供以自由许可证为后盾的综合文档。

10.Mobile Angular UI

Mobile Angular UI 是一个开源 JS 库,主要用于创建基于 Angular JS 的跨平台混合移动应用程序。

在编写这些应用程序时,您可以使用 Angular 文件上传器将文件存储在云中,用于图像和文件。这使得开发人员在他们想要在开发阶段检索这些上传的文件时可以轻松地访问这些文件。

您还可以使用此库创建显示页眉、页脚或菜单栏的导航栏。为了加快处理速度,为页脚和页眉定位了一个可滚动的页眉和页脚。

此外,在您上传图片之前,您可以调整它们的大小以适合您的应用程序的框架。

强调

  • 图像和文件的专用云存储。
  • 帮助创建显示页眉、页脚或菜单栏的导航栏。

11.Supersonic

Supersonic 是一个不可知论的 AngularJS UI 框架,包括 JavaScript、基于 Web 的组件和 CSS,可以与任何流行的框架一起使用。它被称为不可知论框架。

它简化了 HTML 应用程序并与 AngularJS 紧密结合。超音速与 AppGyver 合作。然而,需要明确的是,大多数 API 不会在移动网站或原版 Cordova 应用程序上运行。

使用 Supersonic,开发人员可以转录 HTML 和 CSS 组件,或者他们可以利用将 HTML 映射到本机 API 和本机干扰的组件轻松。

强调

  • 帮助转录 HTML 和 CSS 组件。
  • 可以与任何流行的框架一起使用。

12. Quantum UI

Quantum UI 拥有超过 60 个基于 AngularJS 的前端开发组件,通过提供 rest-service 和服务器友好的 UI 元素来简化 Web 开发过程。它建立在 MVVM 架构上,并包含与 Bootstrap 兼容的 CSS 结构。

这个 Angular 测试框架由 GitHub 维护和托管。您不必为 Quantum UI 编写 JavaScript;您可以仅使用属性和属性对其进行配置。它的大部分元素都是免费和开源的,而其他元素必须付费。

强调

  • 提供休息服务和服务器友好的 UI 元素。
  • 基于 MVVM 架构构建。
  • 由 GitHub 维护和托管。

13.Angular basic

Angular 是最流行的前端框架之一。它是一个修改和更新的基础,它依赖于 CSS 元素和基础标记来创建指令。

使用这个框架的最大优势是它允许创建语义更丰富的网站。示例包括交换、下拉、警报、手风琴、进程栏和触发器。

强调

  • 依靠 CSS 元素和基础标记来创建指令。
  • 允许创建语义更丰富的网站。
  • 组件包括交换、下拉、警报、手风琴、进程栏和触发器。

14.PrimeNG_ _

使用这个改变游戏规则的 JavaScript Angular 框架的声明式 UI 样式创建复杂应用程序的前端轻而易举。PrimeNG 拥有 70 多个 UI 组件可供选择,为您提供所需的一切。同样,如果您正在处理 Angular 项目,Angular 拥有您需要的一切,从原生主题到预构建的小部件。

关于前端开发,PrimeNG 是目前最好的框架之一。它允许您在 Web 应用程序中包含许多前端功能,例如图表、表单输入、覆盖、菜单等。此外,它的 MIT 许可证允许您免费和开源地使用 MIT 开源小部件。

强调

  • 附带 MIT 许可证。
  • 提供 70 多个 UI 组件,包括主题和预构建的小部件。
  • 促进前端功能,例如图表、表单输入、覆盖、菜单等。

15.Vue.js _

Vue.JS 是一个开源 Angular 框架,允许用户构建 Web 应用程序 UI 和单页应用程序。路由、状态管理和构建工具功能都是 Vue.JS 最突出的功能列表的一部分。它的功能还包括用于声明式渲染和组件组合的适应性架构。

自 2014 年 2 月首次发布以来,Vue 已在许多领域得到广泛应用。其之前的版本已升级,该应用程序用于开发大量 Web 应用程序。使用这个框架很简单,您可以自定义它以适合您的 Web 开发项目。

强调

  • 提供路由、状态管理和构建工具功能。
  • 用于声明性渲染的适应性架构。
  • 可定制用于 Web 开发。

您应该使用哪些 Angular 框架?

本文中讨论的 Angular UI 框架是我们最喜欢的动态 Web 应用程序开发框架,因为它们具有灵活性和特性。由于每个 Angular 框架都有自己的优点和缺点,您应该根据您的项目和 Web 应用程序 UI 需求选择一个或多个。

Internet实验平台设计:流量框架

本篇开启一个新的系列:互联网实验平台设计,结合过往工作中实验平台涉及的一些原理、实践、经验展开,也是对过往工作的梳理,希望对从业同学有帮助。

Google重叠实验框架

Google在2010年发表的论文《Overlapping Experiment Infrastructure more better faster Experimentation》提供了经典的流量管理框架包括了对实验流量、实验参数的管理。

Google重叠实验框架

通过重叠实验框架可以实现:

  1. 更多,水平正交的实验层上可以创建实验,提升了实验的容量,通过Hash算法保证流量充分打散,避免了不同实验之间的影响
  2. 更好,通过参数管理支持更安全的实验(参数使用的互斥、推全等);通过流量提供的定向能力可以实现更好的流量圈选;通过不同实验类型(比如普通实验、定向实验、垂直实验/holdout实验、关联实验/父子实验、组合实验等)的设置实现实验之间流量的互斥、正交;提供流量&关键指标的监控能力及时纠正错误的流量使用;提供流量、实验周期的建议;提供实验日志支持指标计算
  3. 更快,实验框架和工程框架解耦合(两个框架通过业务框架链接),提供了一种运行时的配置注入,实验配置可以通过layer、domain、parameter等不同粒度获取,这种情况下实验的开发成本较小,并提供了对不同工程框架的兼容; 提供实验分析能力支持快速的实验分析和结论

重叠实验框架实现

重叠实验框架在实现中需要注意以下几点:

  • Hash算法和流量正交控制
  1. Hash算法的选择需要兼顾性能和正交性,常用算法有murmur3、cityhash、md5等
  2. Hash使用的seed尽量减少相关性
  3. 实际使用中只有一次Hash分流的框架建议使用千分桶或者万分桶,支持多次Hash的框架建议直接使用百分桶(通过多次Hash可以实现千分桶或者万分桶的流量控制效果)
  4. 桶的分配和使用建议优先分配最久未使用的分桶,最大程度减少前序实验的延滞效应对新实验的影响
  5. 实验层支持定期shuffle将流量重新打散
  • 流量管理和Hash路径
  1. 实验框架通过Hash路径管理,Hash次数越多提供的流量控制越精细但是分流效率和流量框架的管理和理解复杂度也越高,需要慎重权衡
  2. Google重叠框架提供了a-d四种选项,通常的实验需求Figure C基本可以满足,即第一次Hash区分垂直流量、水平流量域,第二次Hash在水平流量层或者垂直流量域上进行分流
  3. 特殊需求例如在水平层间希望进行互斥的流量控制,可以参考Figure D的实现(域和层的嵌套结构),但是未必需要对用户透出技术细节(可以通过工程上的一些虚拟层、虚拟域支持)
  • 实验框架和业务框架
  1. 实验框架对业务框架的映射并提供稳定性,域名称、层名称、参数名称呼应业务框架
  2. 工程框架在请求实验框架获取实验配置时便于理解和集成,例如域可以对应具体的业务场景,层&参数对应具体的业务请求
  • 参数管理
  1. 实验框架提供参数的生命周期管理,从参数创建到实验中配置使用参数,到参数的推全(包括实验框架配置推全、工程框架代码推全)
  2. 参数值的管理,通过参数值的管理可以提供快捷、安全的配置并通过默认值实现推全控制
  3. 流量和参数尽量解耦合,更好的支持多参数实验(MVT multi-variate test)

重叠实验框架支持了更多的实验、更好的流量控制,支持实验三大原则:重复、随机、区组,确保实验结论的科学性、可信性。

作者:展博,多年数据咨询、数据产品经验,跟您分享下我们身边数据的故事,欢迎咨询:数据产品建设、数据分析&营销&运营体系构建,让数据来说话。

各种程序员常用的框架清单

JavaScript程序员:

自从有了基于服务端的JavaScript,JavaScript程序员似乎在社会上越来越吃香,下面是JavaScript常用的框架。

  • 谷歌的angular
  • Facebook的react
  • 名不见经传的avalon
  • 用久了上面的框架之后,很多JavaScript程序员开始逐渐的明白,原来我理想中的框架是Vue
  • 为了绘制各种统计图,优先使用百度的ECharts

php程序员:

长期以来,php霸占了中小网站的市场,甚至一些大公司部分业务的都是用php来开发的,那么php程序员经常使用的框架有哪些呢。

  • swoole网络处理框架
  • workerman和swoole一样,一个网络服务端处理框架。
  • LV——YII——TP框架等等
  • 用于发送邮件的PHPMailer框架
  • Smarty框架
  • jQuery和Bootstrap框架,主要用于处理JavaScript和页面布局

Python程序员:

在近些年,似乎我们经常听到Python越来越强大的声音,比如用Python来完成自动化测试、用Python来进行大数据处理、用Python来完成科学计算等等,那么Python程序员经常用的框架有哪些呢。

  • Django是一个开放源代码的Web应用框架
  • Twisted是用Python实现的基于事件驱动的网络引擎框架
  • 自动化测试框架Selenium

android程序员:

大部分安卓APP应用处理最复杂的还是动画效果和图片处理、网络请求,所以关于这三个方面的框架如下。

  • Volley网络请求处理框架
  • Picasso图片加载框架
  • Tiny图片处理框架
  • transitions framework 动画框架

IOS程序员:

和Android程序员一样,大部分的应用都是动画、图片、网络请求为主,所以常用的框架如下。

  • MWPhotoBrowser 图片框架,利用这个框架能够实现图片请求、缓存、缩放等等操作
  • JSONKit这个框架是一个非常优秀的处理JSON相关的需求框架
  • WebViewJavaScriptBridge框架是一个实现JavaScript与原生接口交互的框架。

Java程序员:

作为目前超级流行的编程语言,我们的Java程序员常用的框架如下。

  • Hadoop 是一个分布式存储与计算的框架
  • Log4j日志记录框架
  • Solr和ElasticSearch全文检索框架

C/C++ 程序员:

哈哈,不好意思,C/C++程序员还没有什么常用的框架,因为很多东西都要靠自己去实现,这也是为什么很多C程序员常说:‘在我看来,很多编程语言都是前端语言’。

中国深度学习框架市场报告:百度元谷歌前三名

5月19日,市场调研机构弗若斯特沙利文(Frost & Sullivan,以下简称“沙利文”)发布了《中国深度学习软件框架市场研究报告(2021)》。报告对深度学习软件框架厂商的多维度分析结果显示,在中国深度学习框架市场,百度飞桨竞争力综合排名第一,在应用能力、技术能力和生态能力层面均具备显著优势。其次是Meta的PyTorch和谷歌的TensorFlow,均为海外企业。

报告认为,主流深度学习软件框架竞争格局渐趋清晰,制胜中国深度学习软件框架市场关键因素有三,即框架性能、硬件支持和市场表现,分别体现着厂商的产品能力、生态能力、应用能力。

在“产品能力”方面,报告从深度学习框架功能完备性、技术前瞻性、产业级模型库丰富度、服务质量等多个二级指标衡量厂商的产品能力;“应用能力”方面,报告侧重从中国企业市场应用覆盖、行业应用广度、企业应用深度等指标进行衡量。

借助深度学习框架,传统行业能够将人工智能技术加速应用在业务中。在轨道安全巡检工作中,成都国铁借助飞桨目标检测开发套件解决AI算法难题,研发出一套“轨道在线智能巡检系统”,可实现对轨道巡检图片的实时检测;在智慧植物工厂,基于飞桨已实现机器24小时自动照看、多方位呵护蔬菜生长采收,使用极少人力就能生产出数倍于以往的新鲜蔬菜。从前,一位农学专家只能照看20亩地,现在一人可照看60到100亩地。

据了解,飞桨是中国首个自主研发的产业级深度学习平台,以百度多年的深度学习技术研究和产业应用为基础,于2016年正式开源。通过打造模型库、开发套件、工具组件及企业版,不断降低应用门槛。过去几年,飞桨官方发布的产业级开源模型已经超过了400个,并发布13个精度与性能平衡的产业级系列模型,覆盖工业、农业、交通、科学计算等20多个领域。

报告认为,应用覆盖范围越广,市场份额越大,就更能体现企业具备更强和更完善的能力去满足不同客户的定制需求。此外,深度学习软件框架的应用行业数量越多,细分应用场景数量越多,则证明行业应用广度大,说明企业产品在各场景均被广泛应用。

此外,社区生态繁荣度、教育生态繁荣度、硬件生态繁荣度也作为沙利文评价深度学习软件框架“生态能力”的重要指标。报告认为,生态能力越强,则证明深度学习软件框架被更加广泛和频繁的使用,其生态合作、产业协作能力越强。

如何使用Google crux分析和比较JS框架的性能

摘要:在美国本土流量前 100 万的站点中(按流量统计),Vue 的性能追平了 React。

最近几年,框架已经成为 Web 开发领域的标杆,其中的排头兵当数 React。事实上,我们已经很少见到有人不用任何框架或者 CMS 之类的平台,就可以开发新的网站或 Web 应用程序。

虽然 React 的口号是“一套用于构建用户界面的 JavaScript 库”,丝毫没提框架的事,但我认为事实已经确定:大部分 React 开发者都把它当成框架来看,当成框架来用。至少,大家会把 React 当成整体应用程序框架中的一部分,例如 NextJS、Gatsby 或者 RemixJS 等。

但从 Web 开发者的角度出发,这类框架带来开发体验改进的背后,究竟让我们付出了怎样的代价?尤其是,最终用户又为 Web 开发圈的这种框架依赖性付出了什么?

在本文中,我们将根据 Google Chrome 用户体验报告(简称 CrUX)收集到的一线数据,分析与各类框架相关的性能成本。这些信息有趣且具有借鉴意义,通过这些数据分析,或许能给前端及全栈开发者,从当前众多框架和平台中开辟出一条清晰的选择思路。

但首先得强调一点,查看数据时千万不要把相关性和因果性混为一谈。当使用某种特定框架时,其网页性能比另一框架的网页性能更好或更差,并不能代表框架本身的优劣。比如,可能是因为某些框架常被用于构建重量级网站而产生了一些影响。

换句话说,这些数据最多能帮助大家在设计前端项目时,更合理地考察并选择框架方案。只要影响不大,我们不妨选择那些性能比更好的框架。

从一线收集 Core Web Vitals

前文已经提到,此次分析的主要数据源是 Google CrUX。作为一套云端数据库,CrUX 会实时从 Chrome 浏览器会话中收集真实用户指标(RUM)。只要大家选择同步浏览历史记录,不设置同步密码,并且启用“使用统计报告”功能,那么每当我们用 Chrome 加载网页时,关于会话的信息都会被自动上报给 CrUX。尤其是收集的测量值包括为每个会话测量的三项,它们被统称为核心页面指标,即 Core Web Vitals(CWV)。

  • 最大内容绘制 (LCP)
  • 首次输入延迟 (FID)
  • 累积布局偏移 (CLS)

近年来,这些指标已经成为现代 Web 性能分析的基石。

针对每项指标,谷歌分别定义了:好(绿色)、一般 / 须改进(橙色)和差(红色)三个数值范围。

从 2021 年 6 月开始,这些指标因素被纳入谷歌搜索排名,这也让几个小小的数字获得了较高的江湖地位。

除了为各个会话收集现场数据外,谷歌还使用 WebPageTest 工具对各网站执行综合衡量。这些实验室测量值将由 Wappalyzer 服务收集到另一个名为 HTTP Archive 的在线存储库内。

之后,谷歌可以使用其 BigQuery 项目对这两个集合执行查询。但要从这些数据中获取洞察力,最简单的方法还是使用 Rick Viscomi 创建的 Core Web Vitals 技术报告。(Rick 是谷歌公司的开发关系主管工程师,负责管理 CrUX 和 HTTP Archive)。该报告提供了一种方法,即以交互方式绘制各类基于 Web 的平台与技术相关性能数据,并轻松地对内容做出相互比较。

在本文中,我们主要通过 Core Web Vitals 技术报告中的数据提炼分析见解。

在数据分析过程中,我们需要注意以下几点:

  • 虽然现场数据收集自各个页面,但技术报告本身会按来源显示,且来源值为该来源中所有页面值的聚合,最终结果为基于页面流量计算出的加权平均值。
  • 另一方面,良好来源的比率没有加权。这意味着即使流量相对较少,但只要性能表现不错,则该来源在报告中就等同于性能同样良好,但流量明显更高的其他来源。我们可以按流行度排名对来源进行过滤,借此拉开低流量源与高流量源之间的差距。
  • HTTP Archive 仅分析各来源的主页。这意味着框架识别只针对主页进行,并将该来源内的所有其他页面全部视为该框架的性能聚合——无论子页面中是否继续使用该框架,或者是否配合使用到其他框架。
  • 各子域被视为独立的不同来源。

比较各 JavaScript 框架的 CWV

让我们先从各 JavaScript 框架的性能说起。具体来看,要看使用这些框架的网站当中,有多大比例在三项 CWV 指标上都得到良好评价。三者全“好”,代表该网站应该是在性能上带来了不错的用户体验,也有资格获得谷歌搜索排名的优先展示。

为了消除地域分布对不同框架之间造成的影响,我对数据进行了过滤,仅涉及美国本土会话数据。图中的 ALL 线是指 CrUX 的所有网站(而非仅仅是使用了框架的网站),主要用于参考和比较。

在美国本土,三项 CWV 指标均为绿色的移动端会话所使用的领先框架所占百分比。

在美国本土,三项 CWV 指标均为绿色的桌面端会话所使用的领先框架所占百分比。

注意:在我们的分析中,移动端并不包含 iOS 设备,例如 iPhone。这是因为 iOS 上的 Chrome 其实就是 Safari 内核换皮,所以根本不测量或上报 CWV(iOS 上的所有浏览器都是如此,全部属于 Safari 换皮)。

首先,我们可以看到不同的框架会产生截然不同的结果。而且无论好坏,各框架在过去一年中的性能表现基本保持稳定(其中 Preact 是个例外,后文将具体解释变化的原因)。这表明评分确实有意义,而非侥幸或统计异常下的结果。

根据测量值,我们发现不同框架确实对应着不同的性能成本:通过与 ALL 基准相比,可以看到只要使用框架,其性能一般就要落后于不用框架构建的网站。虽然 React、Preact 和 Svelte 等框架已经能让性能接近整体平均水平,但有趣的是,没有任何框架能提供比其他框架更好的性能。

React 和 Preact 基本可以说是并驾齐驱——考虑到 Preact 比 React 小得多,所以这样的结论可能有点出乎意料。Preact 只有约 4 KB,而 React 大概是 32KB(二者都经过压缩)。很明显,在大多数情况下,28KB 的下载量差值并没有多大影响。Preact 的缔造者 Jason Miller 最近也就此做出说明:

Preact 并不直接关联于任何特定 SSR 或者服务解决方案,而这些才是决定 CWV 的关键。虽然 Preact 不可避免会对 CWV(实际就是其中的 FID,即首次输入延迟)造成影响,但远不如页面交付中涉及的其他技术那么直接。

— Jason Miller (@_developit)2022 年 2 月 11 日

Vue 和 AngularJS 处于第二梯队——在移动端获得良好 CWV 的概率比第一梯队低 20% 到 25%,而桌面端的概率则低 15% 到 20%(其中同样不包含 iOS)。也就是说,Vue 似乎正在逐步改进,慢慢缩小与 React 之间的性能差距。

Preact 性能的大幅下降跟框架自身无关,主要原因来自 Wappalyzer 对 Preact 的识别方式。很遗憾,Wappalyzer 无法识别 2021 年 11 月之前使用 Preact 构建的大部分网站,因此在此时间点之前的 Preact 统计结果有错,可以直接忽略。

通过热门网站数据对比领先框架

当我们把目光转向全美排名前 100 万的站点(按流量统计)时,有趣的变化出现了:Vue 几乎紧跟在 React 身后,可以看到热门网站中有更多使用 Vue 的高性能案例;而对于 React,表现良好的站点反而意外有所减少:

在美国本土流量前 100 万的站点中,三项 CWV 指标均为绿色的移动端会话所使用的领先框架所占百分比。

在美国本土流量前 100 万的站点中,三项 CWV 指标均为绿色的桌面端会话所使用的领先框架所占百分比。

通过各指标分析对比框架性能

除了关注整体 CWV 之外,技术报告还对各项指标展开逐一分析。我们先从 FID 开始:

在美国本土,FID 指标为绿色的移动端会话所使用的领先框架所占百分比。

大家可能已经预料到使用框架的网站在代表响应性能的 FID 上会表现较差,主要是因为框架中会大量使用 JS 代码。但实际情况并非如此——事实上,FID 指标并没有拉开差距,所有框架都拿到了近乎完美的得分。

即使是查看集合中所有网站的聚合,结论也依旧不变。出于这个原因,谷歌正研究推出其他更好的响应性指标,而且已经通过测试收集反馈意见。

所以,观察 LCP 指标明显更有意义:

在美国本土,LCP 指标为绿色的移动端会话所使用的领先框架所占百分比。

有趣的是,LCP 分数与 CWV 整体高度一致,只是分布范围更大:ALL、React、Preact 和 Svelte 大约高出 10%,而 Vue 和 AngularJS 则基本保持不变。而将统计范围限制在前 100 万个站点时,会看到 Preact 和 Svelte 的成绩略有提升,但 React 基本保持不动,所以被 Vue 迎头赶上。

在美国本土流量排名前 100 万的网站中,LCP 指标为绿色的移动端会话所使用的领先框架所占百分比。

最后,我们来看看 CLS,同样是先从全体网站开始:

在美国本土,CLS 指标为绿色的移动端会话所使用的领先框架所占百分比。

接下来是排名前 100 万的网站:

在美国本土流量排名前 100 万的网站中,CLS 指标为绿色的移动端会话所使用的领先框架所占百分比。

这里可以看到,React 和 Preact 的性能都出现了大幅下降,特别是 React,导致 Vue 成功完成双杀反超。

换句话说,对于 Vue,如果我们只着眼于高流量顶级站点,其 LCP 和 CLS 的良好比率都会提高。另一方面,React 的 LCP 基本保持不变,CLS 反而有所下降。

使用 React 的顶级网站之所以出现性能下降,很可能是因为页面上的广告变多了。广告通常会对 CLS 产生不利影响,因为它们的出现会挤压其它内容的资源空间。但我倒觉得事情未必如此,因为这解释不了 React 跟其他框架之间的显著差异。另外,照这样推断,更多广告同样也会影响到 LCP,但可以看到 LCP 指标基本保持不变。

Web 应用程序框架的性能指标

那 NextJS 和 NuxtJS 是怎么回事?为什么它们没能像 Gatsby(以及 Wix)那样带来预期中的全方位性能优势?通过对各项指标的单独分析,也许我们能够破解这个谜团。

跟之前一样,FID 指标对于整体良好性能占比基本没有影响,因为所有框架都达到了 97% 以上的良好 FID 比率。

但在比较 CLS 比率时,事情变得有趣起来:

在美国本土,CLS 指标为绿色的移动端会话所属网站的所占百分比。

可以看到,NextJS 实际上超越了 React,但 Gatsby 仍然保持领先。而 NuxtJS 则介于 Vue 和 React 之间。

因为所有框架的良好 FID 比率和 CLS 比率都很接近,所以可以看出框架间的差异主要集中在 LCP 身上:

在美国本土,LCP 指标为绿色的移动端会话所属网站的所占百分比。

跟预期一样,可以看到 Gatsby 仍然明显优于 React,而 React 又整体优于 Next.js。鉴于 NextJS 使用的是 SSR/SSG 和现代图像格式,所以落后于 React 着实令人意外。所以在使用 NextJS 时,请务必注意这一点。

NuxtJS 最近几个月在性能上取得了重大进展,并在 LCP 良好率上超越了 NextJS,总体上已经跟 React 基本相当。

下面再来看 LCP 差异能不能用图像下载数据量来解释,毕竟图像越大,对 LCP 的负面影响就越严重:

在美国本土,移动端图像下载数据量(KB)

有意思的是,使用 NuxtJS 和 Vue 的网站所下载的图像数据总量明显高于 React 网站。尽管如此,NuxtJS 仍能保持相当优秀的 LCP 良好比率。

Gatsby 和 NextJS 的下载图像数据量也不低,性能同样也不错,这意味着 Gatsby 出色的良好 LCP 比率绝不单靠削减图像尺寸。对我来说,这表明 Gatsby 可能会更早开始下载最大的图像,以优先处理的方式有序加载各项页面资源。

有趣的是,Gatsby 主页使用 WebP 处理图像,而 NextJS 主页使用的则是 AVIF。

总结

我们在本文中分析的所有框架,其良好性能比率均高于 0%,意味着它们都有构建高性能站点、拿下三绿 CWV 指标的能力。同样,所有这些框架的三绿比例也都达不到 100%,就是说如果使用不当,它们也都有可能会使网站变得加载缓慢,体验糟糕。

也就是说,我们看到的各种框架只在良好性能率方面存在差异。如果使用成绩较好的框架,那你的网站也许比其他框架开发的网站更有可能获得高性能。当然,大家可以在设计过程中根据具体情况再做考量。

另一方面,我们也看到这种差异有可能产生误导。例如,乍看之下 React 的性能似乎优于 Vue。但当我们排除掉大多数被包含在 React 统计中的 Wix 网站,转而关注高流量顶级网站时,Vue 的性能又迅速追平了 React。

此外,Preact 和 Svelte 等以性能而闻名的框架并不一定在 CWV 指标上有什么优势。不知道后续谷歌将 FID 替换成新的响应性指标后,这些框架能不能变得“名副其实”。

更让人意外的是,某些 Web 应用程序框架就算内置了 SSG/SSR 支持并使用了 CDN,性能上也还是没什么优势。换句话说,使用 Web 应用程序框架并不能有效提升实际性能。

另外,NextJS 和 NuxtJS 在提升网站 CWV 指标方面还有很长的路要走。虽然二者的改善趋势都很明显,尤其是 NuxtJS,但仍明显低于 Gatsby 或者 Wix,甚至还不及所有网站的平均良好率。希望他们再接再厉,尽早完成自我突破。

原文链接:

https://www.smashingmagazine.com/2022/05/google-crux-analysis-comparison-performance-javascript-frameworks/

京东安全麒麟框架入选谷歌优质开源项目,华为、苹果、微软等技术巨头开展应用研发

无需“暴力”破解设备、也无需反复搭建模拟环境,麒麟框架(Qiling ?Framework)的出现可谓解决了IoT(物联网)安全研究中的一大难题。

在谷歌公司日前公布的全球优质开源项目(注:开源项目指将软件开放源代码,允许其他使用者修改和应用)名单中,京东探索研究院信息安全实验室自主研发的麒麟框架入选,核心研发团队还被授予导师机构(Mentor)身份,为2022年Google Summer of Code(GSoC,谷歌编程之夏)活动提供专业技术指导。

就应用而言,麒麟框架致力于为无人配送、智能仓库等业务场景提供安全守护。此外,麒麟框架自2019年推出以来,还获得了包括中科院、复旦大学、腾讯、华为、苹果、谷歌、微软等的研究开发,并编写安全工具。

聚焦IoT安全

麒麟框架可能与你息息相关

小到智能音箱、智能门锁,大到汽车自动驾驶、工业机器人……伴随科技的快速发展,IoT的应用可谓无处不在。与此同时,IoT的信息安全风险也加速显现,黑客远程操控物联网场景的事件时有发生。

在IoT安全领域,“逆向分析”测试始终是困扰行业的一大难题。通俗的讲,若想对IoT硬件进行安全研究,技术人员要么“暴力”破解设备,要么反复搭建模拟环境,无论是研究效率还是学习成本上均有缺陷。

对此,麒麟框架正尝试给出更加完美的解决方案。据麒麟框架负责人、京东集团信息安全部高级研究员刘凯仁介绍,麒麟框架可以在无实物的情况下虚拟一个IoT环境,从而利用高性能的主机对低性能的硬件进行漏洞分析。此外,麒麟框架还具备强大的灵活开放性,允许工程师跨平台和CPU架构进行操作。

总的来说,麒麟框架改变了物联网安全研究、恶意软件分析和逆向工程困难的现状,为普通大众用户、工业产业的各类IoT和工控场景的安全保护,提供更为高效的安全保障。

守护IoT、工控互联网场景

麒麟框架应用前景广阔

据介绍,麒麟框架即将在在IoT、工业控制系统落地应用。例如在近年来大热的智能车联网领域,其便致力为京东以及行业内多款智能搬运机器人和无人配送设备提供安全保障。

此外,京东探索研究院信息安全实验室还在2019年将麒麟框架正式开源,以赋能行业技术发展。两年多来,麒麟框架不断吸引着来自全球各地的安全研究人员进行技术代码和文档编写,在业内产出了不少有价值的贡献成果。其中,腾讯、华为、苹果、谷歌、微软,以及复旦大学、中科院、上海交大等国内外技术公司和高等学术机构的安全团队,均在麒麟框架基础上开展各类研究或编写安全工具。

近年来,京东的“技术派”形象正深入人心。自2017年全面向技术转型以来,京东体系在基础科学和技术研发的投入近800亿元,在诸多前沿技术和应用技术领域均取得丰硕成果。以麒麟框架探索破解IoT安全分析困境,便是京东信息安全技术带来的价值沉淀,力争为自身业务发展提供安全守护的同时,对外输出安全能力,提升行业安全水位。

本文源自金融界资讯

新年伊始:2022年,十大最佳Java框架值得您选择

编者按:

静静的,2021就那样地成为了不可再来的过去;默默的,2022如这般地踏上了一切未知的新征程。作为IT行业的一份子,不是在工作,就是在学习。过去的一年,道一声:您辛苦了!昨天所说的未来,她就这么来了,您得好好地对待……如何呢?好吧,那就先来一份Java应开发中常用的优秀框架清单给你——好好学习,新的一年里,你一定更进一阶,昂昂雄起!

@牛旦IT课堂 衷心祝福各位朋友2022新年快乐,身体健康,心想事成!

Java框架

Java 是一种强大的编程语言,当与框架结合时,Java 可以为任何领域提供最佳解决方案,无论是电子商务、银行、云计算、金融、大数据、股票市场、IT 等。

如果您刚开始使用 Java,请通过此博客(编程新手(一):Java认知及初学者指南)来看看 Java 是个什么鬼,它将带您了解开始使用框架所需的所有重要概念。

1.何为Java 框架?

作为模板或骨架而预先编写的代码主体,然后开发人员可以使用和重用这些代码来创建应用程序,要做的就是根据需要编写相应的代码,以使应用程序按照他们的意图作为框架实际构成而工作。框架的重用使开发人员能够对其关注业务应用而进行编程,无需从头开始创建每一行代码而耗费资源。

Java 框架特定于 Java 编程语言,用作开发软件应用程序和 Java 程序的平台。

Java 框架包括而不限于用于处理、输入和管理硬件设备以及与系统软件交互的预定义类和函数。这取决于框架的类型、程序员的技能水平、想要完成的任务以及他们的偏好等。

2.为什么是框架?

简而言之,框架为您的应用程序提供了一个基础性主体结构。例如,如果我们有一个合适的测试框架,我们可以自动化很多事情并获得准确和一致的结果。同样,如果有用于 ORM、Web 应用程序、日志记录、数据管理等的框架,它将使开发人员的生活变得简单,并帮助他们更专注于业务逻辑,而不用担心跨域或应用程序而使用的通用代码片段。

认识到这些以后,我来看看你都有哪些热门流行的Java框架。

3.10大热门框架

虽然有很多框架是基于 Java 构建的,但这里有一些非常常用的不同类型的框架——Web 应用程序、网络应用程序、日志记录、测试、ORM 等。 注意,每一个都有自己的好处或优势,且最适合不同的业务用例或应用场景。严格的说,我们不能说哪个更好,因为它们在各自不同的场景中都很好——各有各的特点。

下面就来简要地介绍下这些人们的Java框架。

1)Spring框架

Spring 凭借其依赖注入的概念和面向方面编程的特性,席卷了开发世界。它是一个用于企业级应用程序的开源框架。

使用 Spring,开发人员可以创建松散耦合的模块,其中依赖项由框架处理,而非依赖代码中处理的库。

Spring框架包罗万象,涵盖了很多特性,包括安全性和配置性,简单易学。此外,由于它是最流行的 Web 框架,因此您可以找到大量文档和活跃的社区。

配置完所有内容后,您的代码将变得干净且易于理解。其中主要概念如下:

  • u 依赖注入 (Dependency Injection (DI) 也称为控制反转(Inversion of Control) )——在这个原理中,不是应用程序按顺序控制流,而是将控制权交给驱动流的外部控制器。外部控制器是事件。当某个事件发生时,应用程序流程将继续。这为应用程序提供了灵活性。在 Spring 中,IoC 是通过 DI 完成的,DI 分为三种类型——setter 注入、方法注入和构造函数注入。
  • u Beans 和 Spring Context——在 Spring 中,对象被称为 bean,并且有一个 BeanFactory 来管理和配置这些 bean。您可以将 beanfactory 视为实例化、配置和管理 bean 的容器。大多数应用程序使用 xml (beans.xml) 进行配置。 ApplicationContext 是 BeanFactory 的超集,用于需要事件传播、声明机制和与 Spring 面向方面的特性集成的更复杂的应用程序。
  • u Spring框架的核心模块有(快速切入:Spring框架核心概念总览):

ü Spring Context:用于依赖注入(DI)

ü Spring DAO:使用DAO模式进行数据库操作

ü Spring JDBC:用于 JDBC 和数据源支持

ü Spring ORM:用于对 Hibernate 等 ORM 工具支持

ü Spring AOP:面向切面编程

ü Spring Web 模块:用于创建 Web 应用程序(Spring MVC)

ü 其它与时俱进的新模块等。

2)Struts框架

Apache Struts 是另一个强大的 Web 应用程序开源框架。它遵循MVC(模型-视图-控制器)模型并扩展了JSP API。在传统的 servlet-JSP 方法中,如果用户提交了一个包含他的详细信息的表单,那么信息就会进入 servlet 进行处理,或者控制权会转移到下一个 JSP(Java 服务器页面——您可以在HTML中编写 Java 代码 )。这对于复杂的应用程序来说变得混乱,因为“视图”或表示层理想情况下不应该有业务逻辑。

Struts 将 View、Controller 和 Model(数据)分开,并通过一个配置文件 struts-config.xml 提供它们之间的绑定。

模型(Model)用来关联数据层的相关处理。

控制器(Controller)是一个 ActionServlet,您可以在其中为视图编写模板,并且使用 ActionForm JavaBean 维护用户数据。 Action 对象负责转发应用程序流。

视图(View)由一组丰富的标签库维护。

与单独使用 servlet 和 JSP 的传统 MVC 方法相比,Struts 易于设置并提供更多的灵活性和可扩展性。它可以成为您作为 Web 开发人员职业生涯的良好起点。

3)Hibernate

尽管 Hibernate 不是一个全栈框架,但它彻底改变了我们看待数据库的方式。 作为Java Persistence API (JPA) 的实现,Hibernate 是 Java 应用程序的 数据库对象关系映射 (ORM)。就像 SQL 一样,Hibernate 中的查询被称为 HQL(Hibernate Query Language)。其实后来企业级Java规范中出现的JPA,正式受到了Hibernate的影响而来的。

Hibernate 直接将 Java 类映射到相应的数据库表,反之亦然。

hibernate 中的主要文件是 hibernate.cfg.xml 文件,其中包含有关将 Java 类与数据库配置映射的信息。

Hibernate 解决了 JDBC 的两个主要问题——JDBC 不支持对象级关系,如果你决定迁移到不同的数据库,旧的查询可能无法工作——意味着很多变化——即时间和金钱支出!

Hibernate 提供了一个抽象层,以便代码与数据库松散耦合。诸如建立数据库连接、执行 CRUD 操作之类的事情都由 Hibernate 处理——因此开发人员不需要实现这些,从而使代码独立于所使用的数据库。

4)Apache Wicket

如果您已经使用过 JSP,那么学习Wicket将是小菜一碟。 Wicket 是一个简单的 Java Web 框架,具有面向组件的结构,您只需要了解 Java 和 HTML。绝对没有 XML 或配置文件!

Wicket 的主要特性是它的 POJO 模型,其中组件是具有 OOP 特性的简单(普通的)Java 对象。这些组件作为可重用的包捆绑在一起,包含图像、按钮、表单、链接、页面、容器、行为等,以便开发人员可以自定义它们。

Wicket 是轻量级的,您可以非常快速地构建应用程序。对用 Wicket 编写的代码进行单元测试也很容易。

5)JSF(Java Server Faces)

不要将 JSF 与 JSP 混淆,后者只是一个可以包含静态和动态内容的文本文档。 JSF 由 Oracle 开发,作为 企业级Java规范的的一部分。

它是一个基于组件的 MVC 框架,并为基于服务器的应用程序提供了可重用的 UI 组件。主要思想是封装各种客户端技术,如 CSS、JavaScript 和 HTML,这将允许开发人员在不深入了解这些技术的情况下创建 UI。他们只需拖放 UI 组件,就可以更专注于他们的表示层细节。

JSF 中的默认模板系统是 FaceLets。 JSF 与 Struts 非常相似。

JSF 可以进一步与支持 AJAX 的组件无缝集成,通过添加用于验证和方法调用的 Ajax 事件来丰富用户体验。

有很多优秀的第三方JSF标准实现库可以直接使用。

6)Dropwizard

另一个名副其实的 Java 框架 – wizard(向导)。这个轻量级框架让您可以非常快速地完成您的应用程序,因为它对高级配置、日志记录、应用程序指标等提供开箱即用的支持。您可以创建具有高性能、稳定和可靠的 RESTful Web 应用程序。

Dropwizard 特别神奇,因为它将 Java 生态系统中的大量库(如 Jetty、Guava、Jersey、Jackson 和 Metrics 等)整合到一个框架中,并为您提供了一个轻量级和精益的应用程序。

由于所有配置、安全性和性能相关任务都有集成库,因此作为开发人员,您需要做的就是构建业务逻辑。

Dropwizard 是一个与库捆绑在一起的开源框架,您可以使用 Eclipse IDE 轻松设置它并创建一个简单的项目来学习(请相信,您完全可以自己学习 Dropwizard!)。 Dropwizard 网站上的基本教程将帮助您完成每一步。

7) Grails

Grails 是一个易于学习的全栈框架,非常适合那些刚刚开始编程生涯的人。 Grails 是一个用 Groovy 编程语言编写的 Web 框架,它运行在 Java 平台上,并且与 Java 语法完美兼容。该框架基于 MVC 设计模式。

Groovy 类似于 Java,与 Java 相比,它添加了更多功能。如果您已经了解 Java,那么学习 Groovy 非常容易。

与JSP 类似,在Grails 中,渲染技术是GSP(Groovy Server Pages)。在 Grails 中为视图创建标签既简单又容易。它使用了 GORM——它是 Grails 中使用的 ORM 实现。您也可以直接使用 Hibernate 代替 GORM。 Grails 内置了对 RESTful API 的支持,因此可以轻松创建此类服务。

最棒的部分来了——您可以将现有的 Java 代码与 Grails 集成。如果您的应用程序中混合使用了 Groovy 和 Java 代码 – 它会工作得很好!

学习 Grails 的最佳方法是使用任何 Java IDE(如 Eclipse、NetBeans 等)设置您自己的开发环境,然后按照教程来构建您的第一个 Web 应用程序。

8) ATG

ATG 是一个用 Java 编写的网络商业平台。它是一个可定制和可配置的框架,特别适用于与电子商务相关的网站。该产品归 Oracle 所有,支持复杂而庞大的 B2B 和 B2C 应用程序。然而,对于小规模应用,它可能是昂贵的。如果您正在开发电子商务网站,ATG 是一个很好的学习框架,它将丰富您的技术和领域知识。

ATG 平台可以在三台服务器上运行——Oracle Weblogic、IBM Websphere 和 JBoss。

框架中有 3 个主要层级:

  • u Dynamo 应用框架( Dynamo Application Framework)——它是提供基于 JavaBeans 和 JSP 的开发环境的基础层。所有通用功能都有标准的 ATG 类,甚至可以通过配置文件链接组件 bean 来创建和组装自定义 Java 代码。
  • u 个性化模块(Personalization module )——这是为每个用户动态定制内容的地方。该模块有助于控制和维护定义要向特定用户显示哪些内容的用户配置文件和业务规则。该层还支持有针对性的电子邮件。
  • u 场景模块( Scenarios module)——该模块通过引入时间敏感、事件驱动的活动来管理网站访问者与一段时间内的内容之间的交互,进一步增强了个性化模块的功能。例如,限时优惠、某些会员的独家优惠等……

ATG 是一个宽泛的框架,您需要时间和耐心来学习它。沃尔玛、梅西百货、百思买、ASDA 等几家大公司的网站都建立在 ATG 上。

9) Play

Play 是一种稍微传统和独特的框架类型,它遵循约定优于配置的方法。它基于MVC模式,是一个开源的Web应用程序框架。除了 Java,您还可以在 Scala 中编写 Play Web 应用程序。

Play 类似于 Django 或 Ruby on Rails 或 ASP.NET 架构,不一定遵循 J2EE Web 标准。

Play 的一些特点是:

  • ü 异步处理带来的高性能
  • ü 没有容器,没有状态,建立在反应式原则上
  • ü 使用静态类型语言,因此大多数错误是在编译时捕获的,从而在开发生命周期的早期节省了大量错误。
  • ü Scala 探究了真正的 OOP 以及一些函数式编程概念。它与 Java 的兼容性造就了一个优秀而强大的系统。
  • ü Play2 发布了一个新的强大的构建系统 sbt,它可以轻松地与 Maven 项目集成以及创建简单的 JAR 文件。
  • ü 内置了用于常见功能的广泛关系数据库访问库。

10) Apache Hadoop

虽然 Apache Hadoop 不是一个全栈框架,但它提供了一个软件框架,并在 MapReduce 编程模型上工作。这些实用程序可以轻松处理大量数据(大数据)、存储、分析和处理它们以提供更快、更有效的结果。

我之所以将 Hadoop 包括在此列表中,因为它是当今大数据日益突出的“重要事物”。

Hadoop 使用主从设计模式帮助分布式数据存储和处理。主节点(即NameNode)的Hadoop HDFS(Hadoop分布式文件系统)层有数据节点。 MapReduce 层有 JobTracker 和 tasktracker。从节点分别有Data节点和taskTracker。

HDFS 将文件分成一组块,并在整个集群中复制这些块。

如果您想熟悉大数据和数据科学——Hadoop 是您的起点。具体可以到官网去进一步学习 Hadoop。

4.其它Java 框架还有

11) GWT

Google Web Toolkit (GWT) 是一个明显由 Google 创建的框架,用于在 Java 中创建富 Internet 应用程序。 GWT 的最佳特性之一是它将 Java 代码转换为 JavaScript 代码——也就是基于浏览器的自定义代码。我个人喜欢这个功能,因为在开发过程中,我们过去常常在浏览器测试上花费大量时间和精力。使用这套开源工具,我们可以在更短的时间内编写高性能的 Web 应用程序。如果您已经有一个代码库,您可以轻松地将它与 GWT 集成,因为 GWT 也与 Eclipse IDE、Maven 和 Junit 兼容。该框架还提供了广泛的小部件(widget)库,可以执行大多数任务,即使是 Java 初学者也可以轻松开发业务逻辑,而不必担心太多基本的东西。 GWT 框架有 3 个主要组件——Java 到 JS 编译器、位于核心 JRE 库之上的 JRE 仿真库和包含 UI 组件、历史管理和更多功能的 GWT UI 构建库。

可以在这里来学习GWT:https://www.gwtproject.org/gettingstarted.html

12)Vaadin

Vaadin 是一款旗舰产品,也是开发者可以使用 Java 进行 HTML5 Web UI 实现的平台。它是一个开源平台,包括 Java Web 框架和一组 Web 组件以及应用程序启动器和工具。这些 Web 组件构成了 Vaadin 的核心,可以进行定制,从而为桌面和移动应用程序提供高性能和多功能的代码。

Vaadin 流是 Vaadin 平台的实际 Java 框架部分,负责客户端-服务器通信以及路由。使用 Vaadin 流,您可以完全用 Java 编写 Web 应用程序,而无需大惊小怪的 JS 或 CSS。 UI 组件使用与浏览器和服务器之间的自动通信来处理用户的浏览器活动。您可以轻松地将 Vaadin 组件集成到您正在使用的任何 IDE 中,而且它是一个跨平台框架,因此无需担心将代码迁移到不同的平台。

这是一种构建 Java 应用程序的全新方法,因此您可以专注于表示层,而无需担心客户端-服务器通信。它还具有数据绑定 API,可使用类型安全的 Java 代码和抽象层将 UI 组件映射到数据库,以便您可以使用 HTML 模板和 Java 在 UI 中构建可重用的组件。

13)Spark

Spark 是 Apache 的另一个杰作,它是一个开源的 Web 开发框架,它具有与 Spring、Play 和 JAX-RS 类似的功能,但功能更强大,并且不遵循传统的 MVC 设计模式。

它是 Java 的微框架和特定领域语言,专注于开发速度。它需要非常少的配置和编码。由于内存计算,它在数据处理方面比 Hadoop 快 10 倍。 Spark 是一个完全动态的框架,支持延迟初始化和实时数据处理。

与专注于数据科学和大数据的编程语言 Scala 和 R 集成也很容易。 Spark 的主要目标是处理大量数据,还支持使用 SQL 查询、机器学习和图形算法进行高级分析。

不要认为 Spark 可以取代 Hadoop——它可以是 Hadoop 提供的功能的扩展——如果你进入数据科学领域,学习这两个框架将使你比其他框架更具优势。

14)OpenXava

一个用于快速开发 Web 应用程序的低代码平台,您可以在创纪录快的时间内启动和运行业务应用程序。它由业务组件组成,可让开发人员轻松轻松地构建复杂的应用程序。真正意义上的可扩展、可定制和面向对象,OpenXava 以 Java 类为核心对业务问题进行建模。这种模型驱动的开发方法确保了封装性。开发人员仅将模型定义为带注释的普通 Java 类,并且必要的功能都是在运行时生成的。

OpenXava 的结构和理念遵循业务组件架构,而不是传统的 MVC 架构。这里的一切都是一个业务概念,所有对某个业务概念有贡献的工件都在同一个地方,无论是关联的视图-View、模型-Model还是控制器-Controller。

在学习这个框架之前,你绝对应该到这里(https://www.openxava.org/OpenXavaDoc/docs/philosophy_en.html)阅读这种语言背后的概念。

15)Vert.X

Vert.x 由 Eclipse 开发,是一个事件驱动的应用程序框架,它使用 Java、JS、Groovy、Scala 等多种语言。因此,它本质上是多语言的。它依赖于异步编程模型,从而使应用程序无阻塞且不受多线程影响。

Vert.x 可以说更像是一个工具包,它提供多种语言的 API 来执行所有 Web 应用程序所需的异步任务——日志记录、身份验证、监控、数据库连接、多集群支持等…… Vert.x中有两个主要概念:

Verticle——就像任何其他异步模型一样,有一个事件循环,其中包含消息、网络缓冲区、HTTP 请求等事件。事件循环中的每个事件都由 Verticle 处理。

Event Bus(事件总线)——不同的 Verticle使用事件总线相互通信。这是通过异步消息传递完成的。事件总线可以执行不同类型的消息传递,如点对点、广播和请求-响应。

Vert.x 最好的一点是它的非阻塞特性,这使得 Web 应用程序具有很高的性能。该框架可用于任何应用程序——小型、中型或大型。如果您理解了 Node.js,您会更喜欢 Vert.x,因为它具有 Node.js 的所有功能以及 Java 虚拟机的优点,这使得它成为一个强大而健壮的组合。

16)Tapestry

从概念上讲,Tapestry 类似于 JSF 和 Wicket。它是一个开源、跨平台、基于组件的 Web 应用程序开发框架,可以创建高度可扩展的应用程序。它建立在丰富的 Java Servlet API 之上,适用于任何容器或应用服务器。 Tapestry 是一个真正的面向对象的框架,因为您能使用纯 HTML 模板或纯 Java 类(对象)创建 HTML 页面。几乎不需要 XML 配置,Tapestry 使用注释(注解),从而使代码简单且易于管理。

使用 Tapestry,应用程序停机时间最小,因为即使是对 Java 类的任何更改都可以热交换(hot-swapped),而无需重新启动服务器。 Tapestry 还负责 URL 构建和重定向。与其他框架不同,这里的框架适应代码而不是相反。

Tapestry 的一些开箱即用的功能是——文件上传、分页、字段验证、日期和日历逻辑、内化、显示弹出窗口等……

很容易将 Tapestry 代码与后端框架(如 Spring、Hibernate 等)和测试框架(如 Selenium)集成。

17)Jersey

Jersey 是一个 Web 服务框架,用于创建 RESTful 服务并支持 JAX-RS API。它通过有用的特性和实用功能极大地简化了 RESTful 服务的开发。 Jersey 提供了一种抽象层,因此开发人员无需担心客户端-服务器通信的低级实现,而可以专注于主要的 Web 服务功能。

与任何其他 RESTful 框架相比,Jersey 的一个显着特点是它允许分块输出,即服务器可以部分或分块地向客户端发回响应。当必须发送大数据并且可以在准备整个响应时发送数据块时,这很有用。

Jersey 还配备了简单的测试基础设施。您可以编写主要基于 Junit 的轻量级集成测试。将测试与 Maven 环境集成也很容易。您需要做的就是在 pom.xml 中添加依赖项。

18)OSGi

OSGi 或开放服务网关倡议(Open Service Gateway initiative)定义了一个基于组件的系统。它是一种流行的 Java 框架,其中每个组件都称为一个捆绑包(bundle)。每个 bundle 都有独立的生命周期,不依赖于其他 bundle。将捆绑包视为具有 OSGi 特定标头的 jar 文件。捆绑包必须明确声明他们需要访问的包,否则 OSGi 平台将无法启动。

捆绑包使用 JVM 级别的服务注册表来发现、发布和绑定捆绑包作为服务。这就是 OSGi 的精髓——模块化应用程序架构促进适应性和快速更改,而无需太多应用程序停机时间(运行时灵活性)。

OSGi 之所以流行,主要是因为它易于与 eclipse 和基于 maven 的项目集成。

OSGi 有一些很好的概念和好处,但由于单独的独立包版本控制可能是一个问题。这可能是使用此框架而不是其他框架的一个主要缺点。然而,值得在这个框架上投入一些时间,因为模块化和隔离类加载的好处对开发人员来说是个重要的概念。

19)Drools

Drools 是一种流行的业务规则管理系统。它具有业务规则引擎 (BRE)、创作、规则管理程序以及对决策和符号模型的运行时支持。规则管理程序称为 Drools 工作台。该项目得到了 RedHat 和 JBoss 的支持。使用 Drools,开发人员可以轻松地将数据与业务逻辑分开。 Drools 的两个主要步骤是——

  • 创作 – 创建规则文件;
  • 运行时——执行规则的地方。

Drools 最重要的特性是可以随时删除和添加新规则,而无需重新启动服务器。

Drools 是依赖于许多条件才能发生某些操作的应用的合适选择。例如,检查一个人是否有资格升级他的计划,有一些设定的规则——例如,客户是否存在,客户的账单金额是否大于某个限额等等。这些规则可以定义为决策表,而不是将它们硬编码在代码中。任何更改都不需要另一个构建、完整的测试或重新部署!

20)MyBatis

MyBatis 是 Apache 的一个免费软件,它是 Java 中的一个持久性框架,其中 Java 方法与 SQL 语句映射,而 ORM 将 Java 对象映射到数据库中的表。映射引擎以声明方式使用 XML 描述符或注释将 SQL 结果映射到对象树中。

在很多方面,MyBatis 都优于 JDBC 和 Hibernate。 MyBatis 可以动态生成 SQL 语句,将它们与代码分开。它还提供查询缓存以便于访问。 API 非常简单,您无需精通 SQL 或数据库即可编写 MyBatis 代码。

MyBatis 是 Hibernate 和 JDBC 的一个很好的替代方案,当您的应用程序不太复杂,并且您想要简单的开箱即用功能,例如数据库连接、事务管理、加载数据库驱动程序、管理和释放连接等由框架完成时。 MyBatis 也可以很容易地与 Spring 框架集成。

21) Apache Mina

Apache Mina 是一个网络应用程序框架,开发人员可以使用它轻松创建高度可扩展和高性能的网络应用程序。无论您使用 TCP/IP、UDP、LDAP、NTP、DNS 等还是自定义协议,Mina 都为所有传输提供统一的 API。该框架可以提供高级和低级网络 API。 Mina 完全处理 I/O 操作,帮助开发人员完全专注于业务逻辑和其他应用程序需求。在模拟对象的帮助下很容易测试编写的代码。您可以使用 Eclipse IDE 轻松学习 Mina。它可以与 Spring 和 PicoContainer 等流行框架集成,使其成为网络应用程序的流行选择。

MINA 比 SOAP 更好,更稳定可靠。它有一个丰富的网络库来处理并发线程。

5.结论

还有许多其他 Java 框架,它们不是全栈或 Web 开发框架,但在每个应用程序中都很有用——比如用于日志记录的 log4j、用于测试的 Junit 和 Selenium 等等。尽管您可以随时随地学习它们以及您在上面列表中看到的其他框架,但了解这些是非常必要的。

您的应用程序的最佳框架应该满足您的业务需求,提供一定程度的灵活性和最佳性能,并且易于维护和吸收变化。

例如,对于全栈 Web 开发框架,如果需要更改某些内容,它应该对应用程序的影响最小,即您不必为小的更改再次构建和部署应用程序。只需更改配置就可以发挥作用。此类应用程序可节省停机时间并提供灵活性。

明智地选择合适的Java 框架,可以更好的享受 Java 提供的功能特性和优秀的基础性支持。当然还有其它一些优秀的框架如ShardingSphere等,作为2022年的开年第一篇,就写到这了——2022开始了,希望每位都能站在巨人的肩膀上,创造更大价值,成就更好自我!撸起袖子加油干!

你都使用了或使用过哪些框架呢?请在留言区分享出来吧,也说说你的体会和心得。

安装谷歌三件式服务框架的一些经验“谷歌框架安装包共享”

1. Google服务框架是什么

Google 服务框架(a.k.a.谷歌框架)是 Android 系统官方服务框架,作用就是谷歌软件的运行依赖。Google服务框架是提供Google各项服务的组件,例如Gmail、Youtube和Google play。很多游戏没有它不能运行是因为目前很多Google play的应用和游戏都需要验证是否正版,而这个验证是由Google play提供的。

2. 我的手机是否可以使用谷歌框架

以下仅针对国行手机:

  • 安卓9及以上的系统一般在出厂时已内置谷歌服务框架,但通常没有预装Google Play。
  • 安卓8.1及以下的系统一般没有内置谷歌服务框架,需要手动安装。
  • iPhone用户不需要谷歌框架。

3. 谷歌服务框架(三件套)分享

本站从网络搜集了较为完整的谷歌三件套安装包,以及谷歌安装器。大家可以各取所需。建议大家按照软件编号的顺序 手动安装谷歌三件套,因为有时候安装器会有一些奇怪的问题。

三件套包含:

  • Google服务框架
  • Google Play Service
  • Google Play Store

覆盖的安卓版本范围是Android 4.4~Android 10

谷歌服务框架安装包网盘地址:https://sabrinathings.lanzoui.com/b01hkc1da

4. 如何自行寻找最新版的谷歌三件套

网盘内的文件并不一定是最新的,因为不是重大更新,一般不会动。如果想自己寻找最新版的三件套,可以参考以下步骤:

4.1 Google服务框架

下载地址:https://www.apkmirror.com/apk/google-inc/google-services-framework/

首先点击上边的网站,到Google服务框架程序的发布地址,然后找到和自己手机的安卓版本相匹配的版本。例如我的红米手机目前安卓版本为10,所以就需要找安卓10的谷歌框架。如果不知道自己手机的DPI,那么就选择noDPI的版本,准没错, 或者尽量选择最大的,比如有480就选480,不选320。关于ARM版本:**一般近两年发布的手机,ARM版本都是ARMv8。如果是老手机,可以先搜一下自己的ARM版本。也可以直接下载universal版本,也就是兼容v8和v7的版本。**

然后下载安装。

4.2 Google Play Service

下载地址:https://www.apkmirror.com/apk/google-inc/google-play-services/

首先点击上边的网站,到Google Play Service的发布地址,然后找到和自己手机的安卓版本相匹配的版本。例如我的红米手机目前安卓版本为10,所以就需要找安卓10的Google Play Service。如果不知道自己手机的DPI,那么就选择noDPI的版本,准没错, 或者尽量选择最大的,比如有480就选480,不选320。关于ARM版本:**一般近两年发布的手机,ARM版本都是ARMv8。如果是老手机,可以先搜一下自己的ARM版本。也可以直接下载universal版本,也就是兼容v8和v7的版本。**

4.3 Google Play Store

下载地址:https://www.apkmirror.com/apk/google-inc/google-play-store/首先点击上边的网站,到Google Play Store的发布地址,然后找到和自己手机的安卓版本相匹配的版本。例如我的红米手机目前安卓版本为10,所以就需要找安卓10的Google Play Store。如果不知道自己手机的DPI,那么就选择noDPI的版本,准没错, 或者尽量选择最大的,比如有480就选480,不选320。关于ARM版本:**一般近两年发布的手机,ARM版本都是ARMv8。如果是老手机,可以先搜一下自己的ARM版本。也可以直接下载universal版本,也就是兼容v8和v7的版本。**

谷歌推出了一个新的基于tensorflow的强化学习框架——“多巴胺”——与GitHub合作

郭一璞 发自 凹非寺

量子位 报道 | 公众号 QbitAI

上周那个在DOTA2 TI8赛场上“装逼失败”的OpenAI Five,背后是强化学习的助推。

其实不仅仅是OpenAI Five,下围棋的AlphaGo和AlphaGo Zero、玩雅达利街机游戏的DeepMind DQN(deep Q-network),都离不开强化学习(Reinforcement Learning)。

现在,谷歌发布了一个基于TensorFlow的强化学习开源框架,名叫Dopamine

另外,还有一组Dopamine的教学colab。

和它的名字Dopamine(多巴胺)一样,新框架听上去就令人激动。

清晰,简洁,易用

新框架在设计时就秉承着清晰简洁的理念,所以代码相对紧凑,大约是15个Python文件,基于Arcade Learning Environment (ALE)基准,整合了DQN、C51、 Rainbow agent精简版和ICML 2018上的Implicit Quantile Networks。

可再现

新框架中代码被完整的测试覆盖,可作为补充文档的形式,也可以用ALE来评估。

基准测试

为了让研究人员能快速比较自己的想法和已有的方法,该框架提供了DQN、C51、 Rainbow agent精简版和Implicit Quantile Networks的玩ALE基准下的那60个雅达利游戏的完整训练数据,以Python pickle文件和JSON数据文件的格式存储,并且放到了一个可视化网页中。

另外,新框架中还有训练好的深度网络、原始统计日志,以及TensorBoard标注好的TensorFlow事件文件。

传送门

开源框架资源

Dopamine谷歌博客:

https://ai.googleblog.com/2018/08/introducing-new-framework-for-flexible.html

Dopamine github下载:

https://github.com/google/dopamine/tree/master/docs#downloads

colabs:

https://github.com/google/dopamine/blob/master/dopamine/colab/README.md

游戏训练可视化网页:

https://google.github.io/dopamine/baselines/plots.html

相关资料

ALE基准:

https://arxiv.org/abs/1207.4708

DQN(DeepMind):

https://storage.googleapis.com/deepmind-media/dqn/DQNNaturePaper.pdf

C51(ICML 2017):

https://arxiv.org/abs/1707.06887

Rainbow:

https://arxiv.org/abs/1710.02298

Implicit Quantile Networks(ICML 2018):

https://arxiv.org/abs/1806.06923

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ’ᴗ’ ի 追踪AI技术和产品新动态