Android: Kotlin을 3년 동안 사용한 프로그래머의 개인적인 경험

코틀린을 왜 배우나요, 자바를 배우면 좋지 않나요?

사실 지난 몇 년만이었다면 모든 사람에게 kotlin을 추천하지도 않았을 것이고, 그런 사실조차 몰랐을 것입니다.

그런데 Kotlin이 등장한 이후로 몇 년째 사용하고 있는데, 이제 Kotlin을 사용하는 소감에 대해 말씀드리겠습니다.

왜 배워야 하는가?

몇 년 전 취업할 때 마음에 드는 회사가 있었는데 당시 채용을 하려면 Android 개발 엔지니어가 Kotlin에 대한 탄탄한 기초를 갖추고 있어야 했습니다. Kotlin을 진지하게 공부하세요. 그럼 난 아직도 그 회사에 들어가지 않았어 (만석 /(ㄒoㄒ)/~~)

여기에 이미지 설명을 삽입하세요

따라서 Kotlin을 배워야 한다면 Android용으로 배워야 합니다.

Kotlin을 배우기 전에 알아야 할 내용

Kotlin을 더 잘 배우기 위해서는 먼저 Kotlin의 장점이 무엇인지 알아야 합니다.

  1. 10년 이상의 개발 끝에 kotlin은 상대적으로 성숙한 언어와 환경을 갖추고 있으며 점점 더 많은 기업에서 이를 사용하여 Android 애플리케이션을 개발하고 있으며 멀티 플랫폼 개발에도 사용할 수 있습니다.
  2. 우리 모두는 언어가 널리 사용되기 위해서는 빠르고 사용하기 쉬울 뿐만 아니라 좋은 생태계도 필요하다는 것을 알고 있습니다. 우리는 애플리케이션에서 Kotlin과 Java 프로그래밍 언어를 함께 사용할 수 있습니다. 상호 운용성은 언어를 가져옵니다. 사용이 더욱 편리해졌습니다.
  3. Kotlin은 더 적은 코드를 사용하고 가독성이 더 좋습니다. 동시에 많은 언어 기능을 통해 일반적인 프로그래밍 오류를 피할 수 있습니다. 더 중요한 것은 특히 Java 프로그래밍 기반을 갖춘 사람들이 배우고 사용하기 쉽다는 것입니다.

처음에 질문에 대답하려면 Java를 알고 있으면 Kotlin을 배워야 합니까?

그런 다음 Kotlin과 Java의 충돌을 살펴보세요.

1. 자바보다 빠르다

다음과 같이: 1000000개의 객체를 생성합니다.

public class JPerson {
    public JPerson(String name, Integer age, Integer sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    private String name ;
   private Integer age;
   private Integer sex ;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

}

결과
여기에 이미지 설명을 삽입하세요

public class ReflectDemo {

    public static void main(String[] args) throws InterruptedException {
            int i =0;
            long start = System.currentTimeMillis();
            while (i<1000000){
                JPerson jPerson = new JPerson("zhangsan",1,1);
                i++ ;
            }
            long end = System.currentTimeMillis();
            System.out.println("java本次耗时:"+(end-start));

    }

}

data class KPerson(val name: String, val age: Int, val sex: Int)

fun main(args: Array<String>) {
        var i = 0
        val start = System.currentTimeMillis()
        while (i < 1000000) {
            val kPerson = KPerson("张三", 1, 1)
            i = i.inc()
        }
        val end = System.currentTimeMillis()
        println("kotlin本次耗时:${(end - start)}")

}


결과

여기에 이미지 설명을 삽입하세요

2. Java 구문보다 더 간결합니다. 다음은 몇 가지 간단한 예입니다.

//Java
System.out.print("hello world"); 
System.out.println("hello world");
//Kotlin 省略 System.out
print("hello world") 
println("hello world")

//Java
String name = "hello world"; 
final String name = "hello world";
//Kotlin 自动类型推断
var name = "hello world" 
val name = "hello world"

//Java
if (text != null) {
    int length = text.length();
}
//Kotlin 省略if 判断以及括号,可以使用it代替text
text?.let {
    val length = it.length
}

//Java
String firstName = "Android"; 
String lastName = "Architect"; 
String message = "My name is: " + firstName + " " + lastName;
//Kotlin 直接使用插值运算符
val firstName = "Android" 
val lastName = "Architect" 
val message = "My name is: $firstName $lastName"

//Java
String text = "First Line\n" +
              "Second Line\n" +
              "Third Line";
 
//Kotlin 写法更加优雅
val text = """
        |First Line
        |Second Line
        |Third Line
        """.trimMargin()

//Java
Car car = (Car) object;
//Kotlin 使用as 转换 而且转换后后续无需再次转换
var car = object as Car
car.name  // 可以直接使用car 属性

//Java
int score = // some score;
String grade;
switch (score) {
    case 10:
    case 9:
        grade = "Excellent";
        break;
    case 8:
    case 7:
    case 6:
        grade = "Good";
        break;
    case 5:
    case 4:
        grade = "OK";
        break;
    case 3:
    case 2:
    case 1:
        grade = "Fail";
        break;
    default:
        grade = "Fail";
}

//Kotlin
var score = // some score
var grade = when (score) {
    9, 10 -> "Excellent"
    in 6..8 -> "Good"
    4, 5 -> "OK"
    in 1..3 -> "Fail"
    else -> "Fail"
}

// labamda表达式 Java 8+
cars.stream().filter(car -> car.speed > 100).forEach(car -> System.out.println(car.speed));
 
 
//Kotlin
cars.forEach {
    println(it.speed)
}
 
cars.filter { it.speed > 100 }
      .forEach { println(it.speed)}
 
//Java  静态方法,私有构造比较
public class Utils {
 
    private Utils() {
      // This utility class is not publicly instantiable
    }
 
    public static int getScore(int value) {
        return 2 * value;
    }
 
}
 
 
//Kotlin
class Utils private constructor() {
 
    companion object {
 
        fun getScore(value: Int): Int {
            return 2 * value
        }
 
    }
} 
// java 对象声明
public class JPerson {
    public JPerson(String name, Integer age, Integer sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    private String name ;
   private Integer age;
   private Integer sex ;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

}

// kotlin
data class KPerson(val name: String, val age: Int, val sex: Int)
     

3. 일반적인 함정을 정적으로 감지할 수 있으므로 Java보다 더 안전합니다. 예: 널 포인터 참조
여기에 이미지 설명을 삽입하세요

4. 코루틴을 지원하여 개발을 더 쉽게 만듭니다.

다음 병렬 코드는 직렬 실행에 5초가 걸리면 실제 실행 결과는 2초만 걸립니다. 즉, 단일 작업의 최대 시간이 소요되는 병렬 코드는 java보다 간단합니다.

Kotlin에 대한 느낌

java에서 kotlin으로 전환하면 처음에 kotlin 구문이 이상하다고 느낄 수도 있는데, 예를 들어 각 줄 끝에 세미콜론을 추가할 필요는 없는데 항상 설명할 수 없게 추가됩니다. 아이디어 프롬프트가 회색으로 표시되고 세미콜론이 제거됩니다. 그런 다음 간단한 작성 방법이 있습니다. 코드를 선언 메서드처럼 보이게 만드는 것은 쉽지만 실제로는 메서드를 호출합니다. 프로젝트 부담과 함께 Kotlin 코드 절반과 Java 코드 절반을 작성하는 것은 쉽습니다.

하지만 시간이 지나서 점차 kotlin의 간단한 작성 방법이 대부분의 Java 코드를 죽일 것이라는 사실을 발견했습니다. 회사의 프로젝트 재구성은 Java를 kotlin으로 대체하는 것이며 코드가 75%로 직접 줄어들어 매우 강력합니다. 그러므로 Kotlin은 여전히 ​​매우 좋은 언어입니다. 서둘러서 배우세요.

코틀린을 배우는 방법

좋은 질문입니다. 여기 Kotlin 코루틴 고급 실용 정보에 대한 무료 소개가 있습니다.

목차

여기에 이미지 설명을 삽입하세요

여기에 이미지 설명을 삽입하세요

1장 Kotlin 코루틴 기본 소개

  • 1.1 코루틴이란?
  • 1.2 Job, Deferred 및 코루틴 범위란 무엇입니까?
  • 1.3 Kotlin 코루틴의 기본 사용법

여기에 이미지 설명을 삽입하세요

2장 Kotlin 코루틴 핵심 지식 포인트에 대한 사전 설명

  • 2.1 코루틴 스케줄러
  • 2.2 코루틴 컨텍스트
  • 2.3 코루틴 시작 모드
  • 2.4 코루틴 범위
  • 2.5 일시 중지 기능

여기에 이미지 설명을 삽입하세요

3장 Kotlin 코루틴의 예외 처리

여기에 이미지 설명을 삽입하세요

4장 Android에서 Kotlin 코루틴의 기본 적용

  • 4.1 Android는 Kotlin 코루틴을 사용합니다.
  • 4.2 Activity 및 Framgent에서 코루틴 사용
  • 4.3 ViewModel에서 코루틴 사용
  • 4.4 다른 환경에서 코루틴 사용하기

여기에 이미지 설명을 삽입하세요

5장 Kotlin 코루틴의 네트워크 요청 캡슐화

  • 5.1 코루틴의 공통 환경
  • 5.2 네트워크 요청 시 코루틴 캡슐화 및 사용
  • 5.3 고차함수 접근법
  • 5.4 다중 상태 함수의 반환 값 방법
  • 5.5 값을 직접 반환하는 방법
    여기에 이미지 설명을 삽입하세요

Chapter 6 심층적인 Kotlin 코루틴 원리(1)

  • 6.1 정지의 Huahuachangzi
  • 6.2 숨겨진 뒤에 - 계속
  • 6.3 마을의 희망 - SuspendLambda

여기에 이미지 설명을 삽입하세요

7장 심층적인 Kotlin 코루틴 원리(2)

  • 7.1 코루틴의 작은 비밀
  • 7.2 코루틴 생성 과정
  • 7.3 코루틴 일시 중지 및 재개
  • 7.4 코루틴의 실행과 상태 머신

여기에 이미지 설명을 삽입하세요

8장 Kotlin Jetpack 실행

  • 8.1 위대한 신을 숭배하는 데모로 시작하기
  • 8.2 Kotlin으로 Gradle 스크립트를 작성해 본 경험은 무엇입니까?
  • 8.3 Kotlin 프로그래밍의 삼중 영역
  • 8.4 코틀린 고차 함수
  • 8.5 코틀린 제네릭
  • 8.6 코틀린 확장
  • 8.7 Kotlin 위임자

여기에 이미지 설명을 삽입하세요

9장 Kotlin + 코루틴 + 개조 + MVVM으로 네트워크 요청을 우아하게 실현

  • 9.1 프로젝트 구성
  • 9.2 구현 아이디어
  • 9.3 코루틴 구현
  • 9.4 코루틴 + ViewModel + LiveData 구현
  • 9.5 후속 최적화
  • 9.6 예외 처리
  • 9.7 업데이트 개조 2.6.0

여기에 이미지 설명을 삽입하세요

추천

출처blog.csdn.net/Misdirection_XG/article/details/132181561