Having kids has been incredibly helpful in making me aware of the latest technology trends … like the Augmented Reality game Pokémon Go, which one of my daughters—an early adopter of whatever is "hot"—was playing well before it started trending in the news. (So I feel a little less like a fogey on that one.)
But technology trends can also be hard to track, even for someone like me who lives in the tech trenches all day, every day.
Thankfully, I have the privilege of regularly listening to developers discuss what they currently find particularly useful. Among web development technologies—which are critical to developing Internet of Things experiences—high marks are going to React.js. In fact, according to Stack Overflow’s 2016 developer survey, React.js is the top trending technology in the web dev category.
I was curious about this … particularly since I wasn't entirely sure what React is.
So I asked one of our local technology experts, Intel Principal Engineer Suresh Srinivas, for his take on it. Suresh has been an Intel software pioneer; last year he set—and met—the goal of writing 50 applications to help develop his knowledge and skills on the subject.
What is React.js?
React is an open source JavaScript client library by Facebook and Instagram for creating user interfaces.
Full stop.
Right there you know that React is going to be developed and backed by a lot of really smart developers. I've personally found that Facebook has hired the absolute best talent to work on the open source HHVM project, so it's no surprise that there would be interest. But also, Facebook is making it easy for developers to get JavaScript applications developed quickly for the client. For example, in this recent blog post, Facebook makes it super easy to write React apps. Walmart is another solid adopter, who have recently open sourced their Node.js/React.js framework called Electrode.
Additionally, a growing list of sites are using React. Take a look.
Why React.js?
Two key reasons:
First, creating interactive client apps in React is simple and declarative by design. When the data changes, React knows to update only the changed parts by calling the render method. It uses a concept called the Virtual DOM (Document Object Model) that selectively renders subtrees of nodes based upon state changes. React components implement a render method that takes input data and returns what to display.
Second, React code has a lot of portability. Normally, if you are an aspiring web company launching a new application, you need to write separate versions for iOS, Android and the browser. That triples the work—native iOS apps are written in Swift or Objective-C, while Android native apps are written in Java. The web browser version is often written using JavaScript and CSS, but again it's a separate version of the code.
With ReactNative, a separate project from React, you can take your understanding of writing React.js applications and produce both Android and iOS native versions. This is extremely powerful because you don't need to focus on being an expert in multiple languages, just JavaScript. ReactNative uses the same design as React, letting you compose a rich mobile UI from declarative components.
React today … innovate today
At Intel, accelerating client development is part of the virtuous cycle—a continuous loop of evolving technology-based innovations, opportunities and improvements that connect our billions of edge devices (smart phones, tablets, 2-in-1s) through a vast labyrinth of networks to the Cloud (where I spend a majority of my time) and back again; a cycle that results in ever-evolving experiences, many of which we have not yet imagined.
As more capable edge devices appear on the Internet, more networking and Cloud services are needed. And as the Cloud is populated with more and richer data, there is innovation and demand for edge devices that will use that data and create more.
I anticipate we will continue to see a strong pull for technologies that drive more and bigger Cloud and device innovations.
Want to stay up-to-date with the latest blog posts? Follow me on Twitter: @davest