Java
Тази статия се нуждае от вниманието на редактор с по-задълбочени познания. Ако смятате, че имате необходимите знания, подобрете тази страница. |
Java | |
Парадигма | мултипарадигмален, обектно ориентиран, структуриран, императивен, използващ обобщено програмиране, рефлексивен език |
---|---|
Реализиране през | 1995 |
Автор | Джеймс Гослинг и Sun Microsystems |
Софтуерен разработчик | Oracle Corporation |
Последна стабилна версия | Java Standard Edition 11 (1.11) 25 септември 2018 г. |
Типизация на данните | строга, статична |
Имплементация | OpenJDK и много други |
Програмни диалекти | Generic Java, Pizza |
Повлиян от | Objective-C, C++, Smalltalk |
Повлиява | C# |
Уебсайт | За разработчици |
Java в Общомедия |
Java, или джава, е обектно ориентиран език за програмиране, разработен от Sun Microsystems и пуснат в употреба през 1995 година, като част от Java платформата. Впоследствие се появяват множество други реализации включително от GNU, Microsoft, IBM, Oracle и други технологични доставчици. Изходният код, написан на Java, не се компилира до машинен код за определен микропроцесор, а се компилира до междинен език – така нареченият байткод. Байт кодът не се предава за директно изпълнение от процесора, а се изпълнява от негов аналог – виртуален процесор, наречен Java Virtual Machine (JVM).[1] Подобна реализация има своите предимства и недостатъци. Сред главните предимства са:
- лесната преносимост между различните платформи (софтуерни или хардуерни) – веднъж написана и компилирана, една Java-програма може да бъде стартирана на различни компютри, независимо от архитектурата или от операционната им система. За целта е необходимо само да се инсталира виртуална машина за съответната платформа;
- допълнителните действия, извършвани от виртуалната машина, като освобождаване на паметта от обекти (класове), които не се използват (Garbage collector), проверка за размерността на масивите;
- възможността за контрол на правата на потребителя на ниво виртуална машина
- първоначално заделяна на heap, част от паметта резервирана за джава
- висока степен на сигурност поради факта, че програмистите не работят директно с паметта и др.
Главен недостатък е необходимостта от допълнителни ресурси (под формата на процесорно време и памет) за работата на самата виртуална машина.
Съществуват и компилатори, които превеждат байт кода до машинен код. Недостатък при използването им е, че тогава програмата не може да се стартира на различни платформи.
Ранните версии на виртуалните машини страдат от слаба производителност поради необходимостта от компилиране на байт кода до машинен код. Този проблем е решен в значителна степен след въвеждането на JIT компилатора във виртуалната машина.
Java e език за програмиране от високо ниво с общо предназначение. Синтаксисът му е подобен на C и C++, но не поддържа много от неговите възможности с цел опростяване на езика, улесняване на програмирането и повишаване на сигурността. Програмите, написани на Java, представляват един или няколко файла с разширение .java. Тези файлове се компилират от компилатора на Java – javac до изпълним код и се записват във файлове със същото име, но различно разширение .class. Клас-файловете съдържат Java байткод инструкции, изпълним от виртуалната машина.[1]
Ето примерна версия на програмата „Hello, world!“ (в системна конзола), написана на Java:
class HelloJava {
public static void main(String[] arguments) {
System.out.println("Hello, Java");
}
}
Факти за езика
[редактиране | редактиране на кода]Java е обектно ориентиран и основна концепция са класовете, които се дефинират чрез свойствата (атрибутите) и поведението (методите) на обектите. Няма глобални променливи и функции – всичко се дефинира в класове.
Липсва и множественото наследяване от C++ в някаква степен заместени от интерфейсите.
Пример за противното е C++.
Java е език от високо ниво, който прилича на C# и C++ и донякъде на езици като Delphi, VB.NET и C. Синтаксисът на Java е сходен до този на C++ и C# и преминаването от тези езици към Java е лесно. Java програмите са обектно ориентирани. Те представляват съвкупност от дефиниции на класове, които съдържат в себе си методи, а в методите е разположена програмната логика.
На Java се разработва разнообразен софтуер: офис приложения, уеб приложения, настолни приложения, приложения за мобилни телефони, игри и много други.
В днешно време Java е един от най-популярните езици за програмиране.[2][3] На него пишат милиони разработчици по цял свят. Най-големите световни софтуерни корпорации като IBM, Oracle, Google и SAP базират своите решения на Java платформата и използват Java като основен език за разработка на своите продукти.[4] Сред „големите“, Java не се ползва единствено от Microsoft, тъй като те разработват и поддържат собствена платформа, подобна на Java платформата, наречена .NET Framework и език, подобен на Java, наречен C#.
Езикът Java е първоначално разработен и поддържан от Sun Microsystems, но през 2006 г. Java платформата става проект с отворен код и се поддържа и развива от световната Java общност съвместно със Sun. Благодарение на отворения код популярността на Java постоянно се увеличава и броят Java разработчици непрекъснато расте.
Езикът Java се разпространява заедно със специална среда, върху която се изпълнява, наречена Java Runtime Environment (JRE). Тя включва т.нар. Java виртуална машина (JVM) и пакет стандартни библиотеки, предоставящи базова функционалност. Благодарение на нея Java програмите са преносими и след като веднъж бъдат написани, след това почти без промени могат да работят на стотици хардуерни платформи и операционни системи.
Версии
[редактиране | редактиране на кода]Java се разработва в няколко направления:
- Java Standard Edition – базовата версия която се използва за разработка на клиентски приложения и т.нар. Java аплети.
- Java Enterprise Edition – базирана е върху Standard Edition, използва се най-често при сървърните приложения в интернет под формата на т.нар. Java сървлети и Java Server Pages (JSP), но освен това включва и голям брой други софтуерни технологии.
- Java Micro Edition – самостоятелна олекотена версия за работа на устройства с ограничена изчислителна мощност като мобилни телефони, смартфони, PDA устройства и други.
Към настоящия момент са известни следните версии на езика:
- 1.0
- 1.1
- 1.2 с пазарно наименование Java 2, с което наименование се разпространяват и следващите версии. Тази версия включва значителни промени в API, включени към езика
- 1.3
- 1.4
- 1.5 с пазарно наименование Java 5. Тази версия включва значителни промени както в API, така и в синтаксиса на езика.
- 1.6 с пазарно наименование Java 6. Тази версия на езика включва допълнения към API и по-бърза виртуална машина.
- 1.7 с пазарно наименование Java 7. Тази версия на езика изключва неодобрените методи от предните версии.
- 1.8 с пазарно наименование Java 8. Тази версия на езика включва безброй нови функции (на английски могат да бъдат открити тук: What's New in JDK 8)
- Към септември 2021 г. последната стабилна версия на Java е Java 17.[5]
- За 2023 година JDK 21 е най-новата версия за дългосрочна поддръжка на платформата Java SE.[6]
Исторически факти
[редактиране | редактиране на кода]Първоначалната версия на езика, наричана още Oak, е разработвана в продължение на 18 месеца – от пролетта на 1991 до лятото на 1992 – от Патрик Нотън (Patrick Naughton), Майк Шеридан (Mike Sheridan) и Джеймс Гослинг (James Gosling), както и от още десет разработчици. Поръчката е била на компютърния производител Sun Microsystems. Проектът е носил името „The Green Project“ (Зеленият проект). Един от основните разработчици е Джеймс Гослинг, който се смята и за един от бащите на езика. Истинският пробив започва с версиите 1.3 и 1.4 през 1998. Днес Java е много широко разпространен в сървърните приложения.
Документация
[редактиране | редактиране на кода]Javadoc е сложна документална система, създадена от Sun Microsystems, използвана е от много Java разработчици. Тя доставя на разработчиците организирана система за документирането на техния код. За разлика от нормалните коментари в Java и C, които се поставят с /* и */, за няколко редове коментар, при Javadoc коментарите има допълнителна звездичка в началото, така че таговете са /** и */.
Примери
[редактиране | редактиране на кода]Следното е пример за java код коментиран с Javadoc-стил коментари:
/**
* Програма, която прави полезни работи.
*/
public class Program {
/**
* Главен метод.
* @param args аргументите
*/
public static void main(String[] args) {
//do stuff
}
}
Синтаксис
[редактиране | редактиране на кода]Примерът „Здравей, свят!“
[редактиране | редактиране на кода]В този пример на конзолен екран се извежда текстът „Здравей, свят!“:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Здравей, свят!");
}
}
Основни типове данни
[редактиране | редактиране на кода]Тип | Описание | Брой битове | Стойности |
---|---|---|---|
boolean | Логическа стойност | 1 | true, false |
byte | Цяло число | 8 | -128 до 127 |
char | Цяло (не отрицателно) число или знак | 16 | 0 до 65535 или \u0000 до \uffff |
short | Цяло число | 16 | – 32768 до 32767 |
int | Цяло число | 32 | – 2147483648 до 2147483647 |
long | Цяло число | 64 | – 9223372036854775808 до
9223372036854775807 |
float | Дробно число | 32 | ± 1,40239846x10−45 до
±3,40282347x10+38 |
double | Дробно число | 64 | ±4,940656sadad45841246544x 10−324 до
±1,79769313486231570x10+308 |
На ниво виртуална машина типовете float и double са представени според нормата IEEE 754.
Ключови думи
[редактиране | редактиране на кода]Следните думи не могат да се използват в имената на функции или променливи:
abstract do if package synchronized boolean double implements private this break else import protected throw byte extends instanceof public throws case false int return transient catch final interface short true char finally long static try class float native strictfp void const for new super volatile continue goto null switch while default
Варианти
[редактиране | редактиране на кода]Oracle Corporation е настоящият собственик на официалния вариант на платформата Java SE, след като придобива Sun Microsystems на 27 януари 2010 г. Тази реализация се основава на първоначалната реализация на Java от Sun. Реализацията на Oracle е достъпна за Microsoft Windows (все още работи за XP, докато официално се поддържат само по-нови версии), macOS, Linux и Solaris. Тъй като в Java липсва официална стандартизация, призната от Ecma International, ISO/IEC, ANSI или други организации по стандартизация на трети страни, вариантът на Oracle е де факто стандарт.
Той е наличен в две различни дистрибуции: Java Runtime Environment (JRE), която съдържа частите от платформата Java SE, необходими за изпълнение на Java програми и е предназначена за крайни потребители, и Java Development Kit (JDK), предназначен за разработчици на софтуер и включва инструменти за разработка като Java компилатор, Javadoc, Jar и дебъгер. Oracle също пусна GraalVM, високопроизводителен Java динамичен компилатор и интерпретатор.
OpenJDK е друг забележителен вариант на Java SE, започнат когато Sun пуска изходния код на Java под GPL. От Java SE 7 OpenJDK е официалният Java справочен вариант.
Целта на Java е да направи всички варианти на Java съвместими. В исторически план лицензът за търговска марка на Sun за използване на марката Java изисква всички варианти да са съвместими. Това доведе до спор с Microsoft, след като Sun заяви, че вариантът на Microsoft не поддържа RMI или JNI и че са добавили свои собствени специфични за платформата функции. Sun завежда съдебно дело през 1997 г., а през 2001 г. печели споразумение от 20 милиона щатски долара, както и съдебна заповед за прилагане на условията на лиценза от Sun. В резултат на това Microsoft вече не доставя Java заедно с Windows.
Независимата от платформата Java е от съществено значение за Java EE и е необходимо още по-строго валидиране за сертифициране на вариантите. Тази среда позволява преносими сървърни приложения.
Коментари
[редактиране | редактиране на кода]// ... – коментари до края на реда
/* ... */ – Блок-коментар
/** ... */ – Java-Doc коментар
Външни препратки
[редактиране | редактиране на кода]Вижте също
[редактиране | редактиране на кода]
|
- ↑ а б Наков, Светлин. Въведение в програмирането с Java. 2017. ISBN 978-954-400-055-4. с. 53-80.
- ↑ Кои са най-популярните програмни езици през 2021 г.? // DataArt, 2021-09-07. Посетен на 2023-10-22.
- ↑ PYPL PopularitY of Programming Language // https://pypl.github.io/,+Oct 2023. Посетен на 2023-10-22.
- ↑ Вълева, Мария. Топ езици за програмиране през 2022 // softuni, 2022-02-18. Посетен на 2023-10-22.
- ↑ Java archive // Oracle. Посетен на 2023-10-22. (на английски)
- ↑ Java Downloads // Oracle. Посетен на 2023-10-22. (на английски)