Upload
technopark
View
305
Download
0
Embed Size (px)
Citation preview
Углубленное программирование на JavaЛекция 1. «Введение»
Виталий Чибриков
2
Программируем НЕ на языке, а при помощи языка
Результат вашей работы видят миллионы людей
Программирование и жизнь
Мой опыт: С++, С#, Java, PHP, HTML, SQL, JavaScript, Python, Shell, Perl
Почти 10 000 000 регистраций в «Аллоды Онлайн» по всему миру
Игра переведена на 14 языков
Аллоды Онлайн: С++, Java, С#, Shell, Python
Игру оперируют 10 компаний
3
С. Макконнелл «Совершенный код»
П. Гудлиф «Ремесло программиста»
Книги
4
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
5
История Java
Java ― ОО язык программирования разработанный в 1995г.
Изначально ― платформа для программирования бытовых приборов
Компилляция в байт код и исполнение байт кода в виртуальной машине
Встроенный сборщик мусора
Платформа .Net от Microsoft осована на идеях Java
6
JVM для кофемашиныJVM для стиральной
машины
Архитектурно независимый байт код
Приложение
Задумка Java платформы
7
Написанно один раз – работает везде
Безопасность исполнения
Встроенный сборщик мусора
Ключевые идеи
Результат
Задачи и результат
+ «Переносимые» программисты
- Сборщик мусора «всегда» работает в ненужное время
- Программы все равно зависят от архитектуры
+ Сборщик мусора устраняет утечки памяти
8
Постоянные улучшения и доработки
ОО язык высокого уровня с простым и понятным синтаксисом
Большое количество специалистов со знанием Java
Легкость перехода с С++
Большое количество библиотек
Прекрасная документация
Почему Java?
9
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
10
Углубленное значит «глубже чем»Примитивные типы, переполнение примитивных типов
Операторы
Преобразования примитивных типов
Ветвления и циклы
Объекты, классы, наследование, полиморфизм, инкапсуляция
Интерфейс, реализация интерфейса
Область видимости переменной, статические переменные
Стек, куча
private, protected, public
«Углубленное»
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. Автоматизация тестрования.
Исключение, обработка исключений
«Углубленное»
12
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
Напишем сервер для online игры
Весь курс построен вокруг практической работы
Теоретическая часть – общие знания по программированию
Программирование – теория выраженная на языке Java
Примеры реализации и разбор кода
Лекции
Практические занятия
Программирование
13
Сдача ДЗ – демонстрация работы приложения
Надоело писать код? Играем в то, что написали!
14
ЛЕКЦИЯ №1. «ВВЕДЕНИЕ»
ЛЕКЦИЯ №2. «МНОГОПОТОЧНОСТЬ»
ЛЕКЦИЯ №3. «MESSAGE SYSTEM»
ЛЕКЦИЯ №4. «ИГРОВАЯ МЕХАНИКА»
ЛЕКЦИЯ №5. «ТЕСТИРОВАНИЕ И НАГРУЗКА»
ЛЕКЦИЯ №6. «I/O»
ЛЕКЦИЯ №7. «РЕСУРСНАЯ СИСТЕМА»
ЛЕКЦИЯ №8. «РАБОТА С БАЗАМИ ДАННЫХ»
ЛЕКЦИЯ №9. «ORM»
1
2
3
4
Road map
15
Модули учебного сервера
utils
gameMechanics
base
messageSystem
frontend
main
dbService
resourceSystem
16
Нет разделения на *.cpp и *.h файлы
Один файл – один класс
Только классы (class, interface, enum)
Имя файла должно совпадать с именем класса
Нет указателей, только ссылки
Все классы наследники от Object
Нет передачи константных ссылок в функции
Нет оператора delete, создание объекта только через new
Нет перегрузки операторов
Reflection – информация о классе в runtime
Класс может наследовать один базовый класс
Сравнение java и C++
17
Анонимный тест
18
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
19
Обзор платформы Java
Запуск приложенийJava Runtime Environment (JRE)
Java Virtual Machine(JVM)
Class Libraries
Создание приложенийJava Development Kit (JDK)
JRE
Java compiler
IDE – в состав Java не входит
20
Обзор платформы Java
JVM
Javac
Interpreter
Just-In-Time (JIT) compiler
Byte code verifier
Garbage collector (GC)
Превращает *.java в *.class
*.class можно собрать в *.jar (zip архив)
21
Сборщик мусора
Garbage collector (GC)
Типы ссылок
Поиск ненужных объектов
Освобождение памяти
Strong references
Weak references
Soft references
Stack Heap
22
Java editions
Java SE (Standard Edition)
Стандартная редакция
JVM + библиотека классов
Java EE (Enterprise Edition)
API + runtime environment services
Java SE
Спецификация
Java ME (Micro Edition)Мобильные телефоны, бытовые приборы
23
Пакеты обычно собирают в *.jar файлы (zip архивы)
Класс может быть однозначно идетифицирован по полному имени
Классы в Java собирают в пакеты (packages)
packageName.directoryName.ClassName
Имена пакетов и директорий принято начинать с маленькой буквы
Имена классов: MySuperClassName
Имена функций: getMyVariable()
Имена переменных: myVariable
Пакеты не могут иметь циклических зависимостей
Наименования
24
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
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”)
Запуск приложений
26
Garbage collector
Memory
-Xmx, -Xms установка размера Heap
-Xss установка размера Stack
-X параметры поддержаны не во всех JVM (поддержаны в HotSpot)-XX параметры «not stable»
-XX:+UseConcMarkSweepGC – сборка мусора без пауз
Tuning java приложений
27
План лекции
1. Java
2. Углубленное
4. Платформа Java
5. Запуск приложений
6. Домашнее задание
3. Программирование
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/
Скачиваете и устанавливаете пакет под вашу архитектуру
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
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);}
31
1. История и особенности языка Java
2. Платформа Java. Java Editions. GC, JVM, JDK, JRE. Bytecode
3. Правила наименований пакетов, классов, переменных и методов. Запуск java приложений
Билеты
Спасибо за вниманиеВиталий Чибриков