JRE и JDK
Существует две поставки Джавы: Java Runtime Environment(JRE) и Java Development Kit(JDK).
JRE нужна для запуска программ, которые написаны на Джаве. С помощью неё запускают уже скомпилированные классы. В JRE нет компилятора и других средств для разработки.
Состав JRE:
- Java Class Library
- Java Virtual Machine
- Just-in-time Compiler
- Garbage Collector
- Java application launcher
Подробнее эти пункты я еще распишу.
JDK нужна для разработки приложений на Джаве. С её помощью можем скомпилировать исходный код и запустить его. Посмотреть исходники стандартной библиотеки и её документацию. Промониторить, сколько памяти потребляют объекты внутри приложения, когда оно запущено.
Состав JDK:
- JRE
- Исходники стандартной библиотеки
- Специальные тулзы: для разработки, дебага, мониторинга приложений
#обучение #jdk #jre
Существует две поставки Джавы: Java Runtime Environment(JRE) и Java Development Kit(JDK).
JRE нужна для запуска программ, которые написаны на Джаве. С помощью неё запускают уже скомпилированные классы. В JRE нет компилятора и других средств для разработки.
Состав JRE:
- Java Class Library
- Java Virtual Machine
- Just-in-time Compiler
- Garbage Collector
- Java application launcher
Подробнее эти пункты я еще распишу.
JDK нужна для разработки приложений на Джаве. С её помощью можем скомпилировать исходный код и запустить его. Посмотреть исходники стандартной библиотеки и её документацию. Промониторить, сколько памяти потребляют объекты внутри приложения, когда оно запущено.
Состав JDK:
- JRE
- Исходники стандартной библиотеки
- Специальные тулзы: для разработки, дебага, мониторинга приложений
#обучение #jdk #jre
JVM
Или Java Virtual Machine - среда для запуска Джава-приложений. Виртуальная машина читает Байт-код и передаёт команды процессору. Байт-код - это скомпилированный исходный код. Он нечитаем для человек и понятен для JVM. Чтобы получить Байт-код, мы должны написать программу на Джаве и отдать её специальному компилятору javac. Например, я пишу код в файле application.java. Передам его компилятору, и получу application.class.
При запуске программы операционная система выделяет необходимый объём оперативной памяти под JVM. И у разработчиков нет прямого доступа к памяти системы.
JVM выполняет ещё программы, написанные на других языках программирования: Scala, Kotlin, Groovy. Их исходники тоже компилируются в Байт-код.
Неплохая статья о JVM и Байт-коде: https://bit.ly/2ENapHC
#обучение #jvm
Или Java Virtual Machine - среда для запуска Джава-приложений. Виртуальная машина читает Байт-код и передаёт команды процессору. Байт-код - это скомпилированный исходный код. Он нечитаем для человек и понятен для JVM. Чтобы получить Байт-код, мы должны написать программу на Джаве и отдать её специальному компилятору javac. Например, я пишу код в файле application.java. Передам его компилятору, и получу application.class.
При запуске программы операционная система выделяет необходимый объём оперативной памяти под JVM. И у разработчиков нет прямого доступа к памяти системы.
JVM выполняет ещё программы, написанные на других языках программирования: Scala, Kotlin, Groovy. Их исходники тоже компилируются в Байт-код.
Неплохая статья о JVM и Байт-коде: https://bit.ly/2ENapHC
#обучение #jvm
Герберт Шилдт - Java 8. Полное руководство
Для меня эта книга как документация, только с примерами. Её приятно читать, когда немного освоился в программировании и написал пару консольных приложений на Джаве. Например, когда хочешь изучить лямбды или повторить коллекции.
Плюсы: темы удобно структурированы и подробно описаны.
Минусы: примеров иногда не хватает и нет заданий для закрепления материала.
#книги
Для меня эта книга как документация, только с примерами. Её приятно читать, когда немного освоился в программировании и написал пару консольных приложений на Джаве. Например, когда хочешь изучить лямбды или повторить коллекции.
Плюсы: темы удобно структурированы и подробно описаны.
Минусы: примеров иногда не хватает и нет заданий для закрепления материала.
#книги
Вопросы с собеседований
Те, кто ещё в телеге, держите вопросы с собеседований. Их задают джунам почти в каждой компании.
— Перечислить основные принципы ООП.
— Привести пример применения полиморфизма.
— Какие есть модификаторы доступа?
— Что такое интерфейс?
— Какое отличие абстрактного класса от интерфейса?
— Перечислить методы, которые присутствуют во всех объектах java.
— Какие из них не public? Почему?
— Зачем нужен метод finalize?
— Какая связь между equals and hashcode?
— Рассказать иерархию исключений.
— Отличия между ArrayList и LinkedList.
Те, кто ещё в телеге, держите вопросы с собеседований. Их задают джунам почти в каждой компании.
— Перечислить основные принципы ООП.
— Привести пример применения полиморфизма.
— Какие есть модификаторы доступа?
— Что такое интерфейс?
— Какое отличие абстрактного класса от интерфейса?
— Перечислить методы, которые присутствуют во всех объектах java.
— Какие из них не public? Почему?
— Зачем нужен метод finalize?
— Какая связь между equals and hashcode?
— Рассказать иерархию исключений.
— Отличия между ArrayList и LinkedList.
Структуры данных в картинках
Для тех, кто изучает коллекции или хочет освежить знания, рекомендую серию статей с Хабра "Структуры данных в картинках". Автор подробно описывает внутренности ArrayList, LinkedList, HashMap, LinkedHashMap. Он пишет, как происходит создание объекта, вставка элемента в коллекцию, удаление. В конце статей приведены сложности и особенности каждой коллекции.
https://bit.ly/2HOIGK4 ArrayList
https://bit.ly/2vs53Cv LinkedList
https://bit.ly/2qLOZFS HashMap
https://bit.ly/2JaYFkK LinkedHashMap
#обучение
Для тех, кто изучает коллекции или хочет освежить знания, рекомендую серию статей с Хабра "Структуры данных в картинках". Автор подробно описывает внутренности ArrayList, LinkedList, HashMap, LinkedHashMap. Он пишет, как происходит создание объекта, вставка элемента в коллекцию, удаление. В конце статей приведены сложности и особенности каждой коллекции.
https://bit.ly/2HOIGK4 ArrayList
https://bit.ly/2vs53Cv LinkedList
https://bit.ly/2qLOZFS HashMap
https://bit.ly/2JaYFkK LinkedHashMap
#обучение
Сегодня буду выкладывать небольшие задачки с собеседований.
Первая. Найдите, где будет ошибка
Первая. Найдите, где будет ошибка
interface A {
void run();
}
interface B {
void run();
}
interface C {
String run();
}
class Test1 имплементирует A, B
class Test2 имплементирует A, C
Что произойдёт, когда запустим код?
Boolean b = null;
if (b) {
System.out.println("...");
}
Что будет написано в консоли?
public class Main {
psvm(String[] args) {
sout("...");
}
protected void finalize() {
sout("from Finalize");
}
}
Проблемы с Git
Список частых проблем при работе с Git и их решения. Вопросы разделены по категориям, а ответы написаны понятным языком. Плюс в конце линки на книги, туториалы и GUI-клиенты по Git.
https://bit.ly/1oKguJM #git
Список частых проблем при работе с Git и их решения. Вопросы разделены по категориям, а ответы написаны понятным языком. Плюс в конце линки на книги, туториалы и GUI-клиенты по Git.
https://bit.ly/1oKguJM #git
Ещё задачи с интервью
Что произойдёт, когда запустим код?
Что произойдёт, когда запустим код?
psvm(String[] args) {
char[] ch = null;
String s = null;
Object ob = null;
sout(ch);
sout(s);
sout(ob);
}
Вывести на экран надпись "Hello world" два раза. Метод main менять нельзя.
Сокращения:
psvm = public static void main
sout = System.out.println
public class Main {
psvm(String[] args) {
sout("Hello world");
}
}
Сокращения:
psvm = public static void main
sout = System.out.println
Написать многопоточную реализацию счётчика
public interface Counter {
int get();
void inc();
}
В чём разница между
и
synchronized void getS() {}
и
void getS() {
synchronized (this) {
}
}
Внедрение зависимостей
Плохо
Хорошо
Почему
https://habr.com/post/334636/
Плохо
@Autowired
private BeanA beanA;
@Autowired
private beanB beanB;
Хорошо
private BeanA beanA;
private BeanB beanB;
@Autowired
public DI(BeanA beanA, BeanB beanB) {
this.beanA = beanA;
this.beanB = beanB;
}
Почему
https://habr.com/post/334636/
Скрыть ненужные чаты в Telegram
Если используете Telegram Desktop, зайдите в настройки и наберите на клавиатуре "workmode". Приложение предложит перезапустить его. После перезагрузки над чатами появится кнопка для скрытия чатов, у которых вы отключили уведомления.
#telegram
Если используете Telegram Desktop, зайдите в настройки и наберите на клавиатуре "workmode". Приложение предложит перезапустить его. После перезагрузки над чатами появится кнопка для скрытия чатов, у которых вы отключили уведомления.
#telegram
Что такое "сделать"
В статье рассказывается, как правильно работать в проекте, оценивать сроки и никого не подводить.
https://ksoftware.livejournal.com/202173.html
В статье рассказывается, как правильно работать в проекте, оценивать сроки и никого не подводить.
https://ksoftware.livejournal.com/202173.html
Вопросы с собеседований
— виды циклов
— что такое рекурсия
— отличие final, finally, finalize
— что такое try-with-resource
— отличие wait(100) от sleep(100)
— что такое пул строк
— почему String является immutable
— какие виды деревьев существуют
— примеры применения деревьев
— рассказать, как работает HashMap
— что такое автобоксинг
— рассказать про алгоритмы сортировки и их сложности
— для чего нужны дженерики
— виды циклов
— что такое рекурсия
— отличие final, finally, finalize
— что такое try-with-resource
— отличие wait(100) от sleep(100)
— что такое пул строк
— почему String является immutable
— какие виды деревьев существуют
— примеры применения деревьев
— рассказать, как работает HashMap
— что такое автобоксинг
— рассказать про алгоритмы сортировки и их сложности
— для чего нужны дженерики