0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Микросервисы для Java программистов. Практическое введение во фреймворки и контейнеры. (Часть 3)

Микросервисы для Java программистов. Практическое введение во фреймворки и контейнеры

Перевод книги Кристиана Посты (Christian Posta) Microservices for Java Developers. A Hands-On Introduction to Frameworks & Containers.

ГЛАВА 1. Микросервисы для Java программистов

Чего Вы можете ожидать от этой книги?

Эта книга ориентирована на программистов и архитекторов Java, интересующихся разработкой микросервисов. Мы начнем книгу с высокоуровнего обзора общих принципов и фундаментальных требований, которые должны быть выполнены для успешной реализации микросервисной архитектуры. К сожалению, простое применение современных технологий не решает магическим образом всех проблем присущих распределенным системам. Мы рассмотрим основных игроков и то, что успешные компании сделали, чтобы микросервисы на них работали, включая культуру, организационную структуру и факторы рынка. Затем мы совершим глубокое погружение в несколько Java-фреймворков, используемых в реализации микросервисов. Репозиторий примеров исходных кодов из данной книги расположен на GitHub. Испачкав руки в коде, мы вернемся на воздух и обсудим проблемы развертывания, кластеризации, отказоустойчивости и то, какие решения предлагают Docker и Kubernetes в этих областях. Затем мы снова вернемся к деталям нескольких практических примеров с применением Docker, Kubernetes и NetflixOSS для демонстрации возможностей, которые они придают облачной микросервисной архитектуре. Закончим мы некоторыми положениями, которые мы не можем раскрыть в такой небольшой книге, но которые от этого не становятся менее важными: конфигурирование, протоколирование и непрерывная поставка (CD).

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

Вы работаете на компанию-разработчика ПО

Программное обеспечение действительно «поедает» весь мир. Бизнес понемногу начинает это понимать. Существует два основных двигателя этого феномена: удовлетворение потребностей посредством высококачественных сервисов и быстрая коммодизация технологий. Эта книга имеет, в основном, формат практического руководства с примерами, но прежде чем мы погрузимся в технологии, нам необходимо правильно расставить декорации и понять, кто участвует и какую роль исполняет. В последние годы мы «до тошноты» обсуждали, как сделать бизнес более гибким, однако мы должны полностью разобраться, что это значит. Иначе мы получим очередную банальность, с которой и так все вокруг носятся.

На протяжении более чем 100 лет бизнес был сосредоточен на создании продуктов и убеждении покупателей в необходимости потребления этих продуктов: столы, микроволновки, автомобили, обувь, да всё что угодно. Идея, стоящая за всей этой «ведомой производителем» экономикой, происходит из сформулированного Генри Фордом тезиса — «если Вы можете произвести большое количество продукции при малых издержках, то рынок будет практически бесконечным». Для того, чтобы это работало, Вам потребуется несколько односторонних каналов прямого маркетинга в массы, чтобы убедить их в том, что они нуждаются в вашей продукции и их жизнь с ними станет значительно лучше. Практически весь 20-й век эти однонаправленные каналы существовали в форме рекламы на телевидении, в газетах, журналах и на рекламных щитах. Однако, такая ведомая производителем экономика «сложилась» потому, что рынки полностью насытились продукцией (сколько телефонов/автомобилей/телевизоров Вам нужно?). Более того, Интернет вместе с социальными сетями изменяет динамику взаимодействия производителей с потребителями (и что более важно то, как потребители взаимодействуют с производителями).

Социальные сети позволяют нам как потребителям свободнее обмениваться информацией друг с другом и с компаниями, с которыми мы имеем дело. Мы доверяем друзьям, семье и другим людям больше, чем маркетинговым отделам компаний. Вот почему мы прибегаем к помощи социальных сетей при выборе ресторанов, отелей и авиаперевозчиков.

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

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

Технологии развиваются по схожим с экономикой, биологией и юриспруденцией циклам взрывного роста и стагнации. Это привело к великим новациям таким, как паровой двигатель, телефон и компьютер. Тем не менее, на конкурентных рынках ключевые новации требуют больших инвестиций и скорого внедрения для быстрой капитализации на соответствующем рынке. Это создает еще большую конкуренцию, большие объемы производства и ведет к падению цен, что в конце концов делает ранее инновационную технологию общеупотребительной. По мере коммодизации мы продолжаем развивать инновации и видоизменяться — цикл повторяется. Коммодизация привела нас от мэйнфреймов к персональному компьютеру и к тому, что мы сейчас называем «облачными вычислениями», которые по сути представляют собой общедоступную услугу с практически нулевыми капитальными затратами для потребителя. Поверх облачных вычислений мы теперь развиваем другую новацию в форме цифровых сервисов.

Читать еще:  Find My Device: Как найти потерянный Android смартфон

Существенную роль в технологических изменениях играет программное обеспечение (ПО) с открытым кодом. Следуя кривой коммодизации, сообщества ПО с открытым кодом это место, где разработчики могут бросить вызов коммерческим компаниям, создавая инновации в программном обеспечении в областях, где однажды был выбор только из «любого черного» (да еще без исходных кодов и с высокой стоимостью лицензии). Отсутствие выбора подталкивает сообщества к созданию таких вещей, как операционные системы (Linux), языки программирования (Go), менеджеры очередей (Apache ActiveMQ) и веб-сервера (httpd). Даже те компании, которые изначально отвергали ПО с открытым кодом начинают постепенно присоединяться, открывая исходные тексты своих технологий и внося свою лепту в существующие сообщества. По мере того, как ПО с открытым кодом и связанная с ним экосистема становятся нормой, мы начинаем наблюдать множество инноваций в программных технологиях, приходящие напрямую из мира открытого ПО (например Apache Spark, Docker и Kubernetes).

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

И этот факт пугает большинство исполнительных и ИТ-директоров. По мере того, как программное обеспечение быстро становится для компаний средством построения цифровых услуг, накопления опыта и приобретения преимущества над другими, многие понимают, что они должны стать разработчиками ПО в своих соответствующих «вертикальных» рынках. Прошли дни тотального ИТ-аутсорсинга и отношения к ИТ, как к общеупотребительной услуге и центру затрат. Чтобы оставаться конкурентоспособными, компаниям нужно принять программное обеспечение как конкурентное преимущество. А чтобы воспользоваться этим конкурентным преимуществом — они сами должны стать организационно гибкими.

Микросервисы для Java программистов. Практическое введение во фреймворки и контейнеры. (Часть 3)

Но другой пост сказал, что микросервисы плохие

Этот сабвуфер является микросервисным биполярным по-настоящему. Серьезно устаревшее сообщество

Черепаха считалась зайцем устаревшей.

Этот ответ бессмысленный и произвольный

Я бэкэнд, поэтому я ничего не знаю об этом. Я только что попробовал примеры докеров на днях в первый раз. Почти все на работе тоже сделано на заказ, поэтому у меня мало шансов научиться чему-либо подобному. У меня нет сильного желания изучать вещи ops, но я определенно должен учиться немного. Это будет здорово.

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

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

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

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

Я не понимаю, как меня понизили за комментарий «это поможет мне научиться». Действительно очень любопытно.

Я думаю, что люди, которые проголосовали против вас, были так сосредоточены на том, что «я бэкэнд, поэтому я ничего не знаю об этом», они не могли прочесть это.

Почему это то, с чем кто-то может поспорить? Это как люди смотрят. Вы видите, что кто-то делает что-то и удивляетесь, почему они это сделали.

потому что именно так RedDit работает, к сожалению (или, к счастью, к счастью?), люди будут принижать то, с чем они не согласны. в вашем случае

«Я бэкэнд, поэтому ничего об этом не знаю»

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

Ах, так ты прыгаешь по всему слову «так»?

Я просто имел в виду это как описание меня. Моя конкретная область разработки (высокая производительность и чувствительность к задержке) не использует vms или контейнеры в ряде областей из-за соображений производительности (в основном связанных с io).

Это утверждение, которое вы называете «явно ложным», верно для многих из нас, от встроенных до высокопроизводительных распределенных сетей. Я разработал всю торговую систему, и это просто не та технология, которую я когда-либо имел в ней использовать. Есть другие места на периферии, которые, кажется, будут полезны, но это не моя рубка. Мы также склонны писать много вещей по дому по разным причинам и делать довольно низкоуровневые вещи, так что это мешает мне узнавать о них.

вся торговая система

какие инструменты? Много ли в вашей истории сообщений о вашей работе с Java, потому что я бы хотел ее прочитать.

В основном акции и фьючерсы, некоторые FX, некоторые фиксированные. Я не думаю, что моя история сообщений содержит много чего-нибудь подобного. Я мог бы ответить на несколько вопросов здесь или там о переполнении стека и связанных сайтах. Может быть, несколько твитов (почему-то производительность Java повсюду в Twitter).

Большая часть работы на Java довольно низкого уровня и много переписывается, чтобы избежать проблем с сборкой мусора и заставить HotSpot генерировать хороший код (требуется некоторая разборка). Я думаю, что эти системы похожи на гоночные автомобили серийных автомобилей: снаружи они выглядят как обычные системы Java, но внутри они совершенно другие и полностью отделаны.

Читать еще:  Как восстановить страницу в твиттере после удаления?

Если бы такие вещи, как докер, не имели никакого эффекта задержки, их было бы здорово использовать в более широком диапазоне. Если бы все аспекты безопасности Docker были удалены, это могло бы быть ноль накладных расходов?

Есть ли у вас какие-либо рекомендации в блоге, которые охватывают темы Java и трейдинга?

Ах, так ты прыгаешь по всему слову «так»?

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

может быть, что-то вроде «я не очень много работал с этими технологиями из-за работы в другой области

Я считаю, что это то, что я сказал:

Почти все на работе тоже сделано на заказ, поэтому у меня мало шансов научиться чему-либо подобному. . Я определенно должен учиться немного. Это будет здорово.

Я не могу поверить, что люди были так взорваны из-за такой крошечной вещицы.

clothes_are_optional ответил на него довольно хорошо

Потому что людям нравится конфликт, когда он анонимный. Это заставляет их чувствовать себя сильными в атаке, когда нет риска контратаки.

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

Или, некоторые люди на законных основаниях не имеют навыков чтения. Это всегда возможно.

Просто катись с этим. Меня опускают до дерьма, когда я открываю рот в подпрограмме Javascript, если осмелюсь хотя бы немного / сорта / возможно / слегка оспорить то, что сообщество считает лучшим. Я думаю, что некоторые люди не любят других, которые ставят под сомнение их знания либо.

Полагаю, сделайте свой выбор: противники, плохие читатели или неуверенные люди. Может быть смесь тоже 🙂

«Микросервисная архитектура (MSA) — это подход к построению программных систем, который разбивает модели бизнес-доменов на более мелкие, согласованные, ограниченные контексты, реализуемые сервисами».

Итак . услуги. SOA. Что такое «Микросервис» на самом деле? Новое модное слово.

Этот пост сегодня является одним из двух для Орейли. Это действительно просто СПАМ.

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

Не могли бы вы рассказать о тупых / умных + конечных точках / трубах?

Конечно. В SOA у вас были умные каналы, термин, который относится к каналам, которые не просто обеспечивают соединение. В SOA эти каналы были известны как корпоративная сервисная шина (ESB). Они будут направлять данные в зависимости от их содержимого, а также выполнять вычисления и преобразования данных на лету. Затем конечные точки будут обрабатывать данные, отправлять их обратно в ESB, который снова будет определять маршрутизацию и конечную точку и выполнять предварительно запрограммированные преобразования данных и т. Д.

В микросервисах трубы ничего не определяют. В основном это просто JSON через HTTP. Конечные точки определяют, куда будут отправлены данные, а любые преобразования или операции выполняются конечными точками, а не ESB.

Надеюсь, это поможет!

Это SOA. Сервисная шина предприятия теперь просто распределена по общим библиотекам, балансировщикам нагрузки, оркестровщикам контейнеров и т. Д. И мыло xml заменено на json. Концептуально ничего особенного не изменилось.

Умные конечные точки — тупые трубы, умные трубы — тупые конечные точки. Это фигня. Маркетинг. Трубы — это трубы, они не умны и не глупы.

Пособие для будущего Java разработчика. Enterprise — часть 3

Я сказал тебе правду. Правду — если смотреть на неё с определённой точки зрения. Многие из тех истин, которым мы доверяем, являются таковыми лишь тогда, когда мы придерживаемся определённой точки зрения.
Оби-Ван Кеноби (Звездные войны: Эпизод 6 — Возвращение Джедая)

Да, вы уже близко. За горизонтом маячит финишная черта. Оглянувшись назад, вы замечаете, что вместо сотни учащихся вас осталось всего человек 20. Закон Парето неумолим — пока все остальные ноют, вы двигаетесь дальше. Перед вами ключ, а открывать дверь или нет — решать только вам. Ladies and gentlemen, представляю вам заключительную часть по Enterprise.

Application Servers

Tomcat

Tomcat нужно не просто уметь запускать и вырубать. Мыслите шире: при своей простоте этот application server имеет глубину. Практические шаги при освоении:

  1. Задеплоить web application на томкат;
  2. Прикрутить Remote Debug;
  3. Perfomance tuning;
  4. Разобраться с настройкой SSL;
  5. Security. servers.xml;
  6. Jasper, Connectors.

На данный момент документация по Tomcat 8 находится на официальной странице Apache. Для более детального изучения могу порекомендовать книгу «Tomcat The Definitive Guide» by Jason Brittain:

Обратите внимание на разделы Perfomance, Configuration и Deployment.

Weblogic

Из тяжелых Enterprise серверов, думаю, следует рассмотреть Weblogic. Не будем трогать связку с Oracle Service Bus. Начните с официального Introduction туториала и плавно переходите к «Oracle WebLogic Server 12c: Distinctive Recipes: Architecture, Development and Administration» by Frank Munz:

По большому счету, можно повторить почти те же шаги, которые описаны выше для Томката. Обратите внимание на роль JMX, да и вообще на то, как тесно компоненты JavaEE связаны с процессами в Weblogic.

Logging

Slf4J

Думаю, достаточно разобрать Slf4j в связке с Log4J/Logback. Не хочу рекомендовать какие-либо книги — обратите внимание на slf4j.org и на то, как этот фасад взаимодействует с logging фреймворками.

Что нужно уловить в логировании? Приблизительно:

  1. Уровни логирования. Где ставить error, где trace, где остальное;
  2. Цена вызова. Да-да, вы не ошиблись. Логирование — штука не бесплатная, стоит каких-то милли/нано секунд. Шикарная статья на эту тему у Руслана Черемина;
  3. Как выключать/включать разные уровни логирования;
  4. Принципиальные различия между log4j/java.logging/logback.
Читать еще:  Восстановление данных и вещей

Не углубляясь в асинхронный logging и всем надоевший Spring AOP, где каждый считает своим долгом использовать АОП модель только для логирования, уясните следующее: что вам дает логирование и как вы можете улучшить проект, используя его. Обратите внимание на возможные анти-паттерны в этой области.

Presentation Level

Serlvets/JSP

Ох уж эта Kathy Sierra! Что я бы делал без тебя? Одна из самых лучших книг Java тематики — «Head First Servlets and JSP» by Kathy Sierra:

Так разжевать материал — это надо уметь! Здесь не только о сервлетах, а вообще о Web разработке в целом. Начать с того, что представляет из себя Client-Server, после пройтись по HTTP и глубоко коснутся Servlets/JSP — это твердая 5. Читать всем! Да, я знаю, что книга устаревшая. Дело в концепции, которую лучше никто не объяснит.

А пока вы готовитесь кидать в меня помидоры, я представляю вторую толстую книгу — «Murach’s Java Servlets and JSP, 3rd Edition» by Joel Murach:

Это не менее авторитетная книга по сервлетам. Возможно, Head First Servlets покажется вам детской книгой, тогда присмотритесь к этой.

Для поклонников «зачем читать книги, если есть спецификации» — Servlet API,JavaServerTM Pages 2.1.

Spring MVC

Не буду долго останавливаться здесь, потому как в прошлой части было разобрано многое по Spring. Конкретно по Spring MVC — «Professional Java Development with the Spring Framework» by Rod Johnson:

Обратите внимание только на те главы, в которых описан Spring MVC, остальное уже покрыто в прошлой части.

На что обратить внимание в Spring MVC:

  1. Конечно же, DispatcherServlet. Что это за зверь такой и почему он тут самый главный?
  2. Дует DispatcherServlet и WebApplicationContext;
  3. ViewResolver, MultipartResolver;
  4. Controllers, Generators;
  5. Валидация.

Начинать изучение GWT без просмотра роликов от самого Google — это плевок им в душу.

Из книг — «GWT in Action» by Adam Tacy:

Полноценное руководство по GWT. Рекомендую. Если у вас есть еще какие-то интересные ресурсы по GWT, пожалуйста, оставьте в комментариях.

Services

Эх, сервисы. Уже и сам Фаулер заговорил о Microservices как об одних из главных тенденций ближайшего времени. С чего начать? Для начала остановите популярную какофонию у себя в голове: REST — это вид архитектуры, SOAP — это протокол. Все! Никаких но!

Очень сильный толчок в развитии SOA головного мозга можем вам дать Thomas Erl и сайт, где продаются его книги.

Касательно Microservices — есть очень хорошая статья на хабре, а также специальный раздел Microservices на страничке Фаулера.

Больше реальных примеров? Посмотрите, как реализованы сервисы Soundcloud.

Java презентации? Обзор возможных фреймворков есть тут.

Прежде всего, сама диссертация от создателя REST Roy Fielding.

Из книг — «The REST API Design Handbook» by Georgee Reese. Пожалуй, это самая популярная книга для вводной по REST API:

Также стоит внимания и спецификация по JAX-RS.

Если вы напрямую работаете с Jersey, то уже и без меня знаете, что лучше этого мануала ничего нет и не нужно.

Из книг по JAX-RS можно выделить «RESTful Java with JAX-RS» by Bill Burke:

Еще — «Java Web Services: Up and Running» by Martin Kalin:

Кстати, эта книга в какой то степени покрывает и JAX-WS. Вот спецификация по JAX-WS.

Front-End

Я не хочу забирать хлеб у фронтендщиков, поэтому скажу лишь следующее: любой джавист, связанный с web проектами, обязан знать HTML/CSS/JS в той или иной степени. Предлагаю сильно не зацикливаться на этом, а просто разобрать ресурсы, хотя бы для поверхностного изучения.

«Изучаем HTML, XHTML и CSS» Эрика Фримена:

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

Конечно, нельзя не пройти мимо двух популярных школ — CodeAcademy и CodeSchool.com. Не поскупитесь на платный аккаунт CodeSchool.com и пройдите все (я не шучу) — это, наверное, самые лучшие курсы по front-end в интернете. Большое преимущество курсов от CodeSchool — ориентированность на HTML5 и responsive design.

JavaScript

Та же самая серия книг Head First на русском — «Изучаем JavaScript» Майкла Моррисона:

Конечно, полезно будет разобраться хотя бы в 2-3 толстых фреймворках по JS. Начните с jQuery и/или AngularJS, благо книг и ресурсов полным-полно.

RoadMap

Вот мы и заканчиваем статью Enterprise. Представляю вашему вниманию RoadMap по изучению материала. Говорю прямо и сразу в лоб: новичку все читать не нужно. Как в игре, вам лишь нужно выбрать расу и класс. Расу мы уже выбрали, поэтому давайте определимся с классом.

Внимание! Помимо стека, каждый толковый junior должен:

  1. Уметь на экспертном уровне работать с операционной системой;
  2. Иметь представление о vcs (git, svn);
  3. Знать English на внятном уровне (уметь говорить и понимать, что от тебя требуется), разбираться не только в технической документации, но и в проектной;
  4. Быть знакомым с Software Development Lifecycle, а также Scrum/Waterfall.

Junior Light Stack. Без прямого упора на EE фреймворки.

Junior EE. Ну тут все понятно, полная интеграция с Java Enterprise Edition. Большие рыбы аутсорса уже выехали к вам 🙂

Java Web Junior. Упор на Web разработку. В скобочках указаны дополнительные варианты фреймворков, которые можно изучить.

Заключение

Выбрав один из вариантов, недостаточно просто прочитать те книги, которые были озвучены в этой статье. Главное — это своими руками написать проект, использовав все, что есть на картинке, и по делу.

Статью Enterprise можно считать закрытой. Если есть какие-то вопросы, пожалуйста, задавайте в комментариях — я постараюсь ответить.

В следующей статье мы поговорим о новых языках программирования и о Computer Science.

Спасибо за внимание! Удачи, ребята, в обучении. 😉

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector