85
Moderna tīmekļa programmēšana Java pasaulē Alina Vasiļjeva Latvijas Universitāte Datorikas fakultāte 2012.gada 6. decembris

Modern a tīmekļa programmēšana Java pasaulē

Embed Size (px)

DESCRIPTION

Modern a tīmekļa programmēšana Java pasaulē. Alina Vasiļjeva Latvijas Universitāte Datorikas fakultāte 20 12 .gada 6 . decembris. Plāns. Tīmekļa lietojumprogrammas Arhitektūra Lietojumprogrammas slānis Datu slānis P rezentācijas slānis. Tīmekļa lietojumprogrammas. Pamatjēdzieni. - PowerPoint PPT Presentation

Citation preview

Page 1: Modern a tīmekļa programmēšana  Java pasaulē

Moderna tīmekļa programmēšana

Java pasaulē

Alina Vasiļjeva

Latvijas UniversitāteDatorikas fakultāte

2012.gada 6. decembris

Page 2: Modern a tīmekļa programmēšana  Java pasaulē

Plāns• Tīmekļa lietojumprogrammas

• Arhitektūra

• Lietojumprogrammas slānis

• Datu slānis

• Prezentācijas slānis

Page 3: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa lietojumprogrammas

Pamatjēdzieni

Page 4: Modern a tīmekļa programmēšana  Java pasaulē

Internets mūsdienās• Mūsdienās VISI zina kas ir Internets un VISI

izmanto Internetu

• Bet mūs, kā datoriķus, interesē kā veidot tīmekļa lietojumprogrammas

gan mazuļi gan vecmammiņas

Page 5: Modern a tīmekļa programmēšana  Java pasaulē

Internets un tīmeklis• Internet ir visā pasaulē izplatīta publiski pieejamo

datoru tīklu sistēma, kas pārraida datus izmantojot standartu protokolu IP (Internet Protocol)

• World Wide Web (WWW, vai vienkārši Web) ir starp saistīto hiperteksta dokumentu sistēma, kurai var piekļūt pa Internetu

• Tīmekļa lietojumprogramma ir tāda programma, kura ir izvietota tīmeklī un kurai var piekļūt pa tīklu

Page 6: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa lietojumprogrammas pazīmes

• Klienta/Servera arhitektūra• HTTP protokols• URL adreses• HTML• Lietojum-

programmas

darbināšanai ir

nepieciešams

serveris

Page 7: Modern a tīmekļa programmēšana  Java pasaulē

Tim Berners-LeeTim Berners-Lee ir • tas cilvēks, kurš izgudroja World Wide Web 1989. gadā

• izstrādāja HTTP, HTML un URL specifikācijas

• World Wide Web Consortium (W3C) direktors

Page 8: Modern a tīmekļa programmēšana  Java pasaulē

HTTP - HyperText Transfer Protocol

• HTTP ir standarts sazināšanās protokols World Wide Web informācijas pārsūtīšanai

• HTTP apraksta ziņojumus (request/response) ar kuriem var apmainīties klienti un serveri

• HTTP ir “bezstāvokļa” (stateless)• serveris neglabā informāciju par

iepriekšējiem pieprasījumiem

Page 9: Modern a tīmekļa programmēšana  Java pasaulē

URL - Universal Resource Locators

www.someSchool.edu:8080/someDept/pic.gif

Servera domēna vārds Ceļš līdz objektam

Neobligāts servera ports (default = 80)

URL sastāvdaļas:•servera adrese•(neobligāts) porta numurs•ceļš līdz resursam

Page 10: Modern a tīmekļa programmēšana  Java pasaulē

HTML - Hypertext Markup Language

• HTML ir iezīmēšanas valoda, kas ir izstrādāta tīmekļa lappušu un citas pārlūkprogrammā attēlojamas informācijas glabāšanai

<html> <head> <title>My Web Page</title> </head> <body> <p>Hello!</p> </body> </html>

Page 11: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa klienti un serveri• Tīmekļa klientu parasti sauc par user agent un

tipiskais piemērs ir pārlūkprogramma (browser)• Chrome, Internet Explorer, Firefox, Opera, Safari

• Tīmekļa serveris ir programma, kas ir atbildīga par klientu pieprasījumu saņemšanu un atbildes aizsūtīšanu atpakaļ• Apache, Microsoft IIS, nginx

Page 12: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa lapas• Parasti klienti pieprasa no serveriem tīmekļa lapas

• Par tīmekļa lapu sauc World Wide Web informācijas resursu, kuram var piekļūt ar pārlūkprogrammas palīdzību

• Šī informācija parasti ir HTML vai XHTML formātā

• Katrai tīmekļa lapai ir URL adrese

• No vienas tīmekļa lapas var aiziet uz citām lapām izmantojot hiperteksta saites

• Tīmekļa lapa sastāv no “objektiem”• teksts, bildes, audio, video

Page 13: Modern a tīmekļa programmēšana  Java pasaulē

Klienta/servera komunikācijas scenārijs

Tīmekļa klientu/serveru komunikācija notiek izmantojot HTTP protokolu

1. Lietotājs norāda tīmekļa lapas URL pārlūkprogrammā

2. Pārlūkprogramma sūta HTTP pieprasījumu serverim

3. Serveris apstrādā pieprasījumu un sūta pieprasītu tīmekļa lapu atpakaļ klientam

4. Pārlūkprogramma rāda tīmekļa lapas saturu lietotājam

Page 14: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa lietojumprogrammuarhitektūra

Page 15: Modern a tīmekļa programmēšana  Java pasaulē

Augsta līmeņa arhitektūra• Dalīta klienta/servera arhitektūra

• Komunikācija notiek pa

datortīklu

• Datortīklu arhitektūras

abstraktais apraksts –

TCP/IP modelis

(Internet reference model)

Page 16: Modern a tīmekļa programmēšana  Java pasaulē

TCP/IP modelis

IP = Internet ProtocolTCP = Transmission Control Protocol

Page 17: Modern a tīmekļa programmēšana  Java pasaulē

Lietojumprogrammu līmenis• Piedāvā lietotājam noderīgo protokolu kopumu

• Klienta/servera sistēmu piemēri un to lietojumprogrammu līmeņa protokoli:

• The World Wide Web (HTTP)

• E-mail (SMTP & POP)

• Reliable file transfer (FTP)

• Internet Domain Name System (DNS)

Page 18: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa lietojumprogrammu arhitektūra

Daudzslāņu arhitektūra

• Prezentācijas slānis• Lietotāja saskarne

• Lietojumprogrammas slānis• Visu slāņu darbību koordinācija

• Sistēmas loģikas realizācija,

aprēķini, lēmumu pieņemšana

• Datu slānis• Datu glabāšana datubāzēs

Page 19: Modern a tīmekļa programmēšana  Java pasaulē

Model-View-Controller šablons• Model-View-Controller (MVC) ir projektēšanas

šablons (aprakstīts 1979. gadā, Smalltalk valodā)

• Pamata mērķis: atdalīt datus (Model) no

lietotāja interfeisa (View)

• MVC atrisina

problēmu ieviešot

starpnieka komponenti - kontrolieri (Controller)

Page 20: Modern a tīmekļa programmēšana  Java pasaulē

Lietojumprogrammas (biznesa loģikas) slānis

Page 21: Modern a tīmekļa programmēšana  Java pasaulē

Lietojumprogrammas kodols• Lietojumprogrammu serveris + Lietojumprogramma

• Lietojumprogrammu serveris parasti nodrošina:• Autentificēšana

• Drošība

• Transakciju pārvaldība

• Klasterizācija

• Ziņojumu apmaiņa

• Lietojumprogramma – servera dinamiskais paplašinājums

Page 22: Modern a tīmekļa programmēšana  Java pasaulē

Lietojumprogrammu serveru piemēri

• Nekomerciāli• Apache Tomcat• Jetty• JBoss

• Komerciāli• Sun Java System Application Server • BEA WebLogic Server• Oracle Application Server• WebSphere

Un daudzi citi...Un daudzi citi...

Page 23: Modern a tīmekļa programmēšana  Java pasaulē

Programmēšana Java platformā• Klasika » Java Enterprise Edition

• Servleti

• JSP (Java Server Pages)

• Eksistē liels daudzums ietvaru• JSF (Java Server Faces)

• Spring MVC

• Play!

• Lift

Un daudzi citi...Un daudzi citi...

Page 24: Modern a tīmekļa programmēšana  Java pasaulē

Java Enterprise Edition• Java EE ir vispusīga platforma daudzlietotāju,

pārnesamām, spēcīgām, mērogojamām, dalītām, drošām, enterprise-līmeņa lietojumprogrammām

• Java EE balstās uz Java SE un pievieno API priekš Internet-balstītas servera puses programmēšanas

Page 25: Modern a tīmekļa programmēšana  Java pasaulē

Java EE arhitektūraJava EE definē arhitektūru daudzlīmeņu lietojumprogrammu izstrādāšanai izmantojot

Java Enterprise Edition serveri un tajā piedāvātus servisus

• Biznesa un prezentācijas loģiku ir jāimplementē sistēmas izstrādātājam

• Standarta sistēmas servisus nodrošina Java EE platforma

Page 26: Modern a tīmekļa programmēšana  Java pasaulē

Java EE komponenti• Java EE lietojumprogrammas tiek veidotas no

komponentiem

• Java komponents ir funkcionālas programmatūras vienība, kas ir ievietota Java EE lietojumprogrammā, kas sadarbojas ar citiem komponentiem un kuru pārvalda Java EE serveris

• Komponenti tiek kompilēti tādā pašā veidā kā jebkura cita programma, kas ir uzrakstīta Java valodā

Page 27: Modern a tīmekļa programmēšana  Java pasaulē

Servleti and JSP• Servlets – Java klase, kas dinamiski apstrādā

pieprasījumus un atgriez atbildes

• JSP lapa – tekstuāls dokuments, kas izpildās kā servlets, bet piedāvā dabiskāku pieeju statisko dokumentu veidošanai

• Tipiskā izmantošana• Servleti – serviss-orientētas lietojumprogrammas,

kontroles funkcijas

• JSP – tekstuāla marķējuma ģenerēšana

(HTML, SVG, WML, XML)

Page 28: Modern a tīmekļa programmēšana  Java pasaulē

Servleti• Apzinoties Java potenciālu kā servera valodas

tīmekļa vidē, Sun Microsystems izstrādāja Java Servlet specifikāciju

• Specifikācija bija pabeigta 1997. gadā

• Servleti ir Java programmas, kuras ir paredzētas izpildīšanai uz tīmekļa serveriem

Page 29: Modern a tīmekļa programmēšana  Java pasaulē

Kas ir Servlets?• Java objekts, kas balstās uz servletu tehnoloģijas un

API, un paplašina HTTP servera funkcionalitāti

• Ir piesaistīts pie URL adresēm

• Servletus pārvalda speciālas arhitektūras konteineris

• Ir pieejams un strādājošs uz visiem populārākiem tīmekļa serveriem

• Platformu-neatkarīgs un serveru-neatkarīgs

Page 30: Modern a tīmekļa programmēšana  Java pasaulē

Sadarbības scenārijs• [klients] sūta tīmekļa serverim HTTP pieprasījumu

• [serveris] HTTP pieprasījums HTTPServletRequest

• Šīs objekts tiek piegādāts komponentam, kurš var sadarboties ar EJB vai ar datubāzi, lai ģenerēt dinamisku saturu

• [komponents] ģenerē HTTPServletResponse objektu, vai nodod pieprasījumu citam komponentam

• [serveris] HTTPServletResponse HTTP atbilde

• [serveris] atgriež HTTP atbildi klientam

Page 31: Modern a tīmekļa programmēšana  Java pasaulē

Sadarbības diagramma

Page 32: Modern a tīmekļa programmēšana  Java pasaulē

Java EE tīmekļa programmēšanas tehnoloģijas

Java Servlet tehnoloģija ir pamats visām Java EE tīmekļa programmēšanas tehnoloģijām

Page 33: Modern a tīmekļa programmēšana  Java pasaulē

Vienkāršs Servletsimport javax.servlet.*;import javax.servlet.http.*;import java.io.*;

public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body><h1>" +

"Hello World!</h1></body></html>"); out.close();

} ...}

Page 34: Modern a tīmekļa programmēšana  Java pasaulē

Ko dara Servlets?• Saņem klienta pieprasījumu (parasti HTTP

pieprasījuma formā)

• Izvelk informāciju no pieprasījuma ziņojuma

• Ģenerē saturu vai izpilda biznesa loģiku (iespējams, piekļūst datu bāzei, izsauc EJB, u.c)

• Izveido un nosūta atbildi klientam (parasti HTTP atbildes formā) vai nodod pieprasījumu citam servletam vai JSP lapai

Page 35: Modern a tīmekļa programmēšana  Java pasaulē

Kas ir JSP?• JSP = Java Server Pages (ieviests 1999. gadā)

• JSP ir Java EE tehnoloģija, kas vienkāršo dinamisko tīmekļa lapu izstrādi

• JSP lapas ir HTML lapas ar iegulto kodu, kas dod iespēju piekļūt datiem no Java koda, kas izpildās uz servera

• JSP dod iespēju atdalīt HTML prezentācijas loģiku un lietojumprogrammas loģikas

Page 36: Modern a tīmekļa programmēšana  Java pasaulē

JSP tehnoloģija• JSP tehnoloģija dod iespēju kombinēt HTML

pasauli ar Java servletu programmēšanas pasauli

• Ideja:• Izmantot parasto HTML lielākai lapas daļai• Atzīmēt servleta kodu ar speciāliem tagiem

• JSP lapa pilnība tiek pārveidota (translēta) servletā (vienreiz), un servlets ir tas, kas faktiski tiek izpildīts (katram pieprasījumam)

Page 37: Modern a tīmekļa programmēšana  Java pasaulē

Piemērs: vienkārša JSP lapa<html><body> Hello World! <br> Current time: <%= new java.util.Date() %> <br> Random number: <%= Math.random() %></body></html>

Page 38: Modern a tīmekļa programmēšana  Java pasaulē

Piemērs: cita vienkārša JSP lapa<html><body> Current time: <%= new java.util.Date() %> <br> Server: <%= application.getServerInfo() %> <br> Session ID: <%= session.getId() %> <br> Last accessed: <%= session.getLastAccessedTime() %> ms</body></html>

Page 39: Modern a tīmekļa programmēšana  Java pasaulē

Demonstrācijas piemērs

Java EE tīmekļa lietojumprogramma 5 minūtēs

Page 40: Modern a tīmekļa programmēšana  Java pasaulē

Maven un Jetty

• Ērts veids izstrādāt, būvēt, izvietot un izpildīt tīmekļa lietojumprogrammas ir izmantojot:

• Maven projektu pārvaldības rīku

http://maven.apache.org/

• Jetty tīmekļa serveri http://www.mortbay.org/

Page 41: Modern a tīmekļa programmēšana  Java pasaulē

Direktoriju struktūras izveidošana• Maven dod iespēju izveidot pilnu projekta

struktūru ar vienas vienkāršas komandas palīdzību

• Lai izveidot projekta veidni ir jāizmanto maven-archetype-webapp arhetipu

• Komanda:

mvn archetype:create

-DgroupId=com.maven2example

-DartifactId=maven2example_webapp

-DarchetypeArtifactId=maven-archetype-webapp

Page 42: Modern a tīmekļa programmēšana  Java pasaulē

Maven direktoriju struktūra

<root>/src/main/webapp/

- direktoriju struktūra WAR failam

Page 43: Modern a tīmekļa programmēšana  Java pasaulē

Iepakošana (packaging)No projekta saknes izpildīt komandu

mvn package

Tiks izveidots WAR fails

Page 44: Modern a tīmekļa programmēšana  Java pasaulē

Izpildīšana ar Jetty• Izpildīt tīmekļa lietojumprogrammas izmantojot

Jetty spraudni priekš Maven ir vienkārši !

• Jetty ir atvērta koda tīmekļa serveris, kurš ir pilnīgi realizēts Java valodā un atbalsta visus standartus

• Izveidošanas gads: 1995

• Pēdēja versija: 8.1.7 / 2012-07-16

Page 45: Modern a tīmekļa programmēšana  Java pasaulē

Izpildīšana ar Jetty

Jetty spraudņa pievienošana pom.xml failā

<build>

<finalName>maven2example_webapp</finalName>

<plugins>

<plugin>

<groupId>org.mortbay.jetty</groupId>

<artifactId>jetty-maven-plugin</artifactId>

<version>8.1.7.v20120910</version>

</plugin>

</plugins>

</build>

Page 46: Modern a tīmekļa programmēšana  Java pasaulē

Izpildīšana ar Jetty• Palaist serveri ar mvn jetty:run komandu

> mvn jetty:run

[INFO] Scanning for projects...

[INFO] Searching repository for plugin with prefix: 'jetty'.

[INFO] -----------------------------------------------------

---

[INFO] Building maven2example_webapp Maven Webapp

[INFO] task-segment: [jetty:run]

[INFO] -----------------------------------------------------

...

[INFO] Starting jetty 7.0.0.1beta1...

...

[INFO] Started Jetty Server

• Apstādināt ar Ctrl+C

Page 47: Modern a tīmekļa programmēšana  Java pasaulē

Lietojumprogrammas atvēršanaIerakstīt pārlūkā adresi

http://localhost:8080/

Page 48: Modern a tīmekļa programmēšana  Java pasaulē

Servleta pievienošana• Solis 1 – pievienot Servlet API bibliotēku

projekta klašu ceļam (classpath) pom.xml failā

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version>

</dependency>

Page 49: Modern a tīmekļa programmēšana  Java pasaulē

Servleta pievienošana

• Solis 3 – sagatavot projektu darbam Eclipse vidē

mvn eclipse:eclipse

• Solis 2 – izveidot direktoriju\maven2example_webapp\src\main\java

Page 50: Modern a tīmekļa programmēšana  Java pasaulē

Servleta pievienošana• Solis 4 – izveidot servleta klasi@WebServlet("/my-servlet")public class DemoServlet extends HttpServlet { public void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(

"<html><body>" +"<h1>Hello DemoServlet!</h1>" +"<h1>Current time: " + new Date() + "</h1>" +"</body></html>");

out.close(); }}

Page 51: Modern a tīmekļa programmēšana  Java pasaulē

Servleta koda izpildīšanamvn clean package jetty:run

http://localhost:8080/my-servlet

Page 52: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa lietojumprogrammu izstrādes ietvari

Page 53: Modern a tīmekļa programmēšana  Java pasaulē

Ievads• Tīmekļa lietojumprogrammas ir iespējams

programmēt pa tiešo izmantojot Java Servlet un JSP tehnoloģijas

• Eksistē vairāki tīmekļa lietojumprogrammu ietvari (web application frameworks), kuri atbalsta dinamisko tīmekļa lietojumprogrammu izstrādi

• Piemēri: JavaServer Faces, Spring, Play!, Lift un daudzi citi

Page 54: Modern a tīmekļa programmēšana  Java pasaulē

Tīmekļa ietvaru uzdevumi

• Svarīgi un tipiski uzdevumi, kuri ir jāatrisina izstrādājot tīmekļa lietojumprogrammu:• Stāvokļu pārvaldība (state management)• Darba plūsma (workflow)• Formas datu validācija

• Ietvari ir uzprojektēti tā, lai palīdzēt izstrādātājiem risināt šos un daudz citus uzdevumus

Page 55: Modern a tīmekļa programmēšana  Java pasaulē

JSF: JavaServer Faces

Page 56: Modern a tīmekļa programmēšana  Java pasaulē

JavaServer Faces• Standartizēta tehnoloģija, kuru izstrādāja

Java Community Process (JCP) ietvaros

• Java Enterprise Edition platformas sastāvdaļa

• Balstās uz Servletu tehnoloģijas

• MVC arhitektūra

• Servera puses komponenti: Managed Beans

• Skatu tehnoloģija: Facelets (aizvieto JSP)

Page 57: Modern a tīmekļa programmēšana  Java pasaulē

Spring Web MVC

Page 58: Modern a tīmekļa programmēšana  Java pasaulē

Spring• Spring ir atklāta koda Java/JavaEE

lietojumprogrammu ietvars

• Viens no interesantākiem

Spring komponentiem ir

Spring Web MVC

• Balstās uz Servletu

tehnoloģijas

Page 59: Modern a tīmekļa programmēšana  Java pasaulē

Spring autors un motivācija• Pirmo Spring versiju

izstrādāja Rod Johnson

2002. gadā

• Motivācija – izveidot vienkāršāku alternatīvu sarežģītai Java Enterprise Edition platformai

• Šobrīd Spring ir stipri izaudzis un piedāvā ļoti daudz dažādas tehnoloģijas

Page 60: Modern a tīmekļa programmēšana  Java pasaulē

Spring MVC komponentiSpring MVC sastāv no vairākiem komponentiem, starp kuriem notiek sadarbība apstrādājot klienta pieprasījumu

Page 61: Modern a tīmekļa programmēšana  Java pasaulē

Spring kopsavilkums• Sākumā Spring bija “viegls” (lightweight) ietvars,

alternatīva sarežģītai Java EE platformai

• Šobrīd Java EE platforma ir jau vienkāršota, bet Spring, tieši otrādi, izauga un kļuva par diezgan smagu enterprise līmeņa ekosistēmu

• Viens no pamatprincipiem, kas sākotnēji padarīja Spring par ļoti ērtu un populāru:• Inversion of Control / Dependency Injection

Page 62: Modern a tīmekļa programmēšana  Java pasaulē

Play!

Page 63: Modern a tīmekļa programmēšana  Java pasaulē

Play!• Pirmā relīze 2009 gadā, Play 2.0 - 2012 gadā

• «A new web framework for a new era»

• Tīmekļa lietojumprogrammu prasības un arhitektūra strauji virzas uz ātru, reāla laika izpildi

• Ātrs, efektīvs (CPU, atmiņa, pavedieni), produktīva izstrāde, asinhronā komunikācija, mērogojams

• Atbalsta Scala programmēšanas valodas izmantošanu

Page 64: Modern a tīmekļa programmēšana  Java pasaulē

Play!• Kaut gan Play! sākotnēji bija uzprojektēts, lai būvēt

klasiskās servera puses tīmekļa lietojumprogrammas, tagad tas atbalsta arī asinhronu komunikāciju (Comet)

• Nav balstīts uz Servletiem!

• Kā arī neseko vairākiem citiem Java EE principiem un šabloniem, kaut gan piedāvā MVC arhitektūru

• Piedāva pilnu infrastruktūru lietojumprogrammas būvēšanai un darbināšanai

Page 65: Modern a tīmekļa programmēšana  Java pasaulē

Lift

Page 66: Modern a tīmekļa programmēšana  Java pasaulē

Lift• Pirmā relīze 2009 gadā

• «The most powerful, most secure web framework available today» (http://liftweb.net/)

• Ir uzprojektēts priekš Scala programmēšanas valodas• Funkcionāla tīmekļa programmēšana

• Piedāvā alternatīvu MVC arhitektūrai

• "View First" pieeja – sākumā ielādē skatu

Page 67: Modern a tīmekļa programmēšana  Java pasaulē

Datu slānis

Page 68: Modern a tīmekļa programmēšana  Java pasaulē

Datubāzes• Klasiskais variants: glabāt datus relāciju datubāzēs

• MySQL

• PostgreSQL

• H2

• SQLite

• HSQLDB

• un daudzi citi...

• Jaunākā tendencē tīmekļa programmēšanā: glabāt datus NoSQL datubāzēs

Page 69: Modern a tīmekļa programmēšana  Java pasaulē

NoSQL pirmsākumi• NoSQL ir ne-relāciju datubāzes pārvaldības

sistēma, kas atšķiras no tradicionālas RDPS vairākos svarīgos aspektos

• Carlo Strozzi izmantoja terminu

NoSQL 1998. gadā, lai aprakstīt

savu vieglu relāciju datubāzi,

kas nepiedāvāja standartu SQL

interfeisu

Page 70: Modern a tīmekļa programmēšana  Java pasaulē

NoSQL jaunāka vēsture• 2009. gadā Eric Evans izmantoja NoSQL terminu,

lai apzīmēt datubāzes, kuras ir ne-relāciju, dalītas un neatbalsta ACID īpašības

• NoSQL terminu ir jāsaprot un

jāizmanto kā Not-Only-SQL

nevis kā No-to-SQL

vai Never-SQL

Page 71: Modern a tīmekļa programmēšana  Java pasaulē

NoSQL pielietojums• Divas tendences:

• Eksponenciāls pieaugums datu apjomā, kuru ģenerē tīmekļa lietotāji un sistēmas

• Savstarpējo atkarību palielinājums un datu sarežģītība, ko palielina Internet, Web 2.0, sociālie tīkli

• NoSQL datubāzes ir noderīgas strādājot ar lielu datu apjomu un kad datu raksturs neprasa relāciju modeli datu struktūrai

• Šodien jau nav iespējams iedomāties augsti noslogotu tīmekļa portālu bez NoSQL datubāzes

Page 72: Modern a tīmekļa programmēšana  Java pasaulē

NoSQL raksturīpašības• Neizmanto SQL kā vaicājumu valodu

• NoSQL pamatā neizmanto tabulas un neizmanto SQL, lai manipulēt ar datiem

• Negarantē ACID pilnībā• Parasti tikai eventuālā konsistence ir garantēta vai

transakcijas ir ierobežotas ar vienu datu vienību

• Dalīta, nepilnību-droša (fault-tolerant) arhitektūra• Dati tiek particionēti un glabāti uz liela skaita serveru, un tiek

replicēti starp šīm mašīnām - horizontāla mērogošana

• CAP teorēma, Map-Reduce princips

Page 73: Modern a tīmekļa programmēšana  Java pasaulē

NoSQL kategorijas• Key-Value datubāzes

• memcached• Redis

• Column Family datubāzes• HBase, Cassandra

• Dokumentu datubāzes• Grafu datubāzes• Daudz-vērtību datubāzes• Objektu datubāzes• XML datubāzes

Page 74: Modern a tīmekļa programmēšana  Java pasaulē

Spring Data projekts• Piedāvā atbalstu un integrāciju ar vairākām

datubāzēm

• Big Data: Apache Hadoop

• Key-Value: Redis

• Document: MongoDB

• Graph: Neo4j

• Column: HBase

Page 75: Modern a tīmekļa programmēšana  Java pasaulē

Prezentācijas slānis

Page 76: Modern a tīmekļa programmēšana  Java pasaulē

Klienta puses tehnoloģijas• Šodien ir atpakaļ un strauji attīstās klienta puses

tehnoloģijas:• JavaScript

• HTML5

• CSS3

• Tīmekļa lietojumprogrammu uzvedība un lietotāja saskarne strauji tuvojas reālā-laika sistēmām

Page 77: Modern a tīmekļa programmēšana  Java pasaulē

Asinhronā datu apmaiņa• Ajax

• JavaScript (XMLHttpRequest) + CSS + DOM

• Comet - long polling• Serveris uztur klienta savienojumu un sūta datus kad

tie parādās. Klients uzreiz atver jaunu savienojumu.

• Comet - HTTP streaming• Savienojums netiek pārtraukts pēc servera atbildes.

• HTML5 WebSocket• Divvirzienu persistents HTTP savienojums

Page 78: Modern a tīmekļa programmēšana  Java pasaulē

GWT: Google Web Toolkit• Ietvars sarežģīto un optimizēto Ajax

tīmekļa lietojumprogrammu

veidošanai

• Lietojumprogrammas kods tiek rakstīts Java valodā un tad tiek kompilēts par optimizēto JavaScript kodu, kurš izpildās pārlūkā

• Piedāvā bagātu Widget kolekciju

Page 79: Modern a tīmekļa programmēšana  Java pasaulē

Ajax Push Engine• Pilnvērtīgs Comet

(Ajax Push) risinājums

• Push, don't pull!

http://www.ape-project.org

Page 80: Modern a tīmekļa programmēšana  Java pasaulē

jQuery• jQuery ir ātra un ērta JavaScript

bibliotēka, kas vienkāršo:

• HTML dokumenta navigāciju

• Notikumu apstrādi

• Animāciju

• Ajax mijiedarbību

<html>

<head>

<script type="text/javascript"

src="jquery.js“/>

</script>

<script type="text/javascript">

// add JavaScript and jQuery code here

</script>

</head>

<body>

<!-- add HTML content here --> </body>

</html>

Page 81: Modern a tīmekļa programmēšana  Java pasaulē

JavaScript attīstība• Ar Ajax izplatīšanu sākas JavaScript valodas otrā

dzimšanas

• Jaunākā tendence – jaunu programmēšanas valodu izstrāde, kur programmas kompilējas par JavaScript kodu

• Piemēri:• CofeeScript

• Dart

• TypeScript

Page 82: Modern a tīmekļa programmēšana  Java pasaulē

CofeeScript• «A little language that compiles into JavaScript»

• Parādījās 2009. gadā

• Viens no mērķiem – padarīt JavaScript programmēšanu patīkamāku

• Programmas koda garums: ~ 1/3 no atbilstoša JavaScript koda

Page 83: Modern a tīmekļa programmēšana  Java pasaulē

Dart• Jaunā programmēšanas valoda,

kuru izstrādāja Google

• Ambiciozs mērķis: «Ultimately to replace JavaScript as the lingua franca of web development on the open web platform.»

• Parādījās 2011. gadā

• Class-based, objekt-orientēta

valoda ar C-stīla sintaksi

Page 84: Modern a tīmekļa programmēšana  Java pasaulē

TypeScript• Parādījās 2012. gadā (Microsoft)

• JavaScript paplašinājums, kas kompilējas par parasto JavaScript kodu

• Motivācija: nepieciešamība izmantot JavaScript lielo projektu izstrādei

• Piedāvā: tipu pārbaude kompilācijas laikā, klases, interfeisi, moduļi

Page 85: Modern a tīmekļa programmēšana  Java pasaulē

Nobeigums• Tīmekļa lietojumprogrammas ir pašas izplatītākas

un populārākas mūsdienās

• Tīmekļa programmēšanas tehnoloģijas ļoti strauji attīstās visos slāņos• Servera puse

• Datubāzes

• Klienta puse

• Ļoti plašas un aizraujošas pētījumu un inovāciju iespējas šajā jomā