Configurare mediu de lucru
1. Setare mediului Java
Veti folosi compilatorul Java javac pentru a compila programele dumneavoastra Java si interpretorul java pentru a le rula.
Java este deja instalata si mediul Java este configurat pe masina dumneavoastra.
Daca nu a fost configurata corect calea catre binarele Java, va trebui sa o configurati chiar dumneavoastra.
Pentru aceasta, in Windows XP, selectati [Start -> My Computer -> Properties -> Advanced -> Environment Variables -> System variables -> PATH.]
Adaugati calea catre Java JDK instalat pe masina dumneavoastra la inceputul variabilei PATH: de exemplu, daca versiunea de JDK este 1.6.0_37, atunci adaugati la PATH:
C:\Program Files\Java\jdk1.6.0_27\bin;
Apasati apoi OK de trei ori.
2. Porniti o consola Command Prompt
Pentru a porni o consola, selectati [Start -> Run... ] si tastati "cmd" in text box-ul care apare. Se va lansa o consola alfanumerica.
Daca aveati deja una deschisa, inchideti-o si porniti alta (pentru a va asigura ca la calea - PATH - deja existenta s-a adaugat calea configurata mai sus).
Pentru a verifica versiunea de java existenta, tastati urmatoarea comanda la consola:
C:\Documents and Settings\username>java -version
Rezultatul trebuie sa fie ceva asemanator:
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) Client VM (build 20.12-b01, mixed mode, sharing)
Daca primele doua numere sunt 1.6 totul este in regula, versiunea minora nu este foarte importanta.
Pentru a verifica daca puteti folosi compilatorul java, tastati:
C:\Documents and Settings\username>javac -version
Rezultatul trebuie sa fie ceva asemanator:
javac 1.6.0_37
3. Compilarea programului
Schimbati directorul curent cu directorul in care ati salvat sursele dumneavoastra Java pentru programul pe care doriti sa il compilati
De exemplu, daca acest director este: "C:\Documents and Settings\username\workspace\SynchronizedThread", tastati comanda:
C:\Documents and Settings\username>cd C:\Documents and Settings\username\workspace\SynchronizedThread
In directorul in care aveti sursele, tastati comanda pentru compilare; daca sursa dumneavoastra se numeste SynchronizedThread.java, atunci comanda va fi:
C:\Documents and Settings\username\workspace\SynchronizedThread>javac SynchronizedThread.java
Daca sunt mai multe clase de compilat in acelasi director, tastati repetat comanda, pentru fiecare clasa in parte; sa presupunem, in acest exemplu, ca avem inca
o clasa, care contine si "main": SynchronizedThreadTest.java
C:\Documents and Settings\username\workspace\SynchronizedThread>javac SynchronizedThreadTest.java
La fiecare rulare, daca nu este nici o eroare de compilare, se va adauga un fisier cu extensia *.class
Dupa aceste doua compilari, vor aparea doua fisiere: SynchronizedThreadTest.class si SynchronizedThread.class
4. Executia programului
Pentru a executa programul (se poate/pot executa doar acea clasa/acele clase care au definit un 'main' ), tastati:
C:\Documents and Settings\username\workspace\SynchronizedThread>java SynchronizedThreadTest
5. Troubleshooting
5.1. Cand tastez "java -version" am o eroare.
Cel mai probabil, calea catre Java nu a fost scrisa corect. Verificati calea catre Java; verificati ca versiunea instalata corespunde celei din cale.
5.2. Comanda "java -version" functioneaza, dar nu si "javac -version".
Cel mai probabil e o problema legata de cale (PATH). Incercati sugestiile de la prima intrebare. Verificati si daca Java a fost instalata corect,
verificand existenta directorului: C:\Program Files\Java\jdk1.6.0_27\bin
5.3. Cum pot sa verific valorile din variabila mea PATH ?
Tastati comanda urmatoare in consola:
C:\Documents and Settings\username>echo %PATH%
5.4. Pot compila cu javac, dar am eroarea de tipul: "Exception in thread "main" java.lang.NoClassDefFoundError: SynchronizedThreadTest" cand incerc sa
execut cu java.
Mai intai, asigurati-va ca SynchronizedThreadTest.class este prezenta in directorul curent. Asigurati-va ca ati tastat SynchronizedThreadTest fara sa
adaugati .java sau .class. Verificati daca si comanda "java -version" merge. Incercati sa tastati:
C:\Documents and Settings\username\workspace\SynchronizedThread>java -cp . SynchronizedThreadTest
Daca aceasta merge, va trebui sa editati corect CLASSPATH
Adaugati la CLASSPATH si ., la inceputul stringului.
Pentru a verifica valoarea CLASSPATH, tastati:
C:\Documents and Settings\username>echo %CLASSPATH%
Aplicatii cu fire de executie
Salvati urmatoarele secvente de cod in fisiere separate, grupate indirectoare separate,
compilati si executati programele, urmand procedura descrisa mai sus
De exemplu, pentru Exemplul 1 (Ex. 1), salvati secventa de cod prefatata de SimpleThread.java in fisierul
SimpleThread.java, intr-un director SimpleThread din directorul dumneavoastra curent; salvati apoi secventa
de cod prefatata de de TestTwoThreads.java in fisierul TestTwoThreads.java, itot in directorul SimpleThread
Compilati apoi pe rand cele doua fisiere java si executati programul de test:
C:/Users/username/SimpleThread>java -cp . SimpleThread
Ex.1: Simple thread
File: SimpleThread.java
public class SimpleThread extends Thread {
public SimpleThread (String str) {
super(str);
}
public void run() {
for (int i = 0; i < 30; i++) {
System.out.println(i + " " + getName());
// try {
//System.out.println(i + " I do not sleep" + getName());
//sleep((int)Math.random() * 1000);
//} catch(InterruptedException e) {}
}
System.out.println("DONE! " + getName());
}
}
File: TestTwoThreads.java
public class TestTwoThreads {
public static void main(String args[]){
new SimpleThread("Bucharest").start();
new SimpleThread("London").start();
new SimpleThread("Paris").start();
new SimpleThread("Warshaw").start();
System.out.println("DONE MAIN!");
}
}
Ex.2: Syncronized Thread
File: SyncronizedThread.java
public class SyncronizedThread extends Thread {
static int a = 0;
static int b = 0;
static Object obj = new Object();
SyncronizedThread(String name){
super(name);
}
void method() {
System.out.println(getName() + " a = " + a + " b = " + b);
a++;
try {
sleep((int) (Math.random() * 1000));
}
catch(InterruptedException e)
{
}
b++;
}
public void run() {
for (int i = 0; i < 3; i++) {
synchronized(obj) {
method();
}
}
System.out.println(getName() + "DONE!");
}
}
File: SyncronizedThread.java
public class SyncronizedThreadTest {
public static void main (String args[]){
new SyncronizedThread("Thread 1: ").start();
new SyncronizedThread("Thread 2: ").start();
new SyncronizedThread("Thread 3: ").start();
System.out.println("Main test DONE!");
}
}