Java весна 2014 лекция 1

Preview:

Citation preview

Углубленное программирование

на 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

Спасибо за внимание

Виталий Чибриковchibrikov@corp.mail.ru