. Лекция 01. Основы языка и технологии Java¶
Лекция 01. Основы языка и технологии Java¶

Лекция 01. Основы языка и технологии Java¶

В рамках технологии Java можно использовать следующие языки:

  • Java
  • Clojure — функциональный язык, диалект Lisp;
  • Groovy — сценарный язык;
  • Kotlin — объектно-ориентированный язык для индустриальной разработки
  • Scala — объектно-ориентированный и функциональный язык;
  • Ceylon — объектно-ориентированный язык со строгой статической типизацией;
  • JRuby — реализация Ruby;
  • Jython — реализация Python;
  • Nashorn — реализация JavaScript.
История¶
  • Язык Java разрабатывался в 1991-1995 в компании Sun
  • Изначально язык разрабатывался как замена С++

Главная причина недовольства С++

Необходимо перекомпилировать, а зачастую и переписывать код под каждую новую архитектуру микропроцеcсора, операционную систему

Сборка и выполнение программы на С++¶ Сборка и выполнение программ на JAVA¶ Сборка и выполнение JAVA¶ История выпусков¶
  • Java 1 - 1996. Начальный релиз.
  • Java 2 - 1998. Swing, коллекции, Java2D.
  • Java 3 - 2000. JavaSound, JNDI
  • Java 4 - 2002. Регулярные выражения, xml, работа с изображениями.
  • Java 5 - 2004. Enum, аннотации, generics.
  • Java 6 - 2006. Улучшение производительности
  • Java 7 - 2011. Новая JVM, JavaFX.
  • Java 8 - 2014. Lambda-выражения и др. поддержка ФП.
История_выпусков¶
  • Java 9 - сен 2017. Модульная система, jshell, List.of,Map.of, Set.of.
  • Java 10 - мар 2018. Вывод типов локальных переменных (var a).
  • Java 11 - сен 2018. Вывод типов в lambda, пропуск компиляции однофайлового приложения.
  • Java 12 - мар 2019. Новая форма switch.
  • Java 13 - сен 2019. Текстовые блоки.
  • Java 14 - coming soon.
Особенности лицензирования¶

Компания Oracle собирает и публикует две версии JDK:

  1. Oracle JDK (aka Java SE, расположена на <java.com>)
  2. Open JDK (расположена на <openjdk.java.net>).
  • OpenJDK — это эталонная реализация JDK, Oracle JDK базируется на OpenJDK.
  • Раньше были различия между OpenJDK и Oracle JDK, теперь их нет.
  • OpenJDK полностью бесплатная и распространяется под GPL.
  • Oracle JDK раньше была бесплатной, теперь платная.
  • Oracle JDK отличается от OpenJDK только наличием платной поддержки.
Программное обеспечение¶

Среды разработки (IDE):

  1. Netbeans
  2. Eclipse
  3. Intellij Idea
  • JDK
  • Intellij Idea
  • Scene Builder
  • Maven (Gradle)
Особенности¶ Ключевые особенности языка Java¶
  • архитектурная независимость и переносимость кода
  • полная объектная ориентированность
  • устойчивость (надежность) кода
  • безопасность Java-программ
  • механизм поддержки многопоточности
  • возможность создания приложений и апплетов
Важность классов¶

Основная структурная единица программы – класс,

весь код Java-программы должен находиться внутри

одного или нескольких классов.

Надежность кода¶
  • отсутствие множественного наследования
  • запрет перегрузки операторов
  • отсутствие адресной арифметики
  • строгая типизация
  • технология «сборки мусора» (garbage collection)
  • встроенная обработка исключений
Особенности¶
  • Поддержка многопоточности. Имеется встроенная поддержка параллельно
  • выполняющихся потоков (класс Thread)
  • Безопасность. Код выполняется внутри изолированного виртуального компьютера.
  • Встроенные коллекции. Удобны для работы со сложно организованными данными.
  • Удобство разработки GUI. Библиотеки оконного интерфейса входят в состав стандартного набора.
  • Web. Программы Java можно встраивать в веб-страницы.
Окружения¶

есть два основных окружения:

  • JREJava Runtime Environment. Для выполнения готовых Java приложений
  • JDK (JSDK, SDK) - Java (Software) Development Kit. Для разработки Java приложений. Уже включает в себя JRE
Классы и программа¶

Текст всей программы состоит из описания классов.

В отличие от С++ глобального кода не существует.

Описания классов группируются в пакеты. Все поля и методы класса могут быть

  1. статическими - элемент принадлежит классу;
  2. обычными - элемент принадлежит объекту;

Для работы со статическими членами не требуется выделять память под объект

Пример программы¶

Программа печати приветствия (“Hello World!”)

Построение и запуск программы¶
  • Текст программы помещается в файл HelloWorld.java.
  • Компиляция из командной строки осуществляется командой: javac HelloWorld.java
  • В результате компиляции появляется файл с байт-кодом HelloWorld.class.
  • Запуск программы на выполнение: java HelloWorld (без расширения!)
Ключевые слова¶

В языке Java 50 ключевых слов, которых нужно избегать при выборе имен для

идентификаторов и объектов:

Зарезервированные литералы: true,false,null

const,goto зарезервированы, но не используются.

Данные¶

Рассмотрим встроенные типы языка Java, которые используются при объявлении переменных:

В языке Java нет беззнаковых типов данных

Встроенные типы¶ Целочисленные типы¶ Имя типа Ширина Диапазон byte 8 -128 … 127 short 16 -32 768 … 32 767 int 32 -2 147 483 648 … 2 147 483 647 long 64 -9 223 372 036 854 775 808 … 9 223 372 036 854 775 807 Вещественные типы¶ Имя типа Ширина Диапазон float 32 3.4е-038 … 3.4е+038 double 64 1.7е-308 … 1.7е+308 Символьный тип¶ Имя типа Ширина Диапазон char 16 0 … 65535 Логический тип¶

boolean

Принимает два значения: true и false.

Строки¶

Строковый тип String является ссылочным типом, но работает как простой:

Строки String являются константами!

Операции равенства строк:

Константы¶ Типы констант¶
  • целочисленные: 1 2 3 3453 -123 0x55 123L
  • с плавающей точкой: 3.14159 314159E-5 .45f
  • булевские: true false
  • символьные: ‘a’
  • строковые: “hello”
Целочисленные константы¶

Целочисленные константы можно задавать в разных системах счисления

Ключевое слово final¶

Ключевое слово final применяется для фиксации значения переменной

Работа с двоичным представлением¶ Преобразования типов¶ Преобразование типов¶ Массивы¶

Многомерные и ступенчатые массивы:

Работа с массивами:

У каждого массива есть поле для хранения количества элементов:

Ссылки и копии для массивов¶

Пример с ссылкой на массив:

А вот пример с копированием:

Сортировка¶

Пример с сортировкой:

Операторы и операции¶

Операторы ветвления и цикла совпадают с аналогичными в С/С++:

Можно использовать break,continue,return

Оператора goto нет!

Проверяемые выражения в заголовках операторов должны иметь логический тип (а не целый) Операция ++ может применяться к вещественным типам

Функции¶

Функции в java могут быть только методами классов.

Могут быть статическими или нестатическими.

📎📎📎📎📎📎📎📎📎📎