JavaRush /Java блогы /Random-KK /KotlinRush: Java тілінде жазуды жалғастыру мағынасы бар м...
NikEy
Деңгей
Новосибирск

KotlinRush: Java тілінде жазуды жалғастыру мағынасы бар ма?

Топта жарияланған
Сәлеметсіз бе, JavaRush студенті, сіз Java-ны толығымен сіңірмес бұрын мен сіздің көкжиектеріңізді кеңейтіп, барған сайын танымал Котлин тіліне назар аударғым келеді !
KotlinRush: Java тілінде жазуды жалғастырудың мағынасы бар ма?  - 1
Котлин - бұл JetBrains әзірлеген өте жас тіл . Иә, иә, біздің сүйікті IDE-ны жасаған компания: IntelliJ IDEA. Kotlin — JVM тілі және Java тілімен толық үйлесімді , яғни Kotlin codeынан таныс Java кітапханаларына оңай қол жеткізе аласыз.Кітапханалар туралы не айтасыз: Kotlin және Java сыныптары бір пакетте бірге өмір сүре алады! Котлин бағдарламалау қауымдастығы арасында танымал болғаны сонша, Google оны Android үшін ресми әзірлеу тілі ретінде таныды, ал жақында Котлин корпоративтік жобаларда танымал бола бастады. Бұл мақалада мен Котлин және Java тілдерінде жазылған codeтың бірнеше салыстырмалы мысалдарын келтіріп, кейбір қорытындылар жасағым келеді. Бар! Әдеттегідей «Сәлем әлемінен» бастайық.
// Java
public class Application {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
// Kotlin
class Application
fun main(vararg args: String) {
    println("Hello World!")
}
Котлин мысалына қарап, біз бірден мынаны атап өтуге болады:
  • жолдың соңына нүктелі үтір қоюдың қажеті жоқ;
  • барлық әдістер қызықты кілт сөзімен сипатталады ;
  • Жолды басып шығару үшін бір сөз жеткілікті - println() !
Дана жасау
// Java (до 10)
final Application application = new Application();
// Kotlin
val application = Application()
Котлиннің айырмашылығы:
  • айнымалының түрін жариялаудың қажеті жоқ, егер ол данадан анық болса;
  • айнымалы типтің орнына - val (өзгермейтін) немесе var (өзгермелі);
  • Дана жасау үшін new кілт сөзін жазудың қажеті жоқ !
Әдістердің сипаттамасы
// Java
public int sum(int a, int b) {
    return (a + b);
}
// Kotlin
fun sum(a: Int, b: Int): Int {
return (a + b)
}
Котлиннің айырмашылығы:
  • егер бірдеңені әдістен қайтару қажет болса, қолтаңбаға “ : Int ” қосылады, мұнда Int қайтару түрі болып табылады;
  • әдіс параметрлерінің сипаттамасы: алдымен айнымалы аты, содан кейін типі;
  • әдіс денесі тек бір жолдан тұратындықтан, қайтаруды өткізіп жіберуге болады :
    fun sum(a: Int, b: Int): Int = (a+b)
Пішімделген жол шығысы
// Java
public int sum(int a, int b) {
    int result = (a + b);
    System.out.printf("Сумма %d и %d равна %d\n", a, b, result);
    return result;
}
// Kotlin
fun sum(a: Int, b: Int): Int {
    val result = (a + b)
    println("Сумма $a и $b равна $result")
    return result
}
Котлин жол интерполяциясын қолдайды, тек айнымалының басындағы «$» таңбасын пайдаланыңыз. Бұл белгі codeтың тазалығы мен оқылуын айтарлықтай жақсартады. Даналарды салыстыру
// Java
object1.equals(object2)
// Kotlin
object1 == object2
Котлинде ==нысан түрлері үшін " " салыстыру equals! Ал сілтемелерді салыстыру үшін « ===» қолданылады. Ерекшеліктер
// Java
public List<String> getFileContent(String file) throws IOException {
    Path path = Paths.get(file);
    return Files.readAllLines(path);
}
// Kotlin
fun getFileContent(file: String): List<String> {
    val path = Paths.get(file)
    return Files.readAllLines(path)
}
Котлинде тексерілген ерекшеліктер жоқ; енді бүкіл қолданба арқылы шексіз ерекшелік тастаудың немесе көп деңгейлі ерекшеліктерді жасаудың қажеті жоқ try-catch. Нөлдік қауіпсіздік
// Java
public class Data {
    String value;

    String render() {
        if (value == null) {
            return "Value: undefined";
        } else {
            return "Value:" + value.toUpperCase();
        }
    }
}
// Kotlin
class Data {
    var value: String? = null
    fun render(): String =
            "Value: ${value?.toUpperCase() ?: "undefined"}"
}
Котлин NPE мәселесімен айналысып, бірқатар талаптарды енгізді:
  • барлық класс өрістері мен айнымалылар инициализациялануы керек;
  • Өріске немесе айнымалыға «нөл» деп жазуға болады, бірақ содан кейін айнымалы мәніңіз Nullable екенін анық айтуыңыз керек («?» белгісін жазыңыз);
  • Elvis операторы «?:» келесідей жұмыс істейді: егер сол жақта Null болса, оң жақтағыны алыңыз. Біздің мысалымызда, айнымалы мән инициализацияланбаған кезде, « анықталмаған » мәні алынады.
Класс өрістері және оларға қол жеткізу
// Java
public class Data {
    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
class App {
    void execute() {
           Data data = new Data()
           data.setValue("Foo")
     }
}
// Kotlin
class Data {
    var value: String = ""
}
class App {
    fun execute() {
          val data = Data()
          data.value = "Foo" // Под капотом выполнится data.set("Foo")
     }
}
Котлинде өрісті жай ғана сипаттау жеткілікті: оның жасырын қабылдағыштары мен орнатушылары (hello lombok ) бар, оларды қажет болса, кез келген уақытта қайта анықтауға болады. Сонымен қатар, біз өрістің мәнін жай ғана оған тікелей қол жеткізу арқылы оқимыз және өзгертеміз және капюшонның астында ол деп аталады get()|set(). Циклдер
// Java
void example() {
    for(int i = 1; i <= 10; i++) {
        System.out.println(i);
    }

    for(String line : "a,b,c".split(",")) {
        System.out.println(line);
    }
}
// Kotlin
fun example() {
    for(i in 1..10) {
        println(i)
    }

    for(line in "a,b,c".split(",")) {
        println(line)
    }
}
Котлин тізбектерді өту үшін ыңғайлы және біркелкі синтаксисті қамтамасыз етті: сіз жай ғана сол жақта айнымалыны , оң жақтағы тізбекті және олардың арасында « in » кілт сөзін қолданасыз , түр мазмұн арқылы автоматты түрде анықталады. Синглтон
// Java
public class Singleton {
    private static Singleton ourInstance = new Singleton();

    public static Singleton getInstance() {
        return ourInstance;
    }

    private Singleton() {
    }
}
class App {
    void execute() {
         Singleton singleton = Singleton.getInstance()
    }
}
// Kotlin
object Singleton {}

class App {
    fun execute() {
          val singleton = Singleton
    }
}
Таныс « singl » үлгісі тәжірибеде жиі қолданылады, сондықтан Котлин « class » орнына жазылатын « an object » жеке түйінді сөзін жасауды ұйғарды және бұл сыныптың синглтон екенін білдіреді; пайдаланған кезде сіз тіпті қолданбайсыз. конструкторды немесе кез келген басқа әдістерді шақыру керек! Атаулы әдіс параметрлері және әдепкі мәндер
// Java
void setStatus(String code) {
    setStatus(code, "");
}

void setStatus(String code, String desc) {
    this.code = code;
    this.desc = desc;
}
// Kotlin
fun setStatus(code: String, desc: String = "") {
    this.code = code;
    this.desc = desc;
}

fun execute() {
    setStatus("200")
    setStatus(code = "200", desc = "Ok")
}
Әдістегі немесе конструктордағы барлық параметрлер талап етілмейді, ал Java-да біз параметрлердің әрбір мүмкін комбинациясы үшін әдістер немесе конструкторлар жиынын жасауға дағдыланғанбыз. Котлинге әдепкі параметрлер енгізілді, ол 1 әдісті жариялауға және жағдайға байланысты оған қажетті параметрлер жинағын беруге мүмкіндік береді. Ағындар
// Java
String getFirst(List<String> strings, String alpha) {
    return strings.stream()
            .filter(x -> x.startsWith(alpha))
            .findFirst()
            .orElse("");
}
// Kotlin
fun getFirst(strings: List<String>, alpha: String): String {
    return strings.first { it.startsWith(alpha) }
}
Java 8-де ағынды енгізу жинақтармен жұмыс істеу кезінде ажырамас функционалдылыққа айналды. Котлинде ағындар одан да ыңғайлы және функционалды болды: әрбір жинақта деректермен жұмыс істеу үшін ыңғайлы, жиі қолданылатын әдістер жиынтығы бар. Сондай-ақ, бірінші әдістің ішіндегі лямбда өрнегін байқаңыз: егер функцияның литералында дәл бір параметр болса, оның мәлімдемесін жоюға болады ( -> белгісімен бірге) және оны ол деп атауға  болады . Қорытындылау уақыты келді... Мен функционалдылықтың шағын, негізгі бөлігін ғана көрсеттім, бірақ сіз Котлинді қолданып көргіңіз келетініне сенімдімін! Мен өз тәжірибемнен келесі қорытынды жасай аламын:
  • Java әзірлеушісіне Котлин синтаксисін меңгеру және code жазуды бастау өте оңай;
  • Kotlin Java-мен толық үйлесімді және сіз оны бар жобаларыңызда, мысалы, сынақтарда қолданып көруге болады;
  • Котлин codeы тазарақ және оқуға ыңғайлы, сізге көп нәрсені жазудың қажеті жоқ ;
  • IDEA-да Java-дан Kotlin-ге автоматты түрлендіргіш бар, сіз дайын Java codeын алып, оны автоматты түрде Котлинге түрлендіруге болады;
  • жаңа жобаны Котлинде жазу керек, өйткені инфрақұрылымдық тұрғыдан ол Java-мен бірдей, бірақ пайдалану тұрғысынан ол жақсырақ және ыңғайлы!
Егер сізге мақала ұнаса және жалпы Java туралы ресурста маңызды болса, мен Котлинді нақты кәсіпорын жобасында пайдалану тәжірибесі туралы жазуды жалғастыра аламын. Пайдалы сілтемелер:
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION