java & java web technologies

63
Ziya Əsgərov [email protected] Aprel 2012

Upload: ziya-askerov

Post on 28-May-2015

209 views

Category:

Technology


2 download

DESCRIPTION

Life is too short for JAVA :

TRANSCRIPT

Page 1: JAVA & JAVA WEB TECHNOLOGIES

Ziya Əsgə[email protected]

Aprel 2012

Ziya Əsgə[email protected]

Aprel 2012

Page 2: JAVA & JAVA WEB TECHNOLOGIES
Page 3: JAVA & JAVA WEB TECHNOLOGIES

I - Java Haqqında

3

JavaJavannın ın ttarixiarixi JavaJavannın ın ttarixiarixi

Java Java nnəədir?dir?Java Java nnəədir?dir?

Java Java nnecə ecə iişləyirşləyir Java Java nnecə ecə iişləyirşləyir

JavaJava ilə ilə nnələr edilə bilər ələr edilə bilər ??JavaJava ilə ilə nnələr edilə bilər ələr edilə bilər ??

Niyə JNiyə Javaava ??Niyə JNiyə Javaava ??

Servlet/JspServlet/Jsp Servlet/JspServlet/Jsp

Model -1 , Model-2 vModel -1 , Model-2 və MVC ə MVC arxitekturasıarxitekturası Model -1 , Model-2 vModel -1 , Model-2 və MVC ə MVC arxitekturasıarxitekturası

Page 4: JAVA & JAVA WEB TECHNOLOGIES

Java Nədir ?

Proqramların fərqli əməliyyat sistemlərində işləyə bilməsi üçün inkişaf etdirilmiş proqramlaşdırma dili və platformadır.

Proqramlaşdırma dili olaraq, açıq kodlu, obyekt mərkəzli (object-oriented), təhlükəsiz, internet üçün əlverişli bir texnologiyadır.

Java texnologiyası vasitəsi ilə bir proqram fərqli mühitlərdə işlədilə bilər.(Windows/Linux)

4

Page 5: JAVA & JAVA WEB TECHNOLOGIES

Javanın Tarixi

1991 Sun Microsystems şirkəti, gələcəyin ITC (Information Technology Channel)texnologiyasinı bəlirləmək adına bir araşdırma ləyihəsi başlatdı.

James Gosling, Patrick Naughton, Mike Sheridan, rəhbərliyindəki komanda 13 nəfərdən ibarət və adı “Green Team” (Yaşıl Komanda) idi.

Layihənin əsas sahəsi əyləncə məqsədli şəxsi və elektronik ev cihazları idi.

5

James A. Gosling, OC (born May 19, 1955 near Calgary, Alberta, Canada)

Page 6: JAVA & JAVA WEB TECHNOLOGIES

*7 Star Seven

18 aylıq bir çalışmadan sonra 1992 yayında “*7”, “Star Seven” adlı və bir kontrol cihazı cıxardılar.

Bu cihaz TV, video player və s. kimi bir çox ev cihazını kontrol edə bilirdi.

Cihazın bu gücü, platformdan müstəqil bir dilə sahip olmağından idi.

James Gosling bu dilə “Oak”(meşə) adını vermişti.

6

Page 7: JAVA & JAVA WEB TECHNOLOGIES

Java və Internet

Bu layihə bir çox kabelli TV şirkətinə təklif edildi ancaq zamanının biraz önündə olduğu üçün qəbul edilmədi.

Komandanın rəhbərləri, inkişaf etdirdikləri platformanın Internetə çox əlverişli olduğunu düşündülər.

İstiqamətlərini dəyişdirib, adı daha sonra rəsmi olarak HotJava olan browser hazırladılar. (WebRunner)

7

Page 8: JAVA & JAVA WEB TECHNOLOGIES

Oak’tan Java’ya

Oak’ın ticari bir ad olaraq istifadə edilə bilməməsi hüquqi bir araşdırmayla ortaya çıxdı və yeni dilin adının nə olması haqqında Sun araşdırma başlatdı.

Son üçə Java, Silk ve DNA adları qalır. Və sonda Java galib gəlir.

23 May 1995’də Java rəsmi olaraq təqdim edildi.

8

Page 9: JAVA & JAVA WEB TECHNOLOGIES

Java Necə İşləyir ?

Java həm çevrilən (compiled) həm də yorumlanan (interpreted) bir dildir.

Java qaynaq kodları (.java faylları) Java bytecodelarına (.class fayllara) çevrilir.

Bytecodelar JVM’in komandalarıdır və çalışma zamanında (run-time) JVM tarafından yorumlanır.

Bytecodelar VM(Java Virtual Machine) olan hər platformda işləyə bilər.

9

Page 10: JAVA & JAVA WEB TECHNOLOGIES

10

Page 11: JAVA & JAVA WEB TECHNOLOGIES

JVM (Java Virtual Machine)

JVM (Java Virtual Machine), hardware və əməliyyat sistemi üstündə işləyən platformdur.

Compile edilmiş Java kodları ilə platform arasında bir qat meydana gətirir ve eyni bytecodeların fərqli platformlarda dəyişmədən, eyni şəkildə işləməyini təmin edir.

Her platform üçün ən az bir JVM mövcuddur.

11

Page 12: JAVA & JAVA WEB TECHNOLOGIES

12

Page 13: JAVA & JAVA WEB TECHNOLOGIES

13

Page 14: JAVA & JAVA WEB TECHNOLOGIES

14

// Hello.java

public class Hello {

public static void main(String[] args){ Hello object = new Hello ();

object.sayHello(); }

public void sayHello(){ System.out.println(“Hello!”);

}}

NəticəHello!

Page 15: JAVA & JAVA WEB TECHNOLOGIES

Java Platromdan müstəqildir (Portable)

Java`nin en böyük üstünlüyü platformdan müstəqil olaraq işləməsidir.

Bütün əməliyyat sistemləri Javanı dəstəkləməkdədir.

WORA (Write Once, Run Anywhere) - bir dəfə yaz hər yerdə işlət.

15

Niyə JAVA ?

Page 16: JAVA & JAVA WEB TECHNOLOGIES

Java & Robustness

Robustness: çalışma zamanı (runtime) təhlükəsizliyi olaraq tərif edilir.

Java, dözümlü(reliable) və güclü proqramlar yazmaq üçündür.

Çevirmə(compile) zamanında həm də çalışma (runtime)zamanında tip uyumu və dəyişimi (cast) kontrol edilir.

İstisna vəziyyətləri ələ almaq üçün (exception handling)mexanizması vardır.

Yaddaşın idarəsi avtomatikdir, proqramçıya bıraxılmamışdır.(Garbage Collector)

16

Page 17: JAVA & JAVA WEB TECHNOLOGIES

Carbage Collector

17

Page 18: JAVA & JAVA WEB TECHNOLOGIES

Java Təhlükəsizdir Java şəbəkədə istifadə edilə bilər.

Java, şəbəkədə olmağın meydana gətirdiyi təhlükələrə qarşı güclüdur.

Xarici makinlardaki obyektlərin, local makinadaki obyektlərə və əməliyyat sisteminə müdaxiləsi kontrol altındadır.

Java’daki təhlükəsizlik API’lari sayəsində şifrələmədən (encryption) rəqəmsal imzalara (digital signatures) qədər hər cür təhlükəsizlik kodu yazıla bilər.

18

Page 19: JAVA & JAVA WEB TECHNOLOGIES

Java Arxitektura Olaraq Tərəfsizdir

Java, bir birlərindən fərqli, bir çox fərqli platformun olduğu şəbəkə üstündə işləmək üçün hazırlandığı üçün, hər hansı bir platforma xüsusi rəğbət göstərmir.

Bu vəziyyət Java’nın virtual bir makina üstündə işləməsi və heç bir platformaya rəğbət göstərməyəcək bir şəkildə, standartlar üzərinə inşa edilməsinin bir nəticəsidir.

19

Page 20: JAVA & JAVA WEB TECHNOLOGIES

Java Müvəffəqiyyətlidir

Java, memarlıq olaraq tərəfsiz olmaq üçün virtual makina kimi bir ara qat üstündə çalışmağı seçmişdir.

Java etibarlı bir memarlıq üçün daha bir çox(runtime) kontrollara sahipdir.

Java’nın runtime performansını artırmaq üçün çox məsafə qət edilmişdir.

Optimized compiler JIT ve HotSpot texnologiyaları

20

Page 21: JAVA & JAVA WEB TECHNOLOGIES

Java Çox Kanallıdır(Multithreaded) Kanal (thread), bir iş (process) içində meydana gələn həfif əməliyyatlardır

(lightweight process).

Eyni əməliyyat içində işləyən fərqli kontrol axışlarına kanal deyilir.

Kanallar eynı əməliyyat içində işlədiklərindən, bir çox işi eyni anda və daha sürətli yerinə yetirə bilirlər.

CPU və platformların çox sürətli hala gəlməsi, dillərdəki çox kanallı özəllikləri istifadə etməyi bizə məcbur edir.

21

Page 22: JAVA & JAVA WEB TECHNOLOGIES

Java ilə nələr edilə bilər ? Verilənlər bazası ilə əlaqəli proqramlar.

Servlet, Jsp (Web proqramları).

Mobil telefonları, Smart kartlar üçün proqramlar.

GUI proqramları, Applet’ler, Swing və s. Proqramlar.

Page 23: JAVA & JAVA WEB TECHNOLOGIES

Applet Applet, uzaqdaki sistemdən endirilib internet brauzeri üzərində çalışdırılabiliən java

proqramlarıdır.

Appletlər sistemə zərər verə bilməyəcək bir şəkildə hazırlanmışdır və bugün özəlliklə oyun saytlarında hələ də istifadə edilməkdətdir.

İçərisində proqram olan bir səhifəni açmağa çalışdığınız anda browser avtomatik olaraq java virtual maşını çalışdırır.

Page 24: JAVA & JAVA WEB TECHNOLOGIES
Page 25: JAVA & JAVA WEB TECHNOLOGIES

Swing və AWT (Abstract Window Toolkit)

AWT, ilk java ilə birlikdə inkişaf etdirilən təməl grafika interfeys kitabxanasıdır.

AWT əməliyyat sisteminin grafika strukturunu istifadə imkanını təmin edir.

Java 2 platformu ilə birliktə AWT yetərsiz görülmüş və çox daha geniş və daha cox özəlliklərə sahib Swing kitabxanasi sistemə əlavə edilmişdir.

Swing daha əvvəl əməliyyat sisteminin istifadə etdiyi hardware grafika sürətləndirmə vasitələrini istifadə etmədiyinə görə yavaşlığı ilə tənqidlərə hədəf olmuşdu.

Page 26: JAVA & JAVA WEB TECHNOLOGIES

Swing və AWT (Abstract Window Toolkit)

Java 1.4 ilə Swing, həm ümümi olaraq virtual maşının sürətlənməsi və qismən hardware sürətlənməsi ilə bu pis şöhrətindən qutuldu.

Java 5 və 6 ilə desktop proqramlari yazılımı məşhurlaşdı.

AWT hələ də Swing’in bir alt qatında, təməl iki ölçülü grafika işləmlərində istifadə edilməyə devam edir.

Page 27: JAVA & JAVA WEB TECHNOLOGIES

SWT (Standart Widget Toolkit)

SWT Swing’ə bir alternatifv olaraq IBM tərəfindan inkişaf etdirilmiş sistemidir.

Swing’dən ən büyük fərqi əməliyyat sisteminin grafika kitabxanasını və komandalarını istifadə etməsidir.

SWT’nin əlverişsizliyi isə Java’nin bir parçası olmamağıdır.

SWT fərqli əməliyyat sistemlərində fərqli performansda işləyir və özəlliklə Windowsdan basqa sistemlərdə əlverişli deyildir.

Bilinən SWT proqramı məşhur Java proqram yazma aləti olan Eclipse’dir.

Page 28: JAVA & JAVA WEB TECHNOLOGIES

Servlet

1997‘də Sun MicroSystems Servlet Texnologiyasını təqdim etdi

Servlet texnologiyası, obyekt mərkəzli kod yazımına imkan verirdi.

Proqramçılara öz kitabxanalarını yazmağa imkan yaratdı.

Page 29: JAVA & JAVA WEB TECHNOLOGIES

Servlet Əsas gördüyü işlərdən bəziləri:

Request tərəfindən göndərilən verilənləri oxumaq.

Gələn HTTP Request və daşıdığı bilgilər ilə qarşılıqlı əlaqəni təmin etmək.

Verilənlər toplayıb, requestin tipine görə (Web, WAP, PDA, etc.) responce hazırlamaq.

Requestə göndərilən HTTP responsu və daşıdığı məlumatlar ilə qarşılıqlı əlaqəni təmin etmək.

Dinamik olaraq yaradılan cavabı, requestere geri göndermektir.

Page 30: JAVA & JAVA WEB TECHNOLOGIES

Servlet

Servlet, dinamik məzmun yaradan bir Java Web komponentidir.

Bir Servlet, hər yönü ilə, hər şeydən öncə, bir Java obyektidir.

Java Servlet sinifi, Java compiler tərəfindən, Java bayt koduna çevirilir və bir Servlet Konteyneri (Servlet Motoru) tərəfindən çalışdırılır.

Servlet Konteyneri Servletlərin Web, request/responce (istək-cavab) modelini istifadə edir.

Bu model HTTP (Hypertext Transfer Protocol) pratakolu üstündə qurulmuşdur.

Page 31: JAVA & JAVA WEB TECHNOLOGIES

Servlet

Ümumi olaraq, Servletlər, Internet üzərində, HTTP pratakolu ilə istifadə üçün yaranmışdır.

Amma, Servletlər pratakoldan müstəqildir. Məsələn, FTP ya da SMTP istifadə edən Servletler yazıla bilər.

Servletler, Java'nın, CGI (Common Gateway Interface) proqramlamasına alternativ olaraq yaradıldı.

Page 32: JAVA & JAVA WEB TECHNOLOGIES

Servlet

Page 33: JAVA & JAVA WEB TECHNOLOGIES

Servlet Container

İlk başda Servlet Motoru (Servlet Engine) adı ilə bilinən və J2EE'nin ortaya çıxması ilə Servlet Container adlandırılan proqramlar, Servletleri və yaşam zamanlarını idarə edirlər

Servlet Container , HTTP protokolunun request və responce modelini dəstəkləməlidir.

HTTPS (HTTP over SSL - SSL üzərindən HTTP) kimi digər əlavə protokolları da dəstəkləyir.

Page 34: JAVA & JAVA WEB TECHNOLOGIES

Servlet/Jsp

Problem: Println() funksiyası ilə HTML (!) .

Cavap: Java Server Page texnologiyası.

HTML və Java kodları iç-içə yazıla bilir.

Web proqramları JSP-mərkəzli olmağa başladı.

Page 35: JAVA & JAVA WEB TECHNOLOGIES

JSP (JAVA SERVER PAGES)

JSP spesifikasiyası Java Servlet API üzərinə qurulmuş dur, lakin Servlet və JSP texnologiyaları arasında bəlli fərqlər vardır.

Proqramlama peşəkarlığı tələb edən Servletlerin əksinə JSP daha geniş bir programçı kütləsinə xitab edir.

JSP nin əsas üstünlüyü məzmunun prezentasiya tərəfindən ayrılmasıdır.

Page 36: JAVA & JAVA WEB TECHNOLOGIES

JSP’nin Üstünlükləri

Statik və Dinamik məzmunun birbirindən ayrılması:

UI (User İnterface) üzərində edilən çox kicik dəyişikliklər belə servletin yenidən compile edilməsinə ehtiyac yaradır.

Dinamik ve statik məzmunun ayrı olmaları proqramların sabit və əsnək olmalarına yol açmaqdadır.

JSP səhifələrində bəzı özəl script və etiketlər (taglar) istifadə edilə bilməktıdir.

JSP səhifəsı avtomatik olaraq compile edilir və JSP motoru tərəfindən yene avtomatik olaraq web server içərisinə qoyulur.

Page 37: JAVA & JAVA WEB TECHNOLOGIES

JSP’nin Üstünlükləri 2

Bir dəfə yaz , hər yerdə çalışdır

JSP səhifələri platformlar və web serverlər arasında rahatlıqla daşınabilməkdə və hər hansi bir deyişikliye ehtiyac duymamaqdadır.

Servlet API tamamən səthiləşdirilmişdir.

JSP servletin abstraklaşdırılmış halıdır.

Servletlər ilə edilən hər şey JSP ilə edilə.

Page 38: JAVA & JAVA WEB TECHNOLOGIES

Model-1/Model-2/MVC JSP və Servlet Web proqramlarında bərabər istifadə edilməyə başladı

Servlet, web iş axışıda JSP isə HTML və kirli işlər üçün istifadə edilməyə başladı.

JSP və Servlet'i bərabər istifadə etmək Model 2 olaraq adlandırılmağa başladı.

Sadece JSP istifadə etmək Model 1 olaraq bilinir.

Page 39: JAVA & JAVA WEB TECHNOLOGIES

MVC(Model View Controller)

Model View Controller (Design Pattern)

User Interface və Business Logic bir birindən ayrılır.

Java web'də ən cox istifadə edilən Design Pattern ‘dir.

Sadəcə Javaya özəl deyildir.Ümumi bir konseptdir.

C#, Ruby on rails, Python və s. dillərdə də istifadə edilir.

Page 40: JAVA & JAVA WEB TECHNOLOGIES

Model View Controller

Page 41: JAVA & JAVA WEB TECHNOLOGIES

MODEL NEDİR?

İş məntiqi (Business Logic) hissəsidir.

Bir neçə qatdan ibarət ola bilər.

Ümumiyyətlə verilənlər bazasındakı əməliyyatlar bu hissədə olur

Controller'dan gələn verilənləri işləyir.

Model qatında hər hansı bir output edilməz.

Page 42: JAVA & JAVA WEB TECHNOLOGIES

VIEW NEDİR?

Proqramın istifadıçiyə göstərilən interfeysin olduğu qatdır.

Html, Css, Javascript vb. bu qatda olur

Bu qatda minimum java kodunun yazılmağı hədəfdir.

Page 43: JAVA & JAVA WEB TECHNOLOGIES

CONTROLLER NƏDİR?

Proqramların qərar mexanizmasıdır.

Model ilə View arasında körpü işi görür.

View qatından gələn request’ləri model‘ə göndərir və Model qatından aldığı məlumatları view‘a göndərir.

Page 44: JAVA & JAVA WEB TECHNOLOGIES

MVC İSTİFADƏ ETMƏYİN ÜSTÜNÜKLƏRİ?

İstifadiçiyə təqdim ediləcək kodlar ilə (Html, Css və s.) , sistemin işləməyini təmin edən kodları birbirinden ayıraraq təmiz və sistemli kod yazmağı asanlaşdırır.

Kodların daha asan optimizasiya edilməsinə imkan verir

Komanda içində kodların oxuna bilirliyənə imkan yaradir.

User Interface tərəfindəki dəyişikliklər iş məntiqi hissəsinə toxunulmadan edilə bilir.

Front-End Developer, Back-End Developer birbirinden müstəqil olaraq işləyə biləi.

Xətaları yaxalama və kodu test etməyi asanlaşdırır.

Page 45: JAVA & JAVA WEB TECHNOLOGIES

II - Web Framework Texnologiyaları

45

GWTGWTGWTGWT

Niyə FrameNiyə Framewworkork ? ?Niyə FrameNiyə Framewworkork ? ?

Framework nFramework nədir ədir ??Framework nFramework nədir ədir ??

StrutsStrutsStrutsStruts

JSFJSFJSFJSF

Spring MVCSpring MVCSpring MVCSpring MVC

Page 46: JAVA & JAVA WEB TECHNOLOGIES

FRAMEWORK NƏDİR?

Page 47: JAVA & JAVA WEB TECHNOLOGIES

NİYƏ FRAMEWORK?

Vaxt itkisi və enerji itkisi azalır.

Standart çalışma sistemini təmin edir.

Komanda içində işləmək asanlaşır.

Standart kodlama sistemini təmin edilir.

Framework ilə yazılan proqramlar daha etibarlı olur.

Şəkil - 1

Page 48: JAVA & JAVA WEB TECHNOLOGIES

JAVA FRAMEWORKS

Page 49: JAVA & JAVA WEB TECHNOLOGIES

GOOGLE WEB TOOLKIT

Niyə GWT ? GWT version 1.0 May 16, 2006. Browser’lərdəki fərqliliklərin meydana gətirdiyi zaman itkisi. JavaScript kodların yazımı, baxımı və təhlükəsizliyinin təmini çətindir. Client & Server proqramlarkən proqramlama dili ayrılığı problemi. Java kodu yazılır, JavaScript yazılmır. Zəngin komponent kitabxanaları. AJAX.

Page 50: JAVA & JAVA WEB TECHNOLOGIES

Java dili ile yazılmış ajax proqramlarını browserdən müstəqil və optimal JavaScript koduna çevirir.

GWT Compiler JavaScript kodları sürətli işləyəcək optimum kodlara çevirir

Ölü kodları(siniflər, metodlar) Compile vaxti silir və kodun boyunu kiçildir.

Java kodunuzu yazdıqdan sonra hər dəfə Compile etmək lazım olmur.

Opera IE, Firefox, Mozilla, Safari də işləyirmi demədən proqramı deploy edilə bilər.

GOOGLE WEB TOOLKIT

Page 51: JAVA & JAVA WEB TECHNOLOGIES

GWT CODE SAMPLE

Page 52: JAVA & JAVA WEB TECHNOLOGIES

Apache Struts, Java dünyasına standart bir MVC təmin etmək üçün Craig R. McClanahan tərəfindan May 2000'də başladı.

Struts, hər hansı ölçüdəki proqramlar üçün uyğundur.

Özünə xas kitabxanaları var.

Struts.xml

Page 53: JAVA & JAVA WEB TECHNOLOGIES

Web.xml

Page 54: JAVA & JAVA WEB TECHNOLOGIES

struts.xml

index.jsp

Page 55: JAVA & JAVA WEB TECHNOLOGIES

HelloWorld.java

Page 56: JAVA & JAVA WEB TECHNOLOGIES
Page 57: JAVA & JAVA WEB TECHNOLOGIES

SPRING MVC

Page 58: JAVA & JAVA WEB TECHNOLOGIES

SPRING MVC

1. Client Servere http request göndərir.2. Gelen request Front Controller (DispatcherServlet)

tərəfindən qarşılanır ve uyğun Handler Mapping'ləri tapmağa çalışır.

3. Handler Mapping'lərin vasitəsi ilə DispatcherServlet istəyi uyğun controller'e göndərir.

4. Controller istəyi işləyir və FrontController‘ə ModelandView obyekti döndərir.

5. FrontController bu göndərilən obyekti View Resolver ilə görüntü hazırlayır.

6. Daha sonra hazırlanan səhifə istifadəçiyə göndərilir.

Page 59: JAVA & JAVA WEB TECHNOLOGIES

SPRING & INVERSION OF CONTROL

Page 60: JAVA & JAVA WEB TECHNOLOGIES

SPRING & Dependency Injection

Page 61: JAVA & JAVA WEB TECHNOLOGIES

SPRING MVC

Page 62: JAVA & JAVA WEB TECHNOLOGIES
Page 63: JAVA & JAVA WEB TECHNOLOGIES

Dinlədiyiniz üçün təşəkkür edirəm !

63

Ziya Əsgə[email protected]

Aprel 2012

Ziya Əsgə[email protected]

Aprel 2012