Jak działa Java?
🛠️

Jak działa Java?

notion image
 
notion image
 

Czym dokładnie jest programowanie?


W dużym uproszczeniu, jest to lista specyficznych instrukcji i poleceń, jakie wydajemy komputerowi, w celu wykonania dla nas poszczególnego procesu lub operacji. Sęk w tym, że owa maszyna (wbrew pozorom) nie jest w stanie zrozumieć naszego ludzkiego języka. Komputer posługuje się językiem binarnym, czyli ciągiem następujących po sobie zer i jedynek, które następnie koduje i przetwarza na informacje.

 

Język programowania


Język programowania jest zatem narzędziem służącym do komunikacji pomiędzy człowiekiem a maszyną poprzez zapisywanie instrukcji oraz algorytmów, które maszyna może zrozumieć i wykonać. Jest to rodzaj formalnego języka, który umożliwia programiście wyrażenie swoich pomysłów, zadań oraz rozwiązań w sposób zrozumiały dla komputera.

Wybór języka angielskiego jako powszechnego języka komunikacji w środowisku IT ma swoje podstawy w jego roli jako dominującego języka międzynarodowego. Angielski jest powszechnie używany w dokumentacji, specyfikacjach i komunikacji programistycznej ze względu na umożliwienie łatwej wymiany informacji między programistami z różnych krajów i kultur.

 
notion image
 

Proces tworzenia oprogramowania


1️⃣ Kod źródłowy

Programista używa klawiatury do wprowadzania mas instrukcji, które składają się na kod źródłowy. Ten kod to zbiór instrukcji zrozumiałych dla ludzi, ale jeszcze enigmatycznych dla maszyny. To jest zrozumiała dla człowieka reprezentacja algorytmów i instrukcji, które mają być wykonane przez komputer.

2️⃣ Kompilacja kodu źródłowego

Kiedy kod źródłowy jest gotowy, jest on przekazywany do kompilatora. Kompilator to program, który tłumaczy kod źródłowy na zrozumiały dla komputera kod wykonywalny. Ten proces nazywa się kompilacją.

3️⃣ Kod wykonywalny

Kompilator przetwarza kod źródłowy na kod wykonywalny, który jest zrozumiały dla konkretnego rodzaju procesora. Ten kod wykonywalny jest gotowy do uruchomienia na odpowiednim środowisku wykonawczym.

4️⃣ Uruchamianie kodu przez procesor

Ostatecznie, kod wykonywalny zostaje uruchomiony przez procesor, który wykonuje zawarte w nim instrukcje. To jest właśnie etap, w którym program zaczyna realizować swoje zadania zgodnie z intencjami programisty.

 
notion image

Z powyższego schematu wynika, że jeśli opracujesz program z myślą o uruchamianiu na platformie Windows, może się okazać trudnym przeniesienie go na inne urządzenia, takie jak smartfony z systemem Android. Pomimo korzyści związanych z efektywnością tego podejścia, istnieje istotne ograniczenie dotyczące przenośności oprogramowania i braku możliwości uruchamiania go na różnych platformach.

 
notion image
 

A teraz na scenę wkracza Java!


Java jest to uniwersalny język programowania, który działa na zasadzie Write Once, Run Anywhere. Oznacza to, że kod napisany w Javie może być kompilowany raz i uruchamiany na różnych platformach, bez konieczności modyfikacji. Dzięki temu Java stała się popularnym wyborem dla projektów wymagających przenośności, takich jak aplikacje mobilne na różnych systemach operacyjnych.

 
notion image

Magiczny kod bajtowy


W skrócie, kod bajtowy Java to specyficzny dla tego języka kod, który jest generowany przez kompilator javac i zapisywany w oddzielnym pliku podczas przetwarzania kodu źródłowego.

Kod bajtowy nie jest kodem wykonywalnym. Jest to pośrednia forma danych, która będzie następnie interpretowana lub kompilowana just-in-time przez JVM, czyli wirtualną maszynę Java.

 
 
notion image
 
 

Java Virtual Machine


JVM, czyli wirtualna maszyna Java to interpreter kodu bajtowego, który wchodzi w skład środowiska uruchomieniowego Javy, zwanego JRE (Java Runtime Enviroment). To specyficzne oprogramowanie pozwala na uruchamianie kodu bajtowego (pośredniego) w różnych systemach. Takie rozwiązanie umożliwia tworzenie programów, które mogą być uruchamiane w każdym urządzeniu.

Uruchomienie programów stworzonych wyłącznie dla określonych procesorów w innym środowisku może być problematyczne. Należałoby stworzyć różne wersje danego programu kompatybilne z odpowiednim systemem, w których chcemy, aby ten program zadziałał.

W przypadku Javy nie ma takiej konieczności, poniewaz jeden uniwersalny kod napisany raz, może zostać uruchomiony w wielu miejscach, gdyż znamy już zasadę Write Once, Run Everywhere. Wystarczy, że zainstalowano w nich JRE, a wirtualna maszyna Javy zajmie się wykonaniem kodu.

 
notion image

Oczywiście, mimo licznych zalet, istnieją także pewne minusy.

Dodanie dodatkowego etapu związanego z kompilacją do kodu bajtowego w Javie mogło początkowo wprowadzić pewne opóźnienia w porównaniu do tradycyjnej kompilacji do kodu wykonywalnego. Jednak wprowadzenie usprawnień, takich jak HotSpot VM, znacząco poprawiło szybkość operacji, zbliżając ją do poziomu osiąganego przez języki takie jak C czy Ruby.

Niemniej jednak, warto zauważyć, że mimo tych udoskonaleń, proces kompilacji do kodu bajtowego w Javie nadal może wymagać większego zużycia pamięci w porównaniu do niektórych innych języków programowania. Jednakże programiści uważająte kompromisy za akceptowalne, biorąc pod uwagę korzyści związane z przenośnością i elastycznością oferowaną przez Javę, a także jej zdolność do obsługi szerokiego zakresu zastosowań.

 
notion image
 

Proces tworzenia programu w Javie


1️⃣ Kod źródłowy

Program w Javie jest zazwyczaj napisany w plikach z rozszerzeniem .java. Kod źródłowy Javy składa się z klas i metod, zgodnie z obiektowym paradygmatem programowania.

2️⃣ Kompilacja kodu

Kompilacja w Javie odbywa się za pomocą narzędzia javac, które jest dostarczane wraz z JDK (Java Development Kit). Po napisaniu kodu, używamy polecenia javac do skompilowania plików .java na pliki bajtowe (.class).

To spowoduje utworzenie pliku nazwaPliku.class, który zawiera kod bajtowy zrozumiały dla maszyny wirtualnej Javy (JVM).

3️⃣ Wykonanie kodu

JVM odczytuje plik bajtowy, interpretuje go i wykonuje program.

 
notion image

Śledź moją aktywność na LinkedIn


Zapisz się na mój newsletter


👋
Jeśli masz jakieś sugestie lub pytania, proszę napisz do mnie wiadomość: kuba@javampokaze.pl