
J'ai récemment écrit un article sur les nouveautés de Kotlin 1.4.20. Et le premier commentaire s'est avéré un peu injuste pour Kotlin.
Il a fait valoir que pourquoi Kotlin devrait-il être dans le développement mobile, car il y a Java, car c'est l'un des meilleurs langages de programmation.
Et pour tout cela, beaucoup de code Android Framework est écrit en Java, ou plutôt à plus de 50%!
Avant de partager mon opinion et de présenter cette histoire, ne me battez pas avec des chaises.
Eh bien, commençons par les statistiques!
Que disent les développeurs professionnels?
Google , Kotlin.
:
67 % Android , Kotlin, , !
Florina Muntenescu (Android Developer Advocate)
, Kotlin, 100% .
, .
Google , ?
Android Kotlin:
- , .
- Kotlin Java
Flipkart:
, 50% , , Kotlin.
Cash App:
Cash App Kotlin, Builder - , ( 25% ).
Kotlin Zomato
Duolingo
Duolingo - Google Play ( 100 . ).
46% ( , ..). Kotlin.
. : , , 2 !
, , !
: Java Kotlin 30%, 90%!
Kotlin
Android Java, :
1)
2) Build
Kotlin , .
Builder Java:
public class Task {
private final String name;
private final Date deadline;
private final TaskPriority priority;
private final boolean completed;
private Task(String name, Date deadline, TaskPriority priority, boolean completed) {
this.name = name;
this.deadline = deadline;
this.priority = priority;
this.completed = completed;
}
public static class Builder {
private final String name;
private Date deadline;
private TaskPriority priority;
private boolean completed;
public Builder(String name) {
this.name = name;
}
public Builder setDeadline(Date deadline) {
this.deadline = deadline;
return this;
}
public Builder setPriority(TaskPriority priority) {
this.priority = priority;
return this;
}
public Builder setCompleted(boolean completed) {
this.completed = completed;
return this;
}
public Task build() {
return new Task(name, deadline, priority, completed);
}
}
}
Kotlin ( hashCode(),
equals()
):
data class Task(
val name: String,
val deadline: Date = DEFAULT_DEADLINE,
val priority: TaskPriority = TaskPriority.LOW,
val completed: Boolean = false
)
!
Singleton Java:
public class Singleton{
private static volatile Singleton INSTANCE;
private Singleton(){}
public static Singleton getInstance(){
if (INSTANCE == null) { // Single Checked
synchronized (Singleton.class) {
if (INSTANCE == null) { // Double checked
INSTANCE = new Singleton();
}
}
}
return INSTANCE;
}
private int count = 0;
public int count(){ return count++; }
}
Kotlin:
object Singleton {
private var count = 0
fun count(): Int {
return count++
}
}
.
Kotlin , , :
fun borrow(){
library -= book // operator overloading
val (title, author) = book // data
println("Borrowed $title") //
}
, Kotlin null :
var str: String? = null // , ,
// str null
println(str?.length) // Safe (?)
val len = str?.length ?: 0 // 0, str null
var listOf: List<String>? = null // null
listOf?.filter { it.length > 3 } //
?.map { it.length }
?.forEach { println("Length more 3 -> $it") }
Android Kotlin, , :
@Inject
lateinit var viewModelFactory: MyViewModelFactory
private val viewModel by viewModels<MyViewModel> { viewModelFactory }
Kotlin , :
dependencies {
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
implementation "androidx.room:room-ktx:$room_version"
implementation "androidx.paging:paging-runtime-ktx:$paging_version"
}
Java , , Kotlin 95% , Java .
, Java , :)
Kotlin , Android Framework Java Java.
:
Medium Florina Muntenescu (Android Developer Advocate)
Twitter Florina Muntenescu
Twitter Android Developers
Duolingo Kotlin
Android Developers Store: Zomato Kotlin