Programowanie współbieżne
Setup Javy i IDE
Nie ma wymagań dotyczących IDE, natomiast dla własnej wygody zdecydowanie warto jakiś mieć. Ludzie używają IntelliJ IDEA, NetBeans, Eclipse, ..., ja osobiście wolę VS Code (akurat pod Javę nie jest super dopieszczony, ale jest generalnie lekki, szybki i full-featured).
Można pracować na komputerze w labach, na własnym, albo zdalnie przez SSH na students.
Instalacja na własnym komputerze
Windows & macOS
VS Code Coding Pack for Java zawiera spaczkowaną Javę razem z VS Code i wtyczkami. Inne IDE też mają instalator razem z Javą.
Linux
Instalacja Java'y:
- Ubuntu, Debian:
sudo apt install default-jre
- Fedora:
sudo dnf install java-latest-openjdk
java -version
pokazuje domyślnie używaną wersję
(W razie gdyby ktoś chciał domyślnie starszą wersję, można pod Ubuntu użyć narzędzia sudo update-java-alternatives
, opcja -l
listuje zainstalowane, -s
pozwala zmienić; pod Fedorą sudo alternatives --config java
).
Instalacja VS Code: instrukcje stąd, po czym włączyć i w lewym panelu wybrać ze wtyczek Extension Pack for Java.
Struktura projektu
IDE są dość czepialskie co do struktury folderów w Javie. Dla takich małych programików jak na zajęciach najprościej nie używać systemów budowania, tylko same foldery i pliki źródłowe. Na przykład:
- folder
wspolbiegi/
który otwieramy w VS Code jako nasz workspace (File > Open Folder
lub z linii poleceńcode wspolbiegi/
) - w nim katalog
wspolbiegi/src/
- w nim plik
wspolbiegi/src/przyklady01/SingleThread.java
zawierający linijkępackage przyklady01
. - w nim linijka
package przyklady01;
i definicja klasySingleThread
ze statyczną metodąmain
.
Ogólnie plik zawierający package foo.bar
powinien być w src/foo/bar/
.
Wtedy uruchamianie z IDE powinno działać.
W VS Code można src/
pominąć, w innych IDE niekoniecznie.
Z linii poleceń
- Uruchomienie z kompilacją
java przyklady01/SingleThread.java
(nie działa wtedy TAB-completion) - Osobno kompilacja
javac przyklady01
/SingleThread.java
i wykonaniejava przyklady01.SingleThread
(dwa polecenia, ale działa TAB-completion).