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

Садржај обрисан Садржај додат
м Бот: обликујем ISBN; козметичке измене
Ред 20:
| сајт = [http://www.oracle.com/us/technologies/java/index.html www.oracle.com/us/technologies/java]
}}
'''Јава''' ({{јез-енгл|Java}}, изговор: јава, ∗џава) је [[објектно-оријентисано програмирање|објектно-оријентисани]] [[програмски језик]], који је развила компанија [[Sun Microsystems|-{Sun Microsystems}-]] почетком [[1990-е|1990-их]] година.
 
Многи концепти Јаве су засновани на језику [[Оберон (програмски језик)|Оберон]], [[Никлаус Вирт|Никлауса Вирта]], творца [[Паскал (програмски језик)|Паскала]], [[Модула-2|Модуле]] и других језика, и [[Ханспетер Месенбек|Ханспетера Месенбека]]. Избацили су концепт модула и увели пакете какве данас знамо, који се ослањају на фајл систем и увели формално концепт класа из [[објектно-оријентисано програмирање|објектно-оријентисане]] парадигме. Осим тога, језик има [[Синтакса|синтаксу]] сличну језицима [[c (програмски језик)|-{C}-]] и [[C++|-{C++}-]], али је много строжи при превођењу, дизајниран тако да буде независан од платформе, и са поједностављеним управљањем [[Рачунарска меморија|меморијом]]. Претпоставља се да је ово урађено због популарности језика [[c (програмски језик)|-{C}-]], али и због једноставности неких структура. Прва верзија је званично објављена [[1995]]. године.
Ред 52:
* [[2006]]. Sun објављује Java SE6
* [[2010]]. Java постаје власништво компаније Oracle <ref>[https://docs.oracle.com/javase/tutorial/ Oracle]</ref>
* [[2011]]. Појављује се Java SE7
* [[2014]]. Појављује се Java SE 8
 
[[James Gosling]], [[Mike Sheridan]] и [[Patrick Naughton]], група инжињера компаније Sun, су иницирали језички пројекат Јава у јуну [[1991]]. Језик је назван Храст ({{јез-енгл|[[Oak]]}}), и био је намењен за програмирање кућних електронских уређаја (телевизора, видео рекордера и сл.). Име пројекта Храст је касније промењено у Јава, по бренду Јава кафе ({{јез-енгл|Java Coffee}}), која је добила име по истоименом острву [[Јава]], тако да лого језика Јава приказује чашу вруће кафе.<ref>[https://www.javaworld.com/article/2077265/core-java/so-why-did-they-decide-to-call-it-java-.html "Зашто се зове Јава"]</ref> Постоји још једна верзија порекла имена језика, која се односи на алузију на апарат за кафу као пример кућног уређаја, за који је програмски језик првобитно креиран.<ref>[http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html "Историја"]</ref>
Ред 63:
Јава се извршава коришћењем [[Јава виртуелна машина|Јава виртуелне машине]] -ЈVМ ({{јез-енгл|[[Јаva Virtual Machine]]}}) <ref>[http://www.programmerinterview.com/index.php/java-questions/jvm-platform-dependent/ "Јава Виртуелна Машина"]</ref> - језгро Јаве, апстрактна машина која постоји само у [[Рачунарска меморија|меморији]].
 
Јава је језик који се преводи и интерпретира. Јава изворни код (*.java [[фајл]]) након компајлирања, [[компилатор|компајлером]] [[javac]], се преводи у изворни код [[бајткод]] (*.class фајл). Формирани бајткод је исти за све [[Архитектура рачунара|архитектуре рачунара]] и представља инструкције за Јава виртуелну машину.
Бајткод у Јава виртуелној машини, јава [[интерпретатор (рачунарство)|интерпретатором]] - јаva, се дешифрује и интерпретира у извршни код, погодан за извршавање на рачунару, одговарајућем [[хардвер]]у.
 
Ред 104:
 
=== Литерали ===
Литерали у Јави су константе примитивног типа или конкретан примерак класе ''-{String}-''.
* Целобројни литерали у Јави могу бити записани као: [[Декадни систем|декадни]], [[Октални систем|октални]] или [[Хексадекадни систем|хексадекадни]] (а од верзије 7 и као бинарни).
* Реални литерали су константе које се записују у облику покретне тачке. Мора садржати бар једну цифру и било децималу, било експонент. У Јави разликујемо два типа реалних литерала: ''-{float}-'' и ''-{double}-''. Уколико је литерал типа ''-{float}-'' слово f или F мора се навести на крају литерала, док је ''-{double}-'' подразумевани тип за реални литерал, те се слово d или D не мора навести.
* Логички литерали су вредности "да" и "не", односно "истинито" и "неистинито". У Јави се записују као ''-{true}-''(истинито) и ''-{false}-''(неистинито).
* Знаковни литерал је било који знак, осим апострофа и обрнуте косе црте, или ескејп секвенца. Стринговни литерал је ниска таквих знакова између наводника. Ескејп секвенце које се појављују у Јави:
Ред 131:
* Аритметички оператори, заједно са операндима и сепараторима служе за формирање аритметичких израза. У аритметичке операторе спадају: + - * / % ++ --
* Релациони оператори се могу још назвати и операторима поређења и служе за поређење вредности операнада. У релационе операторе спадају: == != < > >= <=
* Битовни оператор може бити логички или оператор померања. Ту спадају:
& - битовна конјукција(AND)
~ - битовна негација(NOT)
Ред 143:
|| - дисјункцију
! - негацију.
* Условни оператор се најчешће користи у форми:
<logički_operator>?<prvi_izraz>:<drugi_izraz>
* Помоћу инстанцног оператора се проверава да ли конкретан примерак припада некој класи, при чему оператор ''-{instanceof}-'' генерише вредност ''-{true}-'' ако је објекат примерак наведене класе или интерфејса, а у супротном даје вредност ''-{false}-''.
Ред 165:
Пакет је група сличних типова класа, интерфејса и под-пакета.
 
'''Објекат''' је примерак класе. Сваки објекат има свој примерак свих поља атрибута, који је независан од осталих објеката, а методе су заједничке за све њих.
 
Атрибутима објекта се приступа помоћу оператора тачка, нпр. Pera.ime() .
Ред 171:
Методе се позивају на следећи начин: Pera.jedi() .
 
Резервисана реч ''-{this}-'' је "показивач" на тренутни објекат који се обрађује при позиву методе.
Објекти су направљени тако да симулирају понашање спољашњег света и потпуно су одређени својим атрибутима и понашањем.
 
Ред 177:
 
Како би то изгледало у Јави:
<source lang="java">
public class Object Covek{
String ime, prezime;
void jedi{.....}
Ред 189:
Пример дефинисања конструктора:
<source lang="java">
Covek(String ime, String prezime){
this.ime = ime;
this.prezime = prezime;
Ред 212:
Наслеђивање не треба да се заустави на извођењу само једног нивоа класа. На пример, можемо имати класу Executive која наслеђује класу Manager.
 
Колекција свих класа које су настале наслеђивањем заједничке наткласе назива се [[хијерархија наслеђивања]].
Чињеница да променљива објекта може да показује на више стварних типова назива се [[Полиморфизам (рачунарство)|полиморфизам]].
 
Променљива типа Еmployee може да се односи на објекат типа Еmployee, или на објекат било које поткласе класе Еmployee, као што су Manager, Еxecutive...
Ред 221:
Док се крећемо ка врху кроз хијерархију наслеђивања, класе постају све општије и вероватно све апстрактније. Класа са једном или више апстрактних метода мора и сама да се декларише као апстрактна, што се ради коришћењем кључне речи ''-{abstract}-''. Поред апстрактних метода, '''апстрактне класе''' могу имати конкретне податке и методе. Апстрактне методе се понашају као чувари места за методе, које су имплементиране у одређеној поткласи. Апстрактне методе представљау важан концепт у програмском језику Јава, а на њих често можете наићи унутар [[интерфејс]]а.
 
'''Интерфејс''' је референтни тип, сличан класи, али може садржати само константе и потписе метода.
Од верзије 8 интерфејси могу да садрже и тела метода.
 
Ред 229:
<source lang="java">
interface Moveable{
public move();//potpis metode
}
 
 
public class Covek implements Moveable{
.....
move(){...}
}
</source>
 
Поља у класи је најбоље означити као ''-{private}-'', док се методе обично означавају као ''-{public}-''. Све карактеристике које су дефинисане као private нису видљиве за друге класе. То исто важи и за поткласе.
 
Постоје и ситуације кад методу желите да ограничите само на поткласе и тада да допустите методама поткласе да приступе пољу наткласе. Тада се поље или метода декларише као ''-{protected}-''.
Ред 254:
{{Commonscat|Java (programming language)}}
=== -{Sun}- ===
* [http://java.sun.com/ Званична презентација]
* [http://java.sun.com/docs/books/jls/ Спецификација језика -{Java}-, треће издање] Званични опис језика -{Java}-.
* [http://java.sun.com/j2se/1.5.0/docs/api/ -{J2SE API}- приручник, -{v5.0}-]
Ред 262:
 
=== Алтернативе ===
* [http://www.blackdown.org/ -{Blackdown Java}-] за [[Линукс|-{Linux}-]], садржи -{plug-in}- за [[Мозила фајерфокс|Mozilla Firefox]]
 
=== Упутства за почетнике ===
Ред 277:
* [http://www.javarss.com/ -{JavaRSS.com}- - -{Java}- портал вебсајтова рађених у -{Java}- језику, богат вестима, чланцима, блоговима, групама, форумима везаним за -{Java}- језик и -{J2EE}- платформу]
* {{Cite book|ref= harv|last=Horstmann|first=Cay S.|title = Core Java Volume I-Fundamentals|edition=9th|publisher=Prentice Hall|year=2013|isbn=978-86-7991-367-8|pages=}}
* {{Cite book|ref= harv|last=Horton|first=Ivor|title = Ivor Horton's Beginning Java 2 JDK|edition=5th|publisher=Wiley Publishing|year=2005|id=ISBN 978-86-7991-299-92|pages=}}
* [http://files.bruckner.cz/be2a5b2104bf393da7092a4200903cc0/PecinovskyOOP.pdf Rudolf Pecinovsky, OOP – Learn Object Oriented Thinking and Programming]
* [http://cet.rs/wp-content/uploads/2017/06/Java_2_JDK_5_Pog_01_Od_pocetka.pdf Ivor Horton, Java 2 JDK 5]