Lekciju tēmu saraksts LU maģistratūras kursam "Tīmekļa programmēšana"

Semestrī ir 16 lekciju, viena lekcija ir 4x45 minūtes. 2007.gada rudens semestrī šīs lekcijas notiek no 16:30 līdz 19:30. Kursa dalībniekiem ieteicams vispirms iepazīties ar Ievadu, kur izklāstīti priekšnoteikumi šī materiāla apguvei. Šajās 16 lekcijās izklāstītas daudzveidīgas Web izstrādes tehnologjijas. Ideālā gadījumā lekcija kalpo kā iemesls iepazīties ar vienu vai dažām jaunām tehnologjijām, ko vēlāk izmēģināt, darbinot demonstrācijas piemērus. Piemērus sk. http://java-eim.googlecode.com/svn/trunk (apakšdirektorijas kuru nosaukumi sākas ar "java-eim-demo-".

Kalendārs

Npk.DatumsPasākumi
1.2007-09-06Standartjava un rīki - Eclipse, Ant, Maven, Subversion
2.2007-09-13Žurnalēšana, komponentu testi, Spring, projektēšanas paraugi
3.2007-09-20Datubāzes, Datu piekļuve Javā, JDBC, Hibernate, Toplink, JPA
4.2007-09-27HTTP protokols. HTTP pieprasījumu veidi; XML un RDF dati
5.2007-10-04Servletu konteineru darbības pamati; 1.pr.d. termiņš 7.oktobris
6.2007-10-11Spring MVC
7.2007-10-18Linux un tīklošanās
8.2007-10-25XML Schema, XML prezentācijas formāti, klientu puses Web Servisi
9.2007-11-01Web Servisu izstrāde
10.2007-11-08EJB 3.0 ievads
11.2007-11-15ESB (Enterprise Service Bus), BPEL,
12.2007-11-22SPARQL pieprasījumi, Inference; 2.pr.d. termiņš 24.decembris
13.2007-11-29AJAX tehnologjiju pamati
14.2007-12-06Lucene, teksta aplikācijas
15.2007-12-13Web Flow, JSF, Portlets
16.2007-12-20Drošība, Web2.0 aplikācijas, Web "pakoto risinājumu" konfigurēšana
-līdz sesijas beigāmMājasdarbi, testi, 3.pr.d.
Pr.d. numursTēmasLekcijas
Robots kešošanaiObjekti un komponentu ietvari (Web, Spring), projektu būvēšanas rīki,
aspektorientācija (transakcijas, logošanās), JDBC, Hibernate, JPA
1.,2.,3.,4.
Spring MVC portālsKlasiskās Web aplikācijas, Spring kontrolieri, komponentu dzīvescikls, JSF
Selenium un Cactus testi, uz ārpusi redzams API
5.,6.,7.
DarbplūsmasWeb Servisi, ESB, WS klienti un adapteri, BPEL darbplūsmas,
EJB, PL/SQL, FTP failu, REST u.c. iekapsulēšana
8.,9.,10.,11.
Klasifikācija un meklēšanaSPARQL pieprasījumi, daudzdimensiju navigācijas komponentes (facets),
OWL Lite un RDF likumi, pilna teksta meklēšana, AJAX saskarnes
12.,13.,14.
-Atkalizmantojamas komponentes (portleti, JSF), Web 2.0; Web marketings, lietojamība,
aplikāciju drošība, pakotie risinājumi
15.,16.
Kursa dalījums 5 tematiskās sadaļās
  1. Konsoles aplikācijas Eclipse IDE vidē. Komponenti (objekti, Java beans) un konteineri. Springa komponentu ietvars un aplikācijas konteksts (XML notācijā). Komponentu dzīvescikli.

    Prezentāciju moduļi:

    1. Web programmēšanas kursa pārskats
    2. Objektorientācijas pārskats - komponenti un iekapsulēšana, klases/interfeisi/mantošana, kolekcijas)
    3. Objektorientētas projektēšanas pamati (klašu diagrammas, open-close princips, Liskovas princips) - OO Design Principles
    4. Spring - Inversion of Control (AVa) - prezentācija

    Bibliogrāfija:

    1. MIT 6.170 Lecture notes; it īpaši L4 (Specifications) un L5 (Testing). Par komponentiem, komponenta kontraktu un modulāru projektējumu (modular design).
    2. Spring IoC Container dokumentācija
    3. Par Spring IoC
    4. Par Spring FactoryBean un scope
    5. Introduction to Spring

  2. Pārskats par izstrādes rīkiem - Eclipse, Subversion, Ant un Maven. Versiju kontroles rīks Subversion; konfigurēšana un lietošana - izstrādes cikls. Javas projektu būvēšanas rīki Ant un Maven. Maven'a izstrādes vides direktoriju struktūra. UML klašu diagrammas, to iegūšana ar Eclipse spraudni Omondo. MySQL un Oracle uzstādīšanas un konfigurēšanas pamati. Ievads par RDBMS, O2R, pārskats par JPA. Java anotācijas.

    Prezentāciju moduļi:

    1. Eclipse vide (AVa) - prezentācija
    2. Subversion (AVa) - latviešu, angļu
    3. Ant (AVa) - prezentācija
    4. Maven (AVa) - prezentācija
    5. UML klašu diagrammu praktisks ievads; to veidošana ar Eclipse/Omondo - (KAp) (nav gatavs)
    6. Oracle XE instalācija un konfigurēšana. Salīdzinājums ar MySQL - (KAp), Oracle MySQL salīdzinājuma raksts Sequences un AUTO_INCREMENT, CONNECT BY, Oracle Objects, Oracle XQuery.
    7. RDBMS/SQL, SQL prezentācija, JDBC, JDBC prezentācija, JDBC 4 draiveru tipi.
    8. JPA pārskats - (KAp), JPA pārskats
    9. Java 1.5 anotācijas (AVa) - prezentācija

    Bibliogrāfija:

    1. Par Maven2
    2. Par Ant

  3. Datu piekļuve RDBMS un objektu-relāciju attēlošana. O2R attēlojumu pamatprincipi. Hibernate, Toplink, JPA. Eclipse DALI plugins. Datubāzu transakcijas. JUnit testi. Testēšana ar imitētajiem objektiem (mock objects). Testu paātrināšana ar HSQLDB. Žurnalēšanas pieslēgšana (Log4J, commons-logging). Projektēšanas paraugi - singleton, abstract factory, adapter.

    Prezentāciju moduļi:

    1. O2R attēlojumi - atribūtu, agregācijas/kompozīcijas attiecību, kolekciju, mantošanas attiecību, vienvirziena/divvirzienu asociāciju, utml. attēlošana relāciju tabulās - (KAp)
    2. Hibernate/Toplink īss ievads - (KAp)
    3. JPA lietošana O2R realizācijā - (AVa) - prezentācija
    4. JPQL pieprasījumi - (AVa) - prezentācija
    5. DALI spraudnis JPA anotāciju veidošanai - (AVa) - prezentācija
    6. Komponentu testēšana, kontrakti, testu virzīta programmēšana (Test driven development) - (AVa) - prezentācija
    7. JUnit 4 vispārīgā pieeja - (AVa), prezentācija, sk. arī JUnit_intro.ppt

    Bibliogrāfija:

    1. Hibernate
    2. Dali User's Guide
    3. Sun JPA Tutorial
    4. JPQL Language Reference
    5. MIT 6.170 Lecture notes; it īpaši L18 (Design Patterns).
    6. Imitētie objekti testēšanā

  4. HTTP protokols. HTTP pieprasījumu veidi. Cookies, risinājumi HTTP saziņas stāvokļa (conversational state) uzturēšanai. Web roboti. XML, XML Namespaces, XML un RDF datu apstrāde valodā Java. XML parsēšana. RDF datu modeļi, pamatoperācijas ar RDF datu modeļiem bibliotēkā Jena. RDF modeļu attēlošana datubāzēs. XML un/vai RDF datu iegūšana no parastām Web lapām ar HTML Tidy, TagSoup un MIT Solvent.

    Prezentāciju moduļi:

    1. HTTP protokola pamati, statuskodi un hederi - (AVa) - prezentācija
    2. HTTP pieprasījumu veidi POST, GET u.c. To pareiza lietošana - (AVa)
    3. Cookies, veidi kā uzturēt HTTP saziņas stāvokli (conversational state) - (AVa)
    4. Web robotu darbības principi - (AVa)
    5. XML datu modelis (DOM koks), Namespaces - (KAp)
    6. XML parsēšana ar DOM, Digester vai JAXB - (KAp)
    7. RDF datu modelis un serializācijas formāti (ar XML vai N3) - (KAp)
    8. Jena bibliotēka RDF apstrādei, RDF attēlošana datubāzēs - (KAp)
    9. Screenscraping rīki - HTML Tidy, TagSoup un MIT Solvent - (KAp)

    10. Imitētie (mock) objekti testēšanā ar JUnit - (KAp), Mock objektu lekcija
    11. Datu piekļuves komponentu testēšana, DB inicializēšanas jautājumi, testu paātrināšana ar HSQLDB - (KAp)
    12. Žurnalēšana ar Log4J (AVa) - prezentācija, sk. arī Log4J prezentācija, Log4J Manual
    13. Svarīgākie projektēšanas paraugi, piemēri ar JUnit, Spring, JDK API - (KAp), Projektēšanas paraugi, MIT 6.170 Lecture notes; it īpaši L18 (Design Patterns)

  5. Servletu konteineru darbības pamati. Servletu sesijas. Servleti, servletu filtri un klausītāji; to konfigurēšana web.xml deskriptorfailā. WAR arhīva struktūra. Dažādi mehānismi (sesiju cookie, slēptie formu lauki, URL pārrakstīšana) sesijas uzturēšanai. JSP lapas, tagu bibliotēkas. JSTL un Expression Language (EL). Servletu un JSP lapu testēšana; spring-mock bibliotēka. (Izmantojam Jetty vai tamlīdzīgu vieglsvara konteineru.)

    Prezentāciju moduļi:

    1. Web aplikāciju pamati, WAR faila struktūra, web.xml - (AVa) - prezentācija
    2. Maven standarta direktoriju struktūra Web aplikācijām; to darbināšana ar Jetty - (AVa)
    3. Servletu 2.4 un 2.5 specifikācijas, to atšķirības - (AVa) - prezentācija
    4. Vienkārši servleti un HTTP protokola iespēju apstrāde ar tiem - (AVa)
    5. Sesiju uzturēšana - (AVa)
    6. Servletu filtri un klausītāji - (KAp). Sk. org.springframework.web.context.request.RequestContextListener, kuru lieto Spring komponentu redzamībai (scope), arī org.springframework.web.context.ContextLoaderListener. Prezentācijas - Servletu adv.tēmas.
    7. JSP ievads; jsp:include, jsp:bean utml. standarttagi - (KAp).
    8. JSTL 4 standarta tagu bibliotēkas un Expression Language - (KAp). JSP un JSTL.
    9. Servletu, filtru, JSP utml. komoponentu testēšana. Spring-mock bibliotēka - (KAp)

    Bibliogrāfija:

    1. J2EE Tutorial “Getting Started with Web applications”
    2. Building Web Applications with Maven 2
    3. J2EE Tutorial “Java Servlet Technology”

  6. Vienkāršs Spring MVC, Spring kontrolieru un skatu tehnologjiju pamati - MVC pieprasījuma apstrādes secība, tipiska darbību secība kontrolierī (statiski konfigurētu un/vai dinamiski veidojošos komponenšu gadījumā). Spring kontrolieru hierarhija - Controller, AbstractController, BaseCommandController, AbstractFormController, SimpleFormController, u.c. Open-closed princips. Failu augšupielāde ar Spring bibliotēkām. Web aplikāciju sistēmtestēšanas rīks Selenium.

    Prezentāciju moduļi:

    1. Spring MVC, tā konfigurēšana servletu aplikācijā un HTTP pieprasījuma apstrādes secība. - (AVa) - prezentācija
    2. Spring kontrolieru hierarhija - Controller, AbstractController, BaseCommandController, AbstractFormController, SimpleFormController. Formu apstrāde un validācija. - (AVa)
    3. Springa komponentu dzīvesciklu tipi (bean scopes) - singleton, prototype, session, global-session, request. Failu augšupielāde. Internacionalizācija. Spring tēmas. Springa klausītāju konfigurēšana. - (AVa)
    4. Servletu konteineri un Javas aplikāciju serveri - Tomcat, JBoss, OC4J, Weblogic, utml. Instalēšana un konfigurēšana. (Kursā piedāvājam izmantot g.k. Tomcat, JBoss un/vai OC4J). - (KAp). Tomcat prezentācija, Tomcat 6.0 security,
    5. Ne-HTML MIME tipi un to piegāde servletu vai Spring aplikācijās, dinamiska attēlu ģenerēšana. Servletu konteinera veiktspēja, failu kešošana. (Atgriešanās pie HTTP tēmām citā abstrakcijas līmenī.) - (KAp). Mock objekti un testēšana.
    6. Web aplikāciju sistēmtestēšanas rīks Selenium. - (KAp). Selenium rīks, Nepārtrauktā integrēšana ar Selenium.
    7. Testēšana ar Cactus - (KAp). Cactus testi.

  7. Linux servera uzstādīšana un konfigurēšana, t.sk. ar VMWare player. Linux/Unix failu sistēmas pamati. IP adreses un DHCP. TCP/IP protokolu steks. Statiskā maršrutēšana Linux vidē. Ugunssienas. Kešošana. IP pakešu filtrs iptables. Tīkla skenēšana ar Nessus. Datu plūsmas šifrēšana, t.sk. publiskās atslēgas šifrēšanas metodes. Pakešu ošņāšana (sniffing), šifrētie protokoli ssh, https. Antivīrusi un ICAP protokols; ICAP servera piekonfigurēšana HTTP serverim. Web, Javas un datubāzu serveru konfigurēšana Linux vidē. Skriptu (Groovy u.c.) lietošana aplikāciju konfigurēšanai un testēšanai.
    1. Linux servera uzstādīšana un konfigurēšana, t.sk. ar VMWare player.
    2. Linux failu sistēmas pamati. NFS un Samba. Unix/Linux un Windows drošības kontrole - lietotāju piekļuves tiesības, grupas, žurnālu faili, datu rezerves kopijas un rīks DAR.
    3. IP adreses un DHCP. TCP/IP protokolu steks. Statiskā maršrutēšana Linux vidē. Vārtejas.
    4. Ugunssienas. Kešošana. Squid starpniekserveris. IP pakešu filtrs iptables. Tīkla skenēšana ar Nessus.
    5. Datu plūsmas šifrēšana, t.sk. publiskās atslēgas šifrēšanas metodes. Pakešu ošņāšana (sniffing), šifrētie protokoli ssh, https.
    6. Web, Javas un datubāzu serveru konfigurēšana Linux vidē. Skriptu (Groovy u.c.) lietošana aplikāciju konfigurēšanai un testēšanai.

  8. XML Schema, XPath, XSLT, XQuery, XHTML, MathML, SVG, FO, WML. Gatavu Web Servisu lietošana - SOAP, XML-RPC un REST paveidi. Mashup veidošana.

    Prezentāciju moduļi:

    1. XML Schema - sk. pielikumus Webservisu modulim
    2. XPath/XSLT/XQuery - sk. pielikumus XML modulim
    3. XML Prezentācijas formāti - KAp
    4. Web servisu ievads - AVa,
    5. SOAP protokols - AVa

    Bibliogrāfija:

    1. http://www.w3.org

  9. Web Servisu izstrāde, WSDL, UDDI. Web servisi uz Tomcat/Axis2 un OC4J. RPC-stila un dokumentu stila Web servisi; servisu pārveidošana bezstāvokļa formā; sinhroni un asinhoni Web servisi. Web Servisu izsaukumi ar pielikumiem (attachments).

    Prezentāciju moduļi:

    1. WSDL (Web Services Description Language) - AVa
    2. JAX-WS (Java API for XML Web Service) - AVa
    3. UDDI (The Universal Description, Discovery, and Integration) - AVa
    4. Web Servisu piekļuve POJO, Spring objektiem u.c. JAX-WS uz JBoss un OC4J, un JDeveloper vedņi - KAp
    5. Sinhroni/asinhroni un RPC-stila/dokumentu-stila Web Servisi, piemēri un lietojumi - KAp
    6. REST-ful Web servisi - KAp
    7. UDDI service implementation on OC4J - KAp

  10. EJB 3.0 ievads. EJB izstrāde uz JBoss un OC4J. 3 EJB komponentu paveidi - Sesiju EJB komponenti (Session EJB beans), Entīšu EJB komponenti (Entity EJB beans) un Ziņojumu EJB komponenti (Messaging EJB beans). Web Servisu adapteri priekš EJB.

    Prezentāciju moduļi:

    1. Ievads un EJB arhitektūra - AVa
    2. Sesiju EJB komponenti - AVa
    3. EJB aplikāciju struktūra, izstrādes vide un ieviešana (mvn, ear, ...) - AVa
    4. EJB konteinera servisi (žurnalēšana, transakcijas, autorizācija, slodzes izlīdzināšana un komponentu dīķi, dzīvescikla kontrole (cik instances?)) - AVa
    5. Entīšu EJB komponenti; EJB izstrādes paraugi - sadarbība starp sesijas fasādi un entīšu EJB - KAp
    6. Ziņojumu EJB komponenti, JMS un ziņojumu pārraide rindām - KAp
    7. Web Servisu saskarnes EJB komponentiem (sesijas un ziņojumu) - KAp

  11. ESB (Enterprise Service Bus); failu sistēmas un FTP adapteri kā Web Servisi. Oracle storētās procedūras PL/SQL, Web Servisu adapteri priekš PL/SQL. BPEL darbplūsmas - procesu aktivitātes, ārējie servisi. BPEL darbplūsmas ar cilvēku līdzdalību (human workflow), biznesa likumi.

    Prezentāciju moduļi:

    1. Point-to-point integrācijas arhitektūra un ESB integrācijas arhitektūra
    2. WS adapteru veidošana dažādiem datu avotiem (FTP, PL/SQL, faili, ...)
    3. BPEL darbplūsmas; Oracle BPEL Manager
    4. BPEL izstrādes un ieviešanas vide - BPEL aplikāciju veidošana, testēšana, ieviešana jeb uzstādīšana jeb izvietošana - (deployment).
    5. BPEL cilvēku darbplūsmas (human workflow)
    6. Biznesa likumi; Oracle Rules engine.

    Prezentācija (AVa)

  12. SPARQL pieprasījumi un to rezultātu attēlošana un kešošana. SPARQL pielietojums: navigācija ar daudzdimensiju filtriem (facetted browse). RDF izveduma likumi un ontologjijas. RDF modeļu paplašinājumi (entailments), SPARQL pieprasījumi pret paplašinātu modeli, to atspoguļošana meklēšanas rezultātos. Transitīvā slēguma problēma (ja lietotājs meklē rezultātus par virskategoriju, jāparāda arī par visām apakškategorijām).

  13. AJAX tehnologjiju pamati. HTML/CSS/JavaScript marķēšana atbilstoši AJAX prasībām. AJAX tehnologjijas kā WS patērētāji - Google Web Toolkit un Oracle ADF Faces un ICEFaces. Jaunu grafisko AJAX komponentu izstrāde. AJAX aplikāciju testēšana. Diagrammu un reportu gjenerācija, ZK ietvars. Aplikāciju lietojamība (sk. L16 un L17 par Usability).

    Prezentāciju moduļi:

    1. AJAX tehnoloģiju pamati - AVa
    2. Google Web Toolkit izmantošana AJAX aplikāciju izstrādei - AVa

    Bibliogrāfija:

    1. Grāmata "Ajax in Action" (pieejama uz ftp://students.mii.lu.lv)
    2. Prezentācija "AJAX Basics" (www.javapassion.com)
    3. Google Web Toolkit mājaslapa
    4. Prezentācija "GWT Basics" (www.javapassion.com)

  14. Teksta apstrāde. Pilna teksta meklētājs Lucene. Web aplikāciju moderēšana un spama filtrēšana. Teksta klasificēšanas algoritmu bibliotēka Weka; Naive Bayes, SVM un HMM. HTTP piekļuves žurnālu (access log) analīze un Web marketings.

  15. Composite View paterns. Spring Web Flow un tā konfigurēšana. Web lapu plūsmas modelēšana valodā UML. JSF - Java Server Faces (JSF) ievads, JSF navigācijas vadība, bean komponentu izmantošana formu apstrādei, property files un internacionalizācija, JSF datu piekļuves komponenti. Facelet skatu tehnologjija. Portletu konteiners, portletu dzīvescikls un savstarpējā sadarbība. Portletu kā atkalizmantojamu Web Servisu klientu lietošana.

    Prezentāciju moduļi:

    1. Spring Web Flow - AVa
    2. XWiki Lekcija - KAp

  16. Dažādas drošības tēmas: JAAS, HTTPS klienti Javā, digitāla koda parakstīšana, Javas kriptogrāfija, MD5 algoritms, LDAP serveri un to izmantošana autentifikācijai. XWiki; blogi; Web-balstīti projektu pārvaldības rīki; "packaged development" process atvērtā koda Javas&Web aplikāciju gadījumā.

    Prezentāciju moduļi:

    1. Security - AVa