10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:0511857
用户头像

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

关注

评论

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

python采集评论区内容

BROKEN

三周年连更

Matlab实现Non-Local Means算法

袁袁袁袁满

三周年连更

云安全技术管理

阿泽🧸

云安全 三周年连更

区块链技术是什么?比特币又是什么?硕士是区块链研究方向,就业怎么办?

千与编程

区块链+ 研读版

Java HashMap 的常用方法,Java工程师必知!

Java架构历程

Java hashmap 三周年连更

ssh 连接Linux确实很安全,这6种身份验证方法很强!

wljslmz

Linux SSH 三周年连更

2023-05-02:如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。 给你一个正整数 n ,请你返回区间 [1, n] 之间特殊整数的数目。 输入:n = 20。 输出:19。

福大大架构师每日一题

Go 算法 rust 福大大

分布式事务的21种武器 - 3

俞凡

架构 云原生

通过ChatGPT来写论文

石云升

AIGC ChatGPT 三周年连更

Haproxy进阶管理:命令行控制后端节点上下线

乌龟哥哥

三周年连更

徒手体验卷积运算的全过程 | 社区征文

迷彩

Python 深度学习 卷积 三周年征文 三周年连更

Angular 服务器端渲染两个相关的 SERVER_REQUEST_URL 和 SERVER_REQUEST_ORIGIN

汪子熙

前端开发 angular 三周年连更

如何用 python 设计一个兑奖程序?

海拥(haiyong.site)

三周年连更

手撕代码系列(四)

Immerse

JavaScript 面试 前端面试题 ES6基础知识点总结

为什么有些前端一直用 div 当按钮,而不是用 button?

海拥(haiyong.site)

三周年连更

Mac M1 8G丐版尝试本地部署Stable Diffusion

IT蜗壳-Tango

三周年连更

数据湖技术Iceberg和Hudi的比较

漫长的白日梦

数据湖 iceberg Hudi

【Python实战】Python采集情感音频

BROKEN

三周年连更

自然语言处理_AI文本翻译

DS小龙哥

三周年连更

OpenHarmony应用TS&JS编程指南

鸿蒙之旅

OpenHarmony 三周年连更

Matlab凸优化算法

袁袁袁袁满

三周年连更

Go语言开发小技巧&易错点100例(七)

闫同学

三周年连更

Mac M1 安装SD(上)

IT蜗壳-Tango

三周年连更

Python语法基础快速回顾

timerring

Python

2023-05-01:给你一个整数 n , 请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...] 中找出并返回第 n 位上的数字。 1 <= n <=

福大大架构师每日一题

golang 算法 rust 福大大

ChatGPT 将如何影响编程行业?程序员是被将被替代? | 社区征文

格斗家不爱在外太空沉思

ChatGPT 三周年征文

高级视频编码器性能对比(H265、VP9、AV1)

轻口味

音视频 视频编解码 三周年连更

Java Collection与Map详解

timerring

Java

Linux 文件与目录管理

鸿蒙之旅

Linux 三周年连更

Go语言开发小技巧&易错点100例(六)

闫同学

三周年连更

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