Найти тему
Art/Dalvik В Android приложения, которые вы устанавливаете, исполняются в виртуальной машине. Сейчас используется ART, раньше был Dalvik. 📎Рассмотрим основные отличия Dalvik - использует JIT (Just In Time) компиляцию. Это значит, что ваше приложение компилируется по мере необходимости, а имменно: нажимаете на иконку приложения → компилируется сплеш экран → показывается сплеш экран → компилируется экран авторизации → показывается экран авторизации и т.д. Что это значит? А значит это то, что время установки уменьшается, колличество требуемой памяти уменьшается, но при это замедляет запуск и работу приложений. Не используется в Android версиях выше 4.4. ART - использует AOT (Ahead of time) компиляцию. Это значит что ваше приложение компилируется при установке, это увеличивает время установки, но при этом ускоряет время запуска и работу приложения в целом. В какой то момент ART стал использовать гибрид из совершенно разных подходом компиляции JIT и AOT. Это позволяет гибко настроить компиляцию приложения, ускорить время запуска вашего приложения, работу первых экранов и при это уменьшить объем самого приложения. ❗️P.S. На собесах спрашивают частенько “А как запускается активити, или кто ее запускает и как это происходит”
1 год назад
Heap/stack Память в Java разбита на 2 области Stack - работает по принципу LIFO (last in first out), представляет собой список в котором хранятся переменные, ссылки на объекте, и методы. Всякий раз, когда вызывается метод в стеке выделяется под него память, и метод кладется на саму верхушку стека, далее по заверешнию выполнения, метод удаляется из стека, тем самым высвобождая память. Если память в стеке кончится, будет выброшено исключение StackOverFlowError. Можно попробовать сделать это, написвав такую рекурсивную функцию, она будет вызывать сама себя до бесконечности, пока собственно не закончится память. Стек является потокобезопасным, т.к под каждый поток создается свой стек. fun summ(a:Int, b: Int){   summ(2,3) } Heap (куча) - в этой области памяти лежат все объекты и классы. После создания нового объекта, он попадает сюда, в кучу, а ссылка на него хранится в стеке. Все объекты в куче имеют глобальный доступ, что делает их НЕ ПОТОКОБЕЗОПАСНЫМИ. Куча разбита на несколько сегментов, Old generation (tenured) и New generation, new generation в свою очередь разбит на 3 сегмента: eden, survivor0, sruvivor1. 
1 год назад
Примитивы Java/Kotlin. В Java/Kotlin все делится на примитивные типы и обьекты. Byte, Short, Int, Long, Float, Double, Boolean, Char 📌Например String - является объектом, а char - примитивом. Для примитивов существуют классы обертки во многом для того, чтобы была возможность работать с обобщенными типами, дженериками. В Kotlin примитивы отличаются от тех, что были в Java. Здесь они все являются объектами. Об этом стоит помнить, особенно если работаете с большими массивами, вот вы думаете что у вас в массиве 1.5 миллиарда примитивных Int значений, а по факту там лежат объекты. Что может привести к тормозам или как минимум к просадке перфоманса. Бонусом - задачка с собесов со звездочкой: Что будет выведено: val a1 = Integer.valueOf(100) val a2 = Integer.valueOf(100) val b1 = Integer.valueOf(500) val b2 = Integer.valueOf(500) println(a1 === a2) println(b1 === b2) Пишите в коменты ответы. Объяснение будет в одном из следующих постов!
1 год назад
О чем больше рассказывать?
Опрос
1 год назад
Как стать Android разработчиком ?
Привет, хочу поделится с вами историей как я стал андроид разрабтчиком, без ментора, и специфический сообществ. Решил я купить курс по Java, была база, основы языка программирования, поскольку в колледже я занимался веб-рзработкой немного был знакомой с объектно-ориентированным программирование (ООП), было легко в теории понимать как вообще должно работать приложение. Далее я случайно нактнулся на том ресурсе вводный мини курс в мир мобильной разработке под андроид. с первых же уроков я понял...
4 года назад