reklama
V současné době diskutujete o tom, zda použít java pro vaši příští aplikaci, nebo použít nativní sady nástrojů a rámce? Chtěli byste vědět, jaké výhody poskytuje java oproti nativnímu programování aplikace? Čtěte dál a zjistěte to!
Co je nativní aplikace?
Nativní aplikace je program vytvořený speciálně pro operační systém (OS) a případně pro konkrétní hardware, na kterém je tento operační systém spuštěn. Většinou je psán v jazyce, jako je C / C ++. Zdrojový kód C / C ++ je kompilován do objektového formuláře pomocí kompilátoru, který je pak spojen do spustitelného souboru propojením požadovaných knihoven. Takto vytvořený program poběží na konkrétním hardwaru a operačním systému, pro který je vytvořen, ale nemusí fungovat správně na jiných systémech.
Proč nejsou nativní aplikace přenosné?
Kompilátor pro jazyk, jako je C / C ++, převádí příkazy zdrojového kódu do strojového jazyka pro cílený procesor. Minimalizovat všechny záložky Příznaky Při pokusu o spuštění tohoto kódu v jiném procesoru nemusí program pracovat správně (nebo pracovat vůbec), protože instrukce jazyka počítače v kompilovaném kódu nemusí být tímto procesorem podporována.
Kromě toho se nový operační systém může lišit od původního a nemusí dokonce rozpoznat programový soubor jako spustitelný soubor. Důvodem jsou různé formáty souborů používané pro spustitelné soubory napříč různými operačními systémy (například Windows, Linux, MacOS atd.).
Přenositelnost je tak velkým problémem s nativními aplikacemi, že pouze upgrade kompilátoru na další verzi může přinést zlomové změny. Pravděpodobně bude nutné opravit váš kód, aby mohl pracovat s novějším kompilátorem. Jako takový, postříkat zdrojový kód s tím, co je známé jako ifdef příkazy k izolování řešení specifických pro hardware, OS nebo kompilátor jsou běžné.
Následuje úryvek kódu z Knihovna komprese BZLib což ilustruje použití ifdefs izolovat zvláštnosti platformy:
#ifdef _WIN32. # zahrnout # ifdef small / * windows.h definovat small to char * / # undef small. # endif. # ifdef BZ_EXPORT. # define BZ_API (func) WINAPI func. # define BZ_EXTERN navenek. # else / * dynamicky importovat okna dll * / # define BZ_API (func) (WINAPI * func) # define BZ_EXTERN. # endif. #jiný. # define BZ_API (func) func. # define BZ_EXTERN navenek. #endif.
Přenositelnost zdrojového kódu napříč operačními systémy
Tuto situaci lze do určité míry zmírnit překompilováním zdrojového kódu C / C ++ do nového procesoru. Operační systém pro nový procesor se však může lišit. A zdrojový kód se nemusí kompilovat beze změn, ať už velkých nebo menších. I malé změny ve verzích operačního systému mohou vyžadovat určité změny zdrojového kódu.
A když uvažujete o odlišných operačních systémech, jako jsou Windows a Linux / UNIX, přenositelnost je zcela nová míčová hra. Pokud nepoužíváte sadu nástrojů nebo framework, který vás zcela izoluje od operačního systému, přenositelnost zdrojového kódu je nemožná. Je to proto, že rozhraní operačního systému je mezi těmito systémy úplně odlišné. Pokud v nejvzdálenějších rozích kódu použijete primitiva libovolného operačního systému přímo, nebude váš kód přenosný napříč těmito různými operačními systémy.
Jak se Java liší?
V tomto scénáři přináší java nový vzor, nový způsob vytváření softwaru. Při programování v javě, zacílíte na virtuální stroj. Takový stroj existuje jako koncept a jazyk java poskytuje rozhraní pro programování proti tomuto stroji. Můžete například dotazovat množství dostupné paměti, počet procesorů, síťová rozhraní atd. Virtuálního počítače.
Jak se vytvářejí Java aplikace?
Jazyk java poskytuje kompilátor java, který převádí zdrojový kód do kódu objektu. Kód objektu je poté proveden pomocí java virtuální stroj, což je samostatný program od kompilátoru. Operační systém zase nahlíží na virtuální stroj java jako na další program spuštěný v tomto operačním systému.
Břemeno přenositelnosti se nyní přesunulo z aplikačního programátoru na dodavatele virtuálních strojů java. Aplikační programátor píše software pomocí primitivů jazyka java a java virtuální počítač je zodpovědný za překlad těchto primitiv do hostitelského operačního systému zařízení. Když vyjde nová verze operačního systému, je na odpovědnosti dodavatele aktualizovat virtuální stroj java, aby na novém operačním systému fungoval správně.
Jaké jsou výhody Java Virtual Machine?
Jak bylo uvedeno výše, virtuální stroj java poskytuje aplikačnímu programátorovi virtuální pohled na operační systém a hardware. Tento virtuální pohled má podobu různých rozhraní a metod a slouží k izolování aplikačního programátora od rozdílů v hostitelském OS a základním hardwaru. Aplikační programátor tak může přistupovat k zařízením, jako je Windowing Toolkit, Networking, 3D grafika, více procesorů atd. aniž by se museli uchýlit k nízkoúrovňovým hovorům, které nakonec způsobí, že program nebude přenosný.
Program java je napsán a je kompilován pomocí kompilátoru java. Výsledný kód objektu (nazývaný bajtový kód) lze přenést na jiný hostitelský operační systém běžící na jiném hardwaru a měl by běžet bez problémů.
Kompilátor JIT
Virtuální stroj java používá Kompilátor JIT k optimalizaci bajtového kódu specificky pro cílový procesor. JIT znamená Právě včas a odkazuje na běhové optimalizace, které JVM aplikuje na bajtový kód, aby ho mohl běžet lépe na současném CPU.
Další výhodou použití Java Virtual Machine je to, že může aplikovat různé optimalizace pro různé případy použití, to vše se stejným bajtovým kódem. Například Oracle JVM poskytuje dvě možnosti pro spuštění bajtového kódu: režim serveru a režim klienta. Režim serveru je optimalizován pro dlouhodobě spuštěné serverové programy, zatímco režim klienta JVM optimalizuje dobu rychlé odezvy, protože je pravděpodobně používán v interaktivním režimu.
Stručně řečeno, nativní aplikace je vytvořena pro konkrétní hardware a operační systém. Na druhé straně následuje aplikace java Sestavení, kdykoli kdekoli filosofie tím, že JVM spouští kompilované instrukce bajtového kódu. Zatímco nativní aplikace byly tradičně považovány za výkonnější než aplikace Java, nemusí to být vždy pravda kvůli použití kompilátoru JIT v JVM.
Vyvinuli jste nativní aplikaci a kvůli přenositelnosti jste ji museli změnit na java? Nebo naopak kvůli problémům s výkonem? Dejte nám vědět v komentářích níže.
Obrázek Kredit: Profit_Image přes Shutterstock.com