ݺߣ

ݺߣShare a Scribd company logo
Углубленное 
программирование на 
Java 
Занятие 1.3 
«Основы языка» 
Виталий Чибриков
План лекции 
2 
1. Наследование 
2. Object, Class 
3. Примитивные типы 
4. Массивы и Строки 
5. Size of Object 
6. Deploy
Наследование в Java 
public abstract class Animal { 
private int weight; 
public Animal(int weight){ 
this.weight = weight; 
} 
public boolean isDangerous(){ 
return isPredator() || getWeight() > 15; 
} 
protected int getWeight(){ 
return weight; 
} 
abstract boolean isPredator(); 
}public interface Jumpable { 
boolean canJump(); 
} 
<<abstract>> 
Animal 
- int weight 
+ boolean isDangerous() 
# int getWeight() 
boolean isPredator() 
<<interface>> 
Jumpable 
boolean canJump() 
3
Наследование в Java 
public class Elefant extends Animal implements Jumpable { 
private boolean canJump = false; 
public Elefant(){ 
super(200); 
} 
public boolean isPerdator(){ 
return false; 
} 
public bolean canJump(){ 
return canJump; 
} 
} 
<<abstract>> 
Aminal 
<<interface>> 
Jumpable 
Elefant 
4
Наследование в Java 
public static void main(String[] args) { 
//Animal animal = new Animal(); 
Elefant elefant = new Elefant(); 
boolean isDangerous = elefant.isDangerous(); 
if(elefant.canJump()) 
jump(elefant); 
Jumpable mouse == null; 
mouse = new Mouse(); 
//boolean isMouseDangerous = mouse.isDangerous(); 
if(mouse.canJump()) 
jump(mouse); 
} 
public static void jump(Jumpable object){ 
//Animal animal = object; 
//boolean isDangerous = object.isDangerous(); - ошибка 
if(object.canJump()){…} 
} 5
Множественное наследование 
public class Elefant extends Animal implements Jumpable, Movable{ 
… 
} 
Animal 
<<interface>> 
Movable 
Elefant 
<<interface>> 
Jumpable 
6
План лекции 
7 
1. Наследование 
2. Object, Class 
3. Примитивные типы 
4. Массивы и Строки 
5. Size of Object 
6. Deploy
ClassLoader 
8 
― часть JVM, которая загружает Classloader данные о классах 
Все классы должны быть загружены при старте JVM 
При старте JVM работают следующие загрузчики: 
• Bootstrap class loader (<JAVA_HOME>/jre/lib) 
• Extensions class loader (<JAVA_HOME>/jre/lib/ext) 
• System class loader (CLASSPATH)
java.lang.Class 
чертеж самолета 
на бумаге 
Понятие 
«абстрактный самолет» 
Понятие 
«абстрактный чертеж» 
самолет 
java.lang.Class 
Class clazz = getClass(); 
class Airplane{…} 
Airplane plane = new … 
9
java.lang.Class 
10 
― объект, который представляет в runtime данные Class о классе объекта 
Основные методы класса Class 
static Class<T> forName(String className) 
String getCanonicalName() 
Fields[] getField(String name) 
Class[] getInterfaces() 
Method[] getMethods() 
Constructor[] getConstructors()
class Object 
class MyClass{…} == class MyClass extends Object{…} 
void myFunction(Object varName) – может «обработать» любой объект 
Основные методы класса Object 
11 
― класс от которого унаследованны class Object все остальные классы 
public Class<?> getClass() 
public String toString() 
public boolean equals(Object obj) 
public int hashCode() 
protected Object clone()
План лекции 
12 
1. Наследование 
2. Object, Class 
3. Примитивные типы 
4. Массивы и Строки 
5. Size of Object 
6. Deploy
Примитивные типы 
13 
bits type type 
8 byte boolean 
16 short char 
32 int float 
64 long double
Обертки простых типов 
14 
boolean, byte, char, short, int, float, long, double 
Примитивные типы: 
мало памяти 
простая структура 
Stack 
Boolean, Byte, Character, Short, Integer, Float, Long, Double 
Обертки простых типов: 
наследники от Object 
сложные типы 
Heap
Boxing и Unboxing 
15 
Boxing 
Character a = ‘a’; 
Unboxing 
int a = 1 + new Integer(2);
План лекции 
16 
1. Наследование 
2. Object, Class 
3. Примитивные типы 
4. Массивы и Строки 
5. Size of Object 
6. Deploy
[] 
17 
Массив это объект (наследник от Object) 
Массив хранит свой размер: (new int[100]).length; 
Переменная может быть размером массива 
int[] arrayInts = new int[100]; 
String[] arrayStrings = new String[100]; 
int[] arrayInts = {1, 1, 2, 3, 5}; 
java.lang.Arrays – класс для работы с массивами
String 
18 
char – 16 bit (UTF-16) 
String – обертка над char[] 
Immutable: “abc” + “bcd” – создание новой строки 
System.out.println("abc"); 
String cde = "cde"; 
System.out.println("abc" + cde); 
String c = "abc".substring(2,3); 
String d = cde.substring(1, 2);
План лекции 
19 
1. Наследование 
2. Object, Class 
3. Примитивные типы 
4. Массивы и Строки 
5. Size of Objects 
6. Deploy
Size of Object 
20
Size of Objects 
21 
Точный размер объекта зависит от: 
• Версии java 
• Издателя (Oracle JDK, open JDK…) 
• Разрядности ОС 
• Параметров запуска JVM 
Для измерения размера используют «инструменты»
Size of Objects 
22 
Размер объекта состоит из: 
• Object header (8 byte) 
• Размера примитивных типов 
• Размера ссылок (32 или 64 бита на ссылку) 
+ Гранулярность 8 байт
Примеры 
23 
Oracle JVM (HotSpot), 32 разрядная ОС: 
• Object – 8 байт 
• Пустая строка – 40 байт 
• Массив – начиная с 12 байт
План лекции 
24 
1. Наследование 
2. Object, Class 
3. Примитивные типы 
4. Массивы и Строки 
5. Size of Objects 
6. Deploy
Администрирование 
25 
Для уравления сервером создаем страницу admin 
admin?shutdown=1000 – stop сервера через секунду
PORT в параметры 
26 
Запуск в IDEA: 
Конфигурация запуска, «Program arguments»: 8080 
Запуск из командной строки: 
java –classpath project.jar path.to.Main 8080
Maven – средство сборки 
27 
Свойства сборки 
<properties> 
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
<maven.compiler.source>1.8</maven.compiler.source> 
<maven.compiler.target>1.8</maven.compiler.target> 
</properties>
Maven – средство сборки 
28 
Инструкции сборки 
<build> 
<plugins> 
<plugin> 
<artifactId>maven-assembly-plugin</artifactId> 
<configuration> 
<descriptorRefs> 
<descriptorRef>jar-with-dependencies</descriptorRef> 
</descriptorRefs> 
</configuration> 
</plugin> 
</plugins> 
</build>
Сборка и запуск 
29 
mvn compile 
mvn assemble:single 
cp ./target/project.jar ./ 
java –classpath project.jar path.to.Main PORT
Stop server 
30 
curl http:/localhost:808N/admin?shutdown=1000
Правила РК 
31 
В каждом РК каждый студент отвечает: 
• теорию по модулю (5 баллов), 
• на вопросы по коду (5 баллов) 
• на вопросы по тестам к коду модуля (5 баллов). 
Для разработки проекта студенты могут объединиться в группы 
по 2-3 человека. 
На каждом РК группа: 
• проходит ревью кода (5 баллов) 
• показывает, что код делает то, что было в задании (5 баллов). 
За каждый РК: 15 баллов студент зарабатывает самостоятельно и 
10 от групповой работы.
Спасибо за внимание 
Виталий Чибриков 
chibrikov@corp.mail.ru

More Related Content

What's hot (11)

C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
Igor Shkulipa
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
Igor Shkulipa
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
Igor Shkulipa
Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.
Dima Dzuba
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
Igor Shkulipa
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
Igor Shkulipa
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
Igor Shkulipa
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.
Anton Moiseenko
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
Igor Shkulipa
Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.
Anton Moiseenko
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
Igor Shkulipa
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
Igor Shkulipa
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
Igor Shkulipa
Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.Архитектура. Доступноять программных систем.
Архитектура. Доступноять программных систем.
Dima Dzuba
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
Igor Shkulipa
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
Igor Shkulipa
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
Igor Shkulipa
Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.Java Core. Lecture# 3. Part# 2. Exceptions.
Java Core. Lecture# 3. Part# 2. Exceptions.
Anton Moiseenko
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
Igor Shkulipa
Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.Java Core. Lecture# 5. Concurrency.
Java Core. Lecture# 5. Concurrency.
Anton Moiseenko

Viewers also liked (20)

Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9
Technopark
Android осень 2013 лекция 1
Android осень 2013 лекция 1Android осень 2013 лекция 1
Android осень 2013 лекция 1
Technopark
Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2
Technopark
Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2
Technopark
Безопасность интернет-приложений осень 2013 лекция 10
Безопасность интернет-приложений осень 2013 лекция 10Безопасность интернет-приложений осень 2013 лекция 10
Безопасность интернет-приложений осень 2013 лекция 10
Technopark
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
Technopark
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
Technopark
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
Technopark
Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5
Technopark
Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2
Technopark
Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1
Technopark
Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2
Technopark
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
Technopark
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6
Technopark
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
Technopark
Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6
Technopark
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3
Technopark
Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7
Technopark
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3
Technopark
Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9
Technopark
Android осень 2013 лекция 1
Android осень 2013 лекция 1Android осень 2013 лекция 1
Android осень 2013 лекция 1
Technopark
Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2
Technopark
Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2Безопасность интернет-приложений осень 2013 лекция 2
Безопасность интернет-приложений осень 2013 лекция 2
Technopark
Безопасность интернет-приложений осень 2013 лекция 10
Безопасность интернет-приложений осень 2013 лекция 10Безопасность интернет-приложений осень 2013 лекция 10
Безопасность интернет-приложений осень 2013 лекция 10
Technopark
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
Technopark
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
Technopark
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
Technopark
Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5
Technopark
Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2
Technopark
Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1
Technopark
Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2
Technopark
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
Technopark
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6
Technopark
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
Technopark
Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6
Technopark
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3
Technopark
Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7
Technopark
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3
Technopark

Similar to Java осень 2014 занятие 3 (20)

Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage Collector
Olexandra Dmytrenko
Scala for android
Scala for androidScala for android
Scala for android
Alexander Rusin
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
Vasil Remeniuk
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
Vasiliy Deynega
Lec 1
Lec 1Lec 1
Lec 1
Alexander Rusin
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
Technopark
Scala - my path
Scala - my pathScala - my path
Scala - my path
Анатолий Ботов
Intro to Swift techitout
Intro to Swift techitoutIntro to Swift techitout
Intro to Swift techitout
Alexandr Graschenkov
Scala on android
Scala on androidScala on android
Scala on android
Valeriya Atamanova
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
Ivan Krylov
Java весна 2014 лекция 1
Java весна 2014 лекция 1Java весна 2014 лекция 1
Java весна 2014 лекция 1
Technopark
Экспресс по Java [NoBugs WTF PRO уровень]
Экспресс по Java [NoBugs WTF PRO уровень]Экспресс по Java [NoBugs WTF PRO уровень]
Экспресс по Java [NoBugs WTF PRO уровень]
NoBugs
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)
Dmitry Stropalov
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
Anton Kirillov
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
Technopark
Kotlin
KotlinKotlin
Kotlin
GDG Odessa
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
MoscowDjango
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
SQALab
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
Andrey Karpov
Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage Collector
Olexandra Dmytrenko
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
Vasil Remeniuk
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
Vasiliy Deynega
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
Technopark
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
Ivan Krylov
Java весна 2014 лекция 1
Java весна 2014 лекция 1Java весна 2014 лекция 1
Java весна 2014 лекция 1
Technopark
Экспресс по Java [NoBugs WTF PRO уровень]
Экспресс по Java [NoBugs WTF PRO уровень]Экспресс по Java [NoBugs WTF PRO уровень]
Экспресс по Java [NoBugs WTF PRO уровень]
NoBugs
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)
Dmitry Stropalov
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
Anton Kirillov
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
Technopark
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
MoscowDjango
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
SQALab
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
Andrey Karpov

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
Technopark
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
Technopark
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
Technopark
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
Technopark
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
Technopark
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
Technopark
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
Technopark
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
Technopark
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
Technopark
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
Technopark
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark

Java осень 2014 занятие 3

  • 1. Углубленное программирование на Java Занятие 1.3 «Основы языка» Виталий Чибриков
  • 2. План лекции 2 1. Наследование 2. Object, Class 3. Примитивные типы 4. Массивы и Строки 5. Size of Object 6. Deploy
  • 3. Наследование в Java public abstract class Animal { private int weight; public Animal(int weight){ this.weight = weight; } public boolean isDangerous(){ return isPredator() || getWeight() > 15; } protected int getWeight(){ return weight; } abstract boolean isPredator(); }public interface Jumpable { boolean canJump(); } <<abstract>> Animal - int weight + boolean isDangerous() # int getWeight() boolean isPredator() <<interface>> Jumpable boolean canJump() 3
  • 4. Наследование в Java public class Elefant extends Animal implements Jumpable { private boolean canJump = false; public Elefant(){ super(200); } public boolean isPerdator(){ return false; } public bolean canJump(){ return canJump; } } <<abstract>> Aminal <<interface>> Jumpable Elefant 4
  • 5. Наследование в Java public static void main(String[] args) { //Animal animal = new Animal(); Elefant elefant = new Elefant(); boolean isDangerous = elefant.isDangerous(); if(elefant.canJump()) jump(elefant); Jumpable mouse == null; mouse = new Mouse(); //boolean isMouseDangerous = mouse.isDangerous(); if(mouse.canJump()) jump(mouse); } public static void jump(Jumpable object){ //Animal animal = object; //boolean isDangerous = object.isDangerous(); - ошибка if(object.canJump()){…} } 5
  • 6. Множественное наследование public class Elefant extends Animal implements Jumpable, Movable{ … } Animal <<interface>> Movable Elefant <<interface>> Jumpable 6
  • 7. План лекции 7 1. Наследование 2. Object, Class 3. Примитивные типы 4. Массивы и Строки 5. Size of Object 6. Deploy
  • 8. ClassLoader 8 ― часть JVM, которая загружает Classloader данные о классах Все классы должны быть загружены при старте JVM При старте JVM работают следующие загрузчики: • Bootstrap class loader (<JAVA_HOME>/jre/lib) • Extensions class loader (<JAVA_HOME>/jre/lib/ext) • System class loader (CLASSPATH)
  • 9. java.lang.Class чертеж самолета на бумаге Понятие «абстрактный самолет» Понятие «абстрактный чертеж» самолет java.lang.Class Class clazz = getClass(); class Airplane{…} Airplane plane = new … 9
  • 10. java.lang.Class 10 ― объект, который представляет в runtime данные Class о классе объекта Основные методы класса Class static Class<T> forName(String className) String getCanonicalName() Fields[] getField(String name) Class[] getInterfaces() Method[] getMethods() Constructor[] getConstructors()
  • 11. class Object class MyClass{…} == class MyClass extends Object{…} void myFunction(Object varName) – может «обработать» любой объект Основные методы класса Object 11 ― класс от которого унаследованны class Object все остальные классы public Class<?> getClass() public String toString() public boolean equals(Object obj) public int hashCode() protected Object clone()
  • 12. План лекции 12 1. Наследование 2. Object, Class 3. Примитивные типы 4. Массивы и Строки 5. Size of Object 6. Deploy
  • 13. Примитивные типы 13 bits type type 8 byte boolean 16 short char 32 int float 64 long double
  • 14. Обертки простых типов 14 boolean, byte, char, short, int, float, long, double Примитивные типы: мало памяти простая структура Stack Boolean, Byte, Character, Short, Integer, Float, Long, Double Обертки простых типов: наследники от Object сложные типы Heap
  • 15. Boxing и Unboxing 15 Boxing Character a = ‘a’; Unboxing int a = 1 + new Integer(2);
  • 16. План лекции 16 1. Наследование 2. Object, Class 3. Примитивные типы 4. Массивы и Строки 5. Size of Object 6. Deploy
  • 17. [] 17 Массив это объект (наследник от Object) Массив хранит свой размер: (new int[100]).length; Переменная может быть размером массива int[] arrayInts = new int[100]; String[] arrayStrings = new String[100]; int[] arrayInts = {1, 1, 2, 3, 5}; java.lang.Arrays – класс для работы с массивами
  • 18. String 18 char – 16 bit (UTF-16) String – обертка над char[] Immutable: “abc” + “bcd” – создание новой строки System.out.println("abc"); String cde = "cde"; System.out.println("abc" + cde); String c = "abc".substring(2,3); String d = cde.substring(1, 2);
  • 19. План лекции 19 1. Наследование 2. Object, Class 3. Примитивные типы 4. Массивы и Строки 5. Size of Objects 6. Deploy
  • 21. Size of Objects 21 Точный размер объекта зависит от: • Версии java • Издателя (Oracle JDK, open JDK…) • Разрядности ОС • Параметров запуска JVM Для измерения размера используют «инструменты»
  • 22. Size of Objects 22 Размер объекта состоит из: • Object header (8 byte) • Размера примитивных типов • Размера ссылок (32 или 64 бита на ссылку) + Гранулярность 8 байт
  • 23. Примеры 23 Oracle JVM (HotSpot), 32 разрядная ОС: • Object – 8 байт • Пустая строка – 40 байт • Массив – начиная с 12 байт
  • 24. План лекции 24 1. Наследование 2. Object, Class 3. Примитивные типы 4. Массивы и Строки 5. Size of Objects 6. Deploy
  • 25. Администрирование 25 Для уравления сервером создаем страницу admin admin?shutdown=1000 – stop сервера через секунду
  • 26. PORT в параметры 26 Запуск в IDEA: Конфигурация запуска, «Program arguments»: 8080 Запуск из командной строки: java –classpath project.jar path.to.Main 8080
  • 27. Maven – средство сборки 27 Свойства сборки <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
  • 28. Maven – средство сборки 28 Инструкции сборки <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
  • 29. Сборка и запуск 29 mvn compile mvn assemble:single cp ./target/project.jar ./ java –classpath project.jar path.to.Main PORT
  • 30. Stop server 30 curl http:/localhost:808N/admin?shutdown=1000
  • 31. Правила РК 31 В каждом РК каждый студент отвечает: • теорию по модулю (5 баллов), • на вопросы по коду (5 баллов) • на вопросы по тестам к коду модуля (5 баллов). Для разработки проекта студенты могут объединиться в группы по 2-3 человека. На каждом РК группа: • проходит ревью кода (5 баллов) • показывает, что код делает то, что было в задании (5 баллов). За каждый РК: 15 баллов студент зарабатывает самостоятельно и 10 от групповой работы.
  • 32. Спасибо за внимание Виталий Чибриков chibrikov@corp.mail.ru