Java Flashcards

1
Q

Какая основная идея языка?

A

Ключевой особенностью языка Java является то, что его код сначала транслируется в специальный байт-код, независимый от платформы. А затем этот байт-код выполняется виртуальной машиной JVM (Java Virtual Machine).
Еще одной ключевой особенностью Java является то, что она поддерживает автоматическую сборку мусора.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

За счет чего обеспечивается кроссплатформенность?

A
  1. Исходный код Java, который мы пишем, будет генерировать своего рода.Class файл, называемый файлом байт-кода
  2. JVM виртуальной машины Java отвечает за перевод файлов байт-кода на определенные платформы.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какие преимущества у java?

A
  • независимость от платформы и оборудования (пишут код один раз - не нужно переносить)
  • автоматическое управление памятью
  • безопасность и надежность( контролируется JVM)
  • объектная ориентированность
  • большое количество библиотек (фрэймворки)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какие недостатки у Java?

A
  • меньше быстродействие
  • нужно больше памяти
  • большой объем для изучения
  • постоянное развитие, параллельно существуют новые и устаревшие средства
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое JDK? Что в него входит?

A

JDK = JRE + Development Tools
— это Kit, который предоставляет среду для разработки и выполнения (запуска) Java-программы. JDK — это набор (или пакет), который включает в себя две вещи
- Средства разработки (чтобы обеспечить среду для разработки ваших Java-программ)
- JRE (для выполнения вашей Java-программы).
Java Development Kit - — это среда разработки программного обеспечения, используемая для разработки приложений и апплетов Java. Он включает в себя
- среду выполнения Java (JRE),
- интерпретатор / загрузчик (Java),
- компилятор (javac),
- архиватор (jar),
- генератор документации (Javadoc)
и другие инструменты, необходимые для разработки Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что такое JRE? что в него входит?

A

JRE = JVM + Library Classes
JAVA RUNTIME ENVIRONMENT
среда выполнения Java
минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое JVM?

A

Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java. также называется интерпретатором

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое byte code?

A

байт-код — это компактное представление программы, уже прошедшей синтаксический и семантический анализ. В нём в явном виде закодированы типы, области видимости и другие конструкции. С технической точки зрения байт-код представляет собой машинно-независимый код низкого уровня, генерируемый транслятором из исходного кода.
По форме байт-код похож на машинный код, но предназначен для исполнения не реальным процессором, а виртуальной машиной.
большинство инструкций байт-кода обычно эквивалентны одной или нескольким командам ассемблера.
Байт-код называется так, потому что длина каждого кода операции традиционно составляет один байт.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что такое загрузчик классов (classloader)

A

Когда мы пытаемся использовать класс, загрузчик классов загружает его в память.
Различают 3-и вида загрузчиков в Java. Это — базовый загрузчик (bootstrap), системный загрузчик (System Classloader), загрузчик расширений (Extension Classloader).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что такое JIT?

A

Just-in-time compilation, компиляция «на лету»), динамическая компиляция
- компилируемые языки (машинный код)
- интерпретируемые языки (код+интерпретатор для платформы)
Java - среднее (байткод+интерпретатор)
JIT-компилятор помогает повысить производительность, компилируя байт-код в машинный код «точно в срок» для запуска.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое сборщик мусора? (Garbage collector)

A

Сборщик мусора выполняет обнаружение и утилизацию недостижимых объектов, не нуждаясь в управлении приложением
Свойства сборщика мусора
Качественность: каждый собираемый объект должен быть недостижимым.
Полнота: каждый недостижимый объект должен быть собран.
Что такое “мусор”? Мусором считается объект, который больше не может быть достигнут по ссылке из какого-либо объекта. Поскольку такие объекты больше не используются в приложении, то их можно удалить из памяти.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что такое Heap и Stack память в Java? Чем они отличаются?

A

Java Heap (куча) используется Java Runtime для выделения памяти под объекты и JRE классы. Создание нового объекта также происходит в куче. Здесь работает сборщик мусора: освобождает память путем удаления объектов, на которые нет каких-либо ссылок. Любой объект, созданный в куче, имеет глобальный доступ и на него могут ссылаться с любой части приложения.
Stack (стек) это область хранения данных также находящееся в общей оперативной памяти (RAM). Всякий раз, когда вызывается метод, в памяти стека создается новый блок, который содержит примитивы и ссылки на другие объекты в методе. Как только метод заканчивает работу, блок также перестает использоваться, тем самым предоставляя доступ для следующего метода. Размер стековой памяти намного меньше объема памяти в куче. Стек в Java работает по схеме LIFO (Последний-зашел-Первый-вышел)
Различия между Heap и Stack памятью:
● Куча используется всеми частями приложения в то время как стек
используется только одним потоком исполнения программы.
● Всякий раз, когда создается объект, он всегда хранится в куче, а в памяти
стека содержится лишь ссылка на него. Память стека содержит только
локальные переменные примитивных типов и ссылки на объекты в куче.
● Объекты в куче доступны с любой точке программы, в то время как стековая
память не может быть доступна для других потоков.
● Стековая память существует лишь какое-то время работы программы, а
память в куче живет с самого начала до конца работы программы.
● Если память стека полностью занята, то Java Runtime бросает исключение
java.lang.StackOverflowError. Если заполнена память кучи, то бросается
исключение java.lang.OutOfMemoryError: Java Heap Space.
● Размер памяти стека намного меньше памяти в куче.
● Из-за простоты распределения памяти, стековая память работает намного
быстрее кучи.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly