Лекция 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:
- Oracle JDK (aka Java SE, расположена на <java.com>)
- Open JDK (расположена на <openjdk.java.net>).
- OpenJDK — это эталонная реализация JDK, Oracle JDK базируется на OpenJDK.
- Раньше были различия между OpenJDK и Oracle JDK, теперь их нет.
- OpenJDK полностью бесплатная и распространяется под GPL.
- Oracle JDK раньше была бесплатной, теперь платная.
- Oracle JDK отличается от OpenJDK только наличием платной поддержки.
Среды разработки (IDE):
- Netbeans
- Eclipse
- Intellij Idea
- JDK
- Intellij Idea
- Scene Builder
- Maven (Gradle)
- архитектурная независимость и переносимость кода
- полная объектная ориентированность
- устойчивость (надежность) кода
- безопасность Java-программ
- механизм поддержки многопоточности
- возможность создания приложений и апплетов
Основная структурная единица программы – класс,
весь код Java-программы должен находиться внутри
одного или нескольких классов.
Надежность кода¶- отсутствие множественного наследования
- запрет перегрузки операторов
- отсутствие адресной арифметики
- строгая типизация
- технология «сборки мусора» (garbage collection)
- встроенная обработка исключений
- Поддержка многопоточности. Имеется встроенная поддержка параллельно
- выполняющихся потоков (класс Thread)
- Безопасность. Код выполняется внутри изолированного виртуального компьютера.
- Встроенные коллекции. Удобны для работы со сложно организованными данными.
- Удобство разработки GUI. Библиотеки оконного интерфейса входят в состав стандартного набора.
- Web. Программы Java можно встраивать в веб-страницы.
есть два основных окружения:
- JRE – Java Runtime Environment. Для выполнения готовых Java приложений
- JDK (JSDK, SDK) - Java (Software) Development Kit. Для разработки Java приложений. Уже включает в себя JRE
Текст всей программы состоит из описания классов.
В отличие от С++ глобального кода не существует.
Описания классов группируются в пакеты. Все поля и методы класса могут быть
- статическими - элемент принадлежит классу;
- обычными - элемент принадлежит объекту;
Для работы со статическими членами не требуется выделять память под объект
Пример программы¶Программа печати приветствия (“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 могут быть только методами классов.
Могут быть статическими или нестатическими.