Објектно орјентисано програмирање

43
Објектно орјентисано програмирање Владимир Филиповић [email protected]

Upload: hammett-barr

Post on 30-Dec-2015

27 views

Category:

Documents


0 download

DESCRIPTION

Објектно орјентисано програмирање. Владимир Филиповић [email protected]. rs. Карактеристике програмског језика Јава. Владимир Филиповић [email protected]. Настанак и развој програмског језика Јава. Производ компаније Sun Microsystems - PowerPoint PPT Presentation

TRANSCRIPT

Објектно орјентисано програмирање

Владимир Филиповић[email protected]

2/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Карактеристике програмског језика Јава

Владимир Филиповић[email protected]

3/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Настанак и развој програмског језика Јава

Производ компаније Sun Microsystems1991. Претеча Јаве намењена мрежном кућном

окружењу (J. Gosling)1994. Усмерење према Интернету (и данас се

користи у том домену)1995. Језик Јава лансиран на SunWorld

конференцијиNetscape прегледачи користе ЈавуIBM купује лиценцуЈаву користи чак и Microsoft

1996. Sun развија JDK 1.0 (кодно име Oak) 1997. Појављује се JDK 1.1 садржи JavaBeans, унутрашње класе, JDBC,

RMI, рефлексију, а прерађен је и AWT

4/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

1997. Друга конференција о Јави са 10000 учесника Разне награде за успешан производ1998. Крајем године нови JDK (кодно име Playground), означен са J2SE 1.2 - Стандардна Едиција 1.2 (за разлику од J2ЕE и Ј2МЕ). обим је утростручен - садржи Swing, JIT преводилац за JVM, Java IDL за CORBA и колекције. 2000. Pojavljuje se J2SE 1.3 (кодно име Kestrel) садржи подршку RMI за CORBA, JavaSound, JNDI, JPDA и синтетичке класе-заступнике.2002. Pojavljuje se J2SE 1.4 (кодно име Merlin) садржи assert, уланчавање изузетака, подршку за IPv6, NIO, logging API, image I/O API, XML и XSLT процесор тј. JAXP, JCE криптографију и Java Web Start.

Настанак и развој програмског језика Јава (2)

5/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

2004. Појављује се J2SE 5.0 (кодно име Tiger), иницијално означена бројем 1.5, што и надаље представља интерну ознаку ове верзије садржи генеричке типове, сигурност типова за колекције, анотације, аутоматско паковање/распакивање типа, енумерисане типове, променљиве аргументе, колекцијски for циклус, статички увоз, аутоматsку подршку за RMI, подршку за паралено програмирање, класу за парсирање улаза.2006. Sun објављује се Java SE 6 (кодно име Mustang), интерна ознака 1.6.0. убрзане перформансе језгра и Swing-а, побољшани веб сервиси коришћењем JAX-WS, подршка за JDBC 4.0, укључен API за Јава превођење, додата Јава архитектура за XML повезивање (JAXB), усавршен GUI и побољшана JVM.

Настанак и развој програмског језика Јава (3)

6/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

2006. Велики део Јаве постаје слободан и отворен код под GPL лиценцом2010. Java постаје власништво Oracle-a2011. Појављује се Java SE 7 (кодно име Dolphin) JVM подршка за динамичке језике, компресовани 64-битни показивачи, нова I/Oбиблиотека са подршком за метаподатке, XRender ток за Java 2D који убрзава цртање са модерним GPU, знаковне ниске као обележја у switch-у, аутоматски менаџмент ресурса код try-catch, простије декларисање метода са променљивим параметрима, литерали који представљају бинарне бројеве, подвлаке у нумеричким литералима, симултано хватање више врста изузетака и избацивање изузетака уз побољшану контролу типа.

Настанак и развој програмског језика Јава (4)

7/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

2013. У септембру се очекује се појава Java SE 8 планира се да садржи подршку за ламбда изразе, анотацију за Јава типове података, API за датум и време и чврсту интеграцију са Java FX.

Настанак и развој програмског језика Јава (5)

8/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Захтеви за Јаву:1.Једноставан, објектно орјентисан и фамилијаран2.Робустан и сигуран3.Архитектонски неутралан и преносив „пиши једном, извршавај било где“

4.Даје добре перформансе при извршавању5.Интерпретирана, вишенитна и динамични

Карактеристике програмског језика Јава

http://www.oracle.com/technetwork/java/intro-141325.html

9/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Да би се остварио захтев 1, одлучено је да програмски језик Јава:•буде објектно орјентисан од самог почетка и тако омогући рад у мрежним окружењима са великом пoрaшћу сложености и међузависности;•омогући програмерима приступ библиотекама тестираних објеката који обезбеђују функционалности у распону од основних типова, преко улаза и излаза, рачунарских мрежа, па све до GUI алата за развој; •по синтакси буде сличан C/C++;

Карактеристике програмског језика Јава (2)

10/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Да би се остварио захтев 2, одлучено је да програмски језик Јава:•омогући креирање веома поузданог софтвера, тако што ће обезведити интензивну поверу током компилације, али и проверу током извршавања програма;•модел управљања меморијом ће бити једноставан - неће бити показивачких типова, нити показивачке аритметике;•сигурносне карактеристике уграђене у језик и у систем за извршавање омогућују да апликације буду сигурне од спољашњег упада неауторизованог кода;

Карактеристике програмског језика Јава (3)

11/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Да би се остварио захтев 3, одлучено је да програмски језик Јава:•подржи апликације које ће се испоручивати у разноврсним мрежним окружењима; •садржи компајлер који преводи до нивоа бајт-кода, тј. у међуформат који је архитектонски неутралан и који је дизајниран тако да се код може ефикасно пренети на велики број хардверских и софтверских платформи;•стриктно дефинише основни језик, величине простих типова и понашање аритметичких операција;•на свакој платформи се програм исто извршава;

Карактеристике програмског језика Јава (4)

12/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Извршавање Јава програма

13/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Да би се остварио захтев 4, одлучено је да програмски језик Јава:•при извршавању програма интерпретатор ради пуном брзином без потребе да проверава окружење за извршавање;•при извршавању програма ће се користити аутоматски сакупљач отпадака, који ради у позадинској нити и који са великом вероватноћом обезбеђује да меморија буде на располагању онда када је потребна;•aпликације се могу редизајнирати тако да секције са интензивним рачунањем буду писане у машинском коду и повезане са Јава платформом.

Карактеристике програмског језика Јава (5)

14/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Да би се остварио захтев 5, одлучено је да програмски језик Јава:•садржи интерпретатор може директно извршавати бајт-код на било ком рачунару на који је пренесен систем за извршавање;•подржава вишенитно извршавање и то како на нивоу језика, тако и на нивоу софистицираних примитива синхронизације;•иако је преводилац стриктан током статичке провере у фази компилације, језик и систем за извршавање су динамички у фази повезивања - класе се повезују само када је то потребно;

Карактеристике програмског језика Јава (6)

15/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Могућности програмског језика Јава

У овом делу се испитују разноврсне могућности које обезбеђује програмски језик Јава, на тај начин што ће се прегледати различите врсте апликација развијених са Јавом. Проучићемо примере Јава аплета са веба. Такође ћемо испитати и неколико примера Јава апликације са графичким корисничким интерфејсом (GUI), Јава апликације из командне линије и Јава веб апликација. Tреба да се стекне јасна слика о начинима коришћења овог језика и начинима на које је Јава мењала свет рачунарства.

16/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Врсте Јава апликација

17/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Типови Јава апликација:апликације са графичким корисничким интерфејсом апликације из командне линијеапликације за мобилне уређајеаплети - веб програмирање на клијентској страни сервлети и Јава серверске стране – веб програмирање на серверској странивеб сервиси – такође програмирање на серверској странибиблиотеке класа

Могућности програмског језика Јава (2)

18/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава може бити коришћена за развој портабилних GUI апликација на свим подржаним платформама.

Као илустрацију овог става, погледајмо апликацију TextEditor. И аплет верзија, и верзија за Windows и верзија за Solaris су генерисане коришћењем истих Јава фајлова. Прецизније, све три верзије садрже исти бајт код, који је преведен само једном под Windows-ом и просто прекопиран на Solaris без нове компилације.

Јава апликације са графичким корисничким интерфејсом

19/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације са графичким корисничким интерфејсом (2)

Јава апликација за едитовање текста под Windows-ом

20/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације са графичким корисничким интерфејсом (3)

Јава апликација за едитовање текста под Solaris-ом

21/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације са графичким корисничким интерфејсом (4)

Илустрација Јава GUI апликације развијене уз помоћ Swing-a

Постоји већи број библиотека које олакшавају програмирање GUI у Јави – најпопуларније су AWT, Swing, SWT и Java FX. Ове године ми ћемо обрађивати последњу међу њима.

22/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације са графичким корисничким интерфејсом (5)

Илустрација Јава GUI апликације развијене уз помоћ Java FX

23/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације са графичким корисничким интерфејсом (6)

Илустрација развоја Јава GUI апликације развијене уз помоћ Java FX

24/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације из командне линије

Разлика између апликација из командне линије и апликација са графичким корисничким интерфејсом је у томе што ове прве не користе функционалности библиотека за рад са GUI-ем које су обезбеђене уз Јаву.

Илустрација извршавања Јава апликације из командне линије

25/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације за мобилне уређаје

Ове апликације користе функционалности библиотека за програмирање мобилних уређаја које се испоручују уз Јаву.Последњих година се у Јава свету орјентишу према Java FX програмирању мобилних уређаја, чиме су обезбеђене боље перформансе и већа флексибилност при промени платформе.Java FX је комплетно окружење за развој апликација на мобилним (и на свим другим) уређајима.Поред тога, постоје и Јава алати за развој Android апликација (Android SDK).

26/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава апликације за мобилне уређаје (2)

Java FX подржава како Java ME апликације, тако и стандардни Java API.

Java FX Tutorial

27/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Илустрација развоја Јава GUI апликације за Android платформу

Јава апликације за мобилне уређаје (4)

28/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава аплети

Механизам рада Јава аплета

Јава аплети представљају пример тзв. веб програмирања на клијентској страни.

29/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава аплети (2)

30/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Примери аплета:

http://texteditor.org/

http://www.jpowered.com/free_java_game/alienwar/index.htm

http://appletparadise.com/applets/Breakout/breakout.html

http://www.typingtest.com/test.html?minutes=1&textfile=aesop.txt&getfocus=1&start.x=91&start.y=37

http://liss.matf.bg.ac.rs:83/OOP/Primer1-2012-13-I.html

Јава аплети (3)

31/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Сервлети и Јава серверске стране

Јава омогућује да се при раду са подацима преко Интернета, извршавање програма не реализује само на клијентској страни (као што је случај код аплета), већ и на серверској страни (тј. да се на веб серверу извршавају наредбе, да те наредбе “направе” HTML и да се тај чисти HTML шаље клијенту).Таква врста програмирања зове се програмирање на серверској страни. Будући да се све дешава у оквиру Интернет прегледача, још се каже да се у том случају ради о вишеслојним апликацијама са ”мршавим” клијентом.

32/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Сервлети и Јава серверске стране (2)

Преглед вишеслојних апликација

33/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Сервлети и Јава серверске стране (3)

Начин рада веб сервера

34/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Сервлети и Јава серверске стране (4)

Коришћење Јава зрна, сервлета и серверских страна за реализацију веб апликације са MVC архитектуром

35/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Илустрација развоја Јава апликације са сервлетима

Сервлети и Јава серверске стране (5)

36/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Илустрација развоја Јава апликације са серверским странама

Сервлети и Јава серверске стране (6)

37/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Примери сервлета и Јава серверских страна:

http://liss.matf.bg.ac.rs:83/examples/

http://liss.matf.bg.ac.rs:83/spring-web-app/input-form

Сервлети и Јава серверске стране (7)

38/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Јава веб сервиси

Јава омогућује креирање и модификацију веб сервиса.Веб сервиси су клијентске и серверске апликације које комуницирају преко HTTP протокола. Веб сервиси обезбеђују стандардизовани начин интероперабилности међу софтверским апликацијама које се извршавају на разноврсним платформама и оквирима за развојЗахваљујући коришћењу XML-а, веб сервисе карактерише велика интероперабилност и проширивост, као и описи који се могу аутоматски обрадити рачунаром.Да би се реализовале сложене операције, потребно је комбиновати веб сервисе тако да буду слабо спрегнути, па програми који обезбеђују једноставне услуге могу интераговати са онима који испоручују софистициране услуге.

39/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Начин коришћења SOAP веб сервиса

Јава веб сервиси (2)

40/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Илустрација развоја Јава веб сервиса

Јава веб сервиси (3)

41/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Библиотеке класа

Јава омогућује не само да програмер користи постојеће класе из JDK-а, већ и да оформи сопствене класе.Програмер те своје класе (тј. бајт-код својих класа) може спаковати у своју библиотеку класа, па да надаље у различитим новим пројектима само укључити библиотеку и креирати (тј. инстанцирати) објекте из те своје библиотеке.Библиотека обично садржи већи број класа и сродне класе се обично групишу у пакете.

42/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Илустрација коришћења Јава класе из библиотеке

Библиотеке класа (2)

43/[email protected]@matf.bg.ac.rsМатематички факултет

Објектно орјентисано програмирање

Захвалница

Велики део материјала који је укључен у ову презентацију је преузет из презентације коју је раније (у време када је он држао курс Објектно орјентисано програмирање) направио проф. др Душан Тошић.

Хвала проф. Тошићу што се сагласио са укључивањем тог материјала у садашњу презентацији, као и на помоћи коју ми је пружио током конципцирања и реализације курса.