1.02.20236 min
Bulldogjob

Bulldogjob

Stwórz swój własny program w Javie

Zobacz, w jaki sposób można zbudować swój pierwszy program w Javie, najpopularniejszym języku programowania wykorzystywanym na backendzie.

Stwórz swój własny program w Javie

Niniejszy artykuł pochodzi z książki pt. „Java. Podstawy. Wydanie XII” Caya Horstmanna (Helion 2022).


Przyjrzyjmy się uważnie najprostszemu programowi w Javie, jaki można napisać — takiemu, który tylko wyświetla komunikat w oknie konsoli:

public class FirstSample
{
   public static void main(String[] args)
   {
      System.out.println("Nie powiemy „Witaj, świecie!”");
   }
}


Warto poświęcić trochę czasu i nauczyć się tego fragmentu na pamięć, ponieważ wszystkie aplikacje są oparte na tym schemacie. Przede wszystkim w Javie wielkość liter ma znaczenie. Jeśli w programie będzie literówka (jak np. słowo Main zamiast main), to program nie zadziała.

Przestudiujemy powyższy kod wiersz po wierszu. Słowo kluczowe public nosi nazwę modyfikatora dostępu (ang. access modifier). Określa ono, jaki rodzaj dostępu do tego kodu mają inne części programu. Więcej informacji na temat modyfikatorów dostępu zawarliśmy w rozdziale 5. Słowo kluczowe class przypomina, że wszystko w Javie należy do jakiejś klasy. Ponieważ klasami bardziej szczegółowo zajmujemy się w kolejnym rozdziale, na razie będziemy je traktować jako zbiory mechanizmów programu, które są odpowiedzialne za jego działanie. Jak pisaliśmy w rozdziale 1., klasy to bloki, z których składają się wszystkie aplikacje Javy. Wszystko w programie w Javie musi się znajdować wewnątrz jakiejś klasy.

Po słowie kluczowym class znajduje się nazwa klasy. Reguły dotyczące tworzenia nazw klas w Javie są dosyć liberalne. Nazwa klasy musi się zaczynać od litery, po której może się znajdować kombinacja dowolnych znaków i cyfr. Nie ma w zasadzie ograniczeń, jeśli chodzi o długość. Nie można stosować słów zarezerwowanych Javy (np. public lub class) — lista wszystkich słów zarezerwowanych znajduje się w dodatku.

Zgodnie ze standardową konwencją nazewniczą (której przykładem jest nazwa klasy FirstSample) nazwy klas powinny się składać z rzeczowników pisanych wielką literą. Jeśli nazwa klasy składa się z kilku słów, każde z nich powinno być napisane wielką literą; notacja polegająca na stosowaniu wielkich liter wewnątrz nazw jest czasami nazywana notacją wielbłądzią (ang. camel case lub CamelCase).

Plik zawierający kod źródłowy musi mieć taką samą nazwę jak klasa publiczna oraz rozszerzenie .java. W związku z tym nasz przykładowy kod powinien zostać zapisany w pliku o nazwie FirstSample.java (przypominam, że wielkość liter ma znaczenie także tutaj — nie można napisać firstsample.java).

Jeśli plik ma prawidłową nazwę i nie ma żadnych literówek w kodzie źródłowym, w wyniku jego kompilacji powstanie plik zawierający kod bajtowy tej klasy. Kompilator automatycznie nada skompilowanemu plikowi nazwę FirstSample.class i zapisze go w tym samym katalogu, w którym znajduje się plik źródłowy. Program uruchamiamy za pomocą następującego polecenia (nie zapomnij o pominięciu rozszerzenia .class):

java FirstSample


Po uruchomieniu program ten wyświetla w konsoli łańcuch Nie powiemy „Witaj, świecie!”.

Polecenie:

java NazwaKlasy


Zastosowane do skompilowanego programu powoduje, że wirtualna maszyna Javy zaczyna wykonywanie od kodu zawartego w metodzie main wskazanej klasy (terminem „metoda” określa się to, co w innych językach jest funkcją). W związku z tym metoda main musi się znajdować w pliku źródłowym klasy, którą chcemy uruchomić. Można oczywiście dodać własne metody do klasy i wywoływać je w metodzie main. 

Zgodnie ze specyfikacją języka Java dostęną na stronach Oracle metoda main musi być publiczna (public).

Jednak niektóre wersje maszyny wirtualnej Javy uruchamiały programy w Javie, których metoda main nie była publiczna. Pewien programista zgłosił ten błąd. Aby się o tym przekonać, wejdź na stronę z błędami i wpisz numer identyfikacyjny błędu 4252539. W 1999 r. błąd ten został oznaczony jako zamknięty i nie do naprawy (ang. closed, will not be fixed). Jeden z inżynierów pracujących w firmie Sun wyjaśnił, że specyfikacja maszyny wirtualnej Javy nie wymaga, aby metoda main była publiczna, w związku z czym „naprawienie tego błędu może spowodować problemy”. Na szczęście sięgnięto po rozum do głowy i od wersji 1.4 Java SE metoda main jest publiczna.

Oczywiście rozczarowuje nas sytuacja, że osoby odpowiadające za jakość są przepracowane i nie zawsze dysponują wystarczającą wiedzą specjalistyczną z zakresu najbardziej zaawansowanych zagadnień związanych z Javą. Przez to nie zawsze podejmują trafne decyzje. Trzeba jednak zauważyć, że raporty o błędach były zamieszczane na stronie internetowej, aby każdy mógł je zweryfikować, na długo przed tym, jak Java stała się open source.


Zauważ, że w kodzie źródłowym użyto nawiasów klamrowych. W Javie, podobnie jak w C i C++, klamry oddzielają poszczególne części (zazwyczaj nazywane blokami) kodu programu. Kod każdej metody w Javie musi się zaczynać od otwierającej klamry {, a kończyć zamykającą klamrą }.

Styl stosowania nawiasów klamrowych wywołał niepotrzebną dyskusję. My stosujemy styl polegający na umieszczaniu dopełniających się klamer w tej samej kolumnie. Jako że kompilator ignoruje białe znaki, można stosować dowolny styl nawiasów klamrowych.

Na razie nie będziemy się zajmować znaczeniem słów static void — traktuj je jako coś, czego potrzebujesz do kompilacji programu w Javie. Po rozdziale 4. przestanie to być tajemnicą. Teraz trzeba tylko zapamiętać, że każdy program napisany w Javie musi zawierać metodę main zadeklarowaną w następujący sposób:

public class NazwaKlasy
{
   public static void main(String[] args)
   {

      instrukcje programu
   }
}

Programiści języka C++ doskonale znają pojęcie „klasa”. Klasy w Javie są pod wieloma względami podobne do tych w C++, ale jest też kilka różnic, o których nie można zapominać. Na przykład w Javie wszystkie funkcje są metodami jakiejś klasy (w standardowej terminologii są one nazywane metodami, a nie funkcjami składowymi). W związku z tym w Javie konieczna jest obecność klasy zawierającej metodę main. Programiści C++ pewnie znają też statyczne funkcje składowe. Są to funkcje zdefiniowane wewnątrz klasy, które nie wykonują żadnych działań na obiektach. Metoda main w Javie jest zawsze statyczna. W końcu słowo kluczowe void, podobnie jak w C i C++, oznacza, że metoda nie zwraca wartości. W przeciwieństwie do języków C i C++ metoda main w Javie nie zwraca żadnego kodu wyjścia (ang. exit code) do systemu operacyjnego. Jeśli metoda main zakończy działanie w normalny sposób, program ma kod wyjścia 0, który oznacza pomyślne zakończenie. Aby zakończyć działanie programu innym kodem wyjścia, należy użyć metody System.exit.


Teraz kierujemy naszą uwagę na poniższy fragment:

{
   System.out.println("Nie powiemy „Witaj, świecie!”");
}


Klamry oznaczają początek i koniec ciała metody. Ta metoda zawiera tylko jedną instrukcję. Podobnie jak w większości języków programowania, instrukcje Javy można traktować jako zdania tego języka. Każda instrukcja musi być zakończona średnikiem. Przede wszystkim należy pamiętać, że znak powrotu karetki nie oznacza końca instrukcji, dzięki czemu mogą one obejmować nawet kilka wierszy.

W treści metody main znajduje się instrukcja wysyłająca jeden wiersz tekstu do konsoli.

W tym przypadku użyliśmy obiektu System.out i wywołaliśmy na jego rzecz metodę println. Zwróć uwagę na kropki zastosowane w wywołaniu metody. Ogólna składnia stosowana w Javie do wywołania jej odpowiedników funkcji jest następująca:

obiekt.metoda(parametry)


W tym przypadku wywołaliśmy metodę println i przekazaliśmy jej argument w postaci łańcucha. Metoda ta wyświetla zawartość parametru w konsoli. Następnie kończy wiersz wyjściowy, dzięki czemu każde wywołanie metody println wyświetla dane w oddzielnym wierszu. Zwróć uwagę, że w Javie, podobnie jak w C i C++, łańcuchy należy ujmować w cudzysłowy — więcej informacji na temat łańcuchów znajduje się w dalszej części tego rozdziału.

Metody w Javie, podobnie jak funkcje w innych językach programowania, przyjmują zero, jeden lub więcej parametrów (często nazywanych argumentami). Nawet jeśli metoda nie przyjmuje żadnych parametrów, nie można pominąć stojących po jej nazwie nawiasów. Na przykład metoda println bez żadnych argumentów drukuje pusty wiersz. Wywołuje się ją następująco:

System.out.println();

Na rzecz obiektu System.out można także wywoływać metodę print, która nie dodaje do danych wyjściowych znaku nowego wiersza. Na przykład wywołanie System.out.print("Witaj") drukuje napis Witaj bez znaku nowego wiersza. Kolejne dane zostaną umieszczone bezpośrednio po słowie Witaj.




*Artykuł stanowi fragment książki pt. „Java. Podstawy. Wydanie XII” Caya Horstmanna (Helion 2022)

<p>Loading...</p>