Facebook 开源安卓版 React Native,开发者可将相同代码用于网页和 iOS 应用开发
转自: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 应用开发的更多相关文章
- 《React Native 精解与实战》书籍连载「iOS 平台与 React Native 混合开发」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
- 看Facebook是如何优化React Native性能
原文出处: facebook 译文出处:@Siva海浪高 该文章翻译自Facebook官方博客,传送门 React Native 允许我们运用 React 和 Relay 提供的声明式的编程模型, ...
- React Native调试实用技巧,React Native开发者必会的调试技巧
在做React Native开发时,少不了的需要对React Native程序进行调试.调试程序是每一位开发者的基本功,高效的调试不仅能提高开发效率,也能降低Bug率.本文将向大家分享React Na ...
- react native 升级到0.31.0的相关问题 mac xcode开发环境
cmd + D和cmd + R快捷键没有反应 0.31.0版本换了一种加载方式,通过修改userDefaults达到debug目的 [userDefaults setObject:@"127 ...
- React Native指南汇集了各类react-native学习资源、开源App和组件
来自:https://github.com/ele828/react-native-guide React Native指南汇集了各类react-native学习资源.开源App和组件 React-N ...
- 配置React Native 安卓开发环境
配置主要分为以下几步: 安装node.js 安装AndroidStudio 安装React Native命令行工具 搭建React Native版本的Hello World,修改代码查看效果 第一步 ...
- [译] Facebook:我们是如何构建第一个跨平台的 React Native APP
英文原文(需FQ):https://code.facebook.com/posts/1189117404435352/ 早些时候,我们介绍过iOS版的React Native. React Nativ ...
- React Native初探
前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...
- React Native – 使用 JavaScript 开发原生应用
前不久,Facebook 在F8开发者大会上正式开源了 React Native 项目.不过目前只有 iOS 版,Android 版还需要再等一段时间,这是最新的用 JavaScript 语言开发原生 ...
随机推荐
- Java 基础(一)
Java不只是一种语言,更是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性.跨操作系统的可移植性以及自动垃圾收集等服务的执行环境. javaSE: 整个java技术的核 ...
- Linux查看进程内存占用及内存使用情况
LINUX进程内存占用查看方法(1)top可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:$ top ...
- SGU 154.Factorial
时间限制:0.25s 空间限制:4M 题意 你的任务是找到最小自然数 N, 使N!在十进制下包含 Q个零. 众所周知 N! = 1*2*...*N. 例如, 5! = 120, 120 结尾包含1个零 ...
- SGU 222.Little Rooks
题意: 求在n*n(n<10)的棋盘上放k个车(水平竖直行走)的方案数. Solution SGU220的简化版.直接DP 显然当k>n时,ans=0; f[i][j]代表在前n行放了j个 ...
- SGU 223.Little Kings
时间限制:0.25s 空间限制:4M 题意: 在 n*n(n≤10)的棋盘上放 k (k<=n*n)个国王(可攻击相邻的 8 个格子),求使它们无法互相攻击的方案数. Solution: 采用状 ...
- 第五篇、 WebSphere8.5的安装
一.前言 WebSphere Application Server 是IBM企业级应用服务器,与WAS6,WAS7相比较而言 WAS8发生了很大的改变,其安装介质和以前截然不同,该篇章中对于不同的安 ...
- java设计模式——单例(Singleton)模式
在某些场景,你需要找到一个承担职责的对象,并且这个对象是他所属类的唯一实例.此时可以使用单例模式. 单例模式的意图是为了确保一个类有且仅有一个实例,并为他提供一个全局的访问点.创建一个担当独一无二角色 ...
- Linux 系统命令及其使用详解(大全)
(来源: 中国系统分析员) cat cd chmod chown cp cut 1.名称:cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--versi ...
- Python Tutorial 学习(十)-- Brief Tour of the Standard Library
10.1. Operating System Interface os库 import os os.getcwd() # Return the current working directory 'C ...
- iOS · 安装RVM cocoaPods 及问题解决
一.安装RVM 1.RVM:ruby版本管理器,命令行工具 管理Ruby 开始安装吧~ 对!!就是这样换成taobao ⬇️ $ gem sources -l $ gem sources --remo ...