Программирование на Java. Введение

Содержание

Слайд 2

План лекции Что такое Java? История и эволюция Java Особенности Java Инструменты разработчика

План лекции

Что такое Java?
История и эволюция Java
Особенности Java
Инструменты разработчика

Слайд 3

Почему стоит изучать Java? 1. Это один из самых востребованных языков

Почему стоит изучать Java?

1. Это один из самых востребованных языков программирования.

Занимает верхние строчки индекса TIOBE (см. http://www.tiobe.com/index.php/tiobe_index )
Слайд 4

Почему стоит изучать Java?

Почему стоит изучать Java?

Слайд 5

Почему стоит изучать Java? 3. На Java пишут: Высоконагруженные системы (Одноклассники)

Почему стоит изучать Java?

3. На Java пишут:
Высоконагруженные системы (Одноклассники)
Корпоративные приложения (Confluence,

JIRA)
Настольные приложения (Minecraft)
Программы и игры для телефонов, в том числе под Android
Апплеты для смарт-карт
Интерактивный контент для Blu-ray
4. Язык развивается и совершенствуется
5. Java – это
Язык программирования;
Обширная стандартная библиотека;
Инструменты разработки (сборка, тестирование);
Методология ООП;
Платформа для альтернативных языков (Clojure, Groovy, Jruby, Kotlin, Scala)
Слайд 6

История и эволюция Исторические предпосылки Конец 1980 гг. – начало 1990

История и эволюция

Исторические предпосылки
Конец 1980 гг. – начало 1990 гг. основное

средство ОО программирования – С++
Поздняя стандартизация
Сильная зависимость от реализации и платформы, отсутствие стандарта на бинарное представление
Достаточно высокая сложность
Отсутствие стандартной библиотеки, содержащей средства сетевого и меж процессного взаимодействия и построения графического интерфейса
Классическая модель построения систем – компиляция, связывание, построение образа процесса
Слайд 7

История и эволюция 1991 внутренний проект Sun Microsystems по созданию платформы

История и эволюция

1991 внутренний проект Sun Microsystems по созданию платформы для
разработки

встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak (дуб)
Язык программирования Oak (1991) James Gosling, Patric Naughton, Chris Warth, Ed Frank, Mike Sheridan, Sun Microsystems, Inc
Разработка – 18 месяцев (первый компилятор – осень 1991г.)
Платформенная независимость, переносимость, виртуальная машина

Первоначальный акцент на «бытовую электронику», микроконтроллеры
1992 первое демонстрационное устройство на новой платформе — PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
Момент совпал с бурным развитием Internet, WWW
1993г. – идея использования в сети Internet

Слайд 8

История и эволюция 1994 фокус на разработке интерактивных приложений (апплетов) для

История и эволюция

1994 фокус на разработке интерактивных приложений (апплетов) для
веб-страниц;
язык переименован

в Java
Java Development Kit 1.0 ( 26 августа 1996 года)
1997 JDK 1.1, JIT-компиляция
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 5.0 (сентябрь 2004), изменение нумерации, перечислимые типы, аннотации, средства обобщенного программирования, foreach
Слайд 9

История и эволюция 2006 Java SE 6 (11 декабря 2006), уход

История и эволюция

2006 Java SE 6 (11 декабря 2006), уход от

понятия «Java 2» добавлены коллекции, JConsole (графический мониторинг JVM, стала официально поддерживаемой утилитой), Java HTTP Server (позволяет создать полноценный HTTP сервер, с минимально необходимыми функциональными свойствами)
2011 Java SE 7 (28 июля 2011), Поддержка динамически-типизированных языков, Поддержка Unicode 6.0, Изменение синтаксиса языка Java (Project Coin)
2014 Java SE 8 (19 марта 2014), Потоки (stream) для работы с коллекциями, Полноценная поддержка лямбда-выражений
Слайд 10

Особенности Традиционный подход: исходный код → машинный код → процессор программа

Особенности

Традиционный подход:
исходный код → машинный код → процессор
программа работает только на

той платформе, под которую она скомпилирована
Подход Java:
исходный код → байткод виртуальной машины
→ виртуальная машина → процессор
программа работает на любой платформе, где есть виртуальная машина Java
“Write once, run anywhere!”
Слайд 11

Особенности Как быстро работает виртуальная машина? Интерпретация байткода на порядок (10–20

Особенности

Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее

исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
а также HotSpot
адаптивный оптимизирующий JIT-компилятор
используется с JDK 1.3
в результате Java 8 всего в 1.5–2 раза медленнее C,
а в некоторых тестах не хуже или даже быстрее!
Слайд 12

Особенности Сборка мусора Подход C/C++: выделил память → поработал → освободил

Особенности

Сборка мусора
Подход C/C++:
выделил память → поработал → освободил память
всё управление памятью

в руках программиста
Подход Java:
выделил память → поработал → молодец
виртуальная машина считает ссылки на каждый объект
освобождает память, когда ссылок больше нет
Слайд 13

Особенности Безопасность Верификация байткода некорректный байткод будет отвергнут перед исполнением Автоматическое

Особенности

Безопасность
Верификация байткода
некорректный байткод будет отвергнут перед исполнением
Автоматическое управление памятью
нет арифметики указателей
невозможно

испортить память
Встроенный механизм управления правами
можно запустить код в «песочнице» без доступа к файлам, к сети, без возможности создавать потоки и т. п.
Слайд 14

Особенности Многопоточное и распределенное программирование Многопоточность встроенная поддержка потоков богатая библиотека

Особенности

Многопоточное и распределенное программирование
Многопоточность
встроенная поддержка потоков
богатая библиотека примитивов синхронизации
Распределенность
встроенные сетевые возможности
пересылка

данных и объектов по сети
работа с удаленными объектами (RMI)
Слайд 15

Особенности Простота Безопасность Переносимость, независимость от архитектуры ООП Многопоточность Высокая производительность

Особенности

Простота
Безопасность
Переносимость, независимость от архитектуры
ООП
Многопоточность
Высокая производительность
Распределенность
Динамичность (reflection)
Интерпретируемость (до версии 1.3)

Слайд 16

Особенности Простота Безопасность Переносимость, независимость от архитектуры ООП Многопоточность Высокая производительность Распределенность

Особенности

Простота
Безопасность
Переносимость, независимость от архитектуры
ООП
Многопоточность
Высокая производительность
Распределенность

Слайд 17

Среды разработки Eclipse (IBM, Eclipse Foundation, Бесплатная среда с открытым исходным

Среды разработки

Eclipse (IBM, Eclipse Foundation, Бесплатная среда с открытым исходным кодом.

Может быть свободно загружена с сайта ttp://www.eclipse.org/. Является основой (платформой) для многих коммерческих сред разработки)
IntelliJ IDEA (JetBrain, Коммерческая среда. Очень популярна в западных странах. Пробная версия может быть свободно загружена с сайта http://www.jetbrains.com/idea/.)
NetBeans (Sun, netbeans.org, Бесплатная среда с открытым исходным кодом. Может быть свободно загружена с сайта http://www.netbeans.org/.)
Слайд 18

Среды разработки Jbuilder (Borland, CodeGear, Бесплатная редакция и пробные версии коммерческих

Среды разработки

Jbuilder (Borland, CodeGear, Бесплатная редакция и пробные версии коммерческих могут

быть свободно загружены с сайта http://www.codegear.com/.)
Jdeveloper (Oracle, Бесплатная среда, ориентированная на работу с базами данных Oracle на основе технологий Java EE, но может использоваться как универсальная среда разработки для Java. Может быть свободно загружена с сайта http://oss.oracle.com/jdeveloper.html.)
Подсветка синтаксиса, Автодополнение, гиперссылки, Рефакторинг, Интерактивный отладчик
Слайд 19

Среды разработки Java Runtime Environment (JRE) виртуальная машина и стандартная библиотека

Среды разработки

Java Runtime Environment (JRE)
виртуальная машина и стандартная библиотека классов для

запуска скомпилированных программ
Java Development Kit (JDK)
набор инструментов для разработчиков, включает в себя JRE
Слайд 20

Среды разработки Имеются три типа JDK: Java ME — комплект Java

Среды разработки

Имеются три типа JDK:
Java ME — комплект Java

Micro Edition, предназначенный для программирова-
ния "тонких аппаратных клиентов";
Java SE — комплект Java Standard Edition, предназначенный для программирова-
ния обычных компьютеров;
Java EE — комплект Java Enterprise Edition, предназначенный для написания серверного программного обеспечения.
Слайд 21

Среды разработки Инструментальные средства разработки JDK:

Среды разработки

Инструментальные средства разработки JDK:

Слайд 22

Среды разработки

Среды разработки