转自: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. hdu 4502吉哥系列故事——临时工计划 (简单DP)

    Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只 ...

  2. [LeetCode OJ] Gas Station

    问题描述: There are N gas stations along a circular route, where the amount of gas at station i is gas[i ...

  3. Unable to load configuration. - bean - jar: ....struts2-core-2.1.8.1.jar!/struts-default.xml:47:178

    摘录的异常代码: 2013-12-14 22:42:07 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error严重: Dis ...

  4. SAE flask及其扩展 bug指南

    1. ImportError: No moudle named ext.bootstrap 导入依赖包失败 SAE会提供一种机制通过导入virtualenv.bundle来解决 此处有坑:官网文档中说 ...

  5. unix 环境高级编程 读书笔记与习题解答第四篇

    第一章 第六节 第一小节 这一章没有程序设计和API方面的深入学习,而是注重介绍了unix操作系统中的原始数据类型和系统原型函数,错误处理方面的知识. ____unistd.h____ 该文件包含了u ...

  6. Python Tutorial 学习(六)--Modules

    6. Modules 当你退出Python的shell模式然后又重新进入的时候,之前定义的变量,函数等都会没有了. 因此, 推荐的做法是将这些东西写入文件,并在适当的时候调用获取他们. 这就是为人所知 ...

  7. SVN 使用的简单整理

    1. 在SVN服务器上创建存储Dir,并和个人主机建立联系.      现在SVN服务器上创建一个存储文件夹svn_storeDir.然后在个人电脑上建立一个本地文件夹local_Dir.    进入 ...

  8. 发送邮件(E-mail)方法整理合集

    在IOS开发中,有时候我们会需要用到邮件发送的功能.比如,接收用户反馈和程序崩溃通知等等.其实这个功能是很常用的,因为我目前就有发送邮件的开发需求,所以顺便整理下IOS发送邮件的方法. IOS原生自带 ...

  9. 安装 mysql server

    三个月前向公司申请了一台服务器单独给我用,作为部署我写的自动发布工具的服务器.同事不久前在我这台服务器上装了个数据库,今天上去查了一下,用不了,只有information_schema和test两个数 ...

  10. fix iis Running slow

    为什么写这个文章.因为我现在再找一个站点的访问原因..方法还是老方法.. 1. 站点是否真的挂了 a. 基本上全挂.所有请求非常缓慢或超时. b.大多数请求慢,但最终还是执行了.有可能 队列再排队 怎 ...