Ich habe kürzlich einen Artikel über die Neuerungen in Kotlin 1.4.20 geschrieben. Und der erste Kommentar erwies sich als etwas unfair gegenüber Kotlin.
Er argumentierte, warum sollte Kotlin in der mobilen Entwicklung sein, weil es Java gibt, weil es eine der besten Programmiersprachen ist.
Und zu all dem ist viel Android Framework-Code in Java geschrieben, oder mehr als 50%!
Bevor ich meine Meinung teile und diese Geschichte präsentiere, schlagen Sie mich bitte nicht mit Stühlen.
Beginnen wir mit der Statistik!
Was sagen professionelle Entwickler?
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% ).
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)
-
-
-
Android Developers Store: Zomato Kotlin