写点什么

PayPal 从 Java 切换到 JavaScript

  • 2013-12-03
  • 本文字数:1573 字

    阅读完需:约 5 分钟

已经决定使用 JavaScript 开发 Web 应用程序,从浏览器一直到后端服务器,并放弃了使用 JSP/Java 编写的遗留代码。

PayPal 技术总监 Jeff Harrell 在两篇博文中(解放我的UI 第一部分:Dust JavaScript 模板、开源等 PayPal 的 Node.js )解释了他们做出这一决定的原因,并对 Web 应用程序开发从 Java/JSP 切换到完全的 JavaScript/Node.js 技术栈的过程中所产生的若干结论进行了说明。

据 Harrell 说,PayPal 的网站已经积累了大量的技术债务,他们想要一种“可以使他们摆脱债务而又能带来更大产品灵活性和创新的技术栈”。最初,在使用 Web 技术的前端工程师和使用 Java 编码的后端工程师之间存在着巨大的鸿沟。当用户体验设计人员想草绘一些页面时,为了使它们运行,他们不得不要求 Java 程序员做一些后端编码。这与他们的精益用户体验开发模型不相符:

当时,我们的 UI 应用程序基于 Java 和 JSP,使用了一个无弹性、紧耦合而又难以快速行动的专有解决方案。我们的团队发现它与精益用户体验开发模型不相符,而且无法快速行动,因此,他们用脚本语言构建原型,与用户一起测试,然后将代码移植到产品栈中。

他们想要一个“从底层服务器技术解耦并能使 UI 设计独立于应用程序语言的模板 [解决方案]”,而且它可以工作在多种环境中。他们决定选用 Dust.js ——一个由 LinkedIn 支持的模板框架——,再加上 Twitter 的 Bootstrap Bower ,后者是一个面向 Web 的包管理器。之后又加入了 LESS RequireJS Backbone.js Grunt Mocha 等其它部分。

PayPal 的部分页面已经经过重新设计,但他们仍然还有部分页面使用遗留技术栈:

……我们有 C++/XSL 和 Java/JSP 两个遗留技术栈,随着继续推进,我们不打算留下这些 UI。JavaScript 模板是理想之选。在 C++ 技术栈上,我们构建了一个使用 V8 引擎执行 Dust 本地渲染的库——其速度惊人的快!在 Java 端,我们使用 Spring ViewResolver 和 Rhino 集成 Dust 来渲染页面。

当时,他们还开始用 Node.js 进行新页面的原型设计,并认为它“非常巧妙”,进而决定在生产环境对其进行试用。为了达到这一目的,他们还构建了 Kraken.js ,这是一个位于以 Node.js 为基础的 Web 框架 Express 之上的 “约定层”。(PayPal 最近开源了 Kraken.js。)第一个使用 Node.js 完成的应用程序是账户概览页,据 Harrell 说,该页面是 PayPal 的一个最经常访问页面。但是,由于担心 Node.js 应用程序可能扩展性不好,他们决定创建一个等效的 Java 应用程序,一旦 Node.js 应用程序不能正常运行,就可以回退到 Java 应用程序。下面是关于两种应用程序开发所需工作量的几个结论:

Java/Spring

JavaScript/Node.js

设置时间

复制代码
2 个月

开发

大约 5 个月

大约 3 个月

工程师

5

2

代码行数

未说明

未说明,占 Java 应用程序的 66%

JavaScript 团队需要两个月的时间进行基础设施的初始设置,但他们创建具有相同功能的应用程序用人更少、耗时更短。他们在生产环境硬件上运行测试套件,得出的结论是 Node.js 应用程序的性能要优于 Java 应用程序:

Node.js 应用程序每秒服务的请求数是 Java 应用程序的两倍。更为有趣的是,在最初的性能结果的产生过程中,Node.js 应用程序使用了单核,而 Java 应用程序使用了五核。我们打算进一步增大这种差异。

而且:

对于同一页面,Node.js 应用程序的平均响应时间减少了 35%。这使得页面提供时间快了 200 毫秒——用户可以明显地感觉到这种变化。

结果,PayPal 开始在生产环境中使用了尚处于测试阶段的 Node.js 应用程序,并决定“今后所有面向客户的 Web 应用程序均基于 Node.js 构建,”,而现有的部分应用程序也将迁移到 Node.js。

据 Harrell 说,从浏览器到服务器都使用 JavaScript 的一个好处是,形成了一个“允许我们在技术栈的任何层次理解和响应用户需求”的团队,消除了前端开发与后端开发之间的鸿沟。

查看英文原文:**** PayPal Switches from Java to JavaScript

2013-12-03 07:0511453
用户头像

发布了 256 篇内容, 共 86.1 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

头脑风暴利器!10款超实用的思维导图软件,助你脑洞大开!

彭宏豪95

思维导图 头脑风暴 在线白板 办公软件 思维导图软件

实例讲解数据库的数据去重

不在线第一只蜗牛

数据库 架构 系统架构 系统

软件开发全套资料整理下载(投标支撑,立项,研发,测试,实施维护,安全监测,服务巡检,结项,验收支撑)

代码人,代码魂

软件测试/测试开发丨接口自动化学习笔记——响应体断言

测试人

软件测试 接口测试

Macos视频下载工具:Downie 4 支持M1

彩云

视频下载 downie 4

重庆上百位老师和学生,正在使用这个国产操作系统

OpenCloudOS

Linux 操作系统

冬天的第一份惊喜,是小艺给的!

最新动态

COSCon'23|Sermant亮相2023第八届中国开源年会,共赢数智时代

华为云开源

开源项目 微服务治理 sermant

【云栖2023】林伟:大数据AI一体化的解读

阿里云大数据AI技术

大数据 AI

AutoCAD 2024 中文版 附 完整图文安装激活教程 支持M1

彩云

mac软件下载 AutoCAD 2024

立冬礼物已送达,小艺陪你开启“暖冬”模式

最新动态

全方位监控基础设施,坚实守护您的业务稳定!

观测云

监控 基础设施 网络

实例详解构建数仓中的行列转换

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

如何使用 GTX750 或 1050 显卡安装 CUDA11+

北桥苏

PyTorch cuda cudnn

加密货币交易软件开发:树立行业新标准

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

少林寺方丈释永信造访 Meta 总部;OpenAI 正在摧毁创业公司?丨 RTE 开发者日报 Vol.80

声网

浅议特权账号防护措施

尚思卓越

网络安全 数据安全 特权账号管理

程序员这个职业未来会消失吗?

高端章鱼哥

编程 程序员 AI编程

如何 Get 字节跳动同款云原生大数据平台

字节跳动云原生计算

大数据 云原生

风口过后,该重新关注软件内在质量了

neverwinter

程序员 互联网 软件工程 软件质量 软件研发

软件测试/测试开发丨接口自动化学习笔记——请求方法构造

测试人

软件测试 接口测试

前端常用的开发工具有哪些?

互联网工科生

前端框架 前端开发工具 JNPF

Linux centos 安装nodejs完整教程 详细到不能再详细了

javaNice

Java Linux nodejs

数据赋能业务,神州数码HR数字画像荣获2023HRoot人力资源管理卓越实践奖

科技热闻

杭州悦数出席 2023 云栖大会计算巢专场,分享云上最佳实践

最新动态

Linux centos 安装docker

javaNice

Java Docker Linux

HarmonyOS应用开发

不在线第一只蜗牛

华为 架构 系统 HarmonyOS

第三方数据测评对比五大品牌HTTP代理!哪家代理最纯净稳定

Geek_bf375d

PayPal从Java切换到JavaScript_Java_Abel Avram_InfoQ精选文章