Technologie i usługi internetowe -...

36
Łódź, 15 luty 2014 r. Katedra Analizy Nieliniowej, WMiI Technologie i usługi internetowe cz. 1

Transcript of Technologie i usługi internetowe -...

Łódź, 15 luty 2014 r. Katedra Analizy Nieliniowej, WMiI UŁ

Technologie i usługi internetowe

cz. 1

2 dr Robert Kowalczyk, KAN, WMiI UŁ

Informacje Ogólne

Laboratorium: 32 h zajęć (co dwa tygodnie)

Zaliczenie ćwiczeń, to oddanie:

- 3 prac domowych - ocena 3

- 4 prac domowych - ocena 3+

- 5 prac domowych - ocena 4

- 6 prac domowych - ocena 4+

- 7 prac domowych - ocena 5

sprawdzanych na początku każdych zajęć.

Dyżur: środa 14.00-16.00, sala A327

Kontakt: [email protected]

3 dr Robert Kowalczyk, KAN, WMiI UŁ

Cel przedmiotu

Wprowadzenie do wytwarzania

wielowarstwowych aplikacji

WWW uruchamianych na

JAVOWYCH serwerach

aplikacyjnych i przechowujące

dane w relacyjnych bazach

danych

4 dr Robert Kowalczyk, KAN, WMiI UŁ

Układ zajęć:

1. Wprowadzenie do Javy

2. Wprowadzenie do Javy

3. Elementy HTML i CSS

4. Servlety w Javie

5. Servlety w Javie

6. Java Server Pages

7. Mechanizm JDBC

8. Dokończnie ćwiczeń i oceny

5 dr Robert Kowalczyk, KAN, WMiI UŁ

Java – wybrane daty z historii

1. 1991 – narodziny języka Java („Oak” (dąb) – pierwsza nazwa) - James Arthur Gosling – twórca Javy

2. 1995 – Sun Microsystems wypuszcza pierwszą wersję Javy 1.0 (500 klas)

3. 1998 – Java 2 Standard Edition (2300 klas)

4. 1999 – Java 2 Enterprise Edition i Java 2 Micro Edition

5. 2006 – Java FX

6. 2008 – Android

7. 2010 – Oracle przejmuje Javę

8. 2011 – Java 7 (typy generyczne, autoboxing)

6 dr Robert Kowalczyk, KAN, WMiI UŁ

Popularność Javy – index TIOBE

7 dr Robert Kowalczyk, KAN, WMiI UŁ

Popularność Javy – index TIOBE

8 dr Robert Kowalczyk, KAN, WMiI UŁ

Środowiska programistyczne (IDE)

10 dr Robert Kowalczyk, KAN, WMiI UŁ

Dokumentacja do Javy

• API do języka Java

http://docs.oracle.com/javase/7/docs/api/

• Java Tutorial

http://docs.oracle.com/javase/tutorial/

11 dr Robert Kowalczyk, KAN, WMiI UŁ

Literatura

12 dr Robert Kowalczyk, KAN, WMiI UŁ

JDK – Java Development Kit

Narzędzia wchodzące w skład JDK:

java - interpreter Javy, umożliwia uruchomienie skompilowanych programów

javac - kompilator Javy

jar - narzędzie do tworzenia, modyfikacji, rozpakowywania archiwów jar

javah - generator nagłówków C, używany np. gdy jest potrzeba stworzenia kodu Java i C, który by współpracował ze sobą

jdb - debugger Javy

javadoc - generator dokumentacji Javy

javap - disassembler Javy

13 dr Robert Kowalczyk, KAN, WMiI UŁ

Pierwszy program w Javie

//Pierwszy program – komentarz w Javie

public class MyProgram {

public static void main(String[] args) {

System.out.println("Hello World");

}

}

• Klasę zapisujemy w pliku:

MyProgram.java

• Kompilujemy do bytecodu:

javac MyProgram.java

• Następnie uruchamiamy:

java MyProgram

14 dr Robert Kowalczyk, KAN, WMiI UŁ

Kompilator i interpreter w Javie

15 dr Robert Kowalczyk, KAN, WMiI UŁ

Typowe błędy kompilacji i uruchomienia

Jeśli w trakcie kompilacji poleceniem javac zobaczysz błąd typu:

javac is not recognized as an internal external command, operable program or batch file

lub

javac command not found

użyj w poleceniu kompilacji pełnej nazwy ścieżki do polecenia javac lub ustaw zmienną środowiskową PATH

Jeśli w trakcie uruchamiania klasy poleceniem java zobaczysz błąd typu:

exception in thread "main" java.lang.NoClassDefFoundError

zdefiniuj zmienną środowiskową CLASSPATH

16 dr Robert Kowalczyk, KAN, WMiI UŁ

Pakiety

Program w języku Java to zbiór klas. Klasy zebrane są w pakiety aby pogrupować je według znaczenia. Kluczowe słowo do tworzenia pakietu, to package.

package zaj1;

public class Proba {

public static void main(String[] args) {

System.out.println("Hello World");

}

}

Nazwy pakietów zwyczajowo pisze się małymi literami. Kolejne poziomy zagnieżdżenia pakietów oddziela się od siebie kropkami. Przykłady pakietów: java.lang, java.util, java.io, java.applet, java.awt

17 dr Robert Kowalczyk, KAN, WMiI UŁ

Import klas

Sama nazwa klasy nie musi identyfikować jej w sposób jednoznaczny. Należy określić pakiet w obrębie którego została ona zdefiniowana. Aby skorzystać z klasy zamkniętej w obrębie jakiegoś pakietu należy ją

zaimportować przy pomocy polecenia import. package zaj12;

public class Proba2 {

public static void pisz(String s) {

System.out.println(s);

}

}

package zaj11;

import zaj12.Proba2;

public class Proba1 {

public static void main(String[] args) {

Proba2.pisz("Ala");

System.out.println("Hello World");

}

}

18 dr Robert Kowalczyk, KAN, WMiI UŁ

Słowa kluczowe języka Java

19 dr Robert Kowalczyk, KAN, WMiI UŁ

Zmienne

• Instance Variables (Non-Static Fields) – przechowują stan pól w danej klasie. Wartość tych zmiennych jest różna dla różnych instancji danej klasy

• Class Variables (Static Fields) – definiowane przez słowo static, które mówi kompilatorowi, że te pole jest takie samo dla wszystkich instancji danej klasy:

static int runda=6;

• Local Variables – pole tymczasowe przechowujące stan klasy na poziomie metod rozróżniane w obrębie {}

• Parameters – parametry klasyfikowane są zawsze jako zmienne, nigdy nie jako pola. – np.: public static void main(String[] args) - args jest

parameterem dla metody main.

• Zmienne muszą mieć typ (silne typowanie w Javie).

20 dr Robert Kowalczyk, KAN, WMiI UŁ

Zmienne – reguły nazewnicze

Ogólne reguły nazewnicze: • Rozróżniane małe i duże litery (case-sensitive).

• Zmienna może rozpoczynać się od litery, $ lub „_”.

• $ stosowany jedynie w automatycznie generowanym kodzie.

• W nazwie zmiennej należy unikać skrótów myślowych gdyż tworzysz nieczytelny kod:

np. z1, a345, bbb.

• Jeśli nazwa składa się z kilku słów to zaczynamy każde z nich, począwszy od drugiego, od dużej litery: sredniaPredkosc = 30;

• Jeśli zmienna ma oznaczać wartość stałą używaj dużych liter:

MAX_PREDKOSC=90;

• Stałe definiowane przez static final double PI = 3.141592653589793;

21 dr Robert Kowalczyk, KAN, WMiI UŁ

Typy w Javie

• Java jest językiem ze ścisłą kontrolą typów, w którym rozmiar i postać danych są określone precyzyjnie

• Typy danych w Javie można podzielić na typy proste i typy referencyjne (klasy, interfejsy i tablice)

• Do przechowywania liczb całkowitych przeznaczone są cztery typy o długościach: byte (8), short (16), int (32) oraz long (64)

• Rzeczywiste typy liczbowe to: float (32) i double (64)

• Dane znakowe zapisywane są zgodnie ze standardem Unicode – są to 16-bitowe liczby całkowite bez znaku. Do ich przechowywania służy typ char

• Typ boolean (1 bit) umożliwia przechowywanie wartości logicznych. Może on przyjmować tylko dwie wartości: true i false.

22 dr Robert Kowalczyk, KAN, WMiI UŁ

Typy proste wbudowane

Nazwa typu Standardowa wartość

byte 0

short 0

int 0

long 0L

float 0.0f

double 0.0d

char ‘\u0000’

boolean false

String null

String nie jest typem prostym, jednak ze względu na specyficzne traktowanie

jest często postrzegany jako typ prosty. String jest obiektem, którego wartości nie można zmienić (immutable).

23 dr Robert Kowalczyk, KAN, WMiI UŁ

Klasa String i jej metody Niech

String s1 = "abc";

String s2 = "ab";

s2 += "c";

String s3=s2;

String s4 = new String("abc");

Czy prawdą jest, że:

s1=="abc"

s1==s4;

s1==s2;

s2=="abc"

s2==s3;

s1.equals(s2);

s1.equals(s3);

s1.equals(s4)

s1.compareTo(s4);

Dany jest String s = " Ala ma kota i kot ma Ale ";

• Jak wypisać zdanie s z dużych liter?

• Jak wypisać zdanie s bez początkowych i końcowych spacji?

• Jak podzielić zdanie s używając symbolu spacji i wypisz każdy z wyrazów w kolejnej linii (użyj pętli)

foreach.

24 dr Robert Kowalczyk, KAN, WMiI UŁ

Tablice

• Tablica - to ciąg zmiennych tego samego typu, opisanych jedną wspólną nazwą. Elementy tablicy identyfikuje się za pomocą indeksów.

• Dostęp do poszczególnych elementów tablicy odbywa się za pomocą operatora indeksowania []. Indeksy są liczone od zera.

• Tablica jednowymiarowa odpowiada matematycznemu pojęciu wektora, wielowymiarowa – macierzy.

• Tablice w języku Java są zaimplementowane jako obiekty, więc nie mogą być deklarowane statycznie. Tworzenie tablicy składa się z dwóch etapów:

1. deklaracja zmiennej referencyjnej tablicy,

2. utworzenie nowego obiektu tablicy i przypisanie go do danej zmiennej tablicowej.

25 dr Robert Kowalczyk, KAN, WMiI UŁ

Tablice - przykład

Deklaracja tablicy: int[] anArray;

Alokacja pamięci: anArray = new int[4];

Ustawienie kolejnych elementów tablicy: anArray[0] = 10; anArray[1] = 11; anArray[2] = 12; anArray[0] = 13;

Długość tablicy można sprawdzić za pomocą właściwości lenght.

26 dr Robert Kowalczyk, KAN, WMiI UŁ

Operatory

Nazwa operatora Symbol

Przypisania = += -= *= /=

Arytmetyczne dwuargumentowe + - / *

Relacyjne > < => =< == !=

Logiczne ! && ||

Bitowe & | ^ << >> ~ >>>

In-/de-krementacja -- ++

Operator porównania typu instanceof

Trójwartościowy ? :

27 dr Robert Kowalczyk, KAN, WMiI UŁ

Instrukcje sterowania

• Instrukcje wyboru

if-then

if-then-else

switch

• Pętle

do-while

for

• Instrukcje sterujące

break – kończy wykonywanie danej instrukcji sterowania

continue – pomija wykonanie danego kroku instrukcji sterowania.

return

• Blok { instrukcje }

28 dr Robert Kowalczyk, KAN, WMiI UŁ

Instrukcje wyboru

if-then

if(liczba % 2 == 0)

System.out.println(true);

if-then-else

if(liczba % 2 == 0)

System.out.println(true);

else

System.out.println(true);

switch

switch(liczba % 3){

case 1:

System.out.println(‘reszta 1’);

break;

case 2:

System.out.println(‘reszta 2’);

break;

default:

System.out.println(‘reszta 0’);

}

switch współpracuje z następującymi typami:

•int, byte, shrot, chat,

• klasami opakowującymi tj. Integer, Byte, …

• typami wyliczeniowymi

29 dr Robert Kowalczyk, KAN, WMiI UŁ

Pętle

do

instrukcja;

while (wyrażenie);

do-while

while (wyrażenie)

instrukcja;

while

for (start; stop; inkrementacja)

instrukcja;

for int[] liczby = {1,2,3,4,7,8};

for (int zm : liczby)

System.out.println(zm);

foreach

Jak wypisać na konsoli następujące tablice?

30 dr Robert Kowalczyk, KAN, WMiI UŁ

Funkcje matematyczne

• Funkcje matematyczne Javy są zawarte w klasie Math. • Funkcje te są zadeklarowane jako statyczne, więc można ich używać bez tworzenia egzemplarza obiektu. • Funkcje matematyczne (metody klasy Math) zwykle operują na liczbach rzeczywistych typu double i zwracają wartości typu double. Przykładowe funkcje klasy Math: abs(x) ceil(double x) floor(double x) sqrt(double x) random() pow(double x, double n) sin(double alfa) cos(double alfa) tan(double alfa)

31 dr Robert Kowalczyk, KAN, WMiI UŁ

Wyjątki

Wyjątek jest sytuacją, która powoduje zatrzymanie normalnego wykonywania programu. Klauzula try może mieć wiele catch, ale każdy musi obsługiwać inny typ Wyjatku. Bardziej precyzyjne wyjątki powinny znajdować się w pierwszych klauzulach catch. Klauzula finally będzie zawsze wykonana.

try

{

instrukcje;

}

catch (typWyjątku parametr)

{

instrukcje;

}

catch (typWyjątku parametr)

{

instrukcje;

}

...

finally

{

instrukcje;

}

32 dr Robert Kowalczyk, KAN, WMiI UŁ

Wyjątki

Napisać program który uruchamiasz z dwoma parametrami typu int i wyprowadzasz na ekran iloraz tych liczb. • Jeśli parametrów będzie za mało masz obsłużyć odpowiedni wyjątek. • Jeśli parametry będą złego typu masz obsłużyć odpowiedni wyjątek. • Jeśli drugi z parametrów będzie zerem masz obsłużyć odpowiedni wyjątek.

33 dr Robert Kowalczyk, KAN, WMiI UŁ

Czytanie z klawiatury

W Javie czytanie z klawiatury można realizować na wiele sposobów: 1. Przy pomocy tablicy byte[]

byte[] bufor = new byte[100]; System.in.read(bufor); System.out.println("Wpisales ciag znakow: " + new String(bufor).trim());

2. Przy pomocy klasy klasy BufferedReader BufferedReader bufor = new BufferedReader(new InputStreamReader(System.in)); String s = bufor.readLine(); System.out.println("Wpisales ciag znakow: "+s);

3. Przy pomocy klasy Scanner Scanner sc = new Scanner(System.in); String bufor = sc.nextLine(); System.out.println("Wpisales ciag znakow: "+bufor);

34 dr Robert Kowalczyk, KAN, WMiI UŁ

JOptionPane – okienka dialogowe

Klasa JOptionPane umożliwia interakcję z użytkownikiem za pomocą wyskakujacego okienka dialogowego. Klasa a ma cztery podstawowe metody wywyołania.

35 dr Robert Kowalczyk, KAN, WMiI UŁ

Zadanie domowe 1

Napisz program w Javie uruchamiany z dwoma parametrami wejściowymi arg1 oraz arg2,

którego zadaniem jest wyświetlić iloraz liczb podanych jako argumenty arg1 oraz arg2.

Program zgłasza błąd jeśli:

- podano za mało argumentów,

- argumenty nie są liczbami całkowitymi tylko z

innym napisem,

- wywołano dzielenie przez 0.

36 dr Robert Kowalczyk, KAN, WMiI UŁ

Dziękuję za uwagę