java весна 2013 лекция 1
TRANSCRIPT
![Page 1: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/1.jpg)
Углубленное программирование на JavaЛекция 1. «Введение»
Виталий Чибриков
![Page 2: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/2.jpg)
2
Программируем НЕ на языке, а при помощи языка
Результат вашей работы видят миллионы людей
Программирование и жизнь
Мой опыт: С++, С#, Java, PHP, HTML, SQL, JavaScript, Python, Shell, Perl
Почти 10 000 000 регистраций в «Аллоды Онлайн» по всему миру
Игра переведена на 14 языков
Аллоды Онлайн: С++, Java, С#, Shell, Python
Игру оперируют 10 компаний
![Page 3: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/3.jpg)
3
С. Макконнелл «Совершенный код»
П. Гудлиф «Ремесло программиста»
Книги
![Page 4: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/4.jpg)
4
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
![Page 5: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/5.jpg)
5
История Java
Java ― ОО язык программирования разработанный в 1995г.
Изначально ― платформа для программирования бытовых приборов
Компилляция в байт код и исполнение байт кода в виртуальной машине
Встроенный сборщик мусора
Платформа .Net от Microsoft осована на идеях Java
![Page 6: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/6.jpg)
6
JVM для кофемашиныJVM для стиральной
машины
Архитектурно независимый байт код
Приложение
Задумка Java платформы
![Page 7: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/7.jpg)
7
Написанно один раз – работает везде
Безопасность исполнения
Встроенный сборщик мусора
Ключевые идеи
Результат
Задачи и результат
+ «Переносимые» программисты
- Сборщик мусора «всегда» работает в ненужное время
- Программы все равно зависят от архитектуры
+ Сборщик мусора устраняет утечки памяти
![Page 8: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/8.jpg)
8
Постоянные улучшения и доработки
ОО язык высокого уровня с простым и понятным синтаксисом
Большое количество специалистов со знанием Java
Легкость перехода с С++
Большое количество библиотек
Прекрасная документация
Почему Java?
![Page 9: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/9.jpg)
9
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
![Page 10: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/10.jpg)
10
Углубленное значит «глубже чем»Примитивные типы, переполнение примитивных типов
Операторы
Преобразования примитивных типов
Ветвления и циклы
Объекты, классы, наследование, полиморфизм, инкапсуляция
Интерфейс, реализация интерфейса
Область видимости переменной, статические переменные
Стек, куча
private, protected, public
«Углубленное»
![Page 11: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/11.jpg)
11
Платформа 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. Автоматизация тестрования.
Исключение, обработка исключений
«Углубленное»
![Page 12: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/12.jpg)
12
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
![Page 13: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/13.jpg)
Напишем сервер для online игры
Весь курс построен вокруг практической работы
Теоретическая часть – общие знания по программированию
Программирование – теория выраженная на языке Java
Примеры реализации и разбор кода
Лекции
Практические занятия
Программирование
13
Сдача ДЗ – демонстрация работы приложения
Надоело писать код? Играем в то, что написали!
![Page 14: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/14.jpg)
14
ЛЕКЦИЯ №1. «ВВЕДЕНИЕ»
ЛЕКЦИЯ №2. «МНОГОПОТОЧНОСТЬ»
ЛЕКЦИЯ №3. «MESSAGE SYSTEM»
ЛЕКЦИЯ №4. «ИГРОВАЯ МЕХАНИКА»
ЛЕКЦИЯ №5. «ТЕСТИРОВАНИЕ И НАГРУЗКА»
ЛЕКЦИЯ №6. «I/O»
ЛЕКЦИЯ №7. «РЕСУРСНАЯ СИСТЕМА»
ЛЕКЦИЯ №8. «РАБОТА С БАЗАМИ ДАННЫХ»
ЛЕКЦИЯ №9. «ORM»
1
2
3
4
Road map
![Page 15: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/15.jpg)
15
Модули учебного сервера
utils
gameMechanics
base
messageSystem
frontend
main
dbService
resourceSystem
![Page 16: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/16.jpg)
16
Нет разделения на *.cpp и *.h файлы
Один файл – один класс
Только классы (class, interface, enum)
Имя файла должно совпадать с именем класса
Нет указателей, только ссылки
Все классы наследники от Object
Нет передачи константных ссылок в функции
Нет оператора delete, создание объекта только через new
Нет перегрузки операторов
Reflection – информация о классе в runtime
Класс может наследовать один базовый класс
Сравнение java и C++
![Page 17: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/17.jpg)
17
Анонимный тест
![Page 18: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/18.jpg)
18
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
![Page 19: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/19.jpg)
19
Обзор платформы Java
Запуск приложенийJava Runtime Environment (JRE)
Java Virtual Machine(JVM)
Class Libraries
Создание приложенийJava Development Kit (JDK)
JRE
Java compiler
IDE – в состав Java не входит
![Page 20: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/20.jpg)
20
Обзор платформы Java
JVM
Javac
Interpreter
Just-In-Time (JIT) compiler
Byte code verifier
Garbage collector (GC)
Превращает *.java в *.class
*.class можно собрать в *.jar (zip архив)
![Page 21: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/21.jpg)
21
Сборщик мусора
Garbage collector (GC)
Типы ссылок
Поиск ненужных объектов
Освобождение памяти
Strong references
Weak references
Soft references
Stack Heap
![Page 22: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/22.jpg)
22
Java editions
Java SE (Standard Edition)
Стандартная редакция
JVM + библиотека классов
Java EE (Enterprise Edition)
API + runtime environment services
Java SE
Спецификация
Java ME (Micro Edition)Мобильные телефоны, бытовые приборы
![Page 23: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/23.jpg)
23
Пакеты обычно собирают в *.jar файлы (zip архивы)
Класс может быть однозначно идетифицирован по полному имени
Классы в Java собирают в пакеты (packages)
packageName.directoryName.ClassName
Имена пакетов и директорий принято начинать с маленькой буквы
Имена классов: MySuperClassName
Имена функций: getMyVariable()
Имена переменных: myVariable
Пакеты не могут иметь циклических зависимостей
Наименования
![Page 24: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/24.jpg)
24
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
![Page 25: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/25.jpg)
25
java [ options ] class [ args... ]
java [ options ] -jar file.jar [ args... ] + Main class in manifest header
public static void main(String args[]){…}
options (наиболее используемые):
-classpath classpath путь к директории с классами приложения
-Xmsn стартовый размер Heap (например, -Xms256m) , default 2m
-Xmxn максимальный размер Heap (например, -Xmx1024m), default 64m
-Dproperty=value можно получить в коде - System.getProperty(“property”)
Запуск приложений
![Page 26: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/26.jpg)
26
Garbage collector
Memory
-Xmx, -Xms установка размера Heap
-Xss установка размера Stack
-X параметры поддержаны не во всех JVM (поддержаны в HotSpot)-XX параметры «not stable»
-XX:+UseConcMarkSweepGC – сборка мусора без пауз
Tuning java приложений
![Page 27: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/27.jpg)
27
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
![Page 28: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/28.jpg)
28
Настройка рабочего места
JDK
Eclipse
Java SE 6 Update 39 (JDK)
http://www.oracle.com/technetwork/java/javase/downloads/
«Читаете» лицензионое соглашение и соглашаетесь с ним
Скачиваете и устанавливаете пакет под вашу архитектуру
Eclipse IDE for Java Developers
http://www.eclipse.org/downloads/
Скачиваете и устанавливаете пакет под вашу архитектуру
![Page 29: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/29.jpg)
29
Настройка рабочего места
Jettyjetty-all-7.2.0.RC0.jar
servlet-api-2.5.jar
Полный путь к библиотекам приведен на http://tp.mail.ru/blog/201.html
Подключение: Project/Properties/Java Build Path/Libraries//Add external Jars
![Page 30: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/30.jpg)
30
Первое задание состоит из 3-х шагов
Домашнее задание
Hint: http://wiki.eclipse.org/Jetty/Tutorial/Jetty_HelloWorld
Шаг 1: Написать «Hello World!» — приложение можно запустить и оно выводит в лог - «Hello World!».
Шаг 2: Написать «Hello Server!» — приложение запускает jetty server (на localhost:8080). В браузе можно открыть страничку localhost:8080 и увидеть строку «Hello Server!».
Шаг 3: Изменить страницу, которую возвращает сервер так, чтобы она перегружала себя раз в секунду. Вынести создание страницы в отдельный класс (PageGenerator).
Hint: body onload='setInterval(function(){refresh()} function refresh(){location.reload(true);}
![Page 31: Java весна 2013 лекция 1](https://reader034.vdocuments.mx/reader034/viewer/2022042516/558fc7671a28ab7a4e8b4725/html5/thumbnails/31.jpg)
31
1. История и особенности языка Java
2. Платформа Java. Java Editions. GC, JVM, JDK, JRE. Bytecode
3. Правила наименований пакетов, классов, переменных и методов. Запуск java приложений
Билеты