转自:http://mt.sohu.com/20150915/n421177212.shtml

  

  

  Facebook 创建了React Java 库,这样,Facebook 的工程团队就可以用相同的代码给iOS、安卓和网页开发界面了。现在,Facebook 通过开源 React“三部曲”中的最后一部分—— 安卓版 React Native (React Native For Android),将应用开发的超级力量赋予每个人。

  Facebook 先是在 2013 年将 React 开源,接着又在今年初的F8 开发者大会上将 React Native 开源。但是,Android 版本意味着,熟悉 React 技术的工程师将可以为每个主要平台开发应用了。如此一来,创业公司和大型科技公司就不必像现在这样拥有那么多工程师了,也不必再为招聘精通iOS 和安卓开发技术的工程师而感到担忧了——iOS 和安卓是两种截然不同的代码库。反过来,这又可以帮助加快团队开发新功能的步伐,进而缩短从iOS 版发布到植入安卓平台之间的时间。

  今天,在一年一度的@Scale 大会上,Facebook 宣布将开源安卓版 React Native 。来自 Facebook、Twitter、谷歌、Box、Pinterest 和微软等公司的 1800 名高管和工程师齐聚本次大会,就如何改善他们的工程和基础设施进行合作。与会的公司们已总计对 4500 多个开源项目做出了贡献。

  为何选择开源?

  大家或许想知道,Facebook 为何要送出一份像 React 这样强大技术的礼物呢?毕竟,Facebook 完全可以自己利用这项技术,在与其他社交网站竞争时在工程方面获得优势地位。对此,Facebook 工程经理汤姆·奥基诺(Tom Occhino)给出了以下三个主要原因:

  社区贡献——“从功能到漏洞查找,开发者社区对我们公司的发展做出了重大贡献。” 人才招聘——“人们确实有兴趣学习像 Facebook 等大平台采用的技术。人们很高兴加入打造这种技术的团队中。” 吸引工程师加盟——“这让有意加盟 Facebook 的每一位工程师占据了先机,因为他们已经了解了我们的构架。”

  基本上,Facebook 通过开源得到的东西远远超过失去的东西,同时还显示出它无私的一面,毕竟这种举动与 Facebook 连接世界的愿景相符。奥基诺说:“单凭 Facebook 一家公司的力量无法开发所有的软件。我们能做的最好的事情就是,向开发者提供工具,让他们进一步推进这一使命。”

  “一次学会,到处可用”

  长期以来,跨平台开发的“圣杯”始终是“一次编码,到处运行”(code once, run anywhere),但是,由于网页、iOS、安卓等平台之间存在着重大不同,这一目标根本无法实现。但是,React 在三个平台中植入了一个抽象层(level of abstraction),这样,你只要一次学会 React,就可以到处编写应用了。

  举例来说,今年早些时候 Facebook 给iOS 和安卓两大平台开发了一款原生 Ads Manage 应用,得益于 React 技术,开发时间仅仅是之前预期的一半。Facebook 原本预计开发这款应用的时间为 18 个月,但它用时 5 个月开发出了iOS 版应用,然后又在 3 个月内将其移植到安卓平台。

  这项技术还能让 Facebook 重拾“快速行动”(Move fast)的理念,这种理念还是在 Facebook 只是一个完全基于网页的平台时提倡的,当时它不断发布代码,测试新功能。随着 Facebook 开始拥抱移动时代,它不得不对工程团队做出分工,让不同的专家从事网页端、iOS 和安卓等三个平台的应用开发。

  Facebook 工程经理奥利维亚·比肖普(Olivia Bishop)告诉我,没有 React 技术,“应用很难快速迭代,因为每次你做出调整的时候,都必须重新编译应用,将它放在设备上进行测试。”由于代码可以重复利用,React 可以大大节省应用迭代时间。

  一旦开发者社区熟悉了 React Native 的用法,它可以让“精益创业”(lean startup)的理念更易于执行。所有开发者并不是牺牲跨平台支持或是因为对现状不满而试水新的操作系统,相反,他们可以迅速看到应用的运行机制。当他们用 React 发现了有问题的东西后,也可以用它来改进 Facebook 的体验。

  Facebook 工程主管亚当·沃夫(Adam Woff)最后表示:“我将开源比作进化或腐蚀这样的长期进程。随着时间的推移,一定会获得回报的——我们对开源的投资可以确保软件保持相关性。”让软件始终留在一家公司,可以导致危险的迭代停滞。“随着时间推移,这种固步自封的做法会破坏专属软件堆栈,对公司带来伤害。”

  翻译:皓岳

  Facebook Open Sources React Native For Android So Devs Can Reuse Code Across Web And iOS

Facebook 开源安卓版 React Native,开发者可将相同代码用于网页和 iOS 应用开发的更多相关文章

  1. 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  2. 看Facebook是如何优化React Native性能

    原文出处: facebook   译文出处:@Siva海浪高 该文章翻译自Facebook官方博客,传送门 React Native 允许我们运用 React 和 Relay 提供的声明式的编程模型, ...

  3. React Native调试实用技巧,React Native开发者必会的调试技巧

    在做React Native开发时,少不了的需要对React Native程序进行调试.调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率.本文将向大家分享React Na ...

  4. react native 升级到0.31.0的相关问题 mac xcode开发环境

    cmd + D和cmd + R快捷键没有反应 0.31.0版本换了一种加载方式,通过修改userDefaults达到debug目的 [userDefaults setObject:@"127 ...

  5. React Native指南汇集了各类react-native学习资源、开源App和组件

    来自:https://github.com/ele828/react-native-guide React Native指南汇集了各类react-native学习资源.开源App和组件 React-N ...

  6. 配置React Native 安卓开发环境

    配置主要分为以下几步: 安装node.js 安装AndroidStudio 安装React Native命令行工具 搭建React Native版本的Hello World,修改代码查看效果 第一步 ...

  7. [译] Facebook:我们是如何构建第一个跨平台的 React Native APP

    英文原文(需FQ):https://code.facebook.com/posts/1189117404435352/ 早些时候,我们介绍过iOS版的React Native. React Nativ ...

  8. React Native初探

    前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...

  9. React Native – 使用 JavaScript 开发原生应用

    前不久,Facebook 在F8开发者大会上正式开源了 React Native 项目.不过目前只有 iOS 版,Android 版还需要再等一段时间,这是最新的用 JavaScript 语言开发原生 ...

随机推荐

  1. corejava_chap02

    //单行注释  --不能用在一行代码的中间/**/多行注释 --任何地方/** */文档注释  文档注释用在:package.class.member variables.member method. ...

  2. set,multiset容器类型

    set和multiset会根据特定的排序准则,自动将元素排序.两者不同处在于multiset允许元素重复而set不允许. 一.集和多集(set 和multiset 容器类) 在使用set和multis ...

  3. POJ 1734.Sightseeing trip (Floyd 最小环)

    Floyd 最小环模板题 code /* floyd最小环,记录路径,时间复杂度O(n^3) 不能处理负环 */ #include <iostream> #include <cstr ...

  4. javascript——面向对象程序设计(2)

    <script type="text/javascript"> //1.理解原型对象 //2.原型与in操作符 //3.更简单的原型语法 //4.原型的动态性 //5. ...

  5. 兼容IE6的页面底部固定层CSS代码

    有时候当我们需要把一个元素固定在页面的某个部位,一般都是用css中的“position:fixed;”方法来解决,但是IE6不支持fixed,所以今天分享一个兼容IE6的页面底部固定层CSS代码.如下 ...

  6. JQUERY1.9学习笔记 之可见性过滤器(二) 可见选择器

    描述:选择所有可见的元素. 例:点击时让所有的可见的div元素变黄. <!doctype html><html lang="en"> <head> ...

  7. mysql中显示方式的切换

    1. mysql中如果使用\G,则':'不用写.如果\G后面跟':'则会报"error:no query specified"错误.请知晓. 2. mysql在登陆时,mysql ...

  8. Linux删除用户

    删除用户 # userdel abc 该删除操作将用户删除但保留用户的home文件夹和邮件文件夹.并且当用户abc正在登录的时候,删除操作将失败,如下: # userdel abc userdel: ...

  9. apt-cache madison package-name

    apt-cache madison package-name 搜索软件有那些可用版本,

  10. 显示Mac电脑下的隐藏文件

    1. 在应用程序里打开终端, cd 你的文件夹名 ls -a 即可显示该文件夹下的所有隐藏文件 2. 如果你想打开整个系统的隐藏文件可以在终端下输入以下命令 defaults write com.ap ...