How is Google + built?
Monday, 25 July 2011

Like it or loath it, Google + has been having a remarkable amount of success and was rolled out in a very short time. So how was it built?

Some of the answers come from a Q&A session with Joseph Smarr a technical lead on Google +.

"I helped design and build a lot of the circles model and sharing UI for Google+. I was recruited to Google to work on "getting social right" in early 2010."

Google + is built using fairly standard technology - Java Servlets on the server side and JavaScript on the client. The Guice dependency injection system was used on the server side.

On the client side the Closure framework and templates are used to create the UI and all of the code is run through the Closure "compiler" which is really a JavaScript optimizer.  The Closure templates are often processed server side so that the page is delivered ready built and all that is needed is JavaScrpt.

"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."

Given Closure is part of the recently closed Google Labs I think it is one of the projects that we can assume will be saved.

For modern browsers human readable URLs are maintained using HTML5's History API even though the system is mostly Ajax based. Older browsers present the URLS raw.

For the backend BigTable, a database that runs on the Colossus distributed file system (GFS2), seems to do most of the work.  BigTable isn't available outside of Google but you can make use of it as part of the Google App Engine. Google's Colossus distributed file system is essentially Google File System 2.


The missing Google technology in all of this is the Google Web Toolkit (GWT) which would have allowed them to build Google + using nothing but Java.

"Nothing against GWT, but the engineers who started building Google+ didn't use it, and in general projects end up all-GWT or no-GWT, and this was the latter."

The Q&A session reveals an overall move toward integrating Google + with other Google systems such as Reader and so on.

When asked about the much-missed API the answer was non-committal.

"We're honestly still figuring out exactly what form our platform/APIs should take, but we're eager to hear input from would-be developers!"

More information

I'm a technical lead on the Google+ team. Ask me anything.


If you would like to be informed about new articles on I Programmer you can either follow us on Twitter or Facebook or you can subscribe to our weekly newsletter.



Android 15 Developer Preview Updated

Google has released Android 15 Developer Preview 2 with changes including better handling of automatic language switching and updates for OpenJDK 17.

Liberica Alpaquita Containers Now Come With CRaC

Bellsoft has added CRaC support to its ready-to-use Alpaquita container images. This will enable developers to seamlessly integrate CRaC into their projects for performant Java in the Cloud.

More News


Last Updated ( Monday, 25 July 2011 )