SlideShare a Scribd company logo
1 of 14
Effective Java for
Mobile
Кирилл Розов
Ограничения мобильных
устройств
• Процессор
• RAM
• Память
• Батарейка
• Нестабильный сигнал
Используйте отложенное (lazy)
получение сложных данных,
только в тот момент когда они
вам понадобятся
Используйте кэш для
результатов сложных вычислений
которые понадобятся вам
несколько раз
Избегайте создание
ненужных объектов
Лучше использовать массив
данных примитивного типа,
чем массив типов-оберток
Лучше используйте
static вместо virtual
Избегайте
использование Getter-ов/
Setter-ов внутри классов
Без JIT доступ к полям напрямую в 3
раза быстрее

С JIT - в 7 раз
public class Foo {

private class Inner {

void stuff() { Foo.this.doStuff(Foo.this.mValue); }

}



private int mValue;



public void run() {

Inner in = new Inner();

mValue = 27;

in.stuff();

}



private void doStuff(int value) {

System.out.println("Value is " + value);

}

}
Используйте
модификатор доступа по
умолчанию вместо
private в случае когда
происходит обращения к
элементам из
внутренних классов
List<String> strings =
Arrays.asList("one", "two", "three");



// Indexed for

for (int i = 0; i < strings.size(); i++) {

System.out.println(strings.get(i));

}



// Optimized indexed for

for (int i = 0, count = strings.size(); i < count; i++) {

System.out.println(strings.get(i));

}



//Iterator

for (String item : strings) { System.out.println(item); }



//Collection Stream API

strings.forEach(System.out::println);
Старайтесь не
использовать
рефлексию
Не создавайте объекты
в интенсивно
вызываемом коде
Старайтесь отложить задачи
когда устройство будет иметь
больше ресурсов в своем
распоряжение

More Related Content

Viewers also liked

éTica profesional
éTica profesionaléTica profesional
éTica profesional
ANAMILE1624
 
4286 4290.output
4286 4290.output4286 4290.output
4286 4290.output
j1075017
 
A Step By Step Guide To Creating More Effective Revision Tools
A Step By  Step Guide To Creating More Effective Revision ToolsA Step By  Step Guide To Creating More Effective Revision Tools
A Step By Step Guide To Creating More Effective Revision Tools
meducationdotnet
 
Ενημερωτικό Έντυπο - Qest4 / Βιοενεργειακός Έλεγχος
Ενημερωτικό Έντυπο - Qest4 / Βιοενεργειακός ΈλεγχοςΕνημερωτικό Έντυπο - Qest4 / Βιοενεργειακός Έλεγχος
Ενημερωτικό Έντυπο - Qest4 / Βιοενεργειακός Έλεγχος
Anercia
 
Πακέτο Crownscopy Maximun Possibilities
Πακέτο Crownscopy Maximun PossibilitiesΠακέτο Crownscopy Maximun Possibilities
Πακέτο Crownscopy Maximun Possibilities
Maria Civric
 

Viewers also liked (9)

Vivanda s.a
Vivanda s.a Vivanda s.a
Vivanda s.a
 
éTica profesional
éTica profesionaléTica profesional
éTica profesional
 
4286 4290.output
4286 4290.output4286 4290.output
4286 4290.output
 
Irjala kestävä 27 09 2016 final=
Irjala kestävä 27 09 2016 final=Irjala kestävä 27 09 2016 final=
Irjala kestävä 27 09 2016 final=
 
Michael E Porter Presentation
Michael E Porter PresentationMichael E Porter Presentation
Michael E Porter Presentation
 
World's Biggest List of Empowered and Inspiring Women : Made In India
World's Biggest List of Empowered and Inspiring Women : Made In IndiaWorld's Biggest List of Empowered and Inspiring Women : Made In India
World's Biggest List of Empowered and Inspiring Women : Made In India
 
A Step By Step Guide To Creating More Effective Revision Tools
A Step By  Step Guide To Creating More Effective Revision ToolsA Step By  Step Guide To Creating More Effective Revision Tools
A Step By Step Guide To Creating More Effective Revision Tools
 
Ενημερωτικό Έντυπο - Qest4 / Βιοενεργειακός Έλεγχος
Ενημερωτικό Έντυπο - Qest4 / Βιοενεργειακός ΈλεγχοςΕνημερωτικό Έντυπο - Qest4 / Βιοενεργειακός Έλεγχος
Ενημερωτικό Έντυπο - Qest4 / Βιοενεργειακός Έλεγχος
 
Πακέτο Crownscopy Maximun Possibilities
Πακέτο Crownscopy Maximun PossibilitiesΠακέτο Crownscopy Maximun Possibilities
Πακέτο Crownscopy Maximun Possibilities
 

Similar to Effective Java

Java tricks for high-load server programming
Java tricks for high-load server programmingJava tricks for high-load server programming
Java tricks for high-load server programming
Andrei Pangin
 
20100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture0320100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture03
Computer Science Club
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4
HighLoad2009
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
Technopark
 

Similar to Effective Java (12)

Bytecode
BytecodeBytecode
Bytecode
 
Проект «Одноклассники» Mail.Ru Group, Андрей Паньгин
Проект «Одноклассники» Mail.Ru Group, Андрей ПаньгинПроект «Одноклассники» Mail.Ru Group, Андрей Паньгин
Проект «Одноклассники» Mail.Ru Group, Андрей Паньгин
 
Незаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервераНезаурядная Java как инструмент разработки высоконагруженного сервера
Незаурядная Java как инструмент разработки высоконагруженного сервера
 
Java tricks for high-load server programming
Java tricks for high-load server programmingJava tricks for high-load server programming
Java tricks for high-load server programming
 
20100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture0320100228 virtualization igotti_lecture03
20100228 virtualization igotti_lecture03
 
Память в Java. Garbage Collector
Память в Java. Garbage CollectorПамять в Java. Garbage Collector
Память в Java. Garbage Collector
 
Excelsior JET в действии
Excelsior JET в действииExcelsior JET в действии
Excelsior JET в действии
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
 
Сладкое будущее: Phalcon и Zephir
Сладкое будущее: Phalcon и ZephirСладкое будущее: Phalcon и Zephir
Сладкое будущее: Phalcon и Zephir
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
 

More from Kirill Rozov

More from Kirill Rozov (20)

Kotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is comingKotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is coming
 
2 years without Java. Kotlin only
2 years without Java. Kotlin only2 years without Java. Kotlin only
2 years without Java. Kotlin only
 
Почему Kotlin?
Почему Kotlin?Почему Kotlin?
Почему Kotlin?
 
KOIN for dependency Injection
KOIN for dependency InjectionKOIN for dependency Injection
KOIN for dependency Injection
 
Optimize APK size
Optimize APK sizeOptimize APK size
Optimize APK size
 
ConstraintLayout. Fell the Power of constraints
ConstraintLayout. Fell the Power of constraintsConstraintLayout. Fell the Power of constraints
ConstraintLayout. Fell the Power of constraints
 
Kotlin 1.2: Sharing code between platforms
Kotlin 1.2: Sharing code between platformsKotlin 1.2: Sharing code between platforms
Kotlin 1.2: Sharing code between platforms
 
Kotlin - следующий язык после Java
Kotlin - следующий язык после JavaKotlin - следующий язык после Java
Kotlin - следующий язык после Java
 
Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kotlin Advanced - Apalon Kotlin Sprint Part 3Kotlin Advanced - Apalon Kotlin Sprint Part 3
Kotlin Advanced - Apalon Kotlin Sprint Part 3
 
Kotlin Basics - Apalon Kotlin Sprint Part 2
Kotlin Basics - Apalon Kotlin Sprint Part 2Kotlin Basics - Apalon Kotlin Sprint Part 2
Kotlin Basics - Apalon Kotlin Sprint Part 2
 
Why Kotlin - Apalon Kotlin Sprint Part 1
Why Kotlin - Apalon Kotlin Sprint Part 1Why Kotlin - Apalon Kotlin Sprint Part 1
Why Kotlin - Apalon Kotlin Sprint Part 1
 
Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2
 
Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)Что нового в Android O (Grodno HTP)
Что нового в Android O (Grodno HTP)
 
What's new in Android O
What's new in Android OWhat's new in Android O
What's new in Android O
 
Dagger 2
Dagger 2Dagger 2
Dagger 2
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
REST
RESTREST
REST
 
Kotlin для Android
Kotlin для AndroidKotlin для Android
Kotlin для Android
 
What's new in Android M
What's new in Android MWhat's new in Android M
What's new in Android M
 
Android Data Binding
Android Data BindingAndroid Data Binding
Android Data Binding
 

Effective Java