De ce este Java Platform Independent Language?

Publicat: 2021-02-08

Cuprins

Introducere

Java a câștigat o popularitate uriașă printre toate celelalte limbaje de programare de la naștere. Iar motivul unui răspuns atât de imens este capacitatea de a oferi caracteristici unice. Sintaxa Java va fi aproape similară cu c++, dar oferă multe caracteristici decât c++.

Disponibilitatea programării orientate pe obiecte (OOP) a făcut ca Java să iasă în evidență față de toate celelalte limbaje rămase la vremea sa. Java a fost dezvoltat pentru a utiliza OOP la bază și a fost unul dintre motivele pentru a fi cel mai folosit limbaj. Acest concept mărește reutilizabilitatea, execuția fără întreruperi. În acest moment, poate exista o întrebare în mintea noastră „de ce ar trebui să folosim un obiect?”.

Obiectele din Java sunt similare cu structurile din limbajul c, unde legăm împreună metode și variabile similare. Odată cu aceasta, Java oferă și abstracție, încapsulare, moștenire și polimorfism care încurajează utilizatorul să implementeze obiecte.

Java joacă un rol dominant în multe domenii, cum ar fi dezvoltarea de aplicații, dezvoltarea web, crearea de instrumente software. De asemenea, are un număr bogat de biblioteci, ceea ce face lucrurile mai ușoare. De asemenea, disponibilitatea IDE joacă un rol crucial în atragerea atenției dezvoltatorilor. IDE-uri precum Eclipse, IntelliJ, NetBeans sunt utilizate frecvent de mulți dezvoltatori.

Bine, acum să trecem la discuția noastră.

Dar, în primul rând, ce înseamnă independența platformei? Pentru a obține un răspuns la această întrebare, trebuie să știm ce se întâmplă atunci când compilam un cod.

Compilarea unui cod

Ori de câte ori scriem un cod, urmăm sintaxele unui limbaj de programare, care ar avea o lizibilitate destul de mare. Și conține puține cuvinte, fraze, nume de variabile, nume de metode etc. Toate aceste lucruri sunt considerate a fi text care poate fi citit de om și de înțeles de om.

Deci, o mașină folosește un compilator pentru a converti codul sursă într-un cod care poate fi citit de mașină, care este denumit și limbaj la nivel de mașină. Compilatorul construiește codul la nivel de mașină într-o prezentare specifică, astfel încât să poată fi înțeles cu ușurință de către CPU și, prin urmare, să îl execute fără probleme.

Această clădire a limbajului la nivel de mașină diferă în funcție de fiecare limbaj de programare și de fiecare sistem de operare. De exemplu, c/c++ generează un fișier .exe care nu este același pentru două mașini dacă rulează pe un sistem de operare diferit.

Și aici apare problema!

Când un limbaj la nivel de mașină diferă în funcție de fiecare sistem de operare, atunci nu putem rula un cod care este compilat pe o altă mașină într-o nouă mașină, decât dacă ambele sisteme funcționează pe același sistem de operare. Acest lucru pare o porcărie pentru mulți programatori și dezvoltatori.

Dar Java face lucrurile mai ușoare, iar java are o soluție pentru asta. Să începem.

Java este independent de platformă

Deci, ce se întâmplă când compilam cod în java?

Ori de câte ori introducem o declarație „javac filename.java” sau compilăm un cod în java, javac compilează codul. Și creează un cod intermediar numit Byte Code.

Aici Java face diferența între toate limbajele de programare diferite. Acesta creează un fișier .class, care este considerat cod octet. În timp ce limbaje precum c/c++ vor crea un cod executabil nativ atunci când sunt compilate și, astfel, le vor face dependente de platformă.

Stai, e prea devreme pentru sărbătoare. Acest cod octet nu este executabil. Avem nevoie de un traducător pentru a executa acest cod octet. Și JVM face treaba asta. În general, JVM se află în memoria principală a computerului nostru. Java Virtual Machine acționează ca un interpret și apoi execută codul de octeți generat de javac.

Și acum am terminat, codul nostru este executat cu succes.

Deci, cum va gestiona java totul singur?

Și răspunsul ar fi, din cauza JVM-ului. Codul octet generat de compilarea codului sursă ar rula în orice sistem de operare, dar JVM-ul prezent într-o mașină diferă pentru fiecare sistem de operare. Și acesta este modul în care java este considerat un limbaj de programare independent de platformă.

Pentru a înțelege corect, să înțelegem arhitectura și funcționarea JVM-ului.

Arhitectura JVM

JVM face parte din mediul de rulare java și este responsabil pentru conversia unui fișier .java într-un fișier .class. Când compilam un cod java, JVM apelează metoda principală din codul sursă.

Arhitectura JVM

ClassLoader

Este un subsistem din mașina virtuală java. Încarcă fișierul .class, verifică dacă există excepții și este motivul pentru câteva excepții de rulare. Și după verificare, alocă memoria pentru variabilele și metodele prezente, atribuiți valori implicite variabilelor și matricelor. De asemenea, execută metodele statice sau variabilele prezente în cod.

Există 3 încărcătoare de clasă încorporate în JVMm, încărcător de clasă bootstrap, încărcător de clasă extensie, încărcător de clasă de aplicație.

Zone de memorie în JVM

Metodă/Zona de clasă

Stochează informații precum nume de clase, nume de metode, variabile. Este o resursă partajată pentru toate metodele și variabilele dintr-o clasă.

Morman

Stochează informațiile tuturor datelor stocate în zona heap.

Stiva de limbaj JVM

Stochează informațiile în blocuri numite și stack-frames/frames, care stochează informațiile curente atunci când există un apel de funcție, stochează variabile locale, de asemenea, joacă un rol dominant în managementul thread-urilor.

Înregistrare PC

Acesta stochează adresa instrucțiunii care este în curs de executare. Este util într-o situație de execuție multi-thread.

Stiva de metode native

Stochează toate informațiile metodelor native utilizate.

Motor de execuție

Motorul de execuție va executa codul de octet și va elimina memoria alocată obiectelor care nu sunt accesibile sau nereferențiate. Interpretul din motorul de execuție va executa codul de octet citindu-l într-un flux și interpretând linie cu linie.

Are, de asemenea, o parte interesantă numită compilator JIT (Just In Time Compiler), unde creează un cod executabil nativ pentru metode, așa că, dacă există mai multe apeluri de funcție, JVM-ul nu trebuie să îl interpreteze din nou, ci mai degrabă să folosească direct codul executabil nativ. Prin urmare, îmbunătățește performanța execuției.

Interfață cu metoda nativă

Această interfață este folosită de java pentru a interacționa cu aplicațiile implementate în diferite limbaje precum C/C++. Interacțiunea este bidirecțională, unde JVM-ul poate apela acele aplicații sau poate fi apelat de acele aplicații.

Biblioteci de metode native

Acesta ține evidența bibliotecilor în limba maternă, care pot fi utilizate de motorul de execuție.

Acum că am înțeles arhitectura JVM-ului, să revenim la discuția noastră. Deci, acest JVM este diferit pentru sisteme de operare diferite, dar ieșirea generată de acele JVM-uri va fi aceeași pentru același cod octet furnizat.

Citiți și: Idei și subiecte de proiecte Java

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Concluzie

Am trecut prin câteva caracteristici unice ale java, am înțeles ce se întâmplă atunci când compilam cod în limbaje precum C/C++, am înțeles diferența dintre codul executabil nativ și codul byte. Am explicat de ce java este considerat un limbaj independent de platformă, înțelegând că JVM este motivul din spatele independenței platformei java. Am aruncat o privire asupra arhitecturii JVM pentru o mai bună înțelegere.

Acum că sunteți conștient de motivul pentru care java este independent de platformă, explorați alte caracteristici unice ale java și începeți să le utilizați!

Dacă sunteți interesat să aflați mai multe despre Java, dezvoltarea de software full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea de software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, 9+ proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Care sunt avantajele Java față de alte limbi?

Există multe avantaje ale Java față de alte limbi. Să începem cu cel mai mare avantaj, Java este independent de platformă. Codul Java poate rula pe orice platformă hardware, sistem de operare și browser. Poate rula pe orice dispozitiv. Aceasta înseamnă că, odată ce ați scris aplicația în Java, o puteți rula pe orice dispozitiv. Este la fel de simplu! De asemenea, odată ce ați scris codul, este foarte ușor să depanați și să remediați erorile. În cele din urmă, Java este orientat pe obiecte. Aceasta înseamnă că trebuie să utilizați programe și cod mai mici. Acest lucru va face mai ușor să lucrați cu codul. Dacă sunt necesare modificări, codul este mai puțin predispus la erori. Are caracteristici precum Multithreading, Managementul memoriei, Platform independent, Securitate, Virtual Machine, adică bytecode, Collection Framework, Garbage Collector, Layered Architecture etc.

De ce este independent de platformă Java?

Java este independent de platformă deoarece folosește o mașină virtuală. Limbajul de programare Java și toate API-urile sunt compilate în coduri de octet. Codurile byte sunt efectiv independente de platformă. Mașina virtuală se ocupă de diferențele dintre codurile de octet pentru diferitele platforme. Cerințele de rulare pentru Java sunt, prin urmare, foarte mici. Mașina virtuală Java se ocupă de toate problemele legate de hardware, astfel încât niciun cod să nu fie compilat pentru hardware diferit.

Ce este colectarea automată a gunoiului în Java?

Colectarea automată a gunoiului este o tehnică de colectare a gunoiului în care colectorul de gunoi rulează automat, fără ca programatorul să fie nevoit să scrie cod pentru acesta. În Java, colectarea gunoiului se face prin punerea mașinii virtuale Java într-un mod special. Colectorul de gunoi va rula atunci când vede o oportunitate de a face acest lucru. Unii colectori de gunoi folosesc o abordare stop-the-world, iar mașina virtuală Java trebuie să nu mai execute programul pentru a face colectarea gunoiului. Garbage Collection nu este un concept ușor, dar odată ce îl obțineți, nu mai puteți privi înapoi. Și colectarea de gunoi de la Java este una dintre cele mai ușor de înțeles.