Извор слике: пикабаи.цом

Сцала вс Јава Перформанце - Добродошли у Ултимате Баттле оф тхе Центури. Сцала насупрот Свемоћној Јави. Неки се могу чак питати зашто? Неки чак могу рећи да је Сцала нетакнут део саме Јаве, па зашто онда ова скала и јава поређење? Разлог је тај што Сцала није баш Јава. Дођавола! Није ни близу Јаве. Иако користи ЈВМ (Јава Виртуал Мацхине) компајлер, он је само делимично сличан Јави.

Можете рећи да је Јава велики отац Сцале. Због тога има неколико карактеристика Јаве попут састављања једноставних кодова у бајт кодове, мање интеграције и много више. То је један од разлога, иако Сцала има Јава то 'није', а не Јава. Збуњени? Да, и ја сам такође био. И то је разлог зашто пишем овај блог намењен почетницима како се не би збунио.

Доста је разговора већ да започнемо и видимо које су разлике, сличности и разлози да се програмирање у Сцали развија тако брзо када већ имамо Јава.

Можете погледати инфографику за дијаграмски поређење Сцала-а и Јава-а.

Време читања: 90 секунди

Сцала вс Јава Инфограпхицс

Сцала вс Јава приступ

Јава је објектно програмирани језик. Његов циљ је углавном фокусиран на прикупљање и манипулирање даним подацима. Покушава учинити да апликације буду доступне дневним корисницима уз помоћ графичких корисничких сучеља и објектно оријентисаних образаца, док с друге стране Сцала програмирање у потпуности следи традиционални функционални приступ.

Сцала за разлику од Јава је машински састављен језик. То значи да је дизајниран да ради у специфичном окружењу помало налик ЈВМ-у и нуди комбинацију функционалног и објектно оријентисаног приступа уз помоћ компајлера (сличног оном дос-а) и система типа који се статистички скенирао у то време. компилације која је опет иста као Јава, осим што има експресивну синтаксу језика високог нивоа као што је Руби.

Али не занемарити исте карактеристике које чине Сцала верзију тако продуктивном, такође може ометати перформансе скала-јава и учинити је много катастрофалнијом него што треба да буде.

Потреба за рођењем Сцале

Шта је Сцала? Сцала је посебно развијена са циљем да буде бољи језик од Јаве. Програмери су желели да оставе делове Јаве иза којих кочи продуктивно програмирање, предуго трају заједно са чињеницом да то фрустрира програмера. Поанта је да, иако постоји диференцијација кода и промене у приступу (у поређењу са Јава), могу да чине Сцала језик мало тежим, ипак је резултат много чист и добро структуиран, што је на крају лакше за употребу и читање слично ономе попут Питхона. чак можете проћи са Сцалом вс Питхон на мом следећем блогу.

Погледајмо једноставно штампање текста на оба језика:

Јава:

јавна класа ИамЈава (

public static void main(String() args) (

System.out.println("I am Java!");

)

)

Сцала:

object IamScala (

def main(args: Array(String)): Unit = (

println("I am Scala!")

)

)

Хмнн … Једва да постоји разлика. Не брини. Још се морам показати овдје. Погледајмо сада тачнији пример. Следи пример како дугачак део кода написан на Јави; може једноставно бити један линијски брод у Сцали:

Препоручени курсеви

  • Професионална КСМЛ обука
  • ЦЦНА течај за сертификацију испита
  • УНИКС и Линук ОС програмирање
  • ХТМЛ 5 Траининг

Јава:

public class People

(

private String start;

private String stop;

String getstart() ( return start; )

void setstart(String start) ( this.start = start; )

String getstop() ( return stop; )

void setstop(String stop) ( this.stop = stop; )

int hashCode() ….

boolean equals(Object o) ( …. )

)

Сцала:

case class People(start:String, stop:String)

Дакле, једна линија у Сцали једнака је једанаест линија Јаве. Да будемо прецизнији, Јава-у недостаје компактност програма Сцала, па је тако писање дугачких кодова постало навика Јава програмера. У ствари, можемо то чак и написати овако:

public class People extends DTOBase

(

public String start;

public String stop;

)

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

Не треба ни помињати да Јава има и неколико трикова у рукаву. Постоји разлог зашто је доминирао у свету програмирања. Јава може код мало скратити, али очигледно не у стандардној употреби.

Сада погледајмо обичан стари Јава објект овде. Претпоставимо да сте сјајан програмер (што очигледно нисам … грешим … само се шалим) Дакле, да кажем, некако сте успели да смањите код, али на колико? 5 до 6 редака?… Дајте ми то јасно … шта ако намерите да напишете шифру овако велику:

public class Group (

private String value;

private record tokens;

public Group() (

tokens = new Arrayrecord();

)

public String getvalue() (

return value;

)

public void setvalue(String value) (

this.value = value;

)

public record gettokens() (

return tokens;

)

public void settokens(record tokens) (

this.tokens = tokens;

)

)

public class tokens (

private int id;

private record items;

public tokens() (

items = new Arrayrecord();

)

public int getId() (

return id;

)

public void setId(int id) (

this.id = id;

)

public record getitems() (

return items;

)

public void setitems(record items) (

this.items = items;

)

)

public class item (

private int id;

private String characteristic;

public int getId() (

return id;

)

public void setId(int id) (

this.id = id;

)

public String getcharacteristic() (

return characteristic;

)

public void setcharacteristic(String characteristic) (

this.characteristic = characteristic;

)

)

Зззз…. Већ се осјећам успавано. А сада, погледајмо Сцалас. Ево да будем сигуран, дозволите ми да вам кажем да овде не покушавам да умањим ниједан део кода. Управо пишем исти део кода који сам горе написао у најосновнијем формату (као што би то написао почетник програмер) у Сцали (користио сам записе као листе или арраилисте):

class Group (

var value: String = _

var tokens: record(tokens) = Nil

)

class tokens (

var id: Int = _

var items: record(item) = Nil

)

class item (

var id: Int = _

var category: String = _

)

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

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

Искусни кодери могу чак тврдити да је Јава читљивија од Сцале, а разлог су дубоко угнијежђени Сцала-ови. У Сцали можете да дефинишете функције унутар функција, у другу функцију, унутар другог објекта који је унутар класе и тако даље. Па видите, толико да се каже о компактности. Иако у Јави постоји потреба за компактношћу, понекад доноси разорне ефекте ако је лоше написано. Толико погубно да чак ни не разумете сопствени код.

Иако је Сцала овде непоражена, то је ипак са жртвом перформанси. Никада нисмо разговарали о успешности Сцале, зар не? Недавно сам тестирао референтне вредности Сцала и Јава на свом АМД-А8 ЦПУ-у. Резултат који сам добио био је заправо неочекиван. Иако можете да пишете компактне кодове у Сцали, перформансе односно брзина је заправо двоструко спорија у односу на Јаву.

Закључак

Сцала Јава; на крају су две различите стране исте кованице. Обоје имају свој низ предности и недостатака. То је разлог зашто никад не можете заменити Јава за Сцала и обрнуто. С једне стране, где је Јава једноставна, супер брза и ефикасна у руковању задацима; с друге стране Сцала је изузетно компактна и једноставнија за писање (иако је тешко разумети и исправљати) уз истовремено компромис о ефикасности.

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

Главна разлика између Јаве и Сцале је њихова филозофија и њихова природа према писању дела кода. Јава је искључиво објектно оријентисана и фокусирана је на класе, енкапсулацију и сличне ствари, док се Сцала темељи на функционалном приступу. Једном када сазнате ову разлику, њихово учење ће бити само питање времена.

Препоручени чланци

Ево неколико чланака који ће вам помоћи да сазнате више детаља о скали и јави, па само пређите на линк.

  1. Које су програмске стране програма шема
  2. Савети и трикови Мицрософт Екцел-а
  3. Разлика између Јава Перформанце-а и Питхон-а
  4. Јава Интервјуи за свежију верзију | Најважније
  5. Каријере као Јава програмера
  6. Каријера на Јави
  7. 10 важних питања о интервјуу са вишеструким навојем Јава

Категорија: