概要汇集,工程师亲述在

我们应该折中

Dart

Dart([KK] 英语发音:/dɑrt/, [DJ] 英语发音:/dɑ:t/)是一种基于类型的可选类型化编程语言,类似于Javascript。它是一种面向对象语言,由Google主导开发,于2011年10月公开。它的开发团队由Google Chrome浏览器V8引擎)团队的领导者拉尔斯·巴克(Lars Bak)所主持。

留给我们的主要工作是集成:允许我们的应用程序逐步转移到Type,而无需从头开始重写。我们在与Google的构建系统集成时非常谨慎,我们采用了渐进式编译,这对大型应用程序至关重要;而且一个模块中的变更不会影响使用了该模块的API,也不会导致下游模块需要重新编译。

GWT

Google Web Toolkit (GWT) 是一种开源 Java 软件开发框架,可以使不会使用第二种浏览器语言的开发人员编写 Google 地图和 Gmail 等 AJAX 应用程序时更加轻松。GWT 可在使您避免这些麻烦的同时,还为您的用户提供同样的与标准兼容的动态体验。您只需使用 Java 编程语言编写您的前端,GWT 编译器会将您的 Java 类转换为与浏览器兼容的 JavaScript 和 HTML。

我们工程师也会这么做:我们也会做出有趣的妥协,试图平衡不同的问题。我希望将来可以写更多关于多年来发现的一些有趣的小事。正如刚开始使用Type时我写下的这篇文章一样(

Polymer

http://www.polymer-project.org

代表了下一代Web框架的方向:一切皆组件,尽量减少代码量,尽量减少框架限制。

Polymer由加盟Google的原Palm webOS开发团队打造,是一套以“一切皆组件、最少化代码量、最少框架限制”为设计理念的Web UI框架。Web Components则提供了一种更彻底的解耦方式,更加方便了UI的开发和模块化,可以说是Polymer的基础之一。

 以前的dart webui库

 

 

以上可见google开发个的web应用库就很多了,从语言到界面等多个层面提供了解决的方式,我们根据具体的需求进行选择吧。

Google很早就开始做Web应用程序了。我简直无法相信Gmail发布已经14年了。在当时使用Java是非常疯狂的做法。Gmail的工程师不得不担心IE糟糕的垃圾回收算法,他们需要手动将字符串文字从for循环中提取出来,以避免GC(Garbage
collection垃圾回收机制)停止工作。

AngularJS | Closure | Google Web Toolkit | Dart | Polymer

谷歌很早就开始做Web应用程序

angularjs

 

 

 

 

使用AngularJS构建大型Web应用

 

AngularJS 自集成了模板,不能使用第三方的——不过你仍然可以 Jade 之类的模板进行预编译,以简化书写。
与一些 MDV Model Driven Views同类相比(Facebook 有 React;Google 另外还有 Dart、Polymer;Mozilla 有 X-Tag),我认为 AngularJS 胜在可用和易于测试这两方面。

 Are you doing heavy DOM manipulation? I would use jquery and backbone

 Very data driven app? Angular with it’s nice data binding

 Game programming? none, direct to canvas, maybe a game engine

 

  Top JavaScript MVC Frameworks 

Google的Java技术栈也存在一些问题。linter的渐进式发展表明了Closure只不过是个拥有静态类型的Java,其中新功能是通过注释引入的。

Closure 

如Closure Compiler(用于生成紧凑且高性能代码的工具)、Closure Templates(用于动态生成HTML)、Closure Linter(JavaScript风格检查器)及Closure Stylesheets(对CSS的一套扩展)

我们构建的应用类型(Google搜索页面每天可以获得数十亿次点击)与其他人构建的web应用程序不同,我们的工具既优秀又很有必要性。我非常赞同这种观点。

NPM统一了工具和库的共享方式。Webpack可以在开发期间,将模块动态地切换到正在运行的应用程序中。

Google的Java堆栈非常棒。有了它的帮助,Google才能编写并维护可以改变互联网的web应用程序。(还记得Google地图发布时,多么令人震惊吗?如今制作一个可以拖拽的地图小部件似乎非常简单。)

Google一概没有用到这个技术。Google的那些经验丰富的Web开发人员像是生活在另一个时间线中。我们有像SASS这样的CSS预处理语言,但它不是SASS而且没有人喜欢它。精心设计的块分割程序并不能真正支持第三方Java库,部分原因是这些工具的出现早于Java的库生态系统。

接下来我们该何去何从

作为PL爱好者,我非常喜欢这个想法。我想仔细分析一下这个想法,但是这篇文章已经够长了,而且我认为已经有很多关于这方面讨论的文章了。

Google地图的一些技术甚至超越了当今最好的技术。例如,Closure编译器可能仍然是最复杂的Java优化程序,它能够执行很多操作,例如利用类型信息优化代码,跨越热加载的块的边界进行函数内联,以及在符号层次删除未使用的代码等。

第一个诱人的选择就是放弃眼前的一切,并从头开始建造一个没有Java的新世界。如果我们投入更多精力到GWT(一个将Java编译成Java的Google项目)或Dart(一个将新语言编译成Java的Google项目)或WASM,或者你最喜欢的语言:Clojure?Haxe?还是Elm?那么我们根本不需要担心Java!

我认为在权衡利弊的时候,有一种看法认为建立我们自己的工具很有道理,而另一种看法则认为我们已经远离主流,我们的工具是一种负担。

最后导致今天大多数的Web工具都是用Java编写的,尽管Google习惯用Java构建这种工具。模块系统(UMD、AMD、CommonJS)迅速发展。(随之出现了ES6,并发明了自己的模块系统,但是由于某种原因它与其他所有模块系统不兼容,唉!)

为了Google的Java世外桃源重回大陆,我们要做的第一步是:采用了一个支持良好的静态检查器:(1)不是我们自己做的;
(2)很流行,同时与我们现有的代码相似;(3)旨在搭建通往Java的桥梁;(4)旨在支持大规模的开发,这才是我们定制工具的根本原因。而这个工具就是Type。

所以,我觉得我们应该折中,这也是我们的团队一直在追求的道路:逐步采用一些合理的外部工具,并弄清楚这些工具如何才能与我们现有的代码库相互合作。

因为Type已经很好用了——毕竟只有这样我们才会采用它——所以我们获得了许多采用已有语言的好处,比如IDE风格的代码自动补齐,以及能够从StackOverflow获取答案。

style=”font-size: 16px;”>【CSDN编者按】多年来,Google为了开发大型Java应用程序而构建了大量基础架构。

style=”font-size: 16px;”>今天,就来听听在Type上工作了两年多的Google软件工程师Evan
Martin,对此有什么心得体会吧!

style=”font-size: 16px;”>原文:

作者:Evan
Martin,Google的软件工程师。

译者:弯月,责编:胡巍巍 class=”backword”>返回搜狐,查看更多

发表评论

电子邮件地址不会被公开。 必填项已用*标注