реклама
В момента обсъждате дали да използвате java за следващото си приложение или да използвате собствени инструменти и рамки? Искате ли да знаете какви предимства предоставя java пред родното програмиране за приложение? Прочетете, за да разберете!
Какво е Native Application?
Народното приложение е програма, написана специално за операционна система (OS) и вероятно за специфичния хардуер, работещ под тази ОС. Пише се предимно на език като C / C ++. C / C ++ изходният код се компилира до обектна форма с помощта на компилатор, който след това се сглобява в изпълним файл чрез свързване на необходимите библиотеки. Програмата, изградена по този начин, ще работи на специфичния хардуер и ОС, за която е изградена, но може да не работи правилно в други системи.
Защо не са преносими приложения за собствено приложение?
Компилатор за език като C / C ++ превежда извлечения от изходния код на машинен език за целевия процесор. Когато се опитате да стартирате този код на различен процесор, програмата може да не работи правилно (или да работи изобщо), тъй като инструкциите за езика на машината в компилирания код може да не се поддържат от този процесор.
Освен това новата операционна система може да е различна от оригиналната и дори да не разпознава програмния файл като изпълним файл. Това се дължи на различни файлови формати, използвани за изпълними файлове в различни операционни системи (като Windows, Linux, MacOS и др.).
Преносимостта е толкова голям проблем с родните приложения, че просто надграждането на компилатора до следващата версия може да доведе до променливи промени. Вашият код може да се наложи да бъде фиксиран, за да работи с по-новия компилатор. Като такъв, изпръскване на изходния код с това, което са известни като ifdef изявления за изолиране на специфични за хардуер, OS или компилатор решения.
По-долу е малък фрагмент от код BZLib компресия библиотека което илюстрира използването на ifdefs за изолиране на особеностите на платформата:
#ifdef _WIN32. # включват # ifdef small / * windows.h дефинирайте малки до char * / # undef малък. # endif. # ifdef BZ_EXPORT. # дефинира BZ_API (func) WINAPI func. # дефинирайте BZ_EXTERN екстерн. # else / * импортиране на Windows dll динамично * / # определя BZ_API (func) (WINAPI * func) # дефинирайте BZ_EXTERN. # endif. #else. # дефинира BZ_API (func) func. # дефинирайте BZ_EXTERN екстерн. # endif.
Преносимост на изходния код в операционните системи
Тази ситуация може да бъде облекчена до известна степен чрез повторно компилиране на C / C ++ изходния код в новия процесор. Операционната система за новия процесор обаче може да е различна. И изходният код може да не се компилира без промени, независимо дали главни или второстепенни. Дори и незначителни промени във версиите на операционната система може да изискват някои промени в изходния код.
И когато имате предвид различни операционни системи като Windows и Linux / UNIX, преносимостта е съвсем нова игра с топка. Освен ако не използвате инструментариум или рамка, която напълно ви изолира от операционната система, преносимостта на изходния код е невъзможна. Това е така, защото интерфейсът на операционната система е напълно различен между тези системи. Ако в най-отдалечените ъгли на вашия код използвате директно всички примитиви на операционна система, тогава вашият код няма да бъде преносим в тези различни операционни системи.
Как се различава Java?
Именно в този сценарий java предоставя нова парадигма, нов начин за изграждане на софтуер. Когато програмирате в Java, насочвате към a виртуална машина. Такава машина съществува като концепция, а java езикът предоставя интерфейси за програмиране спрямо тази машина. Например, можете да заявите количеството налична памет, броя на процесорите, мрежовите интерфейси и т.н. на виртуалната машина.
Как се изграждат Java приложения?
Ява езикът осигурява компилатор на java, който превежда изходния код в обектния код. След това обектният код се изпълнява от java виртуална машина, която е отделна програма от компилатора. Операционната система от своя страна разглежда виртуалната машина java като просто друга програма, работеща на тази операционна система.
Тежестта на преносимостта сега се прехвърли от приложния програмист към доставчика на виртуална машина java. Приложният програмист пише софтуера, използвайки примитивите на езика java и java виртуалната машина отговаря за превеждането на тези примитиви към хост операционната система съоръжения. Когато излезе нова версия на операционната система, отговорността на доставчика е да актуализира виртуалната машина java, така че тя да работи правилно в новата ОС.
Какви са предимствата на виртуалната машина на Java?
Както бе споменато по-горе, виртуалната машина java предоставя виртуален изглед на операционната система и хардуера на приложния програмист. Този виртуален изглед е под формата на различни интерфейси и методи и служи за изолиране на приложния програмист от разликите в хост ОС и основния хардуер. По този начин, приложният програмист може да има достъп до съоръжения като Windowing Toolkit, Networking, 3D графика, множество процесори и т.н. без да се налага да прибягвате до обаждания на ниско ниво, които в крайна сметка правят програмата не-преносима.
Ява програма е написана и се компилира с помощта на компилатора java. Резултатният код на обекта (наречен байт код) може да бъде транспортиран до различна хост операционна система, работещ на различен хардуер и трябва да работи без проблеми.
JIT Съставител
Java виртуалната машина използва a JIT компилатор за оптимизиране на байтовия код специално за целевия процесор. JIT означава Точно навреме и се отнася до оптимизациите по време на изпълнение, които JVM прилага към байтовия код, за да може той да работи по-добре в текущия процесор.
Друго предимство на използването на виртуалната машина на Java е, че тя може да прилага различни оптимизации за различни случаи на използване, всички с един и същ байтов код. Например, Oracle JVM предоставя две опции за изпълнение на байтовия код: режим на сървър и клиентски режим. Сървърният режим оптимизира за дълго работещи сървърни програми, докато клиентският JVM режим оптимизира за бързи времена на реакция, тъй като вероятно се използва в интерактивен режим.
За да обобщим, е създадено собствено приложение за конкретен хардуер и операционна система. Приложението java, от друга страна, следва a Изградете веднъж изпълнете навсякъде философия, като JVM изпълни съставените инструкции за байт код. Докато традиционните приложения традиционно се разглеждат като по-ефективни, отколкото java приложения, това не винаги може да е вярно поради използването на JIT компилатор.
Разработили ли сте собствено приложение и трябваше да преминете към java поради преносимост? Или обратното поради проблеми с производителността? Уведомете ни в коментарите по-долу.
Кредитна снимка: Profit_Image чрез Shutterstock.com