- •Основы Java
- •История языка Java
- •История языка Java
- •История языка Java
- •История языка Java
- •История языка Java
- •История языка Java
- •История языка Java
- •История языка Java
- •Среда разработки и исполнения Java
- •Среда разработки и исполнения Java
- •Среда разработки и исполнения Java
- •Общая структура простой программы на Java
- •Общая структура простой программы на Java
- •Общая структура простой программы на Java
- •Общая структура простой программы на Java
- •Автодокументирование в Java
- •Автодокументирование в Java
- •Автодокументирование в Java
- •Автодокументирование в Java
- •Образец оформления кода по JCC
- •Образец оформления кода по JCC
- •Автодокументирование в Java
- •Введение в обработку ошибок (исключений)
- •Введение в обработку ошибок (исключений)
- •Введение в обработку ошибок (исключений)
- •Введение в обработку ошибок (исключений)
- •Введение в обработку ошибок (исключений)
- •Введение в обработку ошибок (исключений)
- •Введение в обработку ошибок (исключений)
- •Введение в обработку ошибок (исключений)
- •Типы данных в Java. Простые и ссылочные типы
- •Типы данных в Java. Простые типы
Основы Java |
МИЭТ, 2019 |
Лекция 1.
История языка.
Среда разработки и исполнения Java Общая структура простой программы на Java Автодокументирование: JCC и javadoc Введение в обработку ошибок (исключений)
История языка Java |
Лекция 1 |
Изменение отношения стоимости «железа» и «софта»
История языка Java |
Лекция 1 |
Появление любого языка это попытка решить назревшую проблему, которую не удавалось решить другими средствами (языками)
1972 г. - C. 1985 г. - C++. 1995 г. - Java
Начало разработки Java — 1990 г., компания Sun Microsystems, рабочее название Oak
Первоначальное назначение — язык для встраиваемых систем (аппаратуры с микро Процессорным управлением).
Проблема, требующая решения — в связи с многообразием микропроцессоров, неудобно было использовать язык C++ т. к. под каждый микропроцессор потребовалось бы написать свой компилятор.
Идея решения проблемы — Создать специальную более-менее универсальную прослойку между кодом программы и платформой исполнения (процессор + ОС) под названием Виртуальная Машина (VM). Тогда программист пишет код один раз, который преобразуется в промежуточный байт-код, который одинаково исполняется везде, где установлена эта Виртуальная Машина.
История языка Java |
Лекция 1 |
Р а з н и ц а в и с п о л н е н и и J a v a и С + +
С + +
К о д п р о г р а м м ы
. . .
. . .
К о м п и л я ц и я
О б ъ е к т н ы й к о д д л я к о н к р е т н о г о
п р о ц е с с о р а и О С
И с п о л н е н и е
* . с p p
c l . . . * . с p p
* . e x e
J a v a
К о д п р о г р а м м ы
. . .
. . .
К о м п и л я ц и я
Б а й т - к о д д л я в и р т у а л ь н о й м а ш и н ы J a v a
* . ja v a
ja v a c . . . * . ja v a
* . c la s s
И н т е р п р е т а ц и я |
ja v a * . c la s s |
О б ъ е к т н ы й к о д |
J V M |
д л я к о н к р е т н о г о |
|
п р о ц е с с о р а и О С |
|
И с п о л н е н и е
История языка Java |
Лекция 1 |
Преимущества и недостатки решения с VM
Преимущества
Программы в байт-коде переносимы между платформами, что ускоряет разработку программ
Недостатки
Требуется написать VM для каждой платформы или ОС (=~ написанию компилятора)
Медленная работа программы в VM по сравнению с C/C++
Дополнительные технологии, изначально вошедшие в Java за счет накопленного опыта и новых технологий
Многопоточность в составе языка
«Истинное ООП»
Пакеты, интерфейсы, автодокументирование, сборка мусора
Повышенная защищенность пользователя ПО
(запрещен прямой доступ к адресам памяти)
История языка Java |
Лекция 1 |
Борьба за скорость в JVM
Исполнение кода через интерпретацию медленнее в 10-20 раз (для Java 1.0 1996 г.) по сравнению с аналогичной откомпилированной программой на C или C++. Для преодоления этого ограничения были созданы два инструмента:
1.Just-in-time компиляция — JIT.
1997 г. JDK 1.1.
JRE компилирует программу (целиком или частями) в машинный код, который затем исполняется с «родной» скоростью процессора.
2.Адаптивный оптимизирующий JIT-компилятор - HotSpot.
2000 г. JDK 1.3.
Встроенный профилировщик выделяет ресурсоемкие участки кода (в том числе зависимые от входных данных) и компилирует их на лету в машинный код, который затем исполняется при вызове этих участков.
Вобоих случаях полная компиляция кода программы в машинный не выполняется
Врезультате этих решений Java8 медленнее C++ в 1.5-2 раза.
(по данным тестов на примере матричных вычислений)
История языка Java |
Лекция 1 |
Основные этапы развития языка Java c 1990 по 2019 г.
Год |
Событие |
Версия |
Основные улучшения |
|
|
|
|
1990 |
Старт разработки проекта Oak |
|
|
|
|
|
|
1994 |
Проекту присвоено имя Java |
|
|
|
|
|
|
1996 |
Первый релиз для разработчиков |
JDK 1.0 |
|
|
|
|
|
1997 |
|
JDK 1.1 |
JIT — компиляция, профилирование |
|
|
|
|
1998 |
|
J2SE 1.2 |
|
|
|
|
|
2000 |
|
J2SE 1.3 |
HotSpot — адаптивный JIT |
|
|
|
|
2002 |
|
J2SE 1.4 |
|
|
|
|
|
2004 |
|
J2SE 5.0 |
Обобщения (~шаблоны C++), foreach, javadoc |
|
|
|
|
2006 |
|
Java SE6 |
Java HTTP Server, Скорость вычислений +70%, скорость операций |
|
|
|
ввода-вывода x2 |
2010 |
Oracle купила Sun Mycrosystems |
|
|
|
|
|
|
2011 |
|
Java SE7 |
Усовершенствование механизма исключений |
|
|
|
|
2014 |
|
Java SE8 |
JavaFX в ядре, лямбда-выражения |
|
|
|
|
2017 |
|
Java SE9 |
Модули на основе Jigsaw, пользовательская JDK |
|
|
|
|
2018 |
Выход на режим — версия в 6 мес |
Java SE10 |
|
|
|
|
|
|
Отказ от JRE |
Java SE11 |
Новый HTTP клиент с поддержкой HTTP/2 |
|
|
|
|
2019 |
Платная JDK для конечных |
Java SE12 |
Усовершенствование сборщика мусора |
|
пользователей |
|
|
|
|
|
|
История языка Java |
Лекция 1 |
Источнки информации по Java
Официальные от Oracle (Sun)
Вся документация от Oracle (версии от 7 до 12) https://docs.oracle.com/en/java/javase/index.html
Структура компонентов платформы JavaSE (удобная визуализация) https://docs.oracle.com/javase/8/docs/
Спецификация языка Java http://docs.oracle.com/javase/specs/jls/se8/html/index.html http://docs.oracle.com/javase/specs/jls/se12/html/index.html
Все стандартные классы Java SE https://docs.oracle.com/javase/8/docs/api/overview-summary.html https://docs.oracle.com/en/java/javase/12/docs/api/index.html
Прочие англоязычные
http://beginnersbook.com |
— разные языки в том числе Java |
http://javarevisited.blogspot.ru |
— описаны сложные вещи |
http://www.java-examples.com |
— примеры |
http://www.java2s.com/Tutorial/ |
— примеры, сгруппированные по темам и объектам |
http://www.onjava.com |
— крупный каталог статей и новостей |
http://www.javaspecialists.eu |
— сборник заметок по практическим ситуациям |
http://www.theserverside.com/ |
— статьи и новости для опытных пользователей |
История языка Java |
Лекция 1 |
Русскоязычные источнки информации по Java
Книги
Кей С. Хорстманн
Java. Библиотека профессионала. Том 1. Основы.
Java. Библиотека профессионала. Том 2. Расширенные средства программирования.
Герберт Шилдт
Java *. Руководство для начинающих.
Брюс Эккель
Философия Java.
Видеокурсы
https://www.lektorium.tv. Алексей Владыкин (2012, 2014), Георгий Корнеев (2013); https://www.youtube.com/playlist?list=PLB0276A0A62BDEF06. Юрий Ткач (2014)
Интернет-ресурсы
Справочник |
— http://www.darkraha.com/rus/java/ |
Блог статей |
— http://info.javarush.ru |
Форум по программированию на Java — http://javatalks.ru |
|
Java + Android, справочник |
— http://metanit.com/java/android/ |
Java + Android, блог |
— http://prologistic.com.ua |
Форум по программированию |
— http://citforum.ru |
Общие вопросы |
— https://habrahabr.ru |
Среда разработки и исполнения Java |
Лекция 1 |
Среда разработки и исполнения Java
1. Загрузить и установить JVM в рамках пакета программ JRE
С 11-ой версии Java JRE отдельно не поставляется. Для выполнения программ нужно устанавливать JDK. Для распространения программ без полной установки JDK с 9-ой версии Java можно использовать утилиту jlink.
2. Установить комплект разработчика - Java Development Kit (JDK)
JDK можно скачать с сайта Oracle по ссылке: http://www.oracle.com/technetwork/java/javase/downloads/.Там-же можно скачать документацию.
С 16 апреля 2019 для использования JVM в составе JDK, конечный пользователь должен оплатить годовую подписку стоимостью от 1000 до 78000 руб в год. Для разработчиков JDK -бесплатен. Выпускаемая Oracle OpenJDK (openjdk.java.net)
почти аналогичная JDK, но имеющая более короткие сроки поддержки, является бесплатной. На базе OpenJDK компанией BellSoft (https://bell-sw.com) собираются бесплатные как для разработчиков, так и для потребителей (клиентов) актуальные релизы Java – Liberica JDK
3. Написать код программы
Исходный код программы на Java, обычные текстовый файл с расширением *.java
4. создать байт-код для JVM
Исходный код компилируется в байт-код командой javac *.java и сохраняется в виде файлов с расширением *.class.
5. Запустить программу на выполнение с помощью команды java *.class