How Google Does Multi-Platform In Inbox
Written by Mike James   
Monday, 24 November 2014

One of the biggest problems programmers face today is making a single code base work across a range of systems. How a giant company like Google solves the problem is obviously going to be interesting.

 

Gmailbanner

 

Google has just created a new email client called Inbox. At the moment it is being tested by invitation only, but the Gmail blog has revealed its architecture to everyone. 

The problem the developers had to face was how to build three "native" apps - one for the web, one for Android and one for iOS. Obviously they wanted to avoid writing the same app three times. They quickly ruled out the "hybrid" native/web app using something like Cordoba for reasons of efficiency. The only option was to create three native apps that shared as much of the core logic as possible. 

The Android app seems to have been the main development project and it is the only one of the three that is a native app built with the "native" tools, i.e. Java and the Android SDK. 

The data model was written just once in Java and the Android UI was built on top of this. The data model provided abstractions of things like Conversations, Reminders, Contacts and Labels. 

Having a complete Android app, it only now remained to port things across to the other two platforms.

The web app was created by using the GWT (Google Web Toolkit) cross compiler to convert the Java data model to JavaScript. GWT is an open source project created by Google in 2006 to allow Java programmers to create web apps with JavaScript. There have been speculations that Google might not be as interested in GWT as it once was - mainly because of its commitment to the Dart language. In 2012 Google made GWT a fully open source project. With its use in Inbox it seems that GWT is still a useful tool to Google and good enough to use for new projects. The UI of the web app seems to have been built using JavaScript, HTML and CSS. 

 

j2objcbanner

 

The iOS app was created in a similar way, but this time using J2ObjC. This Java to Objective-C translator is another Google open source project that is not as well known as GWT. It doesn't make any attempt to translate UI code so, as for Android, the UI was written on top of the data model in Objective-C. 

The only special attention the Java code needed was the addition of @WeakReference annotations to allow Objective-C, which uses reference counting, to deal with reference cycles in the Java code. 

The team claims that overall something like two thirds of the code is shared between the three apps and clearly this makes the exercise well worthwhile. 

 

gmailicon

 

There is something very irritating in the way that the UIs have to be written from scratch in each case. Surely we can find a way to build a tool that does the entire job and only leaves the programmer to tweak the UI to make it look 100% native.

 

More Information

Going under the hood of Inbox

http://gwtproject.org 

http://j2objc.org

Related Articles

Google Web Toolkit 2.5        

Google Open Sources Java To Objective-C Translator       

GWT Swept Under Open Source       

 

To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, FacebookGoogle+ or Linkedin,  or sign up for our weekly newsletter.

 

Banner


What Languages Do Devs Want to Learn?
17/11/2020

Python, of course. What comes as a surprise is the size of the margin between Python and the rest of the pack. The other unexpected finding is that JavaScript doesn't even make it into the top 10. So, [ ... ]



An Introduction to Neo4j
03/11/2020

Learn about Neo4j and Cypher in less than a day with a free course that  introduces you to graph databases and how to use the Cypher graph language to query and update a Neo4j database.


More News

 

square

 



 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Monday, 24 November 2014 )