Java - Podstawy

Język Java jest obecnie najszybciej rozwijającym się środowiskiem tworzenia aplikacji. Jeśli dopiero zaczynasz swoją przygodę z programowaniem w Javie, skorzystaj z tej książki. Książka Java - Podstawy omawia podstawowe zagadnienia dotyczące Javy, o których powinien wiedzieć każdy programista J2SE.

Java - Wprowadzenie

Java to obiektowy język programowania stworzony przez firmę Sun Microsystems. Niewątpliwą zaletą programów napisanych w Javie jest to, że można  je uruchamiać na różnych urządzeniach oraz pod różnymi systemami operacyjnymi. W tym celu niezbędna jest  tzw. Wirtualna Maszyna Javy. Program źródłowy jest kompilowany do kodu bajtowego, czyli takiego który może zostać wykonany przez Wirtualną Maszynę Javy.

Zalety Javy

Najważniejszą zaletą Javy jest to, że jest to język niezależny od platformy. Nie musisz się zatem martwić tym, że Twój program nie zadziała w systemie Windows, Linux, Solaris. Kod napisany w Javie zadziała pod każdym systemem, na który jest zaimplementowana wirtualna maszyna Javy.

Drugą bardzo ważną zaletą jest to, że jest to język zorientowany obiektowo. W Javie wszystko, oprócz typów prostych takich jak liczby, jest obiektem. Obiektowość języka Java pozwala na łatwe tworzenie nawet bardzo skomplikowanych projektów.

Twórcy Javy wzorowali się na innych istniejących językach programowania. Skupili się jednak na tym, by wyeliminować te ich cechy, które były  najczęstszym źródłem błędów w programach. Dlatego też w Javie nie ma wskaźników ani możliwości wielokrotnego dziedziczenia,  tablice w Javie są obiektami, zostały wprowadzone interfejsy, zablokowano także możliwość przypisywania wartości zmiennym w wyrażeniach warunkowych (niemożliwe jest więc wyrażenie   if (zmienna = 5)  ).

Główne koncepcje jezyka Java

Twórcy wymieniają kilkanaście podstawowych cech języka Java. Najważniejsze z nich to:

  • Prostota
  • Obiektowość
  • Niezależność od architektury
  • Niezawodność
  • Bezpieczeństwo
  • Rozproszoność
  • Wielowątkowość
  • Sieciowość
  • Interpretowalność
  • Dynamiczność

Od czego zacząć?

Co jest potrzebne aby rozpocząć programowanie w języku Java?

Najnowsza wersja JDK (Java Development Kit)

Czyli środowiska niezbędnego do programowania w języku Java. JDK jest dostępne dla wielu systemów operacyjnych. Do pobrania pod tym adresem.

Zintegrowane środowisko programistyczne (ang. Integrated Development Environment, IDE)

Co prawda JDK posiada wszystkie niezbędne elementy do tworzenia oprogramowania w Javie, jednak kompilowanie i uruchamianie programów ogranicza się do wpisywania poleceń w systemowym wierszu poleceń. W celu usprawnienia produkcji oprogramowania zostały stworzone środowiska programistyczne (IDE). Dzięki środowiskom programistycznym tworzenie, modyfikowanie i testowanie oprogramowania staje się prostsze. Na rynku istnieje wiele środowisk dla języka Java, dwa najpopularniejsze z nich to:

  • Eclipse - do rozpoczęcia pracy w Javie niezbędna jest wersja Eclipse IDE for Java Developers
  • NetBeans - NetBeans wspiera także inne języki programowania takie jak C/C++ czy PHP, jednak do rozpoczęcia programowania w jezyku Java wystarczy wersja Java SE.

Podstawy programowania w Javie

Rozdział ten zawiera podstawowe informacje dotyczące języka programowania Java. Opisane są tu informacje dotyczące: podstawowych typów w Javie, zmiennych, operatorów, łańcuchów, operacji wejścia i wyjścia oraz instrukcji sterujących.

Pierwszy program w Javie

Kod źródłowy w języku Java zapisujemy w plikach z rozszerzeniem ".java". Zazwyczaj każdy plik zawiera jedną klasę, a jego nazwa jest taka sama jak nazwa tej klasy. Oznacza to, że gdy tworzymy klasę o nazwie Program zapisujemy ją w pliku o nazwie Program.java. Aby stworzyć prosty program wypisujący ciąg znaków na ekranie należy:

  • zdefiniować klasę programu public class NazwaKlasy,
  • zaimplementować w ciele klasy metodę main, jest to metoda, która jest wywoływana przez interpreter Javy w chwili, gdy zostaje uruchomiony program,
  • wywołać metodę drukującą na standardowym wyjściu programu ciąg znaków, w naszym przypadku jest to System.out.println("ciąg znaków")

Przykład pierwszego programu w Javie (Program Hello World):

  1. public class Program {
  2.    public static void main(String[] args) {
  3.       System.out.println("Witaj w javabook.pl!");
  4.    }
  5. }

Jak skompilować i uruchomić program napisany w Javie?

Jeśli chcemy uruchomić program używając jedynie środowiska JDK należy użyć kolejno dwóch poleceń w wierszu poleceń:

  1. Kompilacja programu komendą javac:
    javac Program.java
    W wyniku tego polecenia powinien powstać plik Program.class
  2. Uruchomienie programu komendą java:
    java Program
    Wynikiem działania programu powinien być ciąg znaków wydrukowany na konsoli:
    Witaj w javabook.pl!

Zarezerwowane słowa kluczowe w jezyku Java

W poniższej tabeli zostały przedstawione słowa kluczowe języka Java. Słowa kluczowe to specjalnie zarezerwowane wyrazy, których nie można użyć jako nazw klas metod czy zmiennych. Słowa te mają przypisane sobie komendy, na podstawie których kompilator rozumie, co robi dany kod źródłowy.

Słowa true, false oraz null także są zarezerwowane i nie jest możliwe tworzenie zmiennych, klas czy metod o takich nazwach (nie są one słowami kluczowymi lecz literałami).

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return short static strictfp super
switch synchronized this throw throws
transient try void volatile while

Słowa const oraz goto są zarezerwowane ale nie mają przypisanych komend. Komenda const w innych językach programowania jest używana do deklarowania stałych. W języku Java używa się do tego komend public static final. W Javie nie stosuje się także komendy goto, ponieważ została ona uznana za niebezpieczną.

Na kolejnych stronach zostaną szerzej opisane poszczególne słowa kluczowe.

Modyfikatory dostępu

W Javie trzy słowa kluczowe określają modyfikatory dostępu, są to:

private

Dostęp do danej metody lub zmiennej jest możliwy tylko z wnętrza danej klasy.
Przykłady zastosowania identyfikatora private:

  1. class KeywordPrivate {
  2.     private int key = 0;
  3.     private void go() {
  4.         System.out.println("Witaj!");
  5.     }
  6. }
Wywołanie metody go() lub zmiennej key możliwe jest jedynie z wnętrza klasy KeywordPrivate.

protected

Dostęp do metod lub zmiennych jest ograniczony jedynie do pakietu w którym znajduje się klasa lub dla potomków tej klasy.
Przykłady zastosowania identyfikatora protected:

  1. public class KeywordProtected {
  2.     protected int key = 0;
  3.     protected void message() {
  4.         System.out.println("Witaj!");
  5.     }
  6. }
Wywołanie metody message lub zmiennej key dla klas w tym samym pakiecie:
  1. KeywordProtected kp = new KeywordProtected();
  2. kp.message();
  3. kp.key = 12;

public

Dostęp do klasy, metod lub zmiennych możliwy jest z każdej innej klasy programu.
Przykłady zastosowania identyfikatora public:

  1. package pl.javabook.keywords;
  2. public class KeywordPublic {
  3.     public int i = 0;
  4.     public void message() {
  5.         System.out.println("Hello!");
  6.     }
  7. }
Dostęp do klasy KeywordPublic oraz jej metod i pól jest możliwy z klasy Main znajdującej się w innym pakiecie.
  1. package pl.javabook;
  2. import pl.javabook.keywords.KeywordPublic;
  3. public class Main {
  4.     public static void main(String[] args) {
  5.         KeywordPublic kp = new KeywordPublic();
  6.         kp.i = 123;
  7.         kp.message();
  8.     }
  9. }

Modyfikatory klas, metod oraz zmiennych

Poniżej przedstawione są modyfikatory klas, metod i/lub zmiennych:

abstract

Modyfikator stosowany do deklaracji klas, które nie mogą zostać zainicjalizowane lub metod, które muszą zostać zaimplementowane w nie abstrakcyjnym potomku danej klasy.
Przykład zastosowania abstract:

  1. public abstract class AbstractClass {
  2.     abstract void doAbstract();
  3. }

class

Słowo kluczowe używane do deklarowania klas.
Przykład zastosowania class:

  1. public class MyClass {
  2. }

extends

Modyfikator stosowany do deklaracji klasy będącej potomkiem innej klasy bazowej.
Przykład zastosowania extends:

  1. public class ExtendsClass extends MyClass {
  2. }

final

Zastosowanie tego modyfikatora pozwala na zadeklarowanie finalnej klasy, metody czy zmiennej. Dzięki słowu final niemożliwe jest dziedziczenie po finalnej klasie, przykrywanie metod czy ponowne inicjalizowanie zmiennych.
Przykład zastosowania final:

  1. public final class FinalClass {
  2.     final int sto = 100;
  3.     final int getSto() {
  4.         return this.sto;
  5.     }
  6. }

implements

Słowo kluczowe deklarujące klasę, która implementuje dany interfejs.
Przykład zastosowania implements:

  1. public class ImplementsClass implements MyInterface {
  2. }

interface

Modyfikator stosowany do deklaracji interfejsów.
Przykład zastosowania interface:

  1. public interface MyInterface {
  2. }

native

Oznaczenie metody, która jest napisana w innym języku programowania.
Przykład zastosowania native:

  1. public class NativeClass {
  2.     native int getNative();
  3. }

new

Słowo kluczowe używane do tworzenia instancji klasy poprzez wywołanie konstruktora.
Przykład zastosowania new:

MyClass myClass = new MyClass();

static

Modyfikator używany do deklaracji metod lub zmiennych statycznych.
Przykład zastosowania static:

  1. public class StaticClass {
  2.     public static final String KROWA = "Krowa!";
  3.     public static void main(String [] args) {
  4.         System.out.println(KROWA);
  5.     }
  6. }

strictfp

Modyfikator używany do oznaczania klas lub metod, w których wszystkie wyrażenia zmiennoprzecinkowe będą przeliczane zgodnie ze standardem IEEE 754.
Przykład zastosowania strictfp:

  1. public strictfp class StrictFPClass {
  2.     strictfp double add(double a,double b) {
  3.         return (a+b);
  4.     }
  5. }

synchronized

Zastosowanie tego modyfikatora powoduje synchronizację metody, czyli w danej chwili dostęp do metody może mieć tylko jeden wątek.
Przykład zastosowania synchronized:

  1. public class SynchronizedClass {
  2.     synchronized int getSynchronized() {
  3.         return 123;
  4.     }
  5. }

transient

Modyfikator stosowany do oznaczania pól klasy. Zabezpiecza on te pola przed zapisywaniem do strumienia.
Przykład zastosowania transient:

  1. public class TransientClass implements Serializable {
  2.     transient String pass = "password";
  3.     String data = "Some String Data";
  4. }

volatile

Modyfikator zmiennych, zezwalający na modyfikowanie przez wiele wątków jednocześnie.
Przykład zastosowania volatile:

  1. public class VolatileClass {
  2.     volatile int volatileI = 100;
  3. }

Książki o Javie

Książki które mogą się przydać podczas nauki podstaw języka Java:

Thinking in Java. Edycja polska.

Java 2. Podstawy