Kurs Java

Wprowadzenie do Javy

W poprzednim rozdziale stworzyliśmy pierwszy projekt w IDE, więc teraz możemy już zacząć naukę samego języka. Oczywiście, jeśli ktoś z Was pominął tamten rozdział i zajrzał najpierw tutaj, bo nie czuje się przekonany do używania środowiska programistycznego, to również cały ten tekst warto przeczytać. Może nawet uda nam się Was przekonać, że używanie IDE jednak ma sens.

Zanim przejdziemy do składni, warto jest poświęcić jeszcze chwilę czasu na zrozumienie tego, jak to się dzieje, że coś, co pisze człowiek, jest zrozumiałe dla komputera. Innymi słowy, jak to jest, że pisząc specjalnie przygotowany tekst, otrzymujemy program, który można uruchomić.

Oczywiście nie piszemy po prostu zwykłego tekstu, tylko podobnie jak w języku polskim musimy znać składnię i dostosować się do pewnych zasad. Tylko wtedy komputer będzie w stanie zrozumieć, czego od niego oczekujemy. Java - jak każdy klasyczny język programowania - zawiera konkretne instrukcje oraz słowa kluczowe, których odpowiednie wykorzystanie pozwala nam na stworzenie programu.

Składowe języka Java

Podsumowując, wyróżniamy dwie podstawowe składowe, które należy poznać, aby rozpocząć przygodę w programowaniu w Javie:
  • Słowa kluczowe (Keywords)

    Zbiór słów, które są zarezerwowane przez Javę, ponieważ mają określone znaczenie w funkcjonowaniu języka. Wybraliśmy kilka przykładów z różnych kategorii słów, by ogólnie nakreślić temat. Wraz z kolejnymi rozdziałami kursu słowa kluczowe będziemy przedstawiać w szerszym kontekście, przez co staną się bardziej zrozumiałe.

    package Określa pakiet, a więc grupę klas i interfejsów o zbliżonym zakresie działania. Pakiet widziany z poziomu systemu operacyjnego to nic innego jak folder, a klasy i interfejsy są definiowane w plikach. Najczęściej zarówno klasa, jak i interfejs są tworzone w osobnych dedykowanych plikach (bywa, że w jednym pliku możemy mieć kilka klas i interfejsów, ale to nie jest istotne na tym etapie).
    class Klasa definiuje cechy i zachowania, które przyjmie obiekt stworzony na bazie takiej klasy. Zachowania to działania, jakie obiekt może wykonać. Najczęściej są to funkcje (w Javie mówimy metody). Natomiast cechy obiektu są przechowywane w polach klasy (fields).
    interface Interfejs definiuje zachowania, które przyjmie obiekt stworzony na bazie takiego interfejsu. W przypadku interfejsu inaczej niż w przypadku klas, metody najczęściej nie zawierają kodu wykonującego określone zadanie (zdarzają się wyjątki, ale o tym nie teraz). Metody te są projektem, a więc tworzymy tylko ich deklaracje, a to klasy później dostarczą wykonanie tego projektu.
    import Używane na początku pliku z kodem. Wskazuje lokalizacje zewnętrznych pakietów i klas, których później możemy użyć w naszym kodzie.
    extends Umożliwia rozszerzanie klas i interfejsów przez podklasy i podinterfejsy.
    implements Umożliwia implementowanie interfejsów przez klasy.
    new Umożliwia stworzenie instancji obiektu na podstawie konkretnej klasy lub obiektu tablicy.
    int Określa typ prosty liczbowy zdolny do przechowywania liczby całkowitej o określonym rozmiarze.
    if Słowo wykorzystywane do stworzenia instrukcji warunkowej o tej samej nazwie.

  • Instrukcje (Statements)

    Określają konkretne działania w programie, takie jak na przykład deklarowanie i przypisywanie wartości lub sterowanie zachowaniem kodu.

    Appa Notka. W poniższych przykładach podajemy dodatkowe informacje w postaci jednolinijkowych komentarzy (//). Ten rodzaj komentarza zapożyczyliśmy od Javy. Właśnie w taki sposób w Javie oznaczamy fragmenty, które mają nieść ze sobą dodatkowe wyjaśnienia i które są pomijane przez program podczas uruchamiania.
    Wracając do tematu, tak wygląda lista podstawowych instrukcji używanych w Javie:
    • Deklaracyjne (Declaration Statement) - umożliwiają zadeklarowanie zmiennej, na przykład:
      int itemValue;
      int itemMaxValue = 10;
      String textElement; 
      
    • Wyrażeniowe (Expression Statement) - elementy kodu zakończone średnikiem, na przykład:
      // Wyrażenie zwiększenia (inkrementacja) lub zmniejszenia (dekrementacja) wartości o jeden:
      itemNumber++;
      ++itemNumber;
      itemNumber--;
      --itemNumber;
       
      // Wyrażenie przypisanie wartości
      itemNumber = 100;
      itemNumber *= 10;
       
      // Wyrażenie wywołujące metodę
      System.out.println("Fragment tekstu");
      someMethod(parametr1, parametr2);
      
    • Przepływu (Control Flow Statement) - kontrolują przepływ wykonywanych fragmentów kodu:
      // Wielokrotne wykonanie określonego zestawu instrukcji (pętla):
      - for
      - while
      - do while
       
      // Warunkowe wykonanie określonego fragmentu kodu:
      - if
      - switch  
      - ? ... : ... (operator warunkowy
      
      
    • Blokowe - zbiór składowych kodu (np. instrukcji) tworzących większą niezależną instrukcję:
      // Na przykładzie wielokrotnego wykonania określonego zestawu instrukcji, czyli pętli: 
      while
      { // początek bloku
          int itemsCount = 20;
          itemsCount++;    
      } // koniec bloku
      
      // Możemy też zapisać w bardziej zwięzłej formie (preferowana):
      while { // początek bloku
          int itemsCount = 20;
          itemsCount++;    
      } // koniec bloku
      
      // a tu przykład instrukcji warunkowej z blokiem zawierającym fragment kodu:
      if (itemsCount > 30) {
          int itemsSum = ;
          ...
      }
      
      

    Instrukcje również będziemy omawiać w szerszym kontekście w kolejnych rozdziałach kursu.

Formatowanie

Niezwiązane bezpośrednio z samym językiem, ale mające istotne znaczenie w kontekście tego, jak wygląda kod. Ważna jest bowiem jego czytelność. Musi on być uporządkowany, a to oznacza, że ułożenie instrukcji i słów kluczowych musi być odpowiednio zorganizowane. Dlatego też środowiska programistyczne mają możliwość zdefiniowania zasad takich jak rozmiar wcięć, liczba znaków przerwy między poszczególnymi elementami kodu, puste linie i wiele innych ustawień wpływających na wygląd.

Wszystkie takie ustawienia mogą zostać zapisane jako zbiór reguł w pliku i później mogą być zaaplikowane do wszystkich plików, nad którymi pracujemy. Pliki takie, nazywane formaterami kodu mogą (a nawet powinny) być również współdzielone między programistami w zespole, tak aby cały zespół używał tego samego formatowania.

Pierwszy kod - składnia

W początkowym paragrafie omówiliśmy, jak wyglądają najważniejsze elementy składni języka. Natomiast w poprzednim rozdziale Eclipse - Pierwszy projekt stworzyliśmy pierwszy program, korzystając z IDE. Połączmy więc te dwie rzeczy razem i zerknijmy na ten program raz jeszcze. Oczywiście będziemy również do niego wracać w kolejnych rozdziałach. Wtedy przedstawimy jeszcze więcej detali.
public class Start {
    public static void main(String[] args) {
        System.out.println("Hello!");
    }
}
Pierwsze co rzuca nam się w oczy to słowa kluczowe, takie jak public, class, static, void. Następnie widzimy, że kod posiada wydzielone bloki. Jeden z nich określa blok całej klasy, a drugi - zawierający się w tej klasie - blok metody. Możemy więc powiedzieć, że nasz pierwszy program zawiera instrukcje blokową, w której zawiera się inna instrukcja blokowa, w której definiujemy instrukcję w postaci wyrażenia (wywołującego metodę drukującą na konsoli tekst "Hello!").

Widzimy także charakterystyczne wcięcia przed rozpoczęciem każdej kolejnej zagnieżdzonej instrukcji. Jeśli używamy IDE, to wcięcia te zdefiniujemy w konfiguracji (za pomocą wspomnianego już formatera kodu), natomiast pisząc kod w "spartańskich" warunkach, na przykład w notatniku (co na dłuższą metę odradzamy), musimy to robić ręcznie, za każdym razem wstawiając cztery spacje. Taka powinna być szerokość wcięć, aby kod programu wyglądał czytelnie.

Uruchomienie z konsoli

Jeśli z jakiegoś powodu nadal nie chcemy używać IDE albo chcemy poznać alternatywną metodę uruchomienia takiego programu, możemy użyć odpowiedniego polecenia w konsoli cmd. Załóżmy więc, że kod naszego programu napisaliśmy w notatniku i w naszych rękach pozostaje tylko plik z kawałkiem tekstu. Tekst wygląda czytelnie, ale my zastanawiamy się, co teraz trzeba zrobić, żeby komputer był w stanie go zrozumieć.

To jest coś, o co nie musimy się martwić, używając IDE. Tam za każdym razem, gdy zapisujemy plik, wykonywana jest kompilacja do kodu maszynowego. W przypadku zestawu notatnik plus konsola, kompilację trzeba wykonać ręcznie, chociaż... no właśnie, ostatnio sprawa ta i tutaj mocno się uprościła. Przed pojawieniem się Javy 11, należało uruchomić niezależną komendę (z konsoli cmd) o nazwie javac:
javac Start.java
W ten sposób powstawał plik z rozszerzeniem class, który zawierał przetworzone (skompilowane) dane rozumiane przez komputer. Taki plik (notabene całkowicie nieczytelny dla człowieka) trzeba było uruchomić osobnym poleceniem:
java Start.class
Na szczęście od Javy 11 wystarczy użyć komendy java bezpośrednio z plikiem źródłowym (z naszym oryginalnym kodem):
java Start.java
Wtedy nastąpi kompilacja i automatyczne uruchomienie programu. W efekcie zobaczymy nasz tekst wydrukowany na konsoli. Jest pięknie, tylko właściwie po co tak się trudzić, skoro to wszystko można osiągnąć, korzystając z przyjemnego interfejsu graficznego? Przecież nikt o zdrowych zmysłach nie będzie pisał kodu większego projektu w notatniku, żeby go potem uruchamiać z poziomu konsoli (pomijamy małe programiki pisane w szkole czy na studiach).

W tym miejscu zatoczyliśmy koło i wracamy do punktu wyjścia. Dokładnie rzecz ujmując, wracamy do pierwszego akapitu bieżącego rozdziału, w którym sugerujemy, że warto zaznajomić się ze środowiskiem programistycznym (IDE). Zatem jeśli jeszcze tego nie zrobiliście, to polecamy udać się czym prędzej do rozdziału Narzędzia programistyczne. Linki:
Co nowego w Javie 17?
Premiera Javy 16 GA
Java 15 już we wrześniu
Kolejne nowości w Javie 14
Java 14 już na horyzoncie
Java 13 już we wrześniu
Nadchodzi Java 12
Podsumowanie Java 9, Java 10, Java 11
Masz pytanie dotyczące tego rozdziału? Zadaj je nam!
Masz pytanie dotyczące prezentowanego materiału?
Coś jest dla Ciebie niejasne i Twoje wątpliwości przeszkadzają Ci w pełnym zrozumieniu treści?
Napisz do nas maila, a my chętnie znajdziemy odpowiednie rozwiązanie.
Najciekawsze pytania wraz z odpowiedziami będziemy publikować pod rozdziałem.
Nie czekaj. Naucz się programować jeszcze lepiej.
kursjava@javappa.com

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE