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

Post on 12-Apr-2017

149 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

Книги

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

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

Углубленное

Java

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

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

История Java

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

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

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

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

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

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

Приложение

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

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

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

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

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

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

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

Результат:

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

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

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

Почему Java?

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

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

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

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

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

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

Операторы

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

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

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

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

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

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

Платформа 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. Автоматизация тестрования.

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

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

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

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

Лекции

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

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

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

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

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

Java Virtual Machine(JVM)Class Libraries

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

JREJava compiler

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

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

Interpreter

JVM

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

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

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

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

Garbage collector (GC)

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

Stack Heap

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

Java editions

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

Java SE (Standard Edition)

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

API + runtime environment services

Java SEJava EE (Enterprise Edition)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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”)

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

Garbage collector

Memory

Runtime compiler

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

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

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

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

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

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

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

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

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

chibrikov@corp.mail.ru

top related