语言与框架
语言与框架

语言和框架

语言和框架

采用

  • 此举与苹果推出的SwiftUI,谷歌推出了Jetpack组成作为一种全新的、完全不同的方法来为现代Android应用程序构建用户界面。Compose带来了更强大的工具和直观的Kotlin API。在大多数情况下,需要的代码更少,而且在运行时创建用户界面比定义一个可以用数据填充的静态UI更容易。与组成多平台芬兰湾的科特林多平台开发者现在有了一个统一的工具包来构建桌面、网页和本地Android应用程序。Wear OS 3.0+也包括在内,并且支持iOS芬兰湾的科特林多平台移动在未来,Compose很可能会支持iOS。

  • 反应钩子引入了一种管理状态逻辑的新方法;由于React组件总是更接近于函数而不是类,所以hook接受了这一点,并将状态引入到函数中,而不是使用类通过方法将函数带入状态。React应用程序中状态管理的另一个主要内容是回来的,我们已经注意到它已经受到了仔细的审查,这表明有时Redux的复杂性并不值得,在这种情况下,使用hook的简单方法是更好的。完全靠你自己完成这个任务可能很快就会变得棘手;因此,我们建议考虑组合的反应环境以及useContext和useReducer钩子,正如本文所解释的那样博客

试验

  • Arium是一个用于使用Unity编写的3D应用程序的自动化测试框架。功能测试是健康测试金字塔的重要组成部分。Arium,它被构建为统一测试框架,可以在多个平台上为3D应用编写功能测试。我们已经在一些项目中成功地使用了它。

  • 脉轮UI是一个UI组件库React.js这是为可访问性而设计的。我们喜欢它,特别是它的可访问性特性,包括暗模式和与Web可访问性倡议-可访问的富互联网应用程序(WAI-ARIA)指南的兼容性。此外,它易于测试和定制,提供了良好的开发体验,加快了生产环境中UI解决方案的开发过程。

  • DoWhy是一个Python库,用于执行端到端因果推理和分析。尽管机器学习模型可以基于实际数据,利用当时存在的变量的相关性进行预测,但在我们需要提问的情况下,它们是不够的如果为什么问题:如果变量改变了呢?对结果会有什么影响?因果推理是回答这类问题的一种方法。它估计了因果效应,也就是说,如果我们改变了其中一个因果变量,结果会改变的程度。当我们无法通过观察和从A/B测试中收集数据得出答案时(由于实验成本或限制),就会采用这种方法。DoWhy库基于一个使用过去收集的事实和数据以及已知领域的假设的过程来估计因果效应。它使用了一个基于假设的因果关系图建模的四步过程,识别结果的原因,估计因果效应,最后通过反驳结果来挑战这些假设。我们已经在生产中成功地使用了这个库,它是因果估计用例中常用的库之一。

  • 尽管一些框架承诺与静态站点生成器一样易于开发和具有可伸缩性,但我们仍然有很好的使用经验Gatsby.js.特别是,我们已经使用它来建立和部署网站,可以扩展到非常多的用户,而不必担心容量规划或部署基础设施。我们的开发人员也对对旧浏览器的可访问性和支持以及他们可以重用旧浏览器的关注印象深刻React.js体验。总而言之,我们觉得盖茨比已经成熟,是这个领域的一个坚实的选择。

  • Jetpack柄最近已经达到了1.0版本,我们可以报告说我们对它有很好的体验。Jetpack Hilt提供了将Hilt与各种其他AndroidX库集成的扩展,如WorkManager和Navigation。它进一步扩展了Hilt的范围,为开发人员提供了一种标准的合并方式匕首Android应用的依赖注入。我们的特色Koin作为一个原生的kotlin依赖注入框架,我们建议不要尝试在一个庞大的现有代码库中替换Koin。然而,当开始一个新项目时,Hilt似乎是现在的选择。

  • 对于许多组织来说,跨平台移动开发正成为一个强大的选择,尤其是在构建跨平台移动应用程序的端到端体验变得更加有趣和高效的情况下。芬兰湾的科特林多平台移动(KMM)是JetBrains提供的一个SDK,它利用了多平台功能芬兰湾的科特林并包括旨在简化开发人员体验的工具和特性。使用KMM,您只需为Kotlin中的业务逻辑和应用程序核心编写一次代码,然后与Android和iOS应用程序共享。只在必要时编写特定于平台的代码,例如,利用本地UI元素;对于每个平台,特定的代码保存在不同的视图中。我们要把KMM改成审判发展迅速我们看到一些组织将此作为默认设置。

  • 生命线是一个Python生存分析库。它最初是为出生和死亡事件开发的,现已发展成为一个完整的生存分析库,以预测任何时间的持续时间。除了医疗用例(如回答,这个种群能活多久?),我们在零售和制造业用它来回答诸如用户订阅服务的时间有多长?我们下一次的预防性保养应该在什么时候进行?

  • Web应用程序,特别是企业内部使用的Web应用程序,通常分为两部分编写。用户界面和一些业务逻辑在web浏览器中运行,而业务逻辑、授权和持久性在服务器上运行。这两个部分通常通过JSON通过HTTP进行通信。端点不应该被误认为是真正的API;它们只是跨两个运行时环境拆分的应用程序的实现细节。同时,它们提供了一个有效的接缝来单独测试各个部分。在测试JavaScript部分时,服务器端可以在网络级别上被存根和模拟,例如江湖郎中Mock服务工作者提供了在浏览器中拦截请求的另一种方法。这也简化了手工测试。与Mountebank类似,Mock Service Worker作为Node.js进程在浏览器外运行,用于测试网络交互。除了REST交互,它还模拟GraphQL api——这是一个好处,因为在网络级别手动模拟GraphQL可能很复杂。

  • React应用程序中的状态管理一直是Radar中一个反复出现的话题,我们最近澄清了我们的立场回来的,这是该领域的一个流行框架。NgRxRedux的本质是什么.它是一个用Angular构建响应式应用的框架,提供了管理状态和隔离副作用的方法。我们的团队报告说,选择NgRx很简单,不仅仅因为它是用RxJS,它们强调了一个与我们在Redux中所知道的类似的权衡:添加活性状态管理带来了额外的复杂性,这只会在更大的应用程序中得到回报。原理图、脚手架库和一组工具增强了开发人员的体验,这些工具支持对状态的视觉跟踪和时间旅行调试。

  • 最初,类型注释被添加到Python中以支持静态分析。然而,考虑到类型注释和一般注释在其他编程语言中使用的广泛程度,开发人员开始将Python的类型注释用于其他目的只是时间问题。pydantic属于这一类。它允许您在运行时使用类型注释进行数据验证和设置管理。当数据以JSON文档的形式到达,需要解析为复杂的Python结构时,pydantic会确保传入的数据与预期的类型匹配,如果不匹配则报告错误。尽管您可以直接使用pydantic,但许多开发人员已经将其作为FastAPI,是最流行的Python web框架之一。事实上,在FastAPI中使用pydantic被认为是必不可少的,以至于最近提出的对Python的更改,旨在减少将带注释的代码加载到内存中的成本重新考虑因为它会在运行时破坏类型注释的使用。

  • 我们评估Quarkus两年前,现在我们的团队有了更多的经验。Quarkus是kubernets本地Java堆栈,专为OpenJDK HotSpot和GraalVM.在过去的两年中,Quarkus连接了Java世界中最优秀的库,并简化了代码配置,为我们的团队提供了非常好的开发人员体验。Quarkus具有非常快的启动时间(几十毫秒)和低RSS内存占用;这是因为它container-first构建方法:它使用提前编译技术在编译时进行依赖项注入,从而避免了反射的运行时成本。我们的团队也不得不忍受这种权衡:Quarkus在我们的管道上构建需要将近10分钟;一些依赖于注释和反射的特性(如ORM和序列化器)也受到了限制。这些权衡的一部分是使用GraalVM的结果。因此,如果您的应用程序不是针对FaaS运行的,那么使用带有HotSpot的Quarkus也是一个不错的选择。

  • 如果我们想要动画反应本地应用程序,React Native Reanimated 2.0这是一条正确的道路。我们之前有Reanimated 1。x,但它有与Reanimated声明性语言的复杂性相关的问题,也有一些额外的性能成本,与初始化和React Native JavaScript线程与UI线程之间的通信相关。Reanimated 2.0尝试重新想象如何在UI线程中运行动画;它允许我们用JavaScript编写动画代码,并使用一个新的API调用UI线程来运行它们动画worklets.它通过在UI线程上生成一个次级JavaScript上下文来实现这一点,然后该线程就能够运行JavaScript函数。我们在React Native项目中使用它,这个项目需要动画,非常喜欢它。

  • 反应查询通常被描述为React缺少的数据获取库。在许多React应用程序中,获取、缓存、同步和更新服务器状态是一种常见的需求,尽管这些需求很容易理解,但要正确实现是非常困难的。React Query使用钩子提供了一个简单的解决方案。作为应用程序开发人员,您只需传递一个解析数据的函数,而将其他一切留给框架。我们喜欢它开箱即用的工作方式,但仍在需要时提供大量配置。不幸的是,React Native还没有开发工具,但这些开发工具确实有助于理解框架的工作原理,这对刚接触React Native的开发人员是有利的。根据我们的经验,该框架的第3版带来了在我们的客户端生产中使用所需的稳定性。

  • 我们的开发人员一直保持高效顺风CSS并对其与大型团队和代码库的伸缩能力印象深刻。顺风CSS为CSS工具和框架提供了一种替代方法,通过低级实用CSS类降低了复杂性。Tailwind CSS类可以很容易地定制,以适应任何客户的视觉识别。我们还发现它与无头UI.顺风CSS允许您避免自己编写任何类或CSS,这将导致更易于长期维护的代码库。看起来,Tailwind CSS在可重用性和定制性之间提供了正确的平衡,以创建可视化组件。

  • 自从我们第一次提到TensorFlow Lite在2018年的雷达中,我们已经在几个产品中使用了它,很高兴地报告,它像广告中说的那样工作。标准的用例是将预先训练过的模型集成到移动应用程序中,但TensorFlow Lite也支持设备上的学习,这打开了应用程序的进一步领域。网站上的大量示例展示了许多常见的应用领域,如图像分类和目标检测,也暗示了新的交互方式使用,如姿势估计和手势识别。

  • 我们第一次提到的Three.js在2017年的雷达评估中。从那时起,这个用于web的3D渲染库得到了迅速的发展和改进。标准的WebGL api得到了改进,Three.js增加了对WebXR的支持,使其成为一种创建沉浸式体验的可行工具。与此同时,浏览器对3D渲染和WebXR设备api的支持也得到了改进,这使得网络成为一个越来越有吸引力的3D内容平台。虽然还有其他的3D渲染库,但我们的团队更喜欢Three.js,特别是当与三种纤维反应抽象掉一些低级的细节。我们发现开发人员仍然需要注意性能问题,有时需要重组数据以优化渲染速度。

  • 在创建用户界面时SwiftUI,其思想是构建一个可以轻松映射到用户界面元素的视图模型。在这种情况下,大多数测试都可以在模型上完成,使用标准的单元测试框架,使这些测试易于编写并快速运行。为了测试模型和视图之间的绑定,开发人员通常使用XCUITest,一个测试自动化框架,它启动整个应用程序并远程控制接口。它可以工作,测试相当稳定,但它们需要很长时间来运行。

    想要更快地为SwiftUI编写单元测试,请尝试ViewInspector,这是一个开源框架,使用Swift的公共反射API来访问由Swift创建的底层视图。使用ViewInspector,测试只需实例化一个SwiftUI视图,定位需要测试的接口元素,然后对它们进行断言。基本的互动,如点击,也可以测试。与许多UI测试框架一样,它通过在视图层次结构中指定路径或使用一组finder方法,提供了一个API来定位接口元素。这些测试通常比xcuitest更简单,而且运行速度更快。不过,需要注意的是,考虑到使用ViewInspector编写测试很容易,您可能会对接口进行过度测试。测试简单的一对一映射只是复式记账法。即使ViewInspector使测试SwiftUI代码变得更容易,也要记住在模型中保留大部分逻辑。

  • Vowpal Wabbit是一个通用的机器学习库。尽管它最初是在Yahoo!十多年前的研究,我们仍然想提它,以强调,它仍然是许多最新的机器学习技术最先添加的地方。如果你对机器学习感兴趣,你可能会想要关注Vowpal Wabbit的创新。还请注意,微软近年来对Vowpal Wabbit表现出了更深的兴趣,聘请了一个主要贡献者,并将其集成到他们的Azure产品中,例如在他们的机器学习设计而在个性化

  • 糟了!是GoLang的一个超级性能的结构化日志库,比标准的Log实现和其他日志库更快。Zap有一个“漂亮的”日志记录器,提供结构化的和printf风格的接口,以及(甚至)只用结构化接口更快的实现。我们的团队已经大规模地使用了它,并且很乐意推荐它作为他们的首选解决方案。

评估

  • 无头UI这两者是否都有一个无样式的组件库React.jsVue.js来自创造的同一群人顺风CSS.我们的开发人员喜欢这样,他们不需要定制或围绕其他组件库附带的默认样式工作。组件丰富的功能和完全的可访问性,结合无障碍的样式,允许开发人员更高效地关注业务问题和用户体验。Headless UI也与Tailwind的CSS类很好地结合在一起。

  • InsightFace是一个开源的2D和3D深面分析工具箱,主要基于PyTorch和MXNet。InsightFace使用了一些最新和准确的人脸检测、人脸识别和人脸对齐方法。我们对它特别感兴趣,因为它有最好的ArcFace实现之一,ArcFace是一种先进的机器学习模型,可以检测两幅图像的相似性。InsightFace在ArcFace上获得了99.83%的准确率标签面孔在野外(LFW)数据集。我们正在对它进行面部重复数据删除的实验,已经看到了很有希望的结果。

  • 凯特是一个用于执行时间序列分析的轻量级框架,最近由Facebook Research发布。时间序列分析是数据科学的一个重要领域;它包括预测、检测(包括检测季节性、异常值和变化点)、特征提取和多元分析的问题域。通常,在时间序列分析中,我们倾向于为不同的技术使用不同的库。Kats的目标是成为时间序列分析的一站式商店,并为所有时间序列分析问题领域提供一套算法和模型。之前我们提到过先知这是Kats用来预测的模型之一。我们期待在涉及时间序列分析的问题中尝试Kats。

  • 如果您正在使用Apache卡夫卡构建流处理应用程序,ksqlDB是一个很棒的框架,用于使用类似sql的语句编写简单的应用程序。ksqlDB不是传统的SQL数据库。然而,它允许您使用轻量级的sql类语句来构建新的Kafka在现有Kafka主题之上。查询可以提取数据(类似于从传统数据库读取数据),或者在发生增量更改时将结果推入应用程序。你可以选择把它作为独立服务器作为现有Apache Kafka安装的一部分,或者作为Confluent云上一个完全托管的服务。我们在简单的数据处理用例中使用ksqlDB。在更复杂的用例中,应用程序需要代数SQL查询之外的编程代码,我们继续使用数据处理框架,例如Apache火花Apache Flink在卡夫卡之上。我们建议在应用程序简单性允许的情况下使用ksqlDB。

  • 高偏振星内存中的数据框架库实现在生锈.与其他数据帧(如Pandas)不同,Polars是多线程的,对于并行操作来说是安全的。内存中的数据组织在Apache箭头格式为有效的分析操作,并使互操作性与其他工具。如果您熟悉Pandas,您可以快速开始使用Polars的Python绑定。我们相信,使用Rust实现和Python绑定的Polars是一个性能良好的内存数据框架,可以满足您的分析需求。

  • PyTorch几何是一个几何深度学习扩展库PyTorch.几何深度学习的目标是建立可以从非欧几里得数据(如图表)中学习的神经网络。基于图网络的机器学习方法在社交网络建模和生物医学领域,特别是在药物发现方面越来越受到关注。PyTorch geometry提供了一个易于使用的库,用于设计复杂的图网络问题,如蛋白质结构表示。它支持GPU和CPU,并基于最近的研究,包括一个很好的基于图的机器学习算法集合。

  • 微前端自首次推出以来,一直广受欢迎。然而,它很容易陷入微前端无政府状态如果团队不能在应用程序之间保持一致性,从样式技术到状态管理。乾坤是一个JavaScript库,它为这个问题提供了开箱即用的解决方案。是以乾坤为基础的single-spa,因此它允许不同的框架在单个应用程序中共存。它还提供了样式隔离和JavaScript沙箱,以确保微应用程序的样式或状态不会相互干扰。乾坤在社区中受到了一定的关注;我们的团队也在评估它,希望它能支持更友好的调试。

  • 随着对web浏览器中3D和扩展现实(XR)应用程序的兴趣和可行性的上升,我们的团队一直在进行实验三种纤维反应在网上开发3D体验。React Three Fiber是一个库,它接受React.js组件和状态模型,并将其转换为使用Three.js图书馆。这种方法向已经熟悉React.js以及围绕它的丰富的工具和库生态系统的更广泛的开发人员开放了3D web编程。然而,当我们使用React Three Fiber开发应用时,我们的团队经常需要操作3D场景。这与React提供的响应式组件范例并不能很好地混合。我们必须了解基本的3D渲染机制。React Three Fiber是否提供了足够的抽象来保证学习它的特性,还是直接使用Three.js更好,目前还没有定论。

  • 金牛座的是一个电子使用组合构建桌面应用程序的另一种选择生锈工具和HTML, CSS和JavaScript在系统的WebView中呈现。与捆绑Chromium的Electron不同,使用Tauri构建的应用程序利用了底层的WebView,即macOS上的WebKit, Windows上的WebView2和Linux上的WebKitGTK。这种方法有一些有趣的权衡——一方面你得到了小而快速的应用程序二进制文件;另一方面,您需要验证不同系统的webview之间的兼容性。

  • Transloco是一个供Angular构建多语言应用的库。它可以在模板中使用,并提供一个功能来覆盖更复杂的用例。由于翻译是在运行时按需加载的,Transloco使得在web浏览器中实现语言切换变得很容易。它还涵盖了使用模板管道本地化数字、日期和更多内容。

持有

流入/流出
没有变化

找不到你想看到的东西?

每个版本的雷达功能光点反映了我们在过去六个月里遇到的情况。我们可能已经把你要找的东西以前的雷达了。我们有时会挑选一些东西,只是因为有太多的东西要谈。由于Radar反映的是我们的经验,而不是基于全面的市场分析,所以可能会有一个小问题。

找不到你想看到的东西?

每个版本的雷达功能光点反映了我们在过去六个月里遇到的情况。我们可能已经把你要找的东西以前的雷达了。我们有时会挑选一些东西,只是因为有太多的东西要谈。由于Radar反映的是我们的经验,而不是基于全面的市场分析,所以可能会有一个小问题。

雷达

下载技术雷达第25卷

英语|西班牙语|葡萄牙商业银行|中文

雷达

了解科技

现在就订阅

访问我们的档案,阅读以前的卷

Baidu