Should I learn Kotlin or stick to Java?

Google announced Kotlin as an official language for Android development. Some famous developer companies, like square, started using kotlin as their production language long before the official announcement was made.

Now one of the most trending questions juggling around the minds of many experts and most beginners is should I learn kotlin or stick to java? Here’s some point should be made based on three stages of a developers like really really beginner, ninja apprentice, totally ninja.

What do 17 Google Developers Experts for Android think about Kotlin?

Google has already expressed several times that they don’t have anything against Kotlin, and that they’re not preventing us from using it while the compiler still generates valid bytecode.

But many people is still waiting for an official support, something that could never happen.

While we wait until that moment though, I thought it would be nice to know what the Google Developers Experts for Android think about it.

If you hadn’t heard about it, Google Developers Experts (GDEs) is a program that recognizes outstanding developers the effort to be a reference on the field they are involved in.

I contacted some of these Android Experts (the list is huge!), and I got answers from 17 of them. Thanks a lot for being so nice and taking your time to answer!

I’ve just asked them to tell us a bit about them, and what they think about Kotlin. The answers are obviously unmodified, so you will find voices for and against (or not so for) the language.

I really hope this helps you form an idea of how Kotlin is being a game changer, and that, at least, is a language to take into account if you are an Android developer.

Without further delay, here it is the opinion of our GDEs in no particular order:…

Litho: A declarative UI framework for Android

Litho is a declarative framework for building efficient user interfaces (UI) on Android. It allows you to write highly-optimized Android views through a simple functional API based on Java annotations. It was primarily built to implement complex scrollable UIs based on RecyclerView.

With Litho, you build your UI in terms of components instead of interacting directly with traditional Android views. A component is essentially a function that takes immutable inputs, called props, and returns a component hierarchy describing your user interface.

class HelloComponentSpec {

  static ComponentLayout onCreateLayout(
      ComponentContext c,
      @Prop String name) {

    return Text.create(c)
        .text("Hello, " + name)
        .paddingDip(ALL, 10)

You simply declare what you want to display and Litho takes care of rendering it in the most efficient way by computing layout in a background thread, automatically flattening your view hierarchy, and incrementally rendering complex components.

Have a look at our Tutorial for a step-by-step guide on using Litho in your app. You can also read the quick start guide on how to write and use your own Litho components.


Anbox puts the Android operating system into a container, abstracts hardware access and integrates core system services into a GNU/Linux system. Every Android application will behave integrated into your operating system like any other native application.

New Google tool helps developers pick the right colors for their apps

With its Material Design guidelines, Google set out to create a unified set of ideas for how it wants developers to think about all the different aspects of their applications’ design, ranging from the basic layout to how to use animations effectively. As part of those guidelines, it also offered some ideas about how to best use color. Today it’s expanding on that with the launch of a new color tool meant to help developers and designers pick the right color palettes for their apps.

The new tool helps developers create and share color palettes, but, maybe most importantly, it also comes with the ability to then apply that color scheme to a sample user interface and to various Material Design components in CodePen, a third-party “playground” for front-end web developers.

Another interesting aspect of the new tool is that it automatically evaluates the legibility of text for your color scheme. That evaluation is based on the Web Content Accessibility Guidelines, which mostly focus on the contrast between text and background to help people with vision impairments better read online (though anybody who has ever had to read a lot of dark gray text on a light gray background knows that this is an issue).

Introducing Cloud Functions for Firebase

Firebase started with the belief that apps could be built with mostly client code since it was, in many instances, easier and faster. However, there are still some cases where server code is needed, such as executing trusted code, authenticating to a third party API, or running battery intensive operations. In these instances, you had to stand up your own server —  until now.

Today we are excited to announce the beta launch of Cloud Functions for Firebase. It lets you write small pieces of JavaScript, deploy them to Google’s Cloud infrastructure, and execute them in response to events from throughout the Firebase ecosystem. This has been the most requested feature since Firebase launched. The ability to extend and connect Firebase features using Cloud Functions makes Firebase more powerful, allowing you to do even more with your app without having to think about servers.

Kotlin 1.1 Released with JavaScript Support, Coroutines and more

Our vision for Kotlin is to enable the use of a single expressive, performant, strongly typed language across all components of a modern application. Kotlin 1.1 makes two major steps towards this goal.

First, the JavaScript target is no longer experimental, and supports all Kotlin language features, a large part of the standard library, as well as JavaScript interoperability. This allows you to migrate the browser frontend of your applications to Kotlin, while continuing to use modern JavaScript development frameworks such as React.

Second, we’re introducing support for coroutines. As a lightweight alternative to threads, coroutines enable much more scalable application backends, supporting massive workloads on a single JVM instance. In addition to that, coroutines are a very expressive tool for implementing asynchronous behavior, which is important for building responsive user interfaces on all platforms.

Below we describe these two changes further. In other news: we’ve added type aliases, bound callable references, destructuring in lambdas and more. See the details in our What’s new page (check out the runnable examples!).

Android Creating Gmail Like Inbox using RecyclerView

Introduction of RecyclerView is the best thing ever happen to android world. You can create stunningly beautiful lists and grids using the RecyclerView. Lot of us are very familiar in rendering the basic lists when the UI is very simple. But it comes to more complex lists that contains multiple UI elements along with animations, not everybody can achieve the final output they are looking for.

This article aims to improvise your knowledge on RecyclerView by taking an example of Gmail style inbox that contains the complex list design with interactive animations.

The desired output like Gmail app can’t be achieved just with the RecyclerView alone. It needs combination of other few android concepts. Overall we gonna use the below mentioned components to get the finest appearance and functionality.

> RecyclerView
The basic component required for this app is RecyclerView as our primary task is to display the data in list fashion. The appearance of the list is customized just like Gmail app displaying a thumbnail icon, three line message, timestamp and a star icon to mark the message as important.

> SwipeRefreshLayout
In order to refresh the inbox, SwipeRefreshLayout is wrapped around the RecyclerView. This article doesn’t explains the persistence of the data. So the inbox will be reset to initial state up on refresh.

> ActionMode
ActionMode is used to display the contextual toolbar when a row is long pressed in the list. This enables us to provide set of alternative toolbar icons when the recycler view is in multiple choice mode. Here we provide delete option to delete the selected messages.

> Object Animators
Object Animators allows us to animate a target element. In this we use the object animators to perform the Flip Animation of list thumbnail icon when a row is long pressed.

> Retrofit
In a production app, all the inbox messages are dynamic i.e they are fetched from a REST API. To demonstrate that, I have used a JSON url to list the messages. We use Retrofit library to fetch and deserialize the JSON.