Java весна 2014 лекция 1
-
Upload
technopark -
Category
Education
-
view
370 -
download
1
Transcript of Java весна 2014 лекция 1
![Page 1: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/1.jpg)
Углубленное программирование
на JavaЛекция 1
«Введение»
Виталий Чибриков
![Page 2: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/2.jpg)
Java для всех!
2
Инструменты каждый пишет сам
100 баллов = отлично = сданы все инструменты
модуль = лекция + лекция и семинар + РК
Ревью кода на github
Последние 4 занятия – разработка игры, по желанию
Углубленное программирование на Java
Особенности курса
![Page 3: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/3.jpg)
Skype tully_at_work «Кружок любителей Java»
Освой Java за 24 часа
3
SCORM http://www.intuit.ru/studies/courses/3711/953/info
Видео https://tech-mail.ru/learn
Дополнительные материалы и ресурсы
![Page 4: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/4.jpg)
План лекции
4
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. abstract, interface
6. Object
7. Generics
![Page 5: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/5.jpg)
История Java
Java ― ОО язык программирования разработанный в 1995г.
Изначально ― платформа для программирования бытовых приборов
Компилляция в байт код и исполнение байт кода в виртуальной машине
Встроенный сборщик мусора
Платформа .Net от Microsoft осована на идеях Java
5
![Page 6: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/6.jpg)
История успеха
1995 - 2000 ― скрипты для браузера
2000 - 2005 ― приложения для телефонов
6
2005 - 2014 ― сервера
1995 - 2014 ― приложения для бытовых приборов
![Page 7: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/7.jpg)
Cross-platform
7
Компиллятор ― поставляем исходники, перед стартом сибираем
Интерпретатор ― поставляем скрипты, не эффективное выполнение
«Классические» варианты решения
Собираем в byte-code, интерпретируем «на месте»
Гибридное решение
![Page 8: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/8.jpg)
JVM для Windows JVM для Linux
Архитектурно независимый байт код
Приложение
Задумка Java платформы
8
![Page 9: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/9.jpg)
Написанно один раз – работает везде
Встроенный сборщик мусора
Безопасность исполнения
Ключевые идеи
Результат
Задачи и результат
+ «Переносимые» программисты
- Программы все равно зависят от архитектуры
+ Сборщик мусора устраняет утечки памяти
- Сборщик мусора «всегда» работает в ненужное время
9
![Page 10: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/10.jpg)
Постоянные улучшения и доработки
ОО язык высокого уровня с простым и понятным синтаксисом
Большое количество специалистов со знанием Java
Легкость перехода с С++
Большое количество библиотек
Прекрасная документация
Почему Java?
10
![Page 11: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/11.jpg)
План лекции
11
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. abstract, interface
6. Object
7. Generics
![Page 12: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/12.jpg)
Углубленное значит «глубже чем»
«Углубленное»
12
Примитивные типы, переполнение примитивных типов
Объекты, классы, наследование, полиморфизм, инкапсуляция
Область видимости переменной, статические переменные
Ветвления и циклы
Преобразования примитивных типов
Интерфейс, реализация интерфейса
Операторы
Стек, куча
private, protected, public
![Page 13: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/13.jpg)
Платформа Java. Java editions. Java Virtual Machine.
Контейнеры и алгоритмы (Hash, Map, Set, List, Array), Generics.
Многопоточность. Thread Object. Concurrency.
Message System. Address. Abonent.
Frontend. Game Mechanics.
Serialization. I/O. Stream.
Reflection. Annotation.
JDBC. DataSet. DAO. Hibernate.
QA. Tests. Автоматизация тестрования.
Исключение, обработка исключений
«Углубленное»
13
![Page 14: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/14.jpg)
План лекции
14
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. abstract, interface
6. Object
7. Generics
![Page 15: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/15.jpg)
Модули учебного сервера
utils
gameMechanics
base
messageSystem
frontend
main
resourceSystem
1.
1.
3.
*.
2. 3.
4.
dbService2.
15
![Page 16: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/16.jpg)
План лекции
16
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. abstract, interface
6. Object
7. Generics
![Page 17: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/17.jpg)
Обзор платформы Java
Java Runtime Environment (JRE)
Java Virtual Machine(JVM)
Class Libraries
Запуск приложений
Java Development Kit (JDK)
JRE
Java compiler
IDE ― в состав Java не входит
Создание приложений
17
![Page 18: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/18.jpg)
Обзор платформы Java
Interpreter
Just-In-Time (JIT) compiler
Byte code verifier
Garbage collector (GC)
JVM
Превращает *.java в *.class
*.class можно собрать в *.jar (zip архив)
Javac
18
![Page 19: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/19.jpg)
Сборщик мусора
Stack HeapПоиск ненужных объектов
Освобождение памяти
Garbage collector (GC)
19
![Page 20: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/20.jpg)
Java editions
Стандартная редакция
JVM + библиотека классов
Java SE (Standard Edition)
Java SE
Спецификация
API + runtime environment services
Java EE (Enterprise Edition)
Мобильные телефоны, бытовые приборы
Java ME (Micro Edition)
20
![Page 21: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/21.jpg)
Класс может быть однозначно идетифицирован по полному имени packageName.directoryName.ClassName
Классы в Java собирают в пакеты (packages)
Пакеты обычно собирают в *.jar файлы (zip архивы)
Имена пакетов и директорий принято начинать с маленькой буквы
Имена классов: MySuperClassName
Имена функций: getMyVariable()
Имена переменных: myVariable
Пакеты не могут иметь циклических зависимостей
Наименования
21
![Page 22: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/22.jpg)
Анонимный тест
22
![Page 23: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/23.jpg)
План лекции
23
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. abstract, interface
6. Object
7. Generics
![Page 24: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/24.jpg)
Наследование в Java
Animal
<<abstract>>
- int weight
+ boolean isDangerous()
# int getWeight()
boolean isPredator()
Jumpable
<<interface>>
boolean canJump()
24
![Page 25: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/25.jpg)
Наследование в Java
Aminal
<<abstract>>
Jumpable
<<interface>>
Elefant
25
![Page 26: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/26.jpg)
Наследование в Java
ошибка
26
![Page 27: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/27.jpg)
AnimalMovable
<<interface>>
Elefant
Jumpable
<<interface>>
27
![Page 28: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/28.jpg)
План лекции
28
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. abstract, interface
6. Object
7. Generics
![Page 29: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/29.jpg)
java.lang.Class
29
![Page 30: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/30.jpg)
java.lang.Class
30
― объект, который представляет в runtime данные о классе объектаClass
Основные методы класса Class
static Class<T> forName(String className)
String getCanonicalName()
Fields[] getField(String name)
Class[] getInterfaces()
Method[] getMethods()
Constructor[] getConstructors()
![Page 31: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/31.jpg)
Основные методы класса Object
class Object
31
― класс от которого унаследованны все остальные классыclass Object
public Class<?> getClass()
public String toString()
public boolean equals(Object obj)
public int hashCode()
protected Object clone()
![Page 32: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/32.jpg)
Обертки простых типов
32
boolean, byte, char, short, int, float, long, double
Примитивные типы:
мало памяти
простая структура
Stack
Boolean, Byte, Character, Short, Integer, Float, Long, Double
Обертки простых типов:
наследники от Object
сложные типы
Heap
![Page 33: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/33.jpg)
Простые типы
33
bits type type
8 byte boolean
16 short char
32 int float
64 long double
![Page 34: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/34.jpg)
План лекции
34
1. Java
2. Углубленное
4. Платформа Java
3. Программирование
5. abstract, interface
6. Object
7. Generics
![Page 35: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/35.jpg)
generics (templates)
Generic programming
N алгоритмов, M типов данных. N * M реализаций?
Алгоритмы работают с шаблонами => N реализаций
Универсальные алгоритмы
Примеры синтаксиса
― аглоритмы для типов, которые будут указыны позже
35
![Page 36: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/36.jpg)
generics vs inheritance
принцип «разновидность чего-то» (is a)
class Ветеринар<T extends Животное> extends Человек
T: Слон, Собака, Мышь
принцип «специализируется на» (of something)
В случае Т: Человек, получаем ветеринара по людям – врача
36
Пример
Шаблон
Наследование
![Page 37: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/37.jpg)
generics (templates)
37
Типизация значений
![Page 38: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/38.jpg)
Класс с шаблонным типом
38
![Page 39: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/39.jpg)
Метод с шаблонным типом
39
![Page 40: Java весна 2014 лекция 1](https://reader033.fdocuments.net/reader033/viewer/2022052601/55905b961a28ab4e2e8b45ef/html5/thumbnails/40.jpg)
class LongId<T>
40