Этот курс будет про работу с языком Java (JVM, ООП на Java), с базами данных, со средствами сборки и тестирования, с микросервисами
Первый модуль будет посвящен изучению Java (дополнительно можно ознакомиться на сайте Георгия Корнеева), второй модуль - Spring и микросервисам
До этого существовали большие компьютеры, кушающие перфокарты, далее появились такие языки, как FORTRAN, BASIC и другие
Основной недостаток: ни один из представленных в те времена ЯП не мог удовлетворить одновременно всем критериям:
простота использования
предоставляемые возможности
безопасность
эффективность
устойчивость
расширяемость
Первый таким языком стал C - он был создан для работяг, тогда как более старые языки были созданы в академических целях
Потом появился C++, объединивший в себе ООП, однако C++ - платформо-зависимый язык
К 90-ым годам с распространением компьютеров появились разные платформы. С этим появилась концепция превращения кода в промежуточную стадию, которую можно запускать на процессорах разных архитектур. Ввели термины managed code (управляемый код) и unmanaged code (неуправляемый код). Управляемый код управляется средой выполнения - виртуальной машиной.
В Java код переводится в байт-код, который транслируется в машинные инструкции при помощи Java Virtual Machine (JVM). При этом понимание Java-программисту устройства виртуальной машины также не нужно, как и понимание устройства компилятора C-программисту (*тык*)
Java Runtime Environment (JRE) - среда выполнения для Java, которая содержит библиотеки классов, загрузчик классов и т. д.
Java Development Kit (JDK) - средства, позволяющие разрабатывать на Java
JVM состоит из:
спецификации - набором правил, диктующих, как должна быть реализована JVM. “JVM должна правильно запускать программы, написанные на Java”
реализации - реальной программы, которая будет запускать и позволять разрабатывать программы, написанные на Java
экземпляра - оболочки над вашим кодом, которая его исполняет и заботится о том, как она это делает
Пример кода на Java:
package ru.butenko.springdatatest; // название пакета
import java.time.LocalDate;
public class Dog {
public String name;
private LocalDate birthdate;
public int calculateAge() {
return LocalDate.now().getYear() - this.birthdate.getYear();
}
}
Название пакета отражается название организации (или индивидуального человека), название проекта и файловую структуру проекта
При компиляции класс из файла .java
переводится в байт-код .class
Также в Java есть примитивные коллекции, например, Queue, Deque и другие (*тык*)
Ошибки в Java делятся на 2 типа:
___Error
- ошибки, связанные с JVM
___Excetion
- исключения, связанные с работой кода
Если метод может вызвать исключение во время работы, то оно должно быть указано в сигнатуре метода:
public void Do() throws Exception {
...
}
Также хорошим тоном будет указывание документации для классов и методов:
import java.time.LocalDate;
/**
* Класс "Собака"🐶
*/
public class Dog {
public String name;
private LocalDate birthdate;
/**
* Метод, вычисляющий возраст собаки
*
* @return int возраст собаки
*/
public int calculateAge() {
return LocalDate.now().getYear() - this.birthdate.getYear();
}
/**
* Метод, дающий собаке новое имя
*
* @param String новое имя собаки
*/
public void setName(String newName) {
name = newName;
}
/**
* Метод, вычисляющий возраст собаки
*
* @throws Exception исключение
*/
public void DoException() throws Exception {
throw new Exception("Yay!");
}
}