java весна 2013 лекция 1

Post on 28-Jun-2015

305 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Углубленное программирование на 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 приложений

Билеты

Спасибо за вниманиеВиталий Чибриков

chibrikov@corp.mail.ru

top related