Содержание

10 приниципов разработки на Java / Хабр

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

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

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

1. Разделяй и властвуй

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

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

2. Повышение сплоченности/согласованности

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

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

3. Устранять связывание

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

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

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

   Если вы сможете сделать свои компоненты как можно более независимыми, вам будет легче отлаживать их. Это лучший дизайн. Я стараюсь делать свои пакеты практически как отдельный микросервис. То есть всю логику, например, работы с наградами я выношу отдельный модуль. А работу с валютами в другой. И модуль наград может зависеть от модуля валют, потому что награды могут быть из определенной валюты, но в тоже время можно сделать 3й модуль, который объеденит награды и валюты.  

4. Увеличьте абстракцию

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

В этом примере треугольник — это конкретная реализация формы, а форма — это общая идея. Абстракция уменьшает дублирование кода при одновременном повышении безопасности.

5. Повторное использование

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

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

6. Возможность расширения

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

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

7. Предвидеть устаревание

   Если вы используете внешние зависимости в своем проекте или системе, вам нужно быть очень осторожным с тем, какие зависимости вы используете. Могут ли они в будущем устареть? Есть много разных способов, с помощью которых внешняя зависимость может уйти в небытие. Он может устареть, он может больше не работать для определенной версии вашего языка программирования после обновления, или он может не поддерживаться или поддерживаться, скажем, в Windows, Linux или Mac. Вы уловили суть.

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

8. “Портируемый” дизайн

   При разработке системы вы должны помнить, что она может использоваться на другой платформе или устройстве, отличающемся от того, на что вы в настоящее время нацеливаетесь. Если вы создаете веб-приложение только для Интернета, это будет дорогостоящим и трудоемким, если вы когда-нибудь захотите превратить его в приложение для iOS, приложение для Android, настольное приложение Windows или что-то в этом роде. Это может потребовать создания совершенно новой системы для возможности переноса. Этот пункт особенно актуален разработчикам игр. Поэтому стоит особое внимание обратить на выбор среды разработки. Например в Unity приложения достаточно легко переносятся на Android/iOS/macOS/Windows standalone.

   Итак, вам нужно иметь это в виду при проектировании системы.

9. Проектирование тестируемый системы

    Вы должны знать, что проектирование с учетом тестирования, становится очень важным при работе с крупномасштабными системами и большими кодовыми базами. Подумайте о компании вроде Google или Microsoft. Как вы думаете, сколько тестов они проводят за день? Еще лучше, сколько тестов, по вашему мнению, они запускают при каждом pull request? Вероятно, где-то в районе 5000+. Почему? Им нужно убедиться, что все, что вы “закоммитили”, ничего не сломает.

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

10. Дизайн понятный новичку

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

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

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

Заключение

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

   Я надеюсь, это поможет вам.

Разработка на Java — Инфографика «Экосистема разработки в 2021 году»

Основные выводы

Образ жизни и интересные факты

Демография

Методология

Исходные данные

C

C#

C++

Go

Java

JavaScript

Kotlin

PHP

Python

R

Ruby

Rust

Scala

Swift и Objective-C

Big Data

Базы данных

DevOps

Образование

Встраиваемые системы

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

Прочие технические вопросы

Инструменты для командной работы

Техническая документация

Тестирование


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

Java — самый широко используемый язык в Южной Корее, Китае и Германии. Доля Java в Южной Корее составляет — 53%, в Китае — 47%, а в Германии — 33%.

Какие версии Java вы регулярно используете?

Вполне естественно, что самая популярная Java — Java 8, ее доля в 2021 году практически не изменилась по сравнению с 2020-м. Доля Java 11 стабильно растет на 10 процентных пунктов в год, начиная с 2019 года. Доли Java 12 и Java 13 снизились по сравнению с прошлым годом примерно втрое, а более новые версии Java 14 и Java 15 уже завоевали свою аудиторию, хотя и появились относительно недавно.

Какие серверы приложений вы регулярно используете?

В целом ландшафт серверов приложений практически не изменился по сравнению с 2020 годом, и самым популярным у разработчиков остается Apache Tomcat.

Среди разработчиков, одним из основных языков которых является Java, больше доля тех, кто использует среды разработки на Windows, по сравнению с разработчиками, которые не работают с Java.

Какие фреймворки вы используете в качестве альтернативы серверу приложений?

При помощи чего вы упаковываете веб-приложения?

На вопрос отвечали только те, кто использует серверы приложений или платформы аналогичные серверам приложений.

В 2021 году использование встроенных серверов выросло по сравнению с 2020 годом на 5 процентных пунктов.

Какие фреймворки вы используете для юнит-тестирования?

Доля тех, кто использует два самых популярных фреймворка для юнит-тестирования (JUnit и Mockito), немного выросла — на 2 процентных пункта, — но в целом ситуация практически не изменилась.

Какие веб-фреймворки вы используете?

Доля Spring Boot в 2021 году также немного увеличилась — примерно на 4%, а в целом появилось гораздо больше, чем в 2020 году, новых веб-фреймворков, каждым из которых пользуется небольшое число разработчиков.

Какие системы сборки вы регулярно используете?

Общая ситуация с системами сборки в 2021 году примерно такая же, как в 2020-м: самыми популярными у разработчиков остаются Maven и Gradle.

Какие версии спецификаций Java Enterprise вы используете (если вообще используете)?

Какие профилировщики JVM Вы регулярно используете (если используете)?

Самый широко используемый профилировщик JVM в 2021 году — набор встроенных в IntelliJ IDEA инструментов профилирования: его используют около четверти разработчиков. Доля других профилировщиков JVM незначительно снизилась.

Какую IDE или редактор вы используете чаще всего для разработки на Java?

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

Доля тех, кто использует автономные IDE, среди Java-разработчиков выше, чем среди тех, кто работает с другими языками.

В целом разработчики, у которых Java является одним из основных языков программирования, чаще, чем другие, работают в компаниях, насчитывающих более 5000 сотрудников.

Что вы разрабатываете на Java?

Использование Java для веб-сайтов и ИТ-инфраструктуры в 2021 году немного расширилось по сравнению с прошлым годом, зато теперь Java реже используют для бизнес-аналитики, Data Science и машинного обучения.

В этом году увеличилась доля Java-разработчиков, которые учились в официальных учебных заведениях, и уменьшилась доля самоучек.

IntelliJ IDEA

Самая умная IDE для Java

Предыдущий раздел

Go

Следующий раздел

JavaScript


Основные выводы

Образ жизни и интересные факты

Демография

Методология

Исходные данные

C

C#

C++

Go

Java

JavaScript

Kotlin

PHP

Python

R

Ruby

Rust

Scala

Swift и Objective-C

Big Data

Базы данных

DevOps

Образование

Встраиваемые системы

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

Прочие технические вопросы

Инструменты для командной работы

Техническая документация

Тестирование

Если результаты исследования показались вам интересными, поделитесь ими с друзьями и коллегами.

Примите участие в будущих опросах

Я хочу принимать участие в будущих опросах JetBrains

Я хочу получать результаты будущих исследований JetBrains

Я хочу получать электронные письма о новостях, продуктах и услугах компании JetBrains

By submitting this form I agree to the JetBrains Privacy Policy

Если у вас есть вопросы или пожелания, свяжитесь с нами по адресу [email protected].

Learn Java — Dev.java

Запуск вашего первого Java-приложения

  • Начало работы с Java

    Загрузка и установка JDK, написание вашего первого класса Java и создание вашего первого приложения Java.

  • Запуск однофайловых программ с исходным кодом

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

  • Jshell — инструмент оболочки Java

    . jshell интерактивно оценивает объявления, операторы и выражения языка программирования Java в цикле чтения-оценки-печати (REPL).

Будьте в курсе новых возможностей

Знакомство с языком

  • Объекты, классы, интерфейсы, пакеты и наследование

    Введение в объектно-ориентированное программирование.

  • Основы языка Java

    Знакомство с основами языка Java.

  • Использование записи для моделирования неизменяемых данных

    Как смоделировать неизменяемые данные с помощью записей, чтобы сделать код более простым и читабельным.

  • Классы и объекты

    Определение собственных классов, объявление переменных-членов, методов и конструкторов.

  • Числа и строки

    Понимание чисел, символов и строк символов.

  • Наследование

    Использование наследования в приложениях Java.

  • Интерфейсы

    Создание и использование интерфейсов.

  • Generics

    Работа с параметризованными типами.

  • Лямбда-выражения

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

  • Аннотации

    Аннотации — это форма метаданных, предоставляющая данные о программе, которые не являются частью самой программы. Аннотации не имеют прямого влияния на работу кода, который они аннотируют.

  • Пакеты

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

  • Использование сопоставления с образцом

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

  • Исключения

    Использование исключений для обработки ошибок и других исключительных событий.

Освоение API

  • The Collections Framework

    Знакомство с Collections Framework для хранения и извлечения данных в коллекциях и хэш-картах.

  • Stream API

    Обрабатывайте данные в памяти с помощью потоков и сборщиков Java. Обрабатывайте их быстрее с параллельными потоками.

  • Java I/O API

    Доступ к внешним ресурсам с помощью Java Input/Output API.

  • API Date Time

    Охватывает API Date Time, добавленный в JDK 8, включая основные концепции и классы.

  • Регулярные выражения

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

  • Основы безопасности с использованием библиотек JDK

    Содержит общий обзор API-интерфейсов безопасности. Он также знакомит с основными компонентами этого API.

Организация вашего приложения

  • Модули

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

  • Создание образов среды выполнения и приложений с помощью JLink

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

Знакомство с JVM

  • Основные инструменты JDK

    Узнайте об инструментах, которые JDK предоставляет вам для компиляции, запуска, анализа и мониторинга вашего кода.

  • Инструменты мониторинга

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

  • JPackage

    Упаковка вашего приложения для создания собственного установщика.

  • Инструменты безопасности

    Установка политик безопасности с помощью инструментов и команд JDK.

  • Средства устранения неполадок

    Узнайте об инструментах, которые JDK предоставляет вам для устранения неполадок приложений Java и виртуальной машины Java (JVM).

  • Сборка мусора в Java Обзор

    Понимание ключевых аспектов того, как сборка мусора работает в Java и как настроить сборку мусора.

  • CDS и AppCDS в Hotspot

    Понимание того, как использовать CDS в HotSpot для повышения производительности запуска JVM.

  • JDK Flight Recorder

    Узнайте, как использовать JDK Flight Recorder для мониторинга, профилирования и тестирования ваших приложений.

Ссылки на последнюю версию

  • Документация по Java
  • Документация по Java API
  • Примечания к выпуску Java
  • Спецификации языка Java и виртуальной машины
  • Руководство по безопасному кодированию

Java в коде Visual Studio

Редактировать

Поддержка Java в Visual Studio Code обеспечивается широким набором расширений. В сочетании с мощью ядра VS Code эти расширения дают вам легкий и производительный редактор кода, который также поддерживает многие из наиболее распространенных методов разработки Java.

В этой статье представлен обзор различных возможностей Visual Studio Code для разработчиков Java. Для быстрого ознакомления с редактированием, запуском и отладкой программы Java с помощью Visual Studio Code используйте Учебник по началу работы с Java кнопку ниже.

Руководство по началу работы с Java

Обзор

VS Code предоставляет основные функции языка, такие как завершение кода, рефакторинг, линтинг, форматирование и фрагменты кода, а также удобную отладку и поддержку модульного тестирования. VS Code также интегрируется с такими инструментами и платформами, как Maven, Tomcat, Jetty и Spring Boot. Используя возможности Visual Studio Code, Java-разработчики получают отличный инструмент как для быстрого редактирования кода, так и для полного цикла отладки и тестирования. Это отличный выбор для работы с Java, если вы ищете инструмент, который:

  • Быстрый, легкий, бесплатный и с открытым исходным кодом.
  • Поддерживает многие другие языки, не только Java.
  • Помогает начать знакомство с Java без установки и изучения сложной IDE.
  • Обеспечивает отличную поддержку микросервисов, включая популярные платформы, контейнерные инструменты и интеграцию с облаком.
  • Предлагает функции совместной работы в команде, такие как Visual Studio Live Share.
  • Повышает производительность благодаря IntelliSense и другим функциям редактирования с учетом кода.

Установка Visual Studio Code для Java

Чтобы помочь вам быстро настроить, мы рекомендуем вам использовать Coding Pack для Java , который представляет собой набор VS Code, Java Development Kit (JDK) и набор предлагаемых расширений от Microsoft. Пакет кодирования также можно использовать для исправления существующей среды разработки.

Установка пакета кодирования для Java — Windows

Установка пакета кодирования для Java — macOS

Примечание : Пакет кодирования для Java доступен только для Windows и macOS. Для других операционных систем вам потребуется вручную установить расширения JDK, VS Code и Java.

Если вы уже установили VS Code и хотите добавить к нему поддержку Java, мы рекомендуем использовать пакет расширений для Java, набор расширений, предложенных Microsoft:

  1. Языковая поддержка для Java™ от Red Hat
  2. Отладчик для Java
  3. Средство выполнения тестов для Java
  4. Maven для Java
  5. Менеджер проекта для Java
  6. Visual Studio IntelliCode

Установка пакета расширений для Java

Кроме того, вы можете добавить поддержку языка Java в VS Code, самостоятельно установив популярные расширения Java.

Загрузите VS Code. Если вы еще не загрузили VS Code, быстро установите его для своей платформы (Windows, macOS, Linux).

Существуют и другие популярные расширения Java, которые вы можете выбрать для своих нужд, в том числе:

  1. Комплект расширения пружинного чехла
  2. Gradle для Java
  3. Соединители сервера совместной работы (для Apache Felix, Karaf, Tomcat, Jetty и т. д.)
  4. Коннектор сервера (серверы Red Hat, например Wildfly)
  5. Пакет расширения для MicroProfile
  6. Стиль проверки
  7. СонарЛинт

Благодаря большому сообществу Java вокруг VS Code, список на этом не заканчивается. Вы можете легко найти дополнительные расширения Java в VS Code:

  1. Перейти к представлению Extensions (⇧⌘X (Windows, Linux Ctrl+Shift+X)).
  2. Отфильтруйте список расширений, введя «java».

В этом документе описываются некоторые ключевые функции, включенные в эти расширения Java.

Примечание : Чтобы помочь вам начать разработку Java, вы можете использовать шаблон профиля Java General для установки полезных расширений. Вы можете узнать больше о профилях и о том, как они позволяют быстро перенастроить редактор для разных языков программирования и рабочих процессов, в разделе «Профили в VS Code».

Начало работы

ПРИМЕЧАНИЕ. Если вы используете VS Code в Windows и хотите воспользоваться преимуществами подсистемы Windows для Linux, см. раздел Разработка в WSL.

Установка комплекта разработчика Java (JDK)

Комплект разработчика Java (JDK) — это среда разработки программного обеспечения, используемая для разработки приложений Java. Чтобы запустить Java в Visual Studio Code, вам необходимо установить JDK. Пакет расширений для Java поддерживает Java версии 1.5 или выше.

Мы рекомендуем вам рассмотреть возможность установки JDK из одного из следующих источников:

  • Amazon Corretto
  • Азул Зулу
  • Темурин Адоптиума Затмения
  • Среды выполнения IBM Semeru
  • Сборка Microsoft OpenJDK
  • Oracle Java SE
  • Сборка Red Hat OpenJDK
  • СапМашин

Примечание . Если у вас установлено несколько JDK и вам необходимо использовать определенную версию JDK для своих проектов, см. раздел Настройка среды выполнения для проектов. Чтобы включить функции предварительного просмотра Java, см. статью Как использовать VS Code с новыми версиями Java.

Для разработчиков, плохо знакомых с Java или VS Code, мы предоставляем несколько советов в наших расширениях. После установки пакета расширений для Java вы можете просматривать советы с помощью команды Java: Советы для начинающих из палитры команд в VS Code.

Откройте палитру команд (⇧⌘P (Windows, Linux Ctrl+Shift+P)) и введите «советы по java», чтобы выбрать команду.

Работа с исходными файлами Java

Вы можете использовать VS Code для чтения, записи, запуска и отладки исходных файлов Java без создания проекта. VS Code для Java поддерживает два режима: упрощенный и стандартный. Облегченный режим идеально подходит для сценариев, которые имеют дело только с исходными файлами. Если вы хотите работать с полномасштабным проектом, потребуется стандартный режим. При необходимости вы можете легко переключаться из облегченного режима в стандартный режим. Чтобы узнать больше, см. Облегченный режим.

Работа с проектами Java

Для работы с Java в VS Code необходимо понимать три вещи:

  1. Как VS Code обрабатывает рабочие области?
  2. Как VS Code обрабатывает Java?
  3. Как VS Code обрабатывает рабочие пространства, содержащие Java?

Рабочие пространства VS Code

В Visual Studio Code «Рабочее пространство» означает набор из одной или нескольких папок файловой системы (и их дочерних элементов) и всех конфигураций VS Code, которые вступают в силу, когда это «Рабочее пространство» открыто в VS Code. В VS Code есть два типа «рабочих областей»: «рабочие области папок» и «рабочие области с несколькими корнями».

VS Code представляет «рабочее пространство папки», когда вы открываете папку (каталог) файловой системы в VS Code.

«Рабочая область с несколькими корнями» может ссылаться на несколько папок (каталогов) из разрозненных частей файловой системы, и VS Code отображает содержимое папки (папок) рабочей области вместе в проводнике. Дополнительные сведения см. в разделе Многокорневые рабочие области.

Java-проекты в VS Code

В отличие от таких IDE, как IntelliJ IDEA, NetBeans или Eclipse, концепция «Java-проекта» полностью обеспечивается расширениями и не является основной концепцией базового VS Code. При работе с «проектами Java» в VS Code у вас должны быть установлены необходимые расширения для работы с этими файлами проекта.

Например, Java-проекты Maven, Eclipse и Gradle поддерживаются посредством Language Support for Java™ от Red Hat с использованием M2Eclipse, который обеспечивает поддержку Maven, и Buildship, который обеспечивает поддержку Gradle через языковой сервер Eclipse JDT.

С помощью Maven для Java вы можете создавать проекты на основе архетипов Maven, просматривать все проекты Maven в своем рабочем пространстве и легко выполнять цели Maven из встроенного проводника. Проекты также можно создавать и управлять ими с помощью расширения Project Manager for Java.

Visual Studio Code также поддерживает работу с автономными файлами Java вне проекта Java, как описано в руководстве по началу работы с Java.

Рабочие области VS Code, содержащие проекты Java

Если предположить, что необходимые расширения Java установлены, открытие рабочей области VS Code, содержащей артефакты Java, заставит эти расширения распознавать эти артефакты и предлагать варианты работы с ними.

Дополнительные сведения о поддержке проектов Java можно найти в разделе «Управление проектами Java» в Visual Studio Code и инструментах сборки Java.

Редактирование

Навигация по коду

Java в Visual Studio Code также поддерживает функции навигации по исходному коду, такие как поиск символа, просмотр определения и переход к определению. Расширение Spring Boot Tools обеспечивает улучшенную навигацию и поддержку завершения кода для проектов Spring Boot.

Одним из ключевых преимуществ VS Code является скорость. Когда вы открываете исходный файл или папку Java, в течение нескольких секунд с помощью упрощенного режима вы сможете перемещаться по кодовой базе с помощью представления Outline, а также таких команд, как Перейти к определению и Перейти к ссылке . Это особенно полезно, когда вы открываете проект в первый раз.

Завершение кода

IntelliSense — это общий термин для функций языка, включая интеллектуальное завершение кода (метод в контексте и предложения переменных) для всех ваших файлов, а также для встроенных и сторонних модулей. VS Code поддерживает автозавершение кода и IntelliSense для Java благодаря языковой поддержке для Java™ от Red Hat. Он также предоставляет IntelliSense с поддержкой ИИ под названием IntelliCode, помещая то, что вы, скорее всего, будете использовать, в начало списка завершения.

Усовершенствуйте автодополнение с помощью ИИ

GitHub Copilot — это инструмент автодополнения кода на базе ИИ, который помогает писать код быстрее и эффективнее. Вы можете использовать расширение GitHub Copilot в VS Code для создания кода или для изучения кода, который он создает.

GitHub Copilot предоставляет предложения для множества языков и самых разных фреймворков, и особенно хорошо работает для Python, JavaScript, TypeScript, Ruby, Go, C# и C++.

Дополнительные сведения о том, как начать работу с Copilot, см. в документации по Copilot.

Фрагменты кода

Visual Studio Code поддерживает широкий спектр популярных фрагментов кода Java, чтобы сделать вас более продуктивным, например class/interface, syserr, sysout, if/else, try/catch, метод static main. Используя информацию с языкового сервера Java, он также обеспечивает предварительный просмотр фрагмента кода во время выбора.

Например, ввод « sout » или « sysout » приведет к созданию фрагмента кода для System.out.println() .
Аналогично, набрав » main » или » psvm » создаст фрагмент кода для public static void main(String[] args) {} .

Мы поддерживаем широкий спектр сокращений фрагментов кода и функций завершения постфикса. Полный список см. в разделе Фрагменты кода. VS Code также поддерживает ряд рефакторингов

Отладка

Отладчик для Java — это упрощенный отладчик Java, основанный на сервере отладки Java. Он работает с языковой поддержкой для Java™ от Red Hat, что позволяет пользователям отлаживать код Java в Visual Studio Code.

Начать сеанс отладки очень просто: нажмите кнопку Run|Debug , доступную в CodeLens вашей функции main() , или нажмите F5. Отладчик автоматически сгенерирует для вас правильную конфигурацию.

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

Тестирование

Благодаря поддержке расширения Test Runner для Java вы можете легко запускать, отлаживать и управлять своими тестовыми примерами JUnit и TestNG.

Дополнительные сведения о тестировании см. в разделе Тестирование Java.

Spring Boot, Tomcat и Jetty

Для дальнейшего повышения производительности Java в VS Code существуют расширения для наиболее популярных платформ и инструментов, таких как Spring Boot, Tomcat и Jetty, созданные сообществом.

См. Серверы приложений, чтобы узнать больше о поддержке Tomcat и Jetty, а также других серверов приложений с VS Code.

Поддержка Spring Boot предоставляется VMware. Существуют также расширения Spring Initializr Java Support и Spring Boot Dashboard, предоставляемые корпорацией Майкрософт, чтобы еще больше улучшить работу с Spring Boot в Visual Studio Code.