Котлин вс Јава - која је разлика између њих две?

Аутор: John Stephens
Датум Стварања: 24 Јануар 2021
Ажурирати Датум: 1 Јули 2024
Anonim
More than Coffee. Ламповый стрим джавистов. Говорим о наболевшем и не только. Отвечаем на вопросы.
Видео: More than Coffee. Ламповый стрим джавистов. Говорим о наболевшем и не только. Отвечаем на вопросы.

Садржај


Јава је и даље можда први програмски језик који вам падне на памет кад размишљате о Андроиду, али нисте имати да се користи Јава за развој Андроид-а. У ствари, Котлин је сада Гоогле-овпожељнослужбени језик за Андроид!

Да бисте сазнали више о Јави, набавите бесплатан увод у Јава курс на Маке Андроид Аппс.

Тодаим, Андроид Студио испоручује се са уграђеном Котлин подршком, тако да је креирање Андроид пројекта који разуме Котлин код једнако једноставан као и одабир потврдног оквира у чаробњаку за креирање пројеката Андроид Студио. Повећала се подршка за опцију прековременог рада, до те мере да се ова одлука углавном своди на предност.

Али ако се пребаците са Јаве на Котлин, шта тачно добијате? Које карактеристике има Котлин, а да их нема Јава и обрнуто?

У овом чланку ћемо размотрити све главне разлике између Котлина и Јаве.

Котлин вс Јава, касније нуди још језгровитији код - без финдВиевБиИдс

Ако упоредите Котлин класу и Јава класу који изводе исти посао, онда ће Котлин класа генерално бити много сажетија, али постоји посебно подручје где Котлин може озбиљно смањити количину кода плоче коју морате написати: финдВиевБиИдс.


Котлин Андроид проширења омогућавају вам да увезете референцу на приказ у датотеку своје активности, и тада ћете моћи да радите с тим приказом као да је део активности. Резултат? Више никада нећете морати да пишете другу методу ФиндВиевБиИд!

Пре него што будете могли да користите ове екстензије, мораћете да додате додатни додатак у датотеку буилд.градле на нивоу модула (примените додатак: 'котлин-андроид-ектенсионс'), али након тога спремни сте да почнете са увозом власничких прегледа, за на пример, ако датотека Ацтивити_маин.кмл садржи ТектВиев са ИД тектВиев, онда бисте у активност додали следеће:

импорт котлинк.андроид.синтхетиц.маин.ацтивити_маин.тектВиев

Потом можете приступити овом ТектВиев-у користећи само његов ИД:

тектВиев.сетТект ("Поздрав свет")

Ово је много сажетији од Јава еквивалента:

ТектВиев тект = (ТектВиев) финдВиевБиИд (Р.ид.тектВиев); тект.сетТект ("Поздрав свет");

Котлин је подразумевано сигуран

НуллПоинтерЕкцептионс су велики извор фрустрације за Јава програмере. Јава вам омогућава да доделите нулл било којој променљивој, али ако покушате да користите референцу објекта која има нулту вредност, тада се закачите да наиђете на НуллПоинтерЕкцептион!


Такође прочитајте: Котилн за увод у Андроид

У Котлину су сви типови подразумевано неизрециви (не могу да задрже нулту вредност). Ако покушате да доделите или вратите нулу у вашем Котлин коду, она неће успети у време компилације, тако да ниједан од следећих редака неће компајлирати:

име вал: Стринг = нулл

фун гетНаме (): Стринг = нулл

ако ти стварно желите да доделите нулту вредност променљивој у Котлину, мораћете да је изричито означите као променљиву, додавањем упитника после типа:

вал број: Инт? = нулл

Због тога је готово немогуће наићи на НуллПоинтерЕкцептионс у Котлину - у ствари, ако наиђете на ову изнимку, велике су шансе да је то зато што сте изричито затражили да Котлин баци један, или ако НуллПоинтерЕкцептион потиче из спољног Јава кода.

Продужне функције

Котлин пружа програмерима могућност да прошире класу са новом функционалношћу, што је идеално ако постоји класа за коју сте увек осећали да недостаје важан метод!

Те „функције проширења“ нису доступне на Јави, мада су доступне и на другим програмским језицима које можете користити за Андроид развој, као што је Ц #.

Прочитајте даље: Јава туториал за почетнике

Функцију проширења креирате тако што ћете префиксати назив класе коју желите да проширите (као што је „Стринг“) на име функције коју креирате („стилеСтринг“), на пример:

фун Стринг.стилеСтринг (): Стринг {// Стилите стринг, а затим га вратите //}

Затим можете позвати ову функцију на примерке проширене класе, помоћу. нотација, као да је део те класе:

миСтринг.стилеСтринг ()

Цороутинес су грађани прве класе

Кад год покренете дуготрајну операцију, као што је мрежни И / О или ЦПУ-интензиван рад, позивни нит се блокира док се операција не доврши. Будући да је Андроид подразумевано једносметан, чим блокирате главну нит, корисничко сучеље ваше апликације ће се замрзнути и остаће без одговора док се операција не доврши.

У Јави је решење традиционално било креирање позадинске нити на којој можете изводити овај интензиван или дуготрајан рад, али управљање више нити може довести до сложених кода који су склони грешкама, а стварање нове нити је скупа операција.

Иако можете да креирате додатне нити у Котлину, такође можете користити кораке. Цороутине обављају дуготрајне и интензивне задатке обустављајући извршење у одређеној тачки без блокирања навоја, а затим настављају ову функцију у каснијој тачки, можда на другој нити. Ово вам омогућава да креирате неблокирајући асинхрони код који изглед синхрони и зато је јаснији, сажетији и разумљивији од људи. Цороутинес су такође беспрекорни, тако да имају нижу потрошњу меморије у поређењу са нитима, и отварају врата додатним стиловима асинхроног неблокирајућег програмирања, као што су асинц / ваит.

Нема проверених изузетака

Котлин нема провере изузетака, тако да не морате да хватате или изјављујете било који изузетак.

Да ли вас то привлачи као Котлин или вас жели држати Јава-е зависиће од вашег мишљења о провереним изузецима, јер је ово функција која дели заједницу програмера. Ако вам је досадило да блокови покушаја / хватања затрпавају ваш Јава код, тада ћете бити задовољни овим пропустом, међутим ако утврдите да проверени изузеци вас подстичу да размишљате о опоравку грешака и на крају вас гурну ка стварању робуснијег кода, онда је вероватније да ћете ово видети као подручје где Јава има предност над Котлином.

Подржана подршка делегацији

Котлин, за разлику од Јаве, подржава образац дизајна „састава над насљеђивањем“, путем првокласне делегације (која се понекад назива и имплицитна делегација). Делегирање је гдје пријемни објект делегира операције другом делегатском објекту, што је помоћни објект с изворним контекстом.

Котлинова делегација класе је алтернатива наслеђивању која омогућава коришћење вишеструког наслеђивања. У међувремену, Котлинова делегирана својства помажу у спречавању дуплирања кода, на пример, ако требате поново да користите исти код за више корисника и подешавалаца имовине, а затим можете да га извучете у делегирани својство. Делегат својства мора дефинирати функцију гетВалуе оператера и, по жељи, оператора сетВалуе:

делегат класе {оператор забава гетВалуе (...) ... ... ...} забавни сет оператораВалуе (...) ... ... ...}}

Затим, када креирате својство, можете изјавити да функције Геттер и Сеттер за овај одређени ентитет обрађује друга класа:

класа МиЦласс {вар проперти: Стринг би Делегате ()}

Класе података

Није необично да пројекат има више класа које не раде ништа осим података. У Јави ћете наћи писање пуно кода на овој плочи, иако саме класе имају врло мало функционалности. Обично ћете требати дефинисати конструктор, поља за складиштење података, функције геттер-а и сетера за свако поље, плус хасхЦоде (), екуалс () и тоСтринг () функције.

У Котлину, ако у дефиницију класе укључите кључну реч „подаци“, преводилац ће извршити сав овај посао за вас, укључујући генерисање свих неопходних прикупљача и сеттера:

дата цласс Датум (вар месец: Стринг, вар дан: Инт)

Смарт цастс

На Јави често морате да проверавате тип и затим бацате објект у ситуацијама када је већ јасно да се предмет може дати.

Котлинови паметни улози могу да подносе ове сувишне налоге за вас, тако да вам не треба стављати изјаву ако сте је већ проверили код Котлиновог оператера "је". На пример, преводилац зна да је следећа цаст сигурна:

иф (здраво је Стринг) {принтСтринг (здраво)}

Подршка за конструкторе

За разлику од Јаве, Котлин класа може имати примарни конструктор и један или више секундарних конструктора, које креирате тако што ћете их укључити у декларацију класе:

конструктор класе МаинАцтивити (фирстНаме: Стринг) {}

Нема подршке за имплицитне проширивање конверзија

Котлин не подржава имплицитне проширивање конверзија за бројеве, тако да мањи типови нису имплицитно претворени у веће типове. У Котлину, ако желите да доделите вредност типа бајта Инт променљивој, тада ћете морати да извршите експлицитну конверзију, док Јава има подршку за имплицитне конверзије.

Библиотеке за обраду коментара са Котлином

Котлин подржава све постојеће Јава оквире и библиотеке, укључујући напредне оквире који се ослањају на обраду напомена, мада неке Јава библиотеке већ нуде Котлин екстензије, као што је РкКотлин.

Ако желите да користите Јава библиотеку која се ослања на обраду напомена, додавање исте у Котлин пројекат је мало другачије јер ћете морати да одредите зависност користећи котлин-капт додатак, а затим користите алат за обраду Котлин Аннотатион (капт) уместо аннотатионПроцессор. На пример:

// Примените додатак // примените додатак: котлин-капт // Додајте одговарајуће зависности користећи конфигурацију капт // зависности {капт "цом.гоогле.даггер: даггер-цомпилер: $ даггер-версион" ... ... ...}

Разменљивост са Јава

Када расправљате о томе да ли да користите Котлин или Јава за Андроид развој, требало би да имате на уму да постоји трећа опција: користи и једно и друго. Упркос свим разликама између два језика, Јава и Котлин су 100% интероперабилни. Можете назвати Котлин код са Јаве, а можете назвати и Јава код из Котлина, тако да је могуће да Котлин и Јава класе буду постављени један поред другог у оквиру истог пројекта, а све ће се и даље саставити.

Ова флексибилност за кретање између два језика корисна је када започнете са Котлином јер вам омогућава да поступно уведете Котлин у постојећи пројекат, али можда ћете радије користити оба језика на сталној основи. На пример, можда постоје одређене функције које бисте најрадије писали на Котлину и одређене функције за које вам је лакше писати на Јави. Будући да се Котлин и Јава комбинују у бајт код, ваши крајњи корисници неће моћи да кажу где се завршава ваш Јава код, а започиње Котлин код, тако да нема разлога зашто не можете да пустите апликацију која се састоји од Јаве и Котлин код.

Ако желите да испробате Котлин сами, док год имате инсталиран Андроид Студио 3.0 Превиев или новији, постоји неколико начина на које можете започети:

  • Направите нови пројекат Андроид Студио. Најлакши начин је креирање новог пројекта и потврдите избор у пољу за потврду „Укључи Котлин подршку“ из чаробњака за креирање пројеката.

  • Додајте Котлин класу у постојећи директориј. Кликните контролним кликом на предметни директориј, а затим изаберите „Датотека> Ново> Котлин датотека / класа.“ Андроид Студио ће приказати транспарент са захтевом да конфигуришете пројекат тако да подржава Котлин; кликните везу „Конфигурирај“ и следите упутства на екрану.

  • Претворите постојеће Јава датотеке у Котлин. Било коју Јава датотеку можете покренути путем Котлин конвертера, притиском на Цонтрол и кликните на „Цоде> Претвори Јава датотеку у Котлин датотеку.“

Окончање

Као што видите, постоји много добрих разлога да се преферира Котлин од Јаве, међутим, постоји неколико области у којима Јава има предност. Можда најистакнутије: многи Андроид програмери су у овом тренутку једноставно више упознати са Јавом. Вероватно се расправа о Котлину и Јави неће ускоро решити, а обоје имају своје заслуге. Дакле, да ли ћете се пребацити на Котлин или сматрате да је Јава још увек најбоља опција за развој Андроида?

Прочитајте даље: Увод у Јава синтаксу за Андроид развој

Ако сте на тржишту за нови паметни екран, сада је прави тренутак да га покупите. На веб локацији Блоомингдале можете да купите снижени Гоогле Нест Хуб Мак за само 199 УСД, што је 30 УСД ниже од првоби...

Прошлог пролећа Гоогле је најавио Нест Хуб Мак, први производ своје нове ко-марке Гоогле Нест. Гоогле-ов најновији паметни екран изгледа готово идентично оригиналном Хоме Хуб-у, али додаје нове функци...

Будите Сигурни Да Изгледате