Java (програмски језик) — разлика између измена

Садржај обрисан Садржај додат
мНема описа измене
Нема описа измене
Ред 22:
'''Јава''' ({{јез-енгл|Java}}, изговор: јава, ∗џава) је [[објектно-оријентисано програмирање|објектно-оријентисани]] [[програмски језик]], који је развила компанија [[Sun Microsystems|-{Sun Microsystems}-]] почетком [[1990-е|1990-их]] година.
 
Многи концепти Јаве су засновани на језику [[Оберон (програмски језик)|Оберон]], [[Никлаус Вирт|Никлауса Вирта]], творца [[Паскал (програмски језик)|Паскала]], [[Модула-2|Модуле]] и других језика, и [[Ханспетер Месенбек|Ханспетера Месенбека]]. Избацили су концепт модула и увели пакете какве данас знамо, који се ослањају на фајл систем и увели формално концепт класа из [[објектно-оријентисано програмирање|објектно-оријентисане]] парадигме. Осим тога, језик има синтаксу сличну језицима [[c (програмски језик)|-{C}-]] и [[C++|-{C++}-]], али је много строжи при превођењу, дизајниран тако да буде независан од платформе, и са поједностављеним управљањем меморијом. Претпоставља се да је ово урађено због популарности језика -{C}-, али и због једноставности неких структура. Прва верзија је званично објављена [[1995]]. године.
 
Данас је Јава подразумевани језик у изради мобилних апликација за [[Андроид оперативни систем|Андроид]] уређаје.<ref>[https://skolakoda.org/zdravo-java Zdravo Java]</ref>
Ред 30:
* једноставан - да буде систем у коме би се лако програмирало, без потребе за компликованим уходавањем и који користи постојећи начин размишљања. Синтакса језика Јава је унапређена верзија синтаксе С++
* објектно оријентисан - објектно оријентисано пројектовање представља технику програмирања фокусирану на податке(објекте) и на интерфејсе ка тим објектима
* дистрибуиран - Јава поседује исцрпну библиотеку рутина за рад са [[ТСР/IP]] протоколима, као што су [[HTTP]] и [[FTP]]. Јава апликације могу да приступају објектима преко мреже и преко [[URL|URL-а]], са подједнаком лакоћом као да приступају локалном систему датотека
* робустан - Јава је намењена за писање програма који морају бити поуздани на много начина. Истиче се у раној провери могућих проблема, каснијој динамичкој провери(током извршавања) и елиминацији ситуација у којима лако долази до појаве грешака
* безбедан - Јава је намењена коришћењу у мрежним/дистрибуираним окружењима. Према томе, много је труда уложено у безбедност. Омогућава конструкцију система који су заштићени од вируса и злонамерне модификације. Од самог почетка, Јава је пројектована да потпуно онемогући одређене врсте напада, као што су прекорачење извршног стека, приступ меморији изван дела додељеног процесу, читање или уписивање датотека без дозволе...
* неутралан - компајлер ствара објектну датотеку, чији је формат независан од оперативног система на коме се покреће. Компајлирани код се може извршавати на многим процесорима, под претпоставком присуства извршног система Јава. Јава компајлер остварује ово тако што генерише тзв. [[бајткод|Бајткод]] инструкције, које немају никакве везе са архитектуром коришћеног рачунара, већ се подједнако лако интерпретирају на свакој машини, а исто тако лако се преводе и у одговарајући машински код
* преносив - овде не постоје аспекти који су зависни од имплементације. Величине примитивних типова су фиксне, као и њихово понашање у аритметици. Такође, библиотеке које су део система дефинишу интерфејсе који су преносиви
* интерпретиран - исти Јава бајткод се може извршавати на сваком компјутеру за који постоји Јава интерпретер. Будући да је линковање постепен и лакши поступак, сам развој може бити бржи
* перформантан - мада су перформансе преведеног бајткода обично више него довољне, постоје ситуације када су потребне боље перформансе. Бајткод може да буде преведен током извршавања у [[машински језик]]
* вишенитан - предности вишенитне обраде су бољи интерактивни одзиви и понашање у реалном времену
* динамичан - Јава је пројектована тако да се прилагођава окружењу које се стално унапређује. Библиотеке могу слободно да додају нове методе и поља, без утицаја на клијенте. У Јави је прилично једноставно проналажење информација приликом извршавања програма.
 
== Историја Јаве ==
*[[1991]]. Претеча Јаве намењена мрежном кућном окружењу
*[[1994]]. Усмерење према Интернету
*1995. Језик Јава лансиран на SunWorld конференцији
*[[1996]]. Sun развија JDK 1.0 (кодно име Oak)
*[[1997]]. Појављује се JDK 1.1
*[[1998]]. Крајем године појављује се нови JDK означен са J2SE 1.2
*1997. Друга конференција о Јави са 10000 учесника
*2014[[2000]]. Појављује се Java SE 8J2SE 1.3
*1998. Крајем године појављује се нови JDK означен са J2SE 1.2
*2000[[2002]]. Појављује се J2SE 1.34
*2002[[2004]]. Појављује се J2SE 5.0 – интерна ознака J2SE 1.45
*[[2006]]. Sun објављује Java SE6
*2004. Појављује се J2SE 5.0 – интерна ознака J2SE 1.5
*[[2010]]. Java постаје власништво компаније [[Oracle Corporation|Oracle]]
*2006. Sun објављује Java SE6
*[[2011]]. Појављује се Java SE7
*2010. Java постаје власништво компаније Oracle
*2011[[2014]]. Појављује се Java SE7SE 8
*2014. Појављује се Java SE 8
 
[[James Gosling]], [[Mike Sheridan]] и [[Patrick Naughton]], група инжињера компаније Sun, су иницирали језички пројекат Јава у јуну 1991. Језик је назван Храст (енгл. Oak), и био је намењен за програмирање кућних електронских уређаја (телевизора, видео рекордера и сл.). Име пројекта Храст је касније промењено у Јава, по бренду Јава кафе (енгл. Java Coffee), која је добила име по истоименом острву [[Јава]], тако да лого језика Јава приказује чашу вруће кафе. Постоји још једна верзија порекла имена језика, која се односи на алузију на апарат за кафу као пример кућног уређаја, за који је програмски језик првобитно креиран.
 
 
Линија 62 ⟶ 61:
Јава платформа, тј. Јава окружење у ком се програм извршава, се састоји од:
* Јава виртуелне машине -ЈVМ (енгл. [[Јava Virtual Machine]]) - језгро Јаве, апстрактна машина који постоји само у меморији
* Јава API (енгл. [[Java Application Programming Interfaceinterface]]) - скуп класа и компоненти које садржи Јава, и које су на располагању програмеру за коришћење ради веће функционалности и ефикасности програма.
 
Јава је језик који се преводи и интерпретира. Јава изворни код (*.java фајл) након компајлирања, компајлером [[javac]], се преводи у изворни код тзв. бајткод (*.class фајл). Формирани бајткод је исти за све архитектуре рачунара и представља инструкције за Јава виртуелну машину.
Бајткод у Јава виртуелној машини, јава интерпретатором - јava, се дешифрује и интерпретира у извршни код, погодан за извршавање на рачунару, одговарајућем хардверу.
У зависности од ЈVМ, за исти изворни код можемо добити различите извршне кодове, за различите платформе.
Јава [[изворни код]] и бајткод остају исти без обзира на којој се платформи извршава програм -“Write once, run everywhere”.
 
== Уништавање објеката ==
Линија 123 ⟶ 122:
Оператори омогућавају операције над подацима. Подаци на које се примењују оператори називају се операнди. Према позицији у односу на операнде, разликујемо префиксне, инфиксне и постикфне операторе. Међутим, уколико се помоћу оператора додељује вредност или не, можемо да разликујемо две класе оператора: операторе доделе и остале.
 
* Аритметички оператори, заједно са операндима и сепараторима служе за формирање аритметичких израза. У аритметичке операторе спадају: + - * / % ++ --.
* Релациони оператори се могу још назвати и операторима поређења и служе за поређење вредности операнада. У релационе операторе спадају: == != < > >= <=.
* Битовни оператор може бити логички или оператор померања. Ту спадају:
& - битовна конјукција(AND)
Линија 153 ⟶ 152:
 
== Јава објекти и класе ==
'''Класа''' је скуп објеката са заједничким својствима, који се понашају на исти начин. Класа се састоји од атрибута и метода.
Атрибути описују особине, а методе понашање класе.
Пакет је група сличних типова класа, интерфејса и под-пакета.
 
'''Објекат''' је примерак класе. Сваки објекат има свој примерак свих поља атрибута, који је независан од осталих објеката, а методе су заједничке за све њих.
 
Атрибутима објекта се приступа помоћу оператора тачка, нпр. Pera.ime() .
Линија 170 ⟶ 169:
public class Object Covek{
String ime, prezime;
void jedi{.....}
}
</source>
Линија 186 ⟶ 185:
 
Пример позива конструктора:
Covek peraPera = new Covek(ime, prezime);
 
Имплицитни конструктори су конструктори који се позивају кад се не зада ниједан параметар при прављењу новог објекта, и он би требао да обезбеди да се поља објекта налазе у неком подразумеваном стању. На пример, за тачку би било подразумевано стање да се налази у [[Координатни почетак|координатном почетку]].
 
Енкапсулација је скривање радње унутар класе, јер корисник не мора да зна шта се дешава [[Фразеологизми|"испод жита"]], него само шта дати метод ради, или које он све атрибуте има и чему служе.
 
== Наслеђивање ==
Линија 230 ⟶ 229:
Постоје и ситуације кад методу желите да ограничите само на поткласе и тада да допустите методама поткласе да приступе пољу наткласе. Tада се поље или метода декларише као ''-{protected}-''.
Модификатори у Јави који контролишу видљивост:
* private - видљив само за одређену класу
* public - видљив за цео свет
* protected - видљив за одређени пакет и све поткласе
* уколико изоставимо модификатор, биће подразумевано да је видљиво у класи и у пакету.