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

Настанак и развој

  • Производ компаније Sun Microsystems

Јава лого

  • 1991. Претеча Јаве намењена мрежном кућном окружењу (J. Gosling)

  • 1994. Усмерење према Интернету

  • 1995. Језик Јава лансиран на SunWorld конференцији
    • Netscape прегледачи користе Јаву
    • IBM купује лиценцу
    • Јаву користи чак и Microsoft
  • 1996. Sun развија ЈДК 1.0 (кодно име Oak)

  • 1997. Појављује се ЈДК 1.1

  • 1997. Друга конференција о Јави са 10000 учесника

  • 1998. Крајем године нови ЈДК означен са J2SE 1.2
    • Swing графичка библиотека
    • Колекције
  • 2000. Појављује се J2SE 1.3
    • Рад са звуком
    • Рад у дистрибуираном окружењу
  • 2002. Појављује се J2SE 1.4
    • Уланчавање изузетака
    • Библиотеке за упис грешака у дневник
    • Манипулација са сликама
  • 2004. Појављује се J2SE 5.0 – интерна ознака J2SE 1.5
    • Генерички типови
    • Анотације
    • Паралелно програмирање
  • 2006. Sun објављује Java SE 6
    • Убрзавање перформанси језгра и рада са графиком
    • Побољшавани веб сервиси
    • Побољшан рад при повезивању са базама података
    • Побољшања на Јава виртуелној машини -ЈВМ
  • 2006. Велики део Јаве постаје слободан и отворен код под GPL лиценцом

  • 2010. Java постаје власништво компаније Oracle

  • 2011. Појављује се Java SE 7
    • JVM подршка за динамичке језике
    • Убрзавање исцртавања са модерним графичким картицама
    • Једноставније декларисање метода са променљивим бројем параметара
    • Симултано хватање више врста изузетака
  • 2014. Појављује се Java SE 8
    • Рад са ламбда изразима
    • Интуитивнији рад са временом и календарима
    • Побољшан модул за рад са ЈаваСкрипт-ом
  • Java SE 9 се појавила у 2017. години

Захтеви за Јаву

Приликом дизајнирања Јаве, утврђени су следећи захтеви:

фотографија Гослинг

  1. Једноставан, објектно орјентисан и фамилијаран

  2. Робустан и сигуран

  3. Архитектонски неутралан и преносив „пиши једном, извршавај било где“

  4. Перформантан

  5. Интерпретиран, вишенитан и динамичан

Реализација језика и програмског окружења Јава

  1. Да би се остварио захтев 1 (једноставнoст, објектна оријентисаност, фамилијарност), одлучено је да:
  • омогући се програмерима приступ готовим библиотекама за најразличитије намене;
  • буде објектно орјентисан од самог почетка;
  • по синтакси буде сличан C/C++;
  1. Да би се остварио захтев 2 (робусност и сигурност), одлучено је да:
  • омогући се креирање веома поузданог софтвера:
    • интензивна повера током компилације,
    • провера током извршавања програма;
  • модел управљања меморијом ће бити једноставан:
    • неће бити показивачких типова,
    • нити показивачке аритметике;
  • сигурносне карактеристике уграђене у језик и у систем за извршавање омогућују да апликације буду сигурне од спољашњег упада неауторизованог кода;
  1. Да би се остварио захтев 3 (aрхитектонска неутралност и преносивост), одлучено је да:
  • садржи компајлер који преводи до нивоа бајт-кода:
    • међуформат који је архитектонски неутралан
    • који је преносив на велики број хардверских и софтверских платформи;
  • стриктно дефинише основни језик>
    • величине простих типова
    • и понашање аритметичких операција;
  • има исто извршавање на свакој платформи:
    • за дате улазне податке даје исте излазне податке;

процес извршаванја Јава кода

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

1 Да би се остварио захтев 5 (интерпретираност, вишенитност и динамичност), одлучено је да:

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

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

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

  • Апликације из командне линије

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

  • Аплети

    • веб програмирање на клијентској страни
  • Сервлети и Јава серверске стране

    • веб програмирање на серверској страни
  • Веб сервиси

    • такође програмирање на серверској страни
  • библиотеке класа

Типови Јава апликација

17 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

И аплет верзија, и верзија за Windowsи верзија за Solarisсу

генерисане коришћењем истихЈава фајлова.

Прецизније, све три верзије садржеисти бајт код, којије

преведен само једном под Windows-ом и просто

прекопиран на Solaris без новекомпилације.

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

корисничким интерфејсом

18 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

корисничким интерфејсом (2)

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

19 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

корисничким интерфејсом (3)

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

20 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

корисничким интерфејсом (4)

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

 Постоји већи број библиотека које олакшавају
програмирање GUI у Јави.
 Најпопуларније су AWT, Swing, SWT и Java FX.
 Ове године ми ћемо обрађивати Java FX.
21 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

корисничким интерфејсом ( 5 )

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

22 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

корисничким интерфејсом ( 6 )

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

23 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Јава апликације

из командне линије

 Апликације из командне линије не користе
графичке компоненте.
 То, међутим, не нарушава изражајност саме
апликације.
 Унос и испис се врше путем командне линије
уместо путем текстуалних поља, лабела итд.

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

24 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Јава апликације

за мобилне уређаје

 Ове апликације користе функционалности библиотека
за програмирање мобилних уређаја које се испоручују
уз Јаву.
 Последњих година се у Јава свету орјентишу
према Java FX програмирању мобилних уређаја.
 Циљ је да се развој апликација за све уређаје уопшти:

Телефон

Таблет

Класичан рачунар

 Поред тога, постоје и Јава алати
за развој Android апликација (Android SDK).
25 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Јава апликације

за мобилне уређаје (2)

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

Java FX Tutorial

26 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

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

уређаје ( 4 )

27 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Јава аплети

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

 Јава аплети представљају пример тзв. веб
програмирања на клијентској страни.
28 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

29 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@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&ge

tfocus=1&start.x=91&start.y=37

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

30 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Сервлети и

Јава серверске стране

 Јава извршавање на страни сервера:

 На веб серверу се извршавају наредбе

 Потом веб сервер направи HTML датотеку и пошаље је

клијенту.

 Таква врста програмирања зове се
програмирање на серверској страни.
 Овакви програми се још прецизније називају
вишеслојним апликацијама са ”мршавим” клијентом.
31 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Сервлети и

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

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

32 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Сервлети и

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

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

33 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

Сервлети и

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

Коришћење Јава зрна, сервлета и серверских страна за

реализацију веб апликације са MVC архитектуром

34 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

Сервлети и

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

35 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

Сервлети и

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

36 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

 Јава омогућује креирање и модификацију веб сервиса.
 Веб сервиси су клијентске и серверске апликације које
комуницирају преко HTTP протокола.
 Веб сервиси омогућавају комуникацију између
апликација које се извршавају на разноврсним
платформама.
 Описи веб сервиса су задати најчешће као XML
датотека што омогућава њихову проширивост и
динамичност.
 Пожељно је градити хијерархију веб сервиса у којој они
софистициранији користе услуге једноставнијих.
37 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

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

38 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

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

39 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

 Јава омогућује не само да програмер користи
постојеће класе из ЈДК-а,
већ и да оформи сопствене класе.
 Програмер своје класе (тј. бајт-код својих класа)
може спаковати у своју библиотеку класа.
 У тој форми их надаље може користити
у новим пројектима.
 Библиотека обично садржи већи број класа
и сродне класе се обично групишу у пакете.
40 / 41
vladaf@matf.bg.ac.rs
{vladaf,kartelj}@matf.bg.ac.rs

Математички факултет

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

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

Захвалница

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

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