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