JavaStart
909 subscribers
909 photos
28 videos
619 links
Учи Java вместе с нами!
Наша платформа с курсом - https://javastart.tech
Ютуб с обучающими видео - https://www.youtube.com/@javastart_tech
Download Telegram
Архитектура приложений. Часть 3. Отличие Микросервисов от Монолита.

Сегодня давайте сравним два популярных подхода к разработке приложений: микросервисы и монолит.

Монолит:

🔹 Один блок
Весь код, базы данных и компоненты находятся в одном приложении.

🔹 Простота начала
Создание и развертывание монолита обычно проще.

🔹 Единое развертывание
Приложение разворачивается целиком, что может быть проще для управления.

🔹 Обслуживание
Если один единый монолитный сервис сломался, то все приложение не будет работать до исправления проблемы.

Микросервисы:

🔹 Множество компонентов
Приложение разбито на небольшие независимые микросервисы.

🔹 Масштабируемость
Микросервисы могут быть масштабированы независимо.

🔹 Гибкость
Возможность использовать разные технологии для разных микросервисов.

🔹 Обслуживание
Если сломался один или даже несколько отдельных сервисов, то приложение может продолжать свою работу в целом.

Как выбрать подход?

🔹 Монолит, если вы только начинаете и хотите простоту разработки и развертывания.

🔹 Микросервисы, если проект сложный, требует гибкости и быстрого масштабирования.

Важно подбирать подход в зависимости от целей, размера проекта и команды разработчиков. Оба варианта имеют свои плюсы и минусы. Помните, в разработке нет одного "правильного" пути – нужно выбирать наиболее подходящий для конкретной ситуации!

👉 JavaStart. Подписаться
👍62🔥21
Какой артефакт SCRUM представляет собой список всех задач, которые разработчики планируют выполнить в текущем спринте?
Anonymous Quiz
11%
Бэклог продукта (Product Backlog)
6%
Инкремент (Инкремент)
40%
Спринтовый бэклог (Sprint Backlog)
32%
Спринт (Sprint)
10%
Посмотреть ответ
4👍3🔥1🤓1
IS-A отношения в Java. Часть 1.

IS-A отношения в Java – это способ показать, что конкретный объект является типом другого объекта.

Давайте посмотрим, как ключевое слово extends используется для достижения наследования в Java.

public class Animal {
}

public class Mammal extends Animal {
}

public class Reptile extends Animal {
}

public class Dog extends Mammal {
}

На основе приведенного на Картинке примера, в объектно-ориентированных терминах верно следующее:

Класс Животное – суперкласс.

Млекопитающее – подкласс Животного.

Рептилия и Млекопитающее – подклассы Животного.

Собака является подклассом Млекопитающего и Животного.

👩‍💻 Наш практический курс Java–разработчика

👉 JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥211
IS-A отношения в Java. Часть 2.

Ключевое слово instanceof.

Для определения типа объекта (является ли конкретный объект является типом другого объекта) в Java используется ключевое слово instanceof.

Давайте посмотрим на код на Картинках.

Объект m класса Mammal является типом объекта Animal, потому что класс Mammal наследуется от супер-класса Animals.

Объект d класса Dog является типом объекта Mammal, потому что класс Dog наследуется от класса Mammal.

При этом объект d класса Dog еще и является типом объекта Animal, потому что класс Mammal наследуется от класса Animal.

Как я уже говорил ранее - в Java нет множественного наследования (class X extends Y, Z, …), но классы могут наследоваться по цепочке (class X extends Y, class Y extends Z).

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍52
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍2💯1
ООП, Полиморфизм в Java. Часть 1.

Полиморфизм, если перевести, - это значит "много форм". Например, актер в театре может примерять на себя много ролей - или принимать "много форм".

Так же и наш код - благодаря полиморфизму он становится более гибким, чем в языках программирования, которые не используют принципы ООП.

Переопределение методов родителя.

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

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

Именно то, что мы можем создать в классе-наследнике класс с таким же названием, как и класс, который мы унаследовали от родителя, и называется переопределением.

Представим, что у нас есть такая структура как на Картинке.

Вверху иерархии классов стоит класс Animal. Его наследуют два класса - Cat и Dog.

У класса "Animal" есть метод "голос" (voice). Этот метод выводит на экран сообщение "Голос".

Естественно, ни собака, ни кошка не говорят "Голос" 🙂 Они гавкают и мяукают. Соответственно, нам нужно задать другой метод для классов Cat и Dog - чтобы кошка мяукала, а собака гавкала.

Поэтому, в классах-наследниках мы переопределяем метод voice(), чтобы мы в консоли получали "Мяу" и "Гав".

Обратите внимание: перед методом, который мы переопределяем, пишем "@Override". Это дает понять компилятору, что мы хотим переопределить метод.

Тем не менее, полиморфизм - это принцип. Все реальные примеры, которые можно привести - это только способы реализации полиморфизма. Рассмотрим еще пример в одном из след постах.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍731👨‍💻1
Какое событие SCRUM помогает команде инспектировать свой прогресс и вносить необходимые корректировки в ходе спринта?
Anonymous Quiz
30%
Ретроспектива (Retrospective)
4%
Планирование спринта (Sprint Planning)
4%
Демонстрация (Demo)
48%
Ежедневные совещания (Daily stand-ups)
6%
Груминг (Grooming)
8%
Посмотреть ответ
👍32🔥1🎉1
ООП, Полиморфизм в Java. Перегрузка методов. Часть 2.

Рассмотрим на практическом примере как проявляется полиморфизм, а потом снова вернемся к его определению.

Полиморфизм часто часто описывают фразой: Один интерфейс - много методов.

Но что это значит? Как проявляется полиморфизм?

Дело в том, что если бы в Java не было принципа полиморфизма, компилятор бы интерпретировал код на Картинке 1 как ошибку.

Как видите, методы на картинке отличаются значениями, которые они принимают:

первый принимает int, а второй принимает short.

Однако, поскольку в Java используется принцип полиморфизма (один из принципов ООП), компилятор не будет воспринимать это как ошибку, потому что такие методы будут считаться разными (Картинка 1).

Называть методы одинаково - это очень удобно. Например, если у нас есть метод, который ищет корень квадратный из числа, гораздо легче запомнить одно название (например, sqrt()), чем по одному отдельному названию на этот же метод, написанный для каждого типа (Картинка 2).

Как видите, мы не должны придумывать отдельное название для каждого метода - а главное их запоминать!

Это предполагает, что мы можем заполнить одно название (один интерфейс), по которому мы сможем обращаться к нескольким методам, меняя лишь аргументы.

Теперь Вы можете понять, почему часто этот принцип описывают фразой: Один интерфейс - много методов.

Перегрузка методов.

То, что показано выше - несколько методов с одним названием и разными параметрами - называется перегрузкой методов.

Все это - проявления "повышенной гибкости" объектно-ориентированного языка Java благодаря полиморфизму.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥21👏1👨‍💻1
Можно ли переопределить статический метод?

Чтобы правильно ответить на данный вопрос нужно понимать, что перегрузка метода и его переопределение – это разные понятия.

Сначала рассмотрим перегрузку.

Компилятор Java рассматривает методы с отличающимися параметрами как разные, поэтому не существует никаких ограничений.

Статические методы действуют на весь класс, а не к его экземплярам, здесь применяется статическое связывание, а значит, переопределить данный метод в дочернем классе невозможно.

Однако в дочернем классе не запрещено объявлять static-метод с теми же параметрами. Такая конструкция в Java называется перекрытие. В этом методе запрещено указывать слово super и аннотацию @Override.

class Base {
  static void prntMe() {
    System.out.prntln("Base!");
  }
}
class Child extends Base {
  static vod printMe() {
    System.out.prntln("Child!");
  }
}
Base instance = new Child();
instance.printMe(); // Хоть объект и Child, напечатается "Base!"

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72👨‍💻21🤓1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍5💯2🤓1
Сегодня поговорим о методах/функциях в Java.

Это важные концепции, которые позволяют нам создавать более организованный и масштабируемый код.

Что такое методы/функции?

Методы (или функции) - это блоки кода, которые могут выполнять определенные действия и возвращать результаты. Они позволяют нам изолировать определенные задачи в отдельные блоки, делая код более читаемым и легко управляемым.

Создание методов.

Давайте посмотрим, как создать метод в Java:

public int multiply(int a, int b) {
    int result = a * b;
    return result;
}

В этом примере мы создали метод multiply, который принимает два аргумента a и b и возвращает их произведение.

У метода есть модификатор доступа, название, аргументы в скобках, тип возвращаемого значения, тело метода.

Использование методов.

Вызвать метод можно следующим образом:

int x = 5;
int y = 3;
int product = multiply(x, y);
// product будет равен 15

Параметры и возвращаемые значения.

Методы могут принимать параметры (аргументы), которые передаются им при вызове. Они также могут возвращать значения определенных типов. В примере выше, int перед multiply означает, что метод вернет целочисленное значение.

Полезные советы.

1) Давайте методам понятные и описательные имена, чтобы их назначение было понятно даже без просмотра кода внутри;

2) Избегайте создания слишком больших методов. Лучше разбивайте задачи на более мелкие методы;

3) Подумайте о возможности переиспользования методов в разных частях программы.

Методы или функции - это один из ключевых инструментов программирования на Java. Они помогают делать код более структурированным, понятным и удобным для сопровождения. Практикуйтесь, создавая свои методы и экспериментируя с разными аргументами и возвращаемыми значениями.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👏32👨‍💻2
Работа с пользовательским вводом в Java.

Сегодня мы разберем самый простой пример, как работать с пользовательским вводом, чтобы наша программа могла взаимодействовать с пользователями.

Для чтения данных, введенных пользователем с клавиатуры, мы используем класс Scanner. На Картинке 1 показано как это работает.

После запуска программы в консоли появится строка "Введите ваше имя:"

Вводим Сергей

И после ввода имени будет вывод в консоли как на Картинке 2:
"Привет, Сергей!"

Анализ пользовательского ввода.

Scanner также позволяет нам анализировать ввод пользователя.

Например, давайте попросим пользователя ввести число и проверим, четное ли оно (Картинка 3).

Полезные советы.

1) Не забывайте импортировать java.util.Scanner в начале вашего кода, чтобы использовать класс Scanner;

2) При чтении строк с использованием nextLine(), помните, что метод оставляет в буфере символ новой строки. Возможно, вам придется добавить дополнительный scanner.nextLine() для очистки буфера перед следующим вводом.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2👨‍💻1
Какая SQL функция используется для подсчёта числа записей в таблице?
Anonymous Quiz
11%
SUM()
3%
AVERAGE()
81%
COUNT(*)
4%
MAX()
1%
Посмотреть ответ
👍3🎉21
7 Полезных Сниппетов Java для начинающих разработчиков. Часть 1.

Сегодня подготовил небольшую коллекцию полезных сниппетов (фрагментов кода), которые помогут вам быстро разобраться с некоторыми базовыми задачами в программировании на Java. Эти сниппеты пригодятся вам как на начальных этапах обучения, так и в будущих проектах.

Разобравшись в них, вы поймете, что язык Java - узнаваем и понятен.

Картинка 2 - работа с массивами;

Картинка 3 - чтение пользовательского ввода;

Картинка 4 - проверка четности числа;

Картинка 5 - методы и функции.

Эти сниппеты помогут вам быстро освоить базовые концепции языка Java и дадут хороший старт на вашем пути к освоению программирования. Практикуйтесь, меняйте код, добавляйте свои идеи!

Рассмотрим еще несколько узнаваемых фрагментов Java кода в следующем посте.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥511👨‍💻1