Agility, Java programming, New technologies and more…
  • rss
  • Home
  • Management
  • Agile Programming
  • Technology
  • Linux
  • Event
  • Android app
  • Contact
  • About the author
  • English
  • Francais

Google at JUG

Fabian Piau | Sunday December 6th, 2009 - 07:24 PM
  • Print
  • Twitter
  • LinkedIn
  • Facebook
  • Pocket

 Version française disponible

With some delay, here is the last Nantes JUG’s summary. We get onto a well-known topic, because about the Google giant. One more time, Google’s excess strikes again, even if it was on a friday night. Indeed, room was packed, as you can see in the picture.

JUG Nantes room

It must be said that the success story of Google fascinates. In France and all over the world, millions of Internet users often use its search engine.

This article hasn’t be writen to eulogize Google, but to introduce some technologies and know-how of the “beast” which have contributed to its worldwide success since several years.

Google logo

An unusual global technologies infrastructure


Google focuses its strength and efforts on some main principles.

Firstly, the firm is based on a Resource Oriented Architecture (ROA). Concretely, one resource matches to one URL to reach it. If you are a Gmail’s user, did you ever ask yourself that one email was identifiable and findable with an unique address ? This couple URL-resource can generally be applied to all Google applications : a document in Google docs, a coordinate in Google Maps, a picture in Picasa, etc. Here are some URL examples.

  • http://docs.google.com/Doc?docid=0Ad7BNmFSF7hvZGzYm03dzJfNGhkdeZrbmc0
  • https://mail.google.com/mail/#inbox/12537bz86989ed71
  • http://picasaweb.google.com/fabian.piau/MonAlbum#5409584261851169554
  • http://www.youtube.com/watch?v=LafUQYHSnhU


Google is based on a Web standard : HTML 5. This format is quite recent and uses a lot of new tags such as video and audio native integration, canvas to draw by scripting or geolocation.

Moreover, Google is developping mainly on two programming languages : Java & Javascript. The technologies scope is well-delimited for a better control.


Then, the Google computing infrastructure is broke up in several points, basing on Cloud computing. You must certainly know some usages of Cloud computing. No doubt that the most famous use of cloud comp. is the pooling of resources such as power calculation (processor) of many remote computers in order to obtain a supercomputer (for instance, [email protected] software uses this concept, more specifically called “Grid computing” , purpose is to analyze radio signals for signs of extraterrestrial intelligence…).

This type of Cloud computing in not the only one. There are also two other types which are involved in Google projects. PAAS (Platform As A Service) where you can rent a computing platform and solution stack to host your own applications. There is also the SAAS (Software As A Service) where you can rent a software. Google applications clearly belong to the SAAS category. When we are using a tool like Google Documents, it is like we are renting it, even if there is no fee. Wa can access to a spreadsheet, a word processor, a data storage for the created documents… All these functionalities accessible with a simple browser.


Last standard at Google, applications (most of them) are available under Open-Source licence. The company has recently revealed the full source code of Chrome OS to the community, its operating system.


AppEngine, the Google’s PAAS offer

AppEngine logo     

Google proposes not only SAAS, but also PAAS. Thus, hosting of your applications is possible. Google provides everything needed. Ths offer is available for two programming languages: Java & Python.

The Java offer consists in :

  • A servlet container (Jetty);
  • A BigTable database (hierachical structure, NOSQL);
  • An email server;
  • XMPP (chatting);
  • Cron (background task);
  • The possibility to do unit-testing (yeah !);
  • ClickOnce Deployment.


You can consult this page to know more about AppEngine.


AppEngine architecture


The basic offer is free, but has some limitations. There are quotas (CPU per day, number of requests, URL fetch, data storage, etc.). The quotas are not so restrictive for ordinary people. Although, the bandwidth quota seems to be quickly reached according to the speaker. Anyway, for a company, it would be judicious to choose the not-free offer, which enables you to increase quotas, but also the possibility to choose your own datastore (self-hosted relational database for instance)…


To introduce AppEngine possibilities, we had a short demo of “Hello World”. Not very impressive though, but this offers the advantage to be deployed and available on the internet within few minutes. The demo has been realised with Eclipse & GWT, with the Google Eclipse Plugin. This plugin enables testing the application locally without having to deploy it on the server, so a kind of essential plugin.


Service providers can host your PHP/SQL website for free, Google go further by hosting your Java application. Google is one of the first to do it. SAAS/PAAS are supposed to grow in next years, thus other computing giants follow Google idea, such as Microsoft with its Azure platform or SpringSource.


GWT, the Google’s programming language


GWT logo     

This is quite easy to understand : with GWT RIA (Rich Internet Application, AJAX…) is becoming simple! There is no need to program in Javascript.


You mainly use drag & drop to build your application, GWT generates Java/Javascript code for you. Obviously, it is up to you to code the business tier.


GWT is a swing-like language, just take a look to the generated code, it is very similar to Swing with events, labels, listeners, etc. When using GWT, GUI (graphical user interface) is coded in Java but the generated code is not very proper (so not very maintainable) even with some optimizations.

Moreover, the variety of libraries coming from the community contrasts with the poverty of libraries available by default. The latter are the only ones really followed by Google. I let you imagine yourself explaining to a customer, that you have developped a nice application with plenty of drag & drop, web 2.0 effects and so on but in 6 months, components will not be maintain anymore… Of course, this risk can be taken for small applications but not for those which are going to evolve in time.


Another negative point is the developper have no choice (by default) than testing its application inside a build-in google browser (this is called as the “hosted mode”). This is very restrictive because this is not possible to use you favourite plugins such as Firebug. Fortunately, this is possible to get around this difficulty by using a dedicated plugin. There is one for each browser, it emulates the Google “hosted mode” inside your usual browser.


Lastly, a big disadvantage in GWT : to launch and use applications, users must download the entire application before starting to use it. Download 1 mo to display the login page is excessive, isn’t it ?


GWT 2, GWT 1 without disadvantages ?

GWT 1 presents some advantages, but take the plunge can be quite risky. That’s the reason why Google is working on a second version of its language since 1 year.


For the moment, GTW 2 is available in Release Candidate, objective is to make us forget all GW1 drawbacks. Let’s hope the challenge will turn into success.


Among features, we can note :

  • Code simplification with the use of annotations;
  • The possibility to test the application with any browser (without any plugins);
  • With UIBinder, layout management is not embeded in the code but in an external XML file. Thus, the collaboration between developper and designer teams is easier;
  • Dynamic loading : the user downloads only what he needs (code-spliting);
  • Unit testing support.


Android, the Google’s mobile system

Android

Android was the last JUG topic, it was starting to be late… Here again, example was an “Hello World” development on the Android mobile platform.


Applications are in Java, there is a special SDK to develop on Android.

Concretely, you are programming with a standard IDE such as Eclipse. Then, to execute and test your program, it is possible to emulate an android-based mobile phone with an Eclipse plugin.


Once you are happy with your new application, you can upload it on your phone or you can upload it online on the Market place. For the demo, the speaker has published the “Hello World” application for free (hopefully !) and one member of the audience has downloaded and tested it on his android phone. Ths most really impressive was that in few minutes, an application can be available all over the world.


Now, the most difficult will be to choose between an iPhone or an Android for Christmas…


Management according to Google (conclusion)

In opposition to standard management models, at Google, boundary between developer and user is invisible. Hierarchy is flattened.


I guess you notice that, during a Google I/O for example, this is always developers or team leaders who introduce new applications, this is never the marketing department…


Developer becomes the innovator, he has the leading role in Google infrastructure. Google works like this, and it seems everything is rolling along nicely when regarding results!

Related posts

googleShould we be wary of Google? SurveyUsing Google Forms / Drive / Docs to create an online survey surveyFAQ – Online survey with Google Forms / Drive / Docs OpenStreetMapOpen Street Map, better map than Google Maps?
Categories
Event
Tags
android, appengine, google, gwt, jug, nantes
Comments rss
Comments rss

« EclEmma – Do you need a good cover for this winter ? List of my favourite Firefox extensions »

Download CarmaBlog App

RSS feeds

  • RSS feed RSS - Posts
  • RSS feed RSS - Comments

Most viewed posts

  • Changing the language in Firefox - 115,579 views
  • Using Google Forms / Drive / Docs to create an online survey - 63,166 views
  • FAQ – Online survey with Google Forms / Drive / Docs - 52,403 views
  • Customizing Gnome 3 (Shell) - 30,017 views
  • The meaning of URL, URI, URN - 17,251 views
  • Java EE & CDI vs. Spring - 15,442 views
  • Open Street Map, better map than Google Maps? - 14,648 views
  • Comparing NoSQL: Couchbase & MongoDB - 14,082 views
  • Firefox Nightly, Aurora, Beta, Desktop, Mobile, ESR & Co. - 13,087 views
  • API, REST, JSON, XML, HTTP, URI… What language do you speak? - 12,718 views

Recent Comments

  • Pauline on FAQ – Online survey with Google Forms / Drive / DocsMerci Fabian, mais le but étant que nos clients pu…
  • Fabian Piau on FAQ – Online survey with Google Forms / Drive / DocsProbablement mais ces options sont en général paya…
  • Pauline on FAQ – Online survey with Google Forms / Drive / DocsBonjour Fabian, Merci de votre retour, oui j'avais…
  • Fabian Piau on FAQ – Online survey with Google Forms / Drive / DocsBonjour Pauline, ce n'est pas possible de créer un…
  • Pauline on FAQ – Online survey with Google Forms / Drive / DocsBonjour, Je suis en train de créer un Google Forms…

Recent posts

  • How to write a blog post? At least my way! - 3 months and 2 weeks ago
  • Bot Attacks: You are not alone… - 1 year and 11 months ago
  • Flagger – Monitor your Canary deployments with Grafana - 2 years and 8 months ago
  • Flagger – Canary deployments on Kubernetes - 2 years and 10 months ago
  • Flagger – Get Started with Istio and Kubernetes - 2 years and 10 months ago
  • Expedia CoderDojo in London - 3 years and 7 months ago
  • Volunteering at Devoxx4Kids - 3 years and 10 months ago
  • A Java 11 migration successful story - 4 years and 2 months ago
  • Tips to make your WordPress website secure - 4 years and 5 months ago
  • Devoxx UK 2018 – Day 2 - 4 years and 9 months ago
  • Devoxx UK 2018 – Day 1 - 4 years and 9 months ago
  • Wise, Revolut and Monzo, a small revolution for travelers and expats - 5 years and 1 month ago
  • Autocomplete for Git - 5 years and 10 months ago
  • Swagger, the automated API documentation - 6 years and 2 weeks ago
  • Microservices architecture – Best practices - 6 years and 5 months ago
Buy me a coffee

Language

  • Français
  • English

Follow me!

Follow me on Linkedin
Follow me on Twitter
Follow me on Stackoverflow
Follow me on Github
Follow me on Rss
Link to my Contact

Email subscription

Enter your email address to receive notifications of new posts.

Tags

.net agile agility android bash best practices blog cache cloud computing conference continuous integration css developer devoxx docker eclipse extreme programming firefox flagger google helm hibernate istio java job jug kubernetes london mobile computing overview performance plugin programmer script security sharing society spring tdd test tool ubuntu windows wordpress

Links

  • Blog Ippon Technologies
  • Blog Publicis Sapient
  • Blog Zenika
  • Classpert
  • CommitStrip
  • Coursera
  • Le Touilleur Express
  • Les Cast Codeurs Podcast
  • OCTO talks !
  • The Twelve-Factor App

Categories

  • Event (15)
  • Linux (3)
  • Management (8)
  • Agile programming (29)
  • Technology (45)

Archives

  • December 2022 (1)
  • April 2021 (1)
  • June 2020 (1)
  • May 2020 (2)
  • July 2019 (1)
  • May 2019 (1)
  • December 2018 (1)
  • October 2018 (1)
  • June 2018 (1)
  • May 2018 (1)
  • January 2018 (1)
  • May 2017 (1)
  • March 2017 (1)
  • October 2016 (1)
  • April 2016 (2)
  • March 2016 (1)
  • November 2015 (1)
  • May 2015 (1)
  • February 2015 (1)
  • December 2014 (1)
  • November 2014 (1)
  • September 2014 (2)
  • August 2014 (1)
  • July 2014 (2)
  • June 2014 (1)
  • April 2014 (1)
  • March 2014 (1)
  • February 2014 (2)
  • January 2014 (1)
  • December 2013 (1)
  • November 2013 (1)
  • October 2013 (3)
  • September 2013 (5)
  • July 2013 (1)
  • June 2013 (1)
  • May 2013 (1)
  • April 2013 (1)
  • March 2013 (2)
  • February 2013 (1)
  • January 2013 (2)
  • December 2012 (2)
  • October 2012 (1)
  • September 2012 (1)
  • July 2012 (1)
  • May 2012 (1)
  • April 2012 (1)
  • March 2012 (1)
  • February 2012 (1)
  • January 2012 (2)
  • December 2011 (1)
  • November 2011 (2)
  • October 2011 (2)
  • September 2011 (1)
  • July 2011 (1)
  • June 2011 (2)
  • April 2011 (1)
  • March 2011 (1)
  • February 2011 (1)
  • January 2011 (2)
  • November 2010 (2)
  • September 2010 (1)
  • August 2010 (1)
  • July 2010 (1)
  • June 2010 (1)
  • May 2010 (1)
  • April 2010 (1)
  • March 2010 (1)
  • February 2010 (1)
  • December 2009 (1)
  • November 2009 (1)
  • October 2009 (2)
  • September 2009 (2)
  • August 2009 (3)
  • July 2009 (1)
  • June 2009 (2)
Follow me on Twitter
Follow me on Linkedin
Follow me on Stackoverflow
Follow me on Rss
Link to my Contact
Follow me on Github
 
Fabian Piau | © 2009 - 2023
All Rights Reserved | Top ↑