Dlaczego niezależny język platformy Java?

Opublikowany: 2021-02-08

Spis treści

Wstęp

Java od swoich narodzin zyskała ogromną popularność wśród wszystkich innych języków programowania. A powodem tak ogromnej reakcji jest możliwość dostarczenia unikalnych funkcji. Składnia Javy będzie prawie podobna do c++, ale zapewnia dużo więcej funkcji niż c++.

Dostępność programowania obiektowego (OOP) sprawiła, że ​​java wyróżniała się spośród wszystkich pozostałych języków w swoim czasie. Java została stworzona do używania OOP w swoim rdzeniu i była jednym z powodów, dla których była najczęściej używanym językiem. Ta koncepcja zwiększa możliwość ponownego użycia, bezproblemową realizację. W tym momencie może pojawić się w naszym umyśle pytanie „dlaczego mamy używać przedmiotu?”.

Obiekty w Javie są podobne do struktur w języku c, gdzie łączymy ze sobą podobne metody i zmienne. Wraz z tym Java zapewnia również abstrakcję, enkapsulację, dziedziczenie i polimorfizm, co zachęca użytkownika do implementacji obiektów.

Java odgrywa dominującą rolę w wielu dziedzinach, takich jak tworzenie aplikacji, tworzenie stron internetowych, budowanie narzędzi programowych. Posiada również bogatą liczbę bibliotek, co ułatwia sprawę. Również dostępność IDE odgrywa kluczową rolę w zwróceniu uwagi programistów. IDE, takie jak Eclipse, IntelliJ, NetBeans, są często używane przez wielu programistów.

Dobrze, teraz przejdźmy do naszej dyskusji.

Ale przede wszystkim, co oznacza niezależność platformy?. Aby uzyskać odpowiedź na to pytanie, musimy wiedzieć, co się dzieje, gdy kompilujemy kod.

Kompilacja kodu

Za każdym razem, gdy piszemy kod, postępujemy zgodnie ze składnią języka programowania, który byłby dość czytelny. Zawiera kilka słów, fraz, nazw zmiennych, nazw metod itp. Wszystkie te rzeczy są uważane za tekst czytelny i zrozumiały dla człowieka.

Tak więc maszyna używa kompilatora do konwersji kodu źródłowego na kod do odczytu maszynowego, który jest również określany jako język poziomu maszynowego. Kompilator buduje kod na poziomie maszyny w określonej prezentacji, tak aby mógł być łatwo zrozumiały dla procesora, a tym samym wykonać go bezproblemowo.

To budowanie języka na poziomie maszynowym różni się w zależności od języka programowania i każdego systemu operacyjnego. Na przykład c/c++ generuje plik .exe, który nie jest taki sam dla dwóch komputerów, jeśli są one uruchomione w innym systemie operacyjnym.

I tu pojawia się problem!

Gdy język na poziomie maszyny różni się w każdym systemie operacyjnym, nie możemy uruchomić kodu skompilowanego na innej maszynie na nowej maszynie, chyba że oba systemy działają w tym samym systemie operacyjnym. Dla wielu programistów i programistów wydaje się to bzdurą.

Ale Java ułatwia sprawę, a Java ma na to rozwiązanie. Zacznijmy.

Java jest niezależna od platformy

Więc co się dzieje, gdy kompilujemy kod w javie?

Za każdym razem, gdy wpisujemy oświadczenie „javac filename.java” lub kompilujemy kod w java, javac kompiluje kod. I tworzy kod pośredni zwany kodem bajtowym.

W tym miejscu java robi różnicę między wszystkimi różnymi językami programowania. Tworzy plik .class, który jest uważany za kod bajtowy. Podczas gdy języki takie jak c/c++ tworzą natywnie wykonywalny kod podczas kompilacji, co czyni je zależnymi od platformy.

Poczekaj, jest za wcześnie na świętowanie. Ten kod bajtowy nie jest wykonywalny. Potrzebujemy translatora do wykonania tego kodu bajtowego. A JVM wykonuje tę pracę. Generalnie JVM znajduje się w głównej pamięci naszego komputera. Java Virtual Machine działa jako interpreter, a następnie wykonuje kod bajtowy wygenerowany przez javac.

A teraz skończyliśmy, nasz kod został pomyślnie wykonany.

Jak więc java poradzi sobie z tym w pojedynkę?

Odpowiedź brzmi: to z powodu JVM. Kod bajtowy wygenerowany przez kompilację kodu źródłowego działałby w dowolnym systemie operacyjnym, ale maszyna JVM obecna w maszynie jest inna dla każdego systemu operacyjnego. I w ten sposób java jest uważana za niezależny od platformy język programowania.

Aby dobrze to zrozumieć, poznajmy architekturę i działanie JVM.

Architektura JVM

JVM jest częścią środowiska wykonawczego java i jest odpowiedzialna za konwersję pliku .java na plik .class. Kiedy kompilujemy kod java, JVM wywołuje główną metodę w kodzie źródłowym.

Architektura JVM

ClassLoader

Jest to podsystem w wirtualnej maszynie java. Wczytuje plik .class, sprawdza czy są jakieś wyjątki i jest to powodem kilku wyjątków runtime. A po sprawdzeniu przydziela pamięć dla zmiennych i obecnych metod, przypisz wartości domyślne do zmiennych i tablic. Wykonuje również statyczne metody lub zmienne obecne w kodzie.

Istnieją 3 wbudowane programy ładujące klasy w JVMm, ładujący klasy ładujący, ładujący klasy rozszerzenia, ładujący klasy aplikacji.

Obszary pamięci w JVM

Obszar metody/klasy

Przechowuje informacje, takie jak nazwy klas, nazwy metod, zmienne. Jest to wspólny zasób dla wszystkich metod i zmiennych w klasie.

Sterta

Przechowuje informacje o wszystkich danych przechowywanych w obszarze sterty.

Stos językowy JVM

Przechowuje informacje w blokach zwanych również ramkami stosu/ramkami, które przechowują bieżące informacje, gdy jest wywołanie funkcji, przechowuje zmienne lokalne, odgrywa również dominującą rolę w zarządzaniu wątkami.

Rejestr PC

Przechowuje adres instrukcji, która jest aktualnie wykonywana. Jest to przydatne w sytuacji wykonywania wielowątkowego.

Stos metod natywnych

Przechowuje wszystkie informacje o zastosowanych metodach natywnych.

Silnik wykonawczy

Silnik Execution wykona kod bajtowy i usunie przydzieloną pamięć obiektom, do których nie można się odwoływać. Interpreter w silniku wykonawczym wykona kod bajtowy, odczytując go w strumieniu i interpretując wiersz po wierszu.

Zawiera również ekscytującą część zwaną kompilatorem JIT (Just In Time Compiler), w której tworzy natywny kod wykonywalny dla metod, więc jeśli istnieje wiele wywołań funkcji, JVM nie musi go ponownie interpretować, a raczej bezpośrednio używać natywnego kodu wykonywalnego. Dzięki temu poprawia wydajność egzekucji.

Natywny interfejs metody

Ten interfejs jest używany przez java do interakcji z aplikacjami zaimplementowanymi w różnych językach, takich jak C/C++. Interakcja jest dwukierunkowa, gdzie maszyna JVM może wywoływać te aplikacje lub może być wywoływana przez te aplikacje.

Biblioteki metod natywnych

Śledzi natywne biblioteki językowe, z których może korzystać silnik wykonawczy.

Teraz, gdy zrozumieliśmy architekturę JVM, wróćmy do naszej dyskusji. Tak więc ta maszyna JVM jest inna dla różnych systemów operacyjnych, ale dane wyjściowe generowane przez te maszyny JVM będą takie same dla tego samego dostarczonego kodu bajtowego.

Przeczytaj także: Pomysły i tematy projektów Java

Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

Przeszliśmy przez kilka unikalnych cech javy, zrozumieliśmy, co się dzieje, gdy kompilujemy kod w językach takich jak C/C++, rozumiemy różnicę między natywnie wykonywalnym kodem a kodem bajtowym. Przeszliśmy przez wyjaśnienie, dlaczego Java jest uważana za język niezależny od platformy, rozumiejąc, że JVM jest przyczyną niezależności platformy Java. Przyjrzeliśmy się architekturze JVM, aby lepiej zrozumieć.

Teraz, gdy już wiesz, dlaczego java jest niezależna od platformy, poznaj inne unikalne cechy javy i zacznij z nich korzystać!

Jeśli chcesz dowiedzieć się więcej na temat Java, pełnego stosu oprogramowania, sprawdź program Executive PG UpGrad i IIIT-B w zakresie pełnego stosu oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, 9+ projekty i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.

Jakie są zalety Javy nad innymi językami?

Istnieje wiele zalet Javy nad innymi językami. Zacznijmy od największej zalety, Java jest niezależna od platformy. Kod Java może działać na dowolnej platformie sprzętowej, systemie operacyjnym i przeglądarce. Może działać na dowolnym urządzeniu. Oznacza to, że po napisaniu aplikacji w Javie możesz ją uruchomić na dowolnym urządzeniu. To takie proste! Ponadto po napisaniu kodu bardzo łatwo jest debugować i naprawiać błędy. Wreszcie, Java jest zorientowana obiektowo. Oznacza to, że musisz używać mniejszych programów i kodu. Ułatwi to pracę z kodem. Jeśli potrzebne są jakiekolwiek modyfikacje, kod jest mniej podatny na błędy. Posiada funkcje takie jak wielowątkowość, zarządzanie pamięcią, niezależność od platformy, bezpieczeństwo, maszyna wirtualna, tj. kod bajtowy, platforma kolekcji, kolektor śmieci, architektura warstwowa itp.

Dlaczego platforma Java jest niezależna?

Java jest niezależna od platformy, ponieważ używa maszyny wirtualnej. Język programowania Java i wszystkie interfejsy API są kompilowane w kody bajtowe. Kody bajtowe są faktycznie niezależne od platformy. Maszyna wirtualna dba o różnice między kodami bajtowymi dla różnych platform. Z tego powodu wymagania wykonawcze dla Javy są bardzo małe. Maszyna wirtualna Java zajmuje się wszystkimi kwestiami związanymi ze sprzętem, dzięki czemu żaden kod nie musi być kompilowany dla innego sprzętu.

Co to jest automatyczne usuwanie śmieci w Javie?

Automatyczne usuwanie elementów bezużytecznych to technika usuwania elementów bezużytecznych, w której moduł odśmiecania działa automatycznie, bez konieczności pisania przez programistę kodu. W Javie usuwanie elementów bezużytecznych odbywa się poprzez przełączenie wirtualnej maszyny Javy w specjalny tryb. Odśmiecacz uruchomi się, gdy zobaczy ku temu okazję. Niektórzy zbieracze elementów bezużytecznych stosują podejście polegające na zatrzymaniu świata, a wirtualna maszyna Java musi przestać wykonywać program, aby wykonać usuwanie elementów bezużytecznych. Garbage Collection nie jest łatwą koncepcją, ale kiedy już ją zdobędziesz, nie będziesz mógł oglądać się za siebie. A zbieranie śmieci Java jest jednym z najłatwiejszych do zrozumienia.