Напредно web програмирање

Циљ и исход предмета

Упознавање са концептима напредног програмирања апликација великог обима (Enterprise апликација). Упознавање са основним концептима на којима се заснива напредно Enterprise програмирање. Познавање основних концепата Ентерприсе апликација. Познавање вишеслојних апликација и улога сваког слоја и њима. Упознавање са дистрибуираним програмирањем и појмом апликативног сервера. Познавање механизама за асинхрону размену порука. Познавање механизама за објектно-релационо мапирање. Познавање концепата трансакција, изолација и закључавања. Познавање механизама који омогућују писање Enterprise апликација, као што су рефлексија, инструментација и управњање сигурносним механизмима. Познавање основа аспект-оријентисаног програмирања. Познавање LDAP технологије. Познавање веб сервиса.

Теоријска настава

Вишеслојне апликације и апликативни сервери. Писање дистрибуираних апликација. Java Enterprise Edition скуп технологија. Enterprise Java Beans скуп технологија. Објектно-релационо мапирање. Везе и упитни језици. Трансакције у Ентерприсе окружењу. Асинхрона размена порука. Напредни и серверски JavaScript концепти. Рефлексија, анотације, class loaders, Security Managers и инструментација. Аспект-оријентисано програмирање. Веб сервиси. LDAP сервери. Spring Boot окружење.

Практична настава

Ангулар окружење за клијентске апликације. Enterprise Java Beans и Java Enterprise Edition апликативни сервери. Писање session EJB beans. Писање ентитета, релација и рад са JPA упитним језиком. Повезивање REST и EJB концепата. Обједињавање веб и серверских апликација. Коришћење JMS концепата за асинхрону размену порука. Употреба Spring Boot окружења за писање серверских (backend) делова апликација. Писање сопствених анотација, употреба рефлексије. Писање сопствених class loader-а. Писање сопствених Security Manager класа. Употреба инструментације за измену програма у току извршења (run time). Писање аспеката за пресретање извершења програма.