mimokrokodilchik

mimokrokodilchik

Что то про айти: https://t.me/+UIzMOW06idowOTMy
Пикабушник
поставил 86 плюсов и 122 минуса
отредактировал 0 постов
проголосовал за 0 редактирований
2025 рейтинг 222 подписчика 3 подписки 28 постов 4 в горячем

Архитектура минимального Java проекта перед трудоустройством

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

Три Базовых Слоя. Фронт, Бэк, База.

Архитектура минимального Java проекта перед трудоустройством Java, Программирование, Разработка, IT, Трудоустройство, Длиннопост

Всех троих надо знать и понимать.

Слишком общие словечки.

Каждая из частей может сильно варьироваться.

Фронт может быть:

  • Голый Js либо легкие утилитарные либы аля jquery - это очень вряд ли, сейчас так не пишут.

  • Какой то фреймворк аля React.js или Vue.js (фронтендеров вообще хлебом не корми, дай новый фреймворк)

Бэк может быть:

  • Голая джава (ну я не верю в это особо, слишком редкий зверь в энтерпрайзике)

  • Спринг монолитик (это наиболее реально для джуна)

  • Спринг микросервисный (это вам еще рано)

  • Спринг реактивный (тож рано)

  • Джакартовый - раньше называли джава ее (тож не верю, он как то сдох уже давно и то что воскресло из пепла выглядит как говнямба)

  • Кваркус или микронавт (новые типочки, но я так понимаю что после спринг нейтива у них не осталось преемуществ)

  • Список можно продолжать, бэк можно поднять в разных контейнерах

База может быть:

  • Классический SQL или еще RDBMS - это наше все, таблички, селекты с джойнами.

  • NOSQL (Not Only SQL) - вагон нереляционных братюнь. Классические NOSQL это монга и эластиксерч. Если последний (эластисерч) это изян тк по сути представляет из себя легкомасштабируемый кэш с фичами полнотекстового поиска (кстати большинсто nosql легко масштабируются по своей природе)

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

Что за цирк? Почему так сложна?

Я не перечислил все вариации, но для новичка и вышесказанное уже выглядит немного пугающе. Для новичка пойдет следующий вариант:

Архитектура минимального Java проекта перед трудоустройством Java, Программирование, Разработка, IT, Трудоустройство, Длиннопост

Красное - значит так себе, но пойдет. Зеленое значит - пойдет.

Картина слишком общая, перейдем к конкретике

Что нужно знать и сделать по фронту в лучшем случае:

  • По минималке надо знать JS но это совсем базовый вариант, в таком случае есть шанс совсем не понимать что происходит на первом месте работы.

  • По хорошему надо разобраться с NPM. Как им билдить проекты на каком нибудь React'е. Ну и конечно же базовый React надо знать (либо альтернативы типа Angular)

Что нужно включить по бэку

  • Для минималочки пойдет спринг и его основные понятия IOC/DI или то как работать с бинами, как их инициализировать и инъектировать куда надо.

  • Понадобится минимальная авторизация те Spring Basic Security. Это про то как сделать один POST request с именем и паролем и получить в ответ куку которая затем будет ипользоваться для доступа к контроллерам.

  • Надо уметь писать REST контроллеры и вообще понимать базовые идеи REST архитектуры. Те нужно сделать как минимум CRUD (create/read/update/delete) API и подключить его к фронту.

  • Надо уметь связываться с базой через jdbcTemplate (надо сделать хотя бы простейший CRUD) и уметь делать простейшую транзакцию. К сожалению нужно знать и сраный Hibernate и потому придется продублировать ровно тот же CRUD который вы сделаете на jdbcTemplatе

  • Хорошо бы добавить сюда какие нибудь внешние сервисы, например, которые можно тащить по http (используя restTemplate) или может быть какую то альтернативу и сходить по SOAP протоколу.

Что нужно включить по базе

  • По базе для начального проекта пойдет RDBMS те реляционная база еще её называют SQL. Вариант можно выбрать любой - Mysql, Postgres, OracleXE.

  • При работе с базой данных нужно уметь создавайть схему, писать запросы к ней (от базовых SELECT * FROM USER where NAME = 'ololoshka' до чего то более солидного c JOIN, GROUP BY, HAVING

Все ли на этом? Неть.

Тесты. Тесты. Тесты.

Вся эта система должна быть покрыта тестами, без тестов код считается не готовым к продакшену. Тесты как минимум можно написать и на фронт и на бэк отдельно. Но для новичка просто покрытый бэк достаточен.

Что нужно знать по тестам:

  • Начинаем со стыдливого мокирования вроде Mockito или PowerMock и пишем юнит тесты на слои.

  • Затем делаем нормальную интеграцию подменяя внешние сервисы (вроде базы данных или какого нибудь интегрированного сервиса) встроенными вроде h2 базой данных. Вообще это не так просто, вангую сделать экспресс курс по этой теме.

Непрерывная интеграция и автоматизация. Сиай Сиди.

Архитектура минимального Java проекта перед трудоустройством Java, Программирование, Разработка, IT, Трудоустройство, Длиннопост

Пример пайплайна в дженкинсе (каждый кубик делает какой то этап типа билда проекта)

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

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

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

Какими могут быть проекты.

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

Сложна Сложна Сложна.

Архитектура минимального Java проекта перед трудоустройством Java, Программирование, Разработка, IT, Трудоустройство, Длиннопост

Все вышесказанное в сумме выглядит как небольшой эпический проект. Так оно и есть. Я пытался дать некое подобие всех этих технологий двум группам и, потратив на каждую где то по 40 часов, все равно не покрыл все темы. Но эта статья может послужить лишь ориентиром и не обязательно делать всю архитектуру. Например, можно закрыть лишь бэк и базу. Для некоторых компаний и этого будет достаточно.

Больше про Java и смежные технологии можно найти тут.

Показать полностью 3

Основы интеграционного тестирования на Java

Основы интеграционного тестирования на Java Java, IT, Разработка, Тестирование, Длиннопост, Картинка с текстом

Кому интересна Java добро пожаловать в группе https://t.me/vkatvit

Показать полностью 1

Как итерироваться через коллекцию в Java. Loop vs Iterator

Как итерироваться через коллекцию в Java. Loop vs Iterator Программирование, Java, Программист, IT, Разработка, Длиннопост

Вам понравилась статья? Добро пожаловать в группу для изучающих джаву как новичков так и опытных - https://t.me/+UIzMOW06idowOTMy  Там я отвечаю на вопросы и провожу бесплатные стримы.

Показать полностью 1

Integer autoboxing. Что будет выведено на экран?

Каким будет результат программы?

Integer autoboxing. Что будет выведено на экран? Java, Разработка

Тем кто сомневается вот такая подсказка:

Integer autoboxing. Что будет выведено на экран? Java, Разработка

Всем начинающим советую телеграм группу про Java. Там можно задавать вопросы по Java и получать ответы от опытных разрабов. https://t.me/+IuxPxrb7x1Q5YmIy

Показать полностью 1
Отличная работа, все прочитано!