Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Google+ Technological Details

Google+ Technological Details

This item in japanese

Google Plus, the social network from Google, is built mostly on Java and JavaScript while Hangouts, its video conferencing framework, uses a client-server approach.

Google Plus or Google+, the long awaited social network from Google, has recently made its debut, being available to a limited number of users based on invitation. The project started in early 2010 and it was done behind the scenes with little or no information available on its underlying technology. Joseph Smarr, a technical lead on Google+ and former CTO at Plaxo, unveiled some of the network’s technical details in an AnyAsk interview without being very specific. We contacted Smarr for further detail on Google+’s architecture, but he declined to offer more information, promising more will be released in the not-so-distant future.

According to Smarr, Google+ uses Java with Guice on the server side and lots of JavaScript on the client side for the UI based on the open source cross-browser Closure framework. Closure is a set of tools for JavaScript developers who want to write rich web applications, and it is used by Google for GMail, Maps and Docs. It is interesting that Google did not choose to employ GWT, which is used for Wave and AdWords, a technology that is targeted more to Java developers rather than JavaScript ones. The HTML5 History API is added in order to “maintain pretty-looking URLs even though it's an AJAX app (falling back on hash-fragments for older browsers)”, and the Closure templates are often rendered on the server so that “the page renders before any JavaScript is loaded, then the JavaScript finds the right DOM nodes and hooks up event handlers, etc. to make it responsive.” Smarr further explains:

The cool thing about Closure templates is they can be compiled into both Java and JavaScript. So we use Java server-side to turn the templates into HTML, but we can also do the same in JavaScript client-side for dynamic rendering. For instance, if you type in a profile page URL directly, we'll render it server-side, but if you go to the stream say and navigate to someone's profile page, we do it with AJAX and render it client-side using the same exact template.

The back-end is built on BigTable and Colossus, Google’s file system used for real-time search.

Smarr acknowledges that the Google+ team learned from others, both from Google and other companies, and they are “’standing on the shoulders of giants’ in many ways, learning both from our previous social products and the industry at large”, perhaps referring to Facebook and Twitter, and the product looks in many ways like Facebook.

Google+ Hangouts is an online cloud video conferencing platform based on XMPP, Jingle, RTP, ICE, STUN, SRTP, and which has taken a completely different approach than Skype which uses a P2P network. Hangouts is a client-server/cloud technology that heavily relies on Google’s infrastructure. There is no data available on how much resources Hangouts consume, but it is expected to be a lot. All of that in order to provide low-latency (<100ms) for smooth group communication.

Hangouts requires the same plug-in as Google Talk but they are working on moving it to WebRTC, a JavaScript-based framework for video communication, being open source and supported by Google, Mozilla and Opera. When WebRTC will be integrated in Chrome, there will be no need to download a plug-in for Hangouts if it is run inside Firefox, Opera or Chrome. At that time, Hangouts will be using the VP8 codec which is integrated in WebRTC instead of H.264 that it is using right now.

Christian Oestlien, PM on Google+, has revealed that Google prepares special features for businesses, such as analytics and integration with the other business accounts, but he declined being specific. He asked businesses to refrain from creating Google+ accounts now because they will be deleted, and rather wait until the features are ready.

Rate this Article