2. Agenda
● Quem somos
● A biblioteca: Clappr
● Por que escolhemos Kotlin?
● Desenvolvendo sua biblioteca em Kotlin
● Dicas de Kotlin
● Interoperabilidade com Java
● Documentação
● Como distribuímos o Clappr
3. Quem somos
Bruno Torres
Especialista em desenvolvimento
multiplataforma (Android, iOS, Web/Smart TV)
na Globo.com. Atua com desenvolvimento
móvel desde 2008.
bruno.torres@corp.globo.com
Fernando Pinho
Especialista em desenvolvimento móvel
(Android e iOS) na Globo.com. Atua com
desenvolvimento móvel desde 2005.
fernando.pinho@corp.globo.com
4. A biblioteca: Clappr
Biblioteca de reprodução de vídeos
multi-plataforma (Web, Android e iOS)
A versão Android está escrita em Kotlin.
5. Por que escolhemos o Kotlin?
É uma linguagem moderna e acessível, para
desenvolvedores com múltiplos backgrounds
Globo.com: desenvolvedores Python, Ruby, JavaScript
(Scala e Clojure)
6. Desenvolvendo sua biblioteca em Kotlin
Diferenças em relação a aplicações:
● Manter a semântica da interface externa
● Interoperabilidade com outras linguagens (Java) é importante
● Cuidar do tamanho (evitar bloating)
○ Dependências também influenciam tamanho final
● Preocupação com tarefas assíncronas e performance
7. Dicas de Kotlin
Compilador gera automaticamente:
● getters / setters
● equals() / hashCode()
● copy()
● toString()
○ "User(name=John, age=42)"
● componentN()
○ val (name, age) = user
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {return name;}
public int getAge() { return age;}
public void setAge(int age) {this.age = age
@Override public boolean equals(Object o) {
@Override public int hashCode() {...}
data class User(val name: String, var age: Int)
8. Dicas de Kotlin
Java
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { toast("Hello") }
}
Kotlin
view.setOnClickListener({ v -> toast("Hello") })
view.setOnClickListener { v -> toast("Hello") }
view.setOnClickListener { toast("Hello") }
9. Dicas de Kotlin
Evitar a criação de objetos
desnecessários
fun calc(factor: Int): (Int, Int) -> Int {
return { a, b -> a + b * factor }
}
@NotNull
public static final Function2 calc(final int factor) {
return new Function2() {
public Object invoke(Object var1, Object var2) {
return Integer.valueOf(this.invoke(
((Number) var1).intValue(),
((Number) var2).intValue()
));
}
public final int invoke(int a, int b) {
return a + b * factor;
}
};
}
10. Dicas de Kotlin
Utilizar propriedades em vez de campos públicos
class Example {
private int someField;
public int getSomeField() {
return someField;
}
public void setSomeField(int value) {
someField = value;
}
}
class Example {
var someField: Int
}
11. Dicas de Kotlin
Minimizar mutabilidade
● Evitar expor métodos que alterem estado interno do componente
● Utilizar factory methods no lugar de constructors
● Garantir imutabilidade de referências
● Utilizar interfaces em vez de classes abstratas
● Favorecer composição em vez de herança
12. ● @JvmName para evitar possíveis conflitos
● @JvmStatic/@JvmField em Companion objects
● Cuidado com parâmetros null
● Validar ocorrência de boxing/unboxing
Interoperabilidade com Java
14. Criamos um .aar e distribuímos pelo jcenter.
Clappr tem dependências externas:
Distribuição do Clappr
Clappr
189 KB
kotlin-stdlib
0,5 MB
kotlin-reflect
0,8 MB
Atenção ao usar as versões kotlin-stdlib-jdk7 e kotlin-stdlib-jdk8.
1,5 MB