22
Углубленное программирование на Java Лекция 1. «Введение» Виталий Чибриков

Java осень 2012 лекция 1

Embed Size (px)

Citation preview

Page 1: Java осень 2012 лекция 1

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

Лекция 1. «Введение»

Виталий Чибриков

Page 2: Java осень 2012 лекция 1

Программирование и жизнь

Мой опыт: С++, С#, Java, PHP, HTML, SQL, JavaScript, Python, Shell, Perl

Более 9 000 000 регистраций в «Аллоды Онлайн» по всему миру

Игра переведена на 14 языков

Аллоды Онлайн: С++, Java, С#, Shell, Python

Игру оперируют 10 компаний

Результат вашей работы видят миллионы людей

Программируем НЕ на языке, а при помощи языка

Page 3: Java осень 2012 лекция 1

Книги

С. Макконнелл «Совершенный код»П. Гудлиф «Ремесло программиста»

Page 4: Java осень 2012 лекция 1

Структура курса

Углубленное

Java

Программирование

Page 5: Java осень 2012 лекция 1

Java – ОО язык программирования разработанный в 1995г.

История Java

Изначально – платформа для программирования бытовых приборов

Компилляция в байт код и исполнение байт кода в виртуальной машинеВстроенный сборщик мусора

Платформа .Net от Microsoft осована на идеях Java

Page 6: Java осень 2012 лекция 1

Задумка Java платформы

JVM для кофемашины JVM для стиральной машины

Архитектурно независимый байт код

Приложение

Page 7: Java осень 2012 лекция 1

+ «Переносимые» программисты

Задачи и результат

Написанно один раз – работает везде

Безопасность исполнения

Встроенный сборщик мусора

- Сборщик мусора «всегда» работает в ненужное время

Ключевые идеи:

Результат:

- Программы все равно зависят от архитектуры

+ Сборщик мусора устраняет утечки памяти

Page 8: Java осень 2012 лекция 1

Постоянные улучшения и доработки

Почему Java?

ОО язык высокого уровня с простым и понятным синтаксисом

Большое количество специалистов со знанием Java

Легкость перехода с С++Большое количество библиотек

Прекрасная документация

Page 9: Java осень 2012 лекция 1

«Углубленное»

Примитивные типы, переполнение примитивных типов

Операторы

Преобразования примитивных типовВетвления и циклы

Углубленное значит «глубже чем»:

Объекты, классы, наследование, полиморфизм, инкапсуляция

Интерфейс, реализация интерфейса

Область видимости переменной, статические переменные

Стек, кучаprivate, protected, public

Page 10: Java осень 2012 лекция 1

Платформа Java. Java editions. Java Virtual Machine.

«Углубленное»

Контейнеры и алгоритмы (Hash, Map, Set, List, Array)Многопоточность. Thread Object. Concurrency.

Message System. Address. Abonent.Frontend. Game Mechanics.

Resource System. Serialization. I/O. Stream.Reflection. Dependency injection. Annotation. Generics.

JDBC. DataSet. DAO. Hibernate.QA. Tests. Автоматизация тестрования.

Исключение, обработка исключений

Page 11: Java осень 2012 лекция 1

Напишем сервер для online игрыВесь курс построен вокруг практической работы

Программирование

Теоретическая часть – общие знания по программированиюПрограммирование – теория выраженная на языке JavaПримеры реализации и разбор кода

Лекции

Практические занятия

Сдача ДЗ – демонстрация работы приложения

Надоело писать код? Играем в то, что написали!

Page 12: Java осень 2012 лекция 1

Обзор платформы Java

Запуск приложенийJava Runtime Environment (JRE)

Java Virtual Machine(JVM)Class Libraries

Создание приложенийJava Development Kit (JDK)

JREJava compiler

IDE – в состав Java не входит

Page 13: Java осень 2012 лекция 1

Обзор платформы Java

Interpreter

JVM

Just-In-Time (JIT) compilerByte code verifierGarbage collector (GC)

JavacПревращает *.java в *.class*.class можно собрать в *.jar (zip архив)

Page 14: Java осень 2012 лекция 1

Сборщик мусора

Поиск ненужных объектов

Garbage collector (GC)

Освобождение памяти

Stack Heap

Типы ссылокStrong referencesWeak referencesSoft references

Page 15: Java осень 2012 лекция 1

Java editions

Стандартная редакция

Java SE (Standard Edition)

JVM + библиотека классов

API + runtime environment services

Java SEJava EE (Enterprise Edition)

Спецификация

Java ME (Micro Edition)Мобильные телефоны, бытовые приборы

Page 16: Java осень 2012 лекция 1

Сравнение java и C++

Нет разделения на *.cpp и *.h файлыОдин файл – один класс

Только классы (class, interface, enum)

Имя файла должно совпадать с именем классаНет указателей, только ссылкиВсе классы наследники от Object

Нет передачи константных ссылок с функцииНет оператора deleteНет перегрузки операторовReflection – информация о классе в runtimeКласс может наследовать один базовый класс

Page 17: Java осень 2012 лекция 1

Наименования

Пакеты обычно собирают в *.jar файлы (zip архивы)Класс может быть однозначно идетифицирован по полному имени

Классы в java собирают в пакеты (packages)

packageName.directoryName.ClassNameИмена пакетов и директорий принято начинать с маленькой буквы

Имена классов: MySuperClassNameИмена функций: mySuperMethod()Имена переменных: myVariable

Пакеты не могут иметь циклических зависимостей

Page 18: Java осень 2012 лекция 1

Запуск приложений

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 19: Java осень 2012 лекция 1

Tuning java приложений

Garbage collector

Memory

Runtime compiler

-Xmx, -Xms установка размера Heap-Xss установка размера Stack

-X параметры поддержаны не во всех JVM (поддержаны в HotSpot)-XX параметры «not stable»

-XX:+UseConcMarkSweepGC – сборка мусора без пауз

Page 20: Java осень 2012 лекция 1

Настройка рабочего места

Java SE 6 Update 35 (JDK)http://www.oracle.com/technetwork/java/javase/downloads/

«Читаете» лицензионое соглашение и соглашаетесь с нимСкачиваете и устанавливаете пакет под вашу архитектуру

Eclipse IDE for Java Developershttp://www.eclipse.org/downloads/

JDK

Eclipse

Скачиваете и устанавливаете пакет под вашу архитектуру

Page 21: Java осень 2012 лекция 1

Настройка рабочего места

jetty-all-7.0.2.v20100331.jar

servlet-api-2.5.jarПолный путь к библиотекам приведен на http://tp.mail.ru/blog/201.html

Jetty

Подключение: Project/Properties/Java Build Path/Libraries/Add external Jars

Master: http://wiki.eclipse.org/Jetty/Tutorial/Jetty_HelloWorld

Домашнее задание:

Beginner: Hello World на java

Page 22: Java осень 2012 лекция 1

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

[email protected]