2. Дата официального выпуска — 23 мая 1995 года. На 2018
год Java — один из самых популярных языков
программирования.
Основной целю технологии java является принцип —
«Написанное один раз — работает везде» (англ. «Write
once — run anywhere.» WORA).
3. СРАВНЕНИЕ С++
И JAVA:
•В Java отсутствует перегрузка операторов;
•в Java отсутствует прямой доступ к памяти через указатель;
•в Java отсутствуют деструкторы;
•в Java отсутствует возможность процедурного
программирования;
•в Java статическая длина массивов и проверка индекса при
доступе к элементу;
•в Java значение переменных экземпляра (полей класса),
в случае отсутствия инициализации, принимают значения по
умолчанию (для целых и дробных типов это 0, для
boolean — это false, для ссылочных типов — это null);
•в Java отсутствуют препроцессорные операции;
•в Java отсутствуют файлы заголовки (header);
•в Java контроль за расходом памяти возложен на
специальный механизм сборки мусора, в С++ за этим следит
сам программист.
4. СРАВНЕНИЕ С# И
JAVA
• В Java нет перегрузки операторов
• Java использует JVM и преобразует исходный код в байт-код,
тогда как С# запускает программы на CRL (Common Runtime
Language) , преобразовывая исходных код в IL (Intermediate
Language). IL используется для интерпретации различный языков
высокого уровня (C#, VB). Аналог машинного кода.
• Java различает два типа исключений – проверяемые и
непроверяемые. C# имеет только один тип исключения.
• В C# есть делегаты, которые по существу служат в качестве
методов, которые могут быть вызваны без знания целевого
объекта. В Java нет.
• Generics улучшает проверку типов с помощью компилятора, в
основном удаляя приведения из исходного кода. В Java средства
обобщений реализуются с использованием стираний. Параметры
общего типа «стираются», а при компиляции в байт-код
добавляются приведения. C# также использует обобщения,
интегрируя его в CLI и предоставляя информацию о типе во время
выполнения, что дает небольшое увеличение производительности.
5. НЕМНОГО ТЕОРИИ
Виртуальная машина (JVM) — это спецификация, описывающая абстрактную
машину, в которой могут выполнятся приложения на java. Машина считается
виртуальной, так как большую ее часть составляют различные программные
компоненты. Существуют JVM реализованные различными производителями, но
все они придерживаются единой спецификации. Реализация JVM это программное
обеспечение интерпретирующее инструкции байт-кода программы в команды
операционной системы.
Компилятор — это средство, которое преобразует исходный код в байт-код. Java
компилятор написан на языке java. Существуют компиляторы которые
преобразуют исходный код с других языков (Ada, JavaScript, Python, Ruby) в байт-
код. Существуют так же языки адаптированные для работы на виртуальной java
машине (Scala, Groovy).
Байт код — это набор инструкций на промежуточном языке, предназначенный для
выполнения виртуальной машинной. Каждая инструкция кодируется одним
байтом. Существует 205 инструкций, остальные (51) являются резервом. Байт-код
создается в результате компиляции кода программы, находящейся в файлах
с расширением java. Байт-код сохраняется в файлах с расширением class.
7. ECLIPSE
IDE Eclipse — бесплатная свободная среда для
разработки много-модульных и кроссплатформенных
приложений. Имеет открытый исходный код. Развивается
и поддерживается некоммерческой организацией «Eclipse
Foundation». Изначально среда принадлежала IBM.
Представляет собой многослойный конструктор
состоящий из сервисной платформы «OSGI»
и «SWT/JFace». Расширение функционала
осуществляется с помощью плагинов (plugins), которых
имеется большое количество.
8.
9. УСТАНОВКА
1. Установить JDK и JRE с официального сайта, через
установочный пакет, который можно скачать по
адресу
https://www.oracle.com/technetwork/java/javase/downloads/i
ndex.html
10. Начиная с Java 11, Oracle JDK, на который ссылаются почти все
поисковые запросы, теперь является коммерческим, и не является
бесплатным.
Ключевая часть обновлённого лицензионного соглашения
(https://www.oracle.com/technetwork/java/javase/terms/license/javase-
license.html) заключается в следующем:
«You may not: use the Programs for any data processing or any commercial,
production, or internal business purposes other than developing, testing,
prototyping, and demonstrating your Application;»
Что это значит?
Начиная с Java 11, Oracle будет выпускать JDK под лицензией GNU
General Public License v2, with the Classpath Exception (GPLv2+CPE) и под
коммерческой лицензией для тех, кто использует Oracle JDK как часть
продуктов или сервисов Oracle, или кто не хочет использовать открытое
программное обеспечение. Эта комбинация из OS-лицензии и
коммерческой заменяет старую лицензию BCL (Oracle Binary Code
License), которая состоит из коммерческих и бесплатных условий
использования.
Для каждой лицензии будут предоставляться отдельные сборки, но эти
сборки будут идентичны функционально, кроме некоторых
косметических различий и различий в способе упаковки бинарников.
11. После установки Java платформы, необходимо
сконфигурировать систему для работы с Java.
14. •В переменную PATH указываем полный путь к
директории bin нашего JDK
•Создаем переменную JAVA_HOME и вносим полный путь
к JDK.
15. INTELLIJ IDEA
Разрабатывается компанией «Jet Brains». Отличительной
особенностью является понимание контекста и большого
количества поддерживаемых технологий и фреймворков
прямо из коробки. Имеется бесплатная версия Community
(отсутствует поддержка JEE технологий, определение
дупликатов и технологий работы с базами данных)
и платная Ultimate (30-дневный пробный период).
Официальный сайт https://www.jetbrains.com/idea/
16.
17. NETBEANS
NetBeans — бесплатная свободная среда разработки
с открытым исходным кодом. Поддерживает различные
языки программирования и разметки. Поддержка
большинства современных java технологий.
Присутствует интерфейс на русском языке и большое
русскоязычное сообщество.
Официальный сайт https://netbeans.org/
18.
19. CODENVY
Бесплатная среда разработки не требующая установки
приложения на компьютер. Разработка ведется
в браузере, после загрузки в него необходимого контента.
Официальный сайт https://codenvy.com/
23. Следует обратить внимание на следующий факт: в одном
классе может несколько методов main, при условии, что
их сигнатуры не будут совпадать. При этом, точка входа в
систему будет неизменна: Метод
public static void main(String[] args)
27. Целочисленные примитивные типы данных могут хранить
в себе только целые числа (без дробной части) из диапазона
заданного размерностью типа.
Дробные типы данных предназначены для хранения значений
дроби. Дробный тип данных может быть представлен в виде
десятичной дроби. В качестве разделителя целой и дробной
части используется точка. Например 1.5 — это одна целая
и пять десятых. Так же могут быть использованы научная
и экспоненциальная форма записи.
Особенности специальных значений с плавающей точкой
•Math.sqrt(-1.0) = NaN
•0.0 / 0.0 = NaN
•1.0 / 0.0 = Infinity
•–1.0 / 0.0 = -Infinity
•NaN==NaN = false
•Infinity==Infinity = false
28. Символьный тип может хранить в себе только целые числа,
которые интерпретируются, как коды символов из таблицы на
основе юникода (Unicode). Юникод — эта стандарт
кодирования символов, где каждому символу соответствует
определенный код. В юникоде представлены все возможные
знаки различных народов мира. Каждый символ кодируется
двумя байтами. Если нет возможности набрать в коде символ
с клавиатуры он может быть заменен на запись символа
в виде юникода. Например: ‘u0056’
Логический тип используется для хранения значений
полученных в результате вычисления логических выражений
или может задаваться логическими литералами: где true —
обозначает истину, false — обозначает ложь. В стандартной
реализации «Sun JVM» для хранения значений типа boolean
используется 32 бита, а в случае массива boolean происходит
оптимизация до 8 бит. Для хранения большого количества
значений типа boolean рекомендуется использовать класс
BitSet.
29. Все остальные типы данных считаются ссылочными и, по
своей сути, являются ссылками на объекты, имеющими
общий суперкласс: Object.
Такие объекты имеют как стандартные наследуемые от класса
Object методы, так и свои уникальные методы.
31. Такие ссылочные типы данных как Double, Long, Integer, и т.д.
по сути являются «обертками» над их примитивами,
предоставляя дополнительный функционал для работы с
этими типами (Сравнение, нахождение min/max значений,
конвертирование строчных в заглавные символы и наоборот,
и т.д.)
32. Для определения разницы между примитивами и
ссылочными типами рекомендуется решить следующую
задачу
33. РЕЗУЛЬТАТОМ РАБОТЫ
ПРОГРАММЫ ПОЛУЧИМ
СЛЕДУЮЩИЙ РЕЗУЛЬТАТ
New Integer() создает новый объект типа Integer, который
имеет другой адрес в памяти. Оператор == сравнивает между
собой адреса объектов, а не их значения. Поэтому результат
второй проверки равен false. Для сравнения значений
объектов ссылочных типов необходимо использовать метод
.Equals()
34. ENUM
Enum, или перечисление, также относится к ссылочным
типам данных и являет собою класс (enum type),
содержащий список констант.
И да, enum, как и любой объект, может иметь свой
собственный конструктор и методы.
35.
36. ПЕРЕМЕННАЯ
Переменная — это именованная область памяти,
в которую может быть записано или перезаписано
и откуда может быть прочитано значение определенного
типа. Тип переменной и ее имя (идентификатор) задаются
в момент объявления переменной в программе.
Синтаксис объявления переменной:
тип идентификатор;
37. КОНСТАНТЫ
Это переменные, значение которых обычно нельзя
изменить после инициализации.
Для их объявления используется модификатор final.
Однако, следует разделять final переменные и константы.
38. Константы инициализируются сразу после объявления
переменной
Final же переменные могут, и должны быть,
инициализированы либо в блоке инициализации, либо в
конструкторе класса.
42. ЛИТЕРАЛЫ
Литерал — это явно заданное в коде значение
определенного типа. Для задание литералов в коде
программы используется специальный синтаксис.
Примечание: Начиная с версии JDK 7.0 java позволяет
разделять разряды числовых литералов символом
подчеркивания. Например: 100_000_000.
43. Тип литерала Тип данных Спецсимволы Пример
Целочисленный
int x 3, 03, 0x3
long L, l 3l, 3L
Дробный
float F, f, e 1.5f, 1.5F, 1.5e-1f
double D, d, e
1.5, 1.5d, 1.5D,
1.5e-1
Булевый boolean true, false true, false
Символьный char ‘ ‘a’, ‘u0041’
Ссылочный Все ссылочные null null
44. МОДИФИКАТОРЫ
Модификаторы доступа
•private – только внутри класса
•public – переменная доступна всем.
•default – видимость внутри пакета как public
•protected – для класса и его наследников
Остальные модификаторы переменных:
•static – предоставляет доступ на уровне класса, а не
экземпляра. Значение едино для всех экземпляров класса.
•final - константа
•transient - переменные не могут быть final или static. Такие
переменные не сериализуются.
•volatile – используется при проектировании
многопоточности. Гарантирует синхронизацию значения
переменной со всеми потоками.
45. ОПЕРАТОРЫ
Операции в языке java — это специальные символы,
которые показывают какое действие необходимо выполнить
для заданных операндов.
Операнд — может быть литералом, переменной или
выражением, над которыми производится операция.
Операции могут применяться к одному (унарная операция),
двум (бинарная операция) или трем (тернарная операция)
операндам.
Операции могут быть объединены в выражения. В отличии
от С++ в Java отсутствует перегрузка операций, так как
создатели языка решили, что перегрузка операций
существенно запутывает код и усложняет его понимание.
47. ЛОГИЧЕСКИЕ ОПЕРАЦИИ
ПРЕДПОЛОЖИМ, ЛОГИЧЕСКАЯ ПЕРЕМЕННАЯ A ИМЕЕТ ЗНАЧЕНИЕ TRUE,
А ПЕРЕМЕННАЯ B ХРАНИТ FALSE. В СЛЕДУЮЩЕЙ ТАБЛИЦЕ
ПЕРЕЧИСЛЕНЫ ЛОГИЧЕСКИЕ ОПЕРАТОРЫ В JAVA:
Оператор Описание Пример
&& Называется логический
оператор «И». Если оба
операнда являются не
равны нулю, то условие
становится истинным
(A && B) — значение
false
|| Называется логический
оператор «ИЛИ». Если
любой из двух операндов
не равен нулю, то условие
становится истинным
(A || B) — значение true
! Называется логический
оператор «НЕ».
Использование меняет
логическое состояние
своего операнда. Если
условие имеет значение
true, то оператор
логического «НЕ» будет
делать false
!(A && B) — значение
true
49. ТЕРНАРНЫЙ
ОПЕРАТОР
Тернарный оператор содержит три операнда.
Результатом операции может быть второй или третий
операнд. Первый операнд должен иметь тип boolean.
Синтаксис:
выражение1 ? выражение2 : выражение3;
Операция вернет значение «выражение2» если результат
вычисления «выражения1» примет значение истина,
иначе вернет значение «выражения3».
50. ОПЕРАЦИЯ
ПРИСВАИВАНИЯ
Для сохранения в переменной значения литерала,
переменной или значения выражения используется
операция присваивания. Оператор присваивания имеет
самый низкий приоритет, поэтому в начале выполнятся
все операции в выражении и только потом вычисленное
значение передастся в переменную. Синтаксис:
переменная = выражение;
52. Обозначение Описание Пример
+ Унарный плюс, не меняет
значение операнда.
int i = -1; i = +i;
System.out.println(i);
Бинарный плюс, суммирует
операнды.
int i = -1; i = i + 3;
System.out.println(i);
- Унарный минус — меняет знак
операнда на противоположный.
int i = 1; i = -i;
System.out.println(i);
Бинарный минус — вычитает
правый операнд из левого.
int i = 3; i = i - 2;
System.out.println(i);
* Умножение операндов int i = 2; i = i * 2;
System.out.println(i);
/ Деление левого операнда на
правый.
int i = 4; i = i / 2;
System.out.println(i);
% Вычисление остатка от деления
левого операнда на правый.
int i = 3; i = i % 2;
System.out.println(i);
++ Бинарный оператор увеличения
значения переменной на 1.
Инкремент.
i++; заменяет
выражение i = i + 1;
Постфиксная версия.
Префиксная ++I;
-- Бинарный оператор уменьшения
значения переменной на 1.
Декремент.
i--; заменяет
выражение i = i - 1;