Реклама
Тренутно расправљате о томе да ли за сљедећу апликацију користите јава или користите изворне алате и оквире? Желите ли знати које предности јава нуди у односу на изворно програмирање за апликацију? Прочитајте да сазнате!
Шта је нативна апликација?
Изворна апликација је програм написан посебно за оперативни систем (ОС), а могуће и за одређени хардвер који ради на том ОС-у. Углавном је написана на језику као што је Ц / Ц ++. Ц / Ц ++ изворни код се саставља у објектни образац помоћу компајлера, који се затим саставља у извршну датотеку повезивањем потребних библиотека. Програм изграђен на овај начин покренут ће се на одређеном хардверу и ОС-у за који је изграђен, али можда неће радити исправно на другим системима.
Зашто нису преносне нативне апликације?
Компајлер за језик као што је Ц / Ц ++ преводи изјаве изворног кода у машински језик за циљани ЦПУ. Када покушате да покренете овај код на другом ЦПУ-у, програм можда неће радити исправно (или уопште не ради) јер можда овај процесор не подржава упутства за језички језик у компајлираном коду.
Поред тога, нови оперативни систем се може разликовати од оригиналног и можда чак и неће препознати програмску датотеку као извршну датотеку. То се дешава због различитих формата датотека који се користе за извршне датотеке у различитим оперативним системима (као што су Виндовс, Линук, МацОС итд.).
Преносивост је тако велики проблем код нативних апликација да само надоградња компајлера до следеће верзије може донети промене промене. Можда ће бити потребно да исправите код да бисте радили са новијим преводиоцем. Као такав, прскање изворног кода оним што је познато ифдеф изјаве за изоловање заобилажења, оперативног система или компајлера су уобичајене.
Следи мали исјечак кода из БЗЛиб библиотека за компресију што илуструје употребу ифдефс да изолите карактеристике платформе:
#ифдеф _ВИН32. # укључују # ифдеф смалл / * виндовс.х дефинирај малу до цхар * / # ундеф смалл. # ендиф. # ифдеф БЗ_ЕКСПОРТ. # дефинирај БЗ_АПИ (фунц) ВИНАПИ функцију. # дефинирај БЗ_ЕКСТЕРН екстерн. # елсе / * увоз виндовс длл динамички * / # дефинирај БЗ_АПИ (фунц) (ВИНАПИ * функц) # дефинирај БЗ_ЕКСТЕРН. # ендиф. #елсе. # дефинирај БЗ_АПИ (фунц) функцију. # дефинирај БЗ_ЕКСТЕРН екстерн. #ендиф.
Преносивост изворног кода у свим оперативним системима
Ова ситуација се може донекле ублажити поновним састављањем Ц / Ц ++ изворног кода у нови ЦПУ. Међутим, оперативни систем за нови ЦПУ може бити другачији. И изворни се код не може саставити без промена, било главних или мањих. Чак и мање промене верзије оперативног система могу захтевати неке промене изворног кода.
А кад узмете у обзир различите оперативне системе као што су Виндовс и Линук / УНИКС, преносивост је потпуно нова игра са лоптом. Ако не користите алатни оквир или оквир који вас у потпуности изолује од оперативног система, преносивост изворног кода није могућа. То је зато што је интерфејс оперативног система потпуно различит између ових система. Ако у најудаљенијим угловима кода директно користите било који примитив оперативног система, ваш код неће бити преносив кроз ове различите оперативне системе.
По чему се Јава разликује?
Управо у овом сценарију јава доноси нову парадигму, нови начин израде софтвера. Приликом програмирања у јави циљате на Виртуелна машина. Таква машина постоји као концепт, а јава језик пружа интерфејсе за програмирање на овој машини. На пример, можете да затражите количину доступне меморије, број процесора, мрежне интерфејсе итд. Виртуелне машине.
Како се граде Јава апликације?
Јава језик пружа јава преводилац који преводи изворни код у објектни код. Објектни код затим извршава јава виртуална машина, који је засебан програм од преводиоца. Оперативни систем, са своје стране, јава виртуелну машину посматра као само још један програм који ради на том ОС-у.
Терет преносивости сада се пребацио са апликационог програмера на добављача јава виртуелне машине. Програмски програмер пише софтвер користећи примитиве јава језика и јаве виртуална машина одговорна је за превођење ових примитиваца у главни оперативни систем објеката. Када изађе нова верзија ОС-а, обавеза продавца је да ажурира јава виртуелну машину како би исправно функционисао на новом ОС-у.
Које су предности Јава виртуелне машине?
Као што је већ споменуто, јава виртуална машина пружа програмеру виртуални приказ оперативног система и хардвера. Овај виртуални приказ је у облику различитих сучеља и метода, а служи за изолирање апликацијског програмера од разлика у хост ОС-у и основном хардверу. Дакле, апликацијски програмер може приступити објектима као што су Виндовинг Тоолкит, Нетворкинг, 3Д графика, више ЦПУ-а итд. без прибегавања позивима ниског нивоа који на крају чине програм не преносивим.
Јава програм је написан и састављен је помоћу компајлера јава. Резултирајући објектни код (тзв бајт код) може се превести до другог главног оперативног система који ради на различитим хардверима и треба да ради без проблема.
ЈИТ Цомпилер
Јава виртуелна машина користи а ЈИТ преводилац за оптимизацију бајт кода посебно за циљни ЦПУ. ЈИТ је за Тачно на време и односи се на оптимизације рада које ЈВМ примењује на бајтни код како би се боље покренуо на тренутном ЦПУ-у.
Још једна предност коришћења Јава Виртуал Мацхине је да може применити различите оптимизације за различите случајеве употребе, све са истим бајт кодом. На пример, Орацле ЈВМ нуди две опције за покретање бајт кода: режим сервера и режим клијента. Режим сервера оптимизује се за дуготрајне серверске програме, док се клијентски ЈВМ режим оптимизује за брза времена одзива, пошто се вероватно користи у интерактивном режиму.
Да сумирам, изграђена је нативна апликација за одређени хардвер и оперативни систем. Јава апликација, са друге стране, следи а Изградите једном покрените било где филозофије, тако што је ЈВМ покренуо састављене инструкције бајт кода. Иако се на домаће апликације традиционално гледају као на перформансе више од јава апликација, то можда није увек тачно због употребе ЈВМ преводилаца.
Да ли сте развили изворну апликацију и морали сте да се пребаците на јава због преносивости? Или обрнуто због проблема са перформансама? Јавите нам у коментарима испод.
Кредитна слика: Профит_Имаге преко Схуттерстоцк.цом