Архив метки: Java

Чему программисты на Java должны научиться в 2021 году. Java Enterprise Stack

№3. Java Enterprise Stack

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

Когда люди говорят о корпоративных технологиях, связанных с Java, они обычно имеют в виду два основных стека, Spring Framework и Jakarta Enterprise Edition (ранее Java Enterprise Edition, JavaEE).

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

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

Java EE хорошо подходит для реализации масштабируемого монолитного кластерного приложения.

На рынке труда в настоящий момент более востребованы разработчики, знакомые со Spring Framework. Исторически сложилось так, что в те дни, когда Java EE была чрезмерно сложной, Spring «приобрела клиентскую базу».

Так что в 2021 году логичнее приложить усилия для изучения Spring. Тем не менее, лучше хотя бы поверхностно познакомиться с обеими платформами. Напишите небольшой домашний проект на Java EE и Spring. Затем углубитесь в структуру, которая требуется при работе.

Spring Framework — огромная экосистема для создания серверных приложений. Наиболее важные части Spring для изучения:

  • Основные компоненты Spring, такие как внедрение зависимостей (DI), инверсия управления (IoC) и Spring MVC в целом.
  • Весенний ботинок
  • Весенняя безопасность
  • Spring Data JPA
  • Весна АОП

JakartaEE

  • JSP
  • Servlet
  • JPA
  • JAX-RS
  • JAX-WS

 

Полезные компоненты

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

  • Сервлеты, компоненты для расширения возможностей сервера.
  • Log4j, одна из самых полезных библиотек для регистрации сообщений.
  • Jackson/JSON. JSON (JavaScript Object Notation) — это открытый стандартный формат файла и формат обмена данными. Jackson — это высокопроизводительный процессор JSON для Java.
  • API Java для веб-служб RESTful.

 

Выводы

Довольно внушительный длинный список, не правда ли? Однако все это имеет неоспоримый плюс: Java меняется не резко, а постепенно, и подавляющее большинство перечисленных здесь технологий и библиотек будут оставаться актуальными еще долгие годы после 2021 года. Хотя список может несколько расшириться.

Будьте первым, кто поделится этой статьей со своей сетью!

Начало:



2021-06-04T23:02:15
Java

Чему программисты на Java должны научиться в 2021 году. Ученик среднего уровня Java

№2. Ученик среднего уровня Java

Новые возможности Java

Что ж, никто не ожидает, что новичок в Java должен знать особенности новейших версий Java, таких как запечатанные классы, текстовые блоки, записи или скрытые классы. Тем не менее, я настоятельно рекомендую попробовать изучить некоторые из них или хотя бы прочитать о них, поскольку вы изучили большинство тем Core Java, перечисленных выше. В последнее время JDK обновляется раз в полгода, в марте и сентябре. JDK 16 появился 16 марта.

Итак, перейдите на веб-сайт OpenJDK , на котором перечислены все предложения по расширению JDK (JEP) из новых версий. Читайте дальше, экспериментируйте с настройками, действительно полезно! Даже если вы полный новичок, начните читать о них, чтобы быть в курсе тенденций.

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

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

  • Лямбда-выражения
  • Функциональные интерфейсы Java
  • Stream API
  • Ссылки на методы

 

Модульное тестирование

Согласно опросам CodeGym , модульное тестирование — одна из первых задач, которые получают Java-стажеры, когда им разрешается присоединяться к реальным проектам. Часто новичков просят протестировать код своих коллег, прежде чем разрешить им написать свой собственный модуль. Сделайте подарок себе и своему будущему работодателю, изучив JUnit Framework, а также мощную библиотеку Mockito. Более опытные разработчики также часто тестируют свой код с помощью этих библиотек. Так что эти знания будут полезны абсолютно всем Java-разработчикам.

 

Структуры данных и алгоритмы

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

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

 

Экосистема Java

Когда вы начинаете изучать Java, часто первое, о чем вам говорят, это байт-код, виртуальная машина Java, JRE и JDK. Так, по сути, работает Java. Однако на первом этапе эти знания представляют собой довольно любопытную абстракцию. Я настоятельно рекомендую возвращаться к этой теме на разных этапах обучения и даже во время работы.

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

 

Дизайн и архитектурные шаблоны

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

Нечто подобное можно сказать и о шаблонах архитектурного проектирования. Если вы создаете свой проект (а их лучше создать любому новичку, хотя бы для портфолио), подумайте над его архитектурой. Это непросто, и на первом этапе несколько тормозит человека… но чрезвычайно полезно!

 

Работа с данными

Вероятность того, что Java-программист в 2021 году никогда не будет использовать базы данных в своей работе, крайне мала. Поэтому каждый разработчик программного обеспечения должен иметь о них представление, а самое главное — закрепить его на практике.

Существует два основных класса баз данных: SQL (относительные) и NoSQL (не относительные). Относительные базы данных более популярны, поэтому первым делом нужно их изучить.

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

Для первых шагов вы можете научиться взаимодействовать с базой данных SQL и научиться выполнять самые простые команды CRUD (что означает создание, чтение, обновление, удаление) SQL-команд для данных ваших первых приложений. Существует драйвер JDBC, независимый от платформы стандарт взаимодействия между приложениями Java и базами данных. JDBC реализован в виде пакета java.sql, включенного в Java SE (стандартная версия). Итак, сначала вы можете использовать его напрямую.

Позже, когда вы почувствуете себя более уверенно, вы скоро сможете еще больше адаптировать использование систем объектно-реляционного сопоставления (ORM): специальных программных библиотек, которые позволяют вам работать с данными в более естественном и удобочитаемом формате без написания SQL-запросов. явно. Несомненно, одна из самых популярных и широко используемых Java ORM — это Hibernate. Согласно опросу CodeGym 2020 года, 63,1% первокурсников Java Junior очень часто использовали Hibernate в свой первый год работы.

А как насчет noSQL? Если у вас есть время, вы можете попробовать MongoDB. Это может быть довольно интересный опыт.

 

Начало:

Продолжение:



2021-06-04T22:59:20
Java

Чему программисты на Java должны научиться в 2021 году. Часть для новичков: Core Java

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

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

 

№1. Часть для новичков: Core Java

Перво-наперво. Никаких сюрпризов, Core Java — необходимость для каждого Java-разработчика в течение каждого года существования языка. Это хорошая новость, потому что даже ИТ-специалистам нужна стабильность.

Что ж, Core Java — это как основные правила любого языка. Чтобы стать программистом, вам обязательно нужно научиться программировать в общем смысле. Ядро Java содержит синтаксис, основные конструкции и концепции языка. Вот они.

 

Синтаксис

Вы можете получить синтаксис как алфавит Java. Учиться — это что-то вроде написания первых слов в школе. Итак, первое, что вы узнаете о Java, — это синтаксис. Однако лучше учиться на практике, начиная с самых первых шагов java обучение.

Основные темы синтаксиса Java:

  • Что такое объект
  • Что такое класс
  • Что такое переменная
  • Что такое метод
  • Метод System.out.println()
  • Примитивные типы (int, double, boolean, char и т. д.)
  • Нить
  • Основные арифметические и логические операторы
  • Филиалы: оператор if-else
  • Операторы цикла (for, while)
  • Массивы

Хорошее знание синтаксиса Java — это то же самое, что знание иностранного языка на уровне A1.

 

Концепции ООП

Современные версии языка поддерживают функциональное программирование, однако программирование на Java в большей или меньшей степени связано с объектно-ориентированным программированием (ООП).

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

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

Изучая ООП, рекомендую решать много задач и много читать. Взгляните на код классов Java, узнайте, как они соотносятся друг с другом. Не ленитесь, читайте книги по существу.

 

Платформа Collection

Платформа Collection предоставляет архитектуру для хранения и управления группами объектов.

Работа с коллекциями позволяет выполнять типичные операции с данными: поиск, сортировку, вставку, изменение и удаление. Интерфейсы и классы коллекций действительно важно знать как для вашей работы, так и для собеседований. Как я упоминал выше, они по-разному эффективны для разных операций. В Collection Framework не так много конкретных классов, которые можно было бы мгновенно использовать во время работы. Самыми популярными являются ArrayList и HashMap.

Курсы обучения Java для новичков и профессионалов: https://checkroi.ru/, CheckROI — Каталог онлайн-курсов и обучающих программ.

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

 

Класс объекта Java

Каждый класс Java неявно наследуется от класса Object. Следовательно, все типы и классы могут реализовывать методы, определенные в классе Object. Мы полагаем, что в какой-то момент в изучении языка после ООП важно получить реализацию класса Object и его методы. Это очень помогает понять суть языка.

 

Исключения

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

 

Дженерики

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

 

Многопоточность

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

 

Продолжение:



2021-06-04T22:55:24
Java

Чему должны научиться Java-разработчики в 2021 году. Часть 2

6. Spring Boot 2

Spring Boot выпустила новую версию под названием Spring Boot 2. Spring Framework отвечает за управление, а Spring Boot отвечает за создание автономного решения с обычной конфигурацией.

Это в основном зависит от JAVA Baseline, материала спецификации и подключаемых модулей. Его автоматическая настройка обеспечивает безопасность и оперативность. Он также обеспечивает техническую поддержку и улучшает опыт разработчиков. Это один из основных инструментов, который должен знать программист JAVA. Ключевые особенности погрузчика Undertow

  • Разверните Undertow, Jetty или Tomcat напрямую.
  • Чтобы уменьшить конфигурацию сборки, укажите зависимости.
  • Создавайте независимые приложения весной.
  • Автоматически настраивать пружинные насадки.
  • Обеспечьте полную безопасность и техническую поддержку.
  • Для конфигурации XML не требуется генерация кода.

 

7. Angular или отзывчивый JS

Специальная библиотека JavaScript для разработки пользовательского интерфейса называется ReactJS, а Angular — это фреймворк. Эти две ключевые технологии должны быть знакомы разработчику JAVA.

Angular 2 — это фреймворк для веб-приложений, которые можно использовать с открытым исходным кодом. Основными функциями Angular являются директивы, область действия, шаблоны, аннотации, расширенное внедрение зависимостей и дочерние маршрутизаторы. ReactJS используют для разработки мобильных приложений. Основные особенности ReactJS:

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

 

8. Apache Spark и Kafka.

Apache Spark и Kafka — две обязательные технологии для разработчиков Java 2021; у них был стабильный выпуск в конце 2018 года. Apache Spark — это платформа для кластерных вычислений, доступная с открытым исходным кодом.

Spark предоставляет интерфейс приложения для таких задач, как базовый ввод-вывод, планирование и диспетчеризация. Это дает платформу обработки потокового видео, которая также доступна в виде открытого исходного кода. В частности, код Apache Kafka на Java и Scala.

Kafka может использовать базовые API, такие как Producer API, Consumer API, Connector API и Stream API.

Основными особенностями Apache Spark являются:

  • Обработка потока в реальном времени
  • Интеграция
  • Расширенный анализ
  • Многоязычная поддержка
  • Скорость
  • Ключевые особенности Apache Kafka
  • Без простоев
  • Высокая производительность
  • Надежный
  • Надежность
  • Конверсия данных
  • Репликация
  • Docker

 

9. Docker

Docker — это язык, написанный на языке Go и разработанный для Linux. Это также важный инструмент для обучения разработчиков Java 2021. Он предоставляет инструменты, помогающие контейнеризации. У него также был стабильный выпуск в конце 2018 года. Контейнером или набором программных пакетов управляет Docker.

 

10. Модульное тестирование

Модульное тестирование — важный навык для разработчиков JAVA, которому вы должны научиться в наступающем году. Для тех, кто работает с Java в области интеграции и модульного тестирования, есть несколько инструментов и фреймворков. Например, Cucumber для автоматизированного интеграционного тестирования и фреймворка Robot. Mockito — это также инструмент, который поможет вам использовать свои навыки модульного тестирования.

 

11. Java 10, 11 или, может быть, 12

Java — один из широко используемых языков во всем мире, и он является важным навыком, который необходимо знать разработчикам JAVA. Он определяется как REPL (Цикл печати реальной оценки). в Java 9 оболочка Java четко объяснена. Существуют известные конструкции Java, такие как объявления, объекты, интерфейсы и классы, выполняемые и тестируемые в Java 9. Вы также можете выбрать более высокую версию, такую ​​как Java 10, 11 или 12. Java 12 — это последняя версия программирования на Java.

 

12. Spring framework 5.0

Java использует Spring Framework в качестве среды своего приложения. Spring имеет веб-фреймворк под названием Spring WebFlux. Spring Framework 5 предоставляет множество функциональных вариантов API. Spring Framework 5 — это специализированная среда, которая предлагает множество полезных вариантов API и использует программирование на Java. Spring Framework 5.0 — это надежный фреймворк, который предлагает множество функциональных вариантов API и использует программирование на Java; это обновленная версия Spring MVC.

 

13. DevOps

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

Ключевые особенности успешной реализации DevOps

  • Маленькими шагами
  • Поддержка существующих систем
  • Использование системного перевода
  • Развертывание набора инструментов DevOps

 

14. Groovy

Groovy также является одним из основных инструментов, которые разработчики Java должны изучить в 2021 году. Apache Groovy хвалит Java за то, что он поддерживает синтаксис Java. Одна из лучших особенностей Groovy — это статичность и динамичность. Его можно использовать как платформу Java, а также как язык сценариев или программирования. На него влияют Java, Python, Perl и Ruby.

 

Последнее слово

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

 

Начало:

 



2021-05-28T17:03:09
Java

Чему должны научиться Java-разработчики в 2021 году

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

 

Основные навыки для Java-программистов

Вы программист на Java или работающий профессионал, желающий перейти на Java? Или вы работающий Java-программист и хотите сделать карьеру занимаясь java разработкой? Тогда эта статья для вас; В 2021 году Java-разработчики должны знать несколько продвинутых инструментов.

 

1. Git

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

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

Распределенное расширение: репозиторий помогает Git создавать копию истории разработки.

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

Дизайн на основе набора инструментов : дизайн на основе набора инструментов помогает уменьшить составную часть.

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

Хорошо организованное управление крупными проектами: локально хранимый репозиторий помогает прозрачно управлять крупными проектами.

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

 

2. Selenium

 

Веб-драйвер Selenium на Java — одна из технологий, которую Java-разработчик должен знать в 2021 году. Selenium предоставляет инструменты для тестирования веб-приложений с использованием тестовых фреймворков. Selenium Web Driver предоставляет API с открытым исходным кодом. Он включает функции автоматизации для веб-приложений. Вот критические элементы Selenium:

  • IDE (интегрированная среда разработки).
  • Дистанционное управление/Selenium 1.0
  • Веб-контроллер/Selenium 2.0/3.0
  • Selenium GRID

 

3. Jenkins

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

Jenkins сделал свои плагины доступными для интеграции с кодом, написанным на другом языке. Вот три основные причины, по которым вам следует выбрать Jenkins. Он предлагает более качественное программное обеспечение, чем другие.

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

 

4. Веб-сервисы REST

REST расшифровывается как «Репрезентативный перевод состояния». Это предложение представляет собой архитектурный стиль и является обязательным для разработчиков Java. Это улучшает производительность веб-службы. Он также определяет ограничения масштабируемости и производительности. Это одна из самых желанных вещей в 2021 году для разработчиков Java.

Рекреационное использование API для общения при разработке веб-сервисов. Если вы знаете HTML, CSS и т. д., Тогда вам пригодятся веб-службы RESTful. Ниже перечислены особенности сервисов RESTful:

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

Отсутствие состояния — одна из основных функций службы REST, когда сервер понимает и предоставляет все данные, составляющие HTTP-запрос REST.

Кэшируемая архитектура — основная причина блокировки веб-API и приложений. Стековая технология не задействована в этой блокировке. Кэширование важно для масштабируемости.

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

Унифицированный интерфейс предоставляет единый идентификатор ресурса (URI) для хранения записей.

REST — это подход к описанию любого веб-сервиса. Он предлагает гибкость, масштабируемость и свободу выбора одной технологии и платформы.

 

5. Spring security

Его основная функция — проверка подлинности приложения. Спецификация сервлета J2EE и спецификация EJB — две ключевые функции безопасности, популярные среди разработчиков JAVA.

Spring Security поддерживает несколько моделей аутентификации. Он интегрируется с различными технологиями, такими как HTTP, Kerberos, JOSSO, CAS, LDAP и т. д. Spring Security напрямую связан с Java, что настоятельно рекомендует разработчикам JAVA изучить его.

 

Продолжение следует …



2021-05-28T16:46:36
Java

Настройка прокси-соединения с системой на Java

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

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

Настройка прокси-соединения с системой на Java

Подходы:

Мы выясним два способа подключения через прокси-серверы в java, а именно:

  1. Устаревший подход, охватывающий всю JVM и настраиваемый с помощью системных свойств.
  2. Использование класса Proxy, который обеспечивает больший контроль, разрешая настройку на основе каждого соединения.

 

Метод 1: использование глобальной настройки

Java демонстрирует набор системных свойств, которые можно использовать для настройки поведения всей JVM. Этот «универсальный» подход зачастую проще всего реализовать, если он подходит для конкретного случая использования. Мы можем установить необходимые свойства из командной строки во время вызова JVM. В качестве альтернативы мы также можем определить их с помощью System.setProperty () во время выполнения. Вот как их определить с помощью командной строки, как показано ниже:

 

1.1. Устанавливается с помощью аргументов командной строки

Мы можем определить прокси в командной строке, минуя параметры как системные свойства:

java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 com.geeksforgeeks.networking.proxies.CommandLineProxyDemo

 

При запуске процесса таким образом мы можем просто использовать openConnection () для URL без дополнительной работы:

URL url = new URL(RESOURCE_URL);



URLConnection con = url.openConnection();

 

1.2 Настройка прокси с помощью метода System.setProperty ()

Если при использовании командной строки возникают проблемы, есть другой способ сделать это, используя метод System.setProperty (). Для настройки прокси.

System.setProperty(“http.proxyHost”, “127.0.0.1”);  



System.setProperty(“http.proxyPort”, “8080”);  



URL url = new URL(RESOURCE_URL);  



URLConnection con = url.openConnection();  



// …

 

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

System.setProperty(“http.proxyHost”, null);

 

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

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

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

 

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

 

Метод 2: использование прокси API

Класс Proxy дает нам гибкий способ настройки прокси для каждого соединения. Если существуют какие-либо существующие настройки прокси для всей JVM, настройки прокси на основе подключения с использованием класса Proxy переопределят их. Вот три типа прокси, которые мы можем определить по типу прокси:

  1. HTTP  — это прокси, использующий протокол HTTP
  2. SOCKS — это прокси, использующий протокол SOCKS.
  3. DIRECT — это явно настроенное прямое соединение без прокси.

(A) Использование прокси-сервера HTTP

Чтобы использовать HTTP-прокси, мы сначала оборачиваем экземпляр SocketAddress с помощью Proxy и типа Proxy.Type.HTTP. Затем мы просто передаем экземпляр Proxy в URLConnection.openConnection ():

URL weburl = new URL(URL_STRING);



Proxy webProxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(“127.0.0.1”, 8080));



HttpURLConnection webProxyConnection = (HttpURLConnection) weburl.openConnection(webProxy);

 

Теперь мы подключимся к URL_STRING, но затем направим это соединение через прокси-сервер, расположенный по адресу 127.0.0.1:8080.

(B) Использование ПРЯМОГО прокси

У нас может возникнуть потребность напрямую подключиться к хосту. В этом случае мы можем явно обойти прокси, который может быть настроен глобально, с помощью статического экземпляра Proxy.NO_PROXY. По сути, API создает для нас новый экземпляр Proxy, используя Proxy.Type.DIRECT в качестве типа:

HttpURLConnection directConnection = (HttpURLConnection) weburl.openConnection(Proxy.NO_PROXY);

 

(C) Использование прокси-сервера SOCKS

Прокси-сервер Socks работает аналогично варианту HTTP при работе с URLConnection. В прокси Socks сначала мы оборачиваем экземпляр SocketAddress прокси, используя тип Proxy.Type.SOCKS. После этого экземпляр Proxy передается в URLConnection.openConnection.

Proxy socksProxy  = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(“127.0.0.1”, 1080));



HttpURLConnection socksConnection = (HttpURLConnection) weburl.openConnection(socksProxy);

 

Также можно использовать прокси-сервер SOCKS при подключении к сокету TCP. Сначала мы используем экземпляр Proxy для создания Socket. После этого мы передаем целевой экземпляр SocketAddress в Socket.connect () следующим образом:

Socket proxySocket = new Socket(socksProxy);



InetSocketAddress socketHost = new InetSocketAddress(SOCKET_SERVER_HOST, SOCKET_SERVER_PORT);



proxySocket.connect(socketHost);

 

Пример:


// Java-программа для создания простого прокси-сервера

  

// Импорт классов ввода вывода

import java.io.*;

// Импорт

import java.net.*;

  

public class SimpleProxyServer {

    public static void main(String[] args)

        throws IOException

    {

        try {

            String host = "Ваш прокси сервер";

            int remoteport = 100;

            int localport = 111;

            // Печать сообщения о запуске

            System.out.println("Starting proxy for " + host

                               + ":" + remoteport

                               + " on port " + localport);

            // И начните запускать сервер

            runServer(host, remoteport,

                      localport); // never returns

        }

        catch (Exception e) {

            System.err.println(e);

        }

    }

  

    /**

     * запускает однопоточный прокси-сервер на указанном

     * локальном порту. Он никогда не возвращается.

     */

    public static void

    runServer(String host, int remoteport, int localport)

        throws IOException

    {

        // Create a ServerSocket to listen for connections

        // with

        ServerSocket ss = new ServerSocket(localport);

  

        final byte[] request = new byte[1024];

        byte[] reply = new byte[4096];

  

        while (true) {

            Socket client = null, server = null;

            try {

                // Дождитесь подключения на локальном порту

                client = ss.accept();

  

                final InputStream streamFromClient

                    = client.getInputStream();

                final OutputStream streamToClient

                    = client.getOutputStream();

  

                // Установите соединение с реальным сервером.

                // Если мы не можем подключиться к серверу,

                // отправьте сообщение об ошибке клиенту, отключитесь

                // и продолжайте ждать подключения.

                try {

                    server = new Socket(host, remoteport);

                }

                catch (IOException e) {

                    PrintWriter out

                        = new PrintWriter(streamToClient);

                    out.print(

                        "Proxy server cannot connect to "

                        + host + ":" + remoteport + ":n"

                        + e + "n");

                    out.flush();

                    client.close();

                    continue;

                }

  

                // Получить потоки сервера.

                final InputStream streamFromServer

                    = server.getInputStream();

                final OutputStream streamToServer

                    = server.getOutputStream();

  

                // поток для чтения запросов клиента

                // и передачи их на сервер. Отдельный

                // поток для асинхронного.

                Thread t = new Thread() {

                    public void run()

                    {

                        int bytesRead;

                        try {

                            while ((bytesRead

                                    = streamFromClient.read(

                                        request))

                                   != -1) {

                                streamToServer.write(

                                    request, 0, bytesRead);

                                streamToServer.flush();

                            }

                        }

                        catch (IOException e) {

                        }

  

                        // клиент закрыл соединение

                        // с нами, поэтому закройте наше

                        // соединение с сервером.

                        try {

                            streamToServer.close();

                        }

                        catch (IOException e) {

                        }

                    }

                };

  

                // Запустите поток запросов от клиента к серверу

                // запуск

                t.start();

  

                // Прочитайте ответы сервера

                //  и передайте их обратно клиенту

                int bytesRead;

                try {

                    while ((bytesRead

                            = streamFromServer.read(reply))

                           != -1) {

                        streamToClient.write(reply, 0,

                                             bytesRead);

                        streamToClient.flush();

                    }

                }

                catch (IOException e) {

                }

  

                // Сервер закрыл свое соединение с нами,

                // поэтому мы закрываем наше соединение с нашим клиентом.

                streamToClient.close();

            }

            catch (IOException e) {

                System.err.println(e);

            }

            finally {

                try {

                    if (server != null)

                        server.close();

                    if (client != null)

                        client.close();

                }

                catch (IOException e) {

                }

            }

        }

    }

}

 

Вывод:

Настройка прокси-соединения с системой на Java

 

Заключение

В соответствии с выводом мы выясняем, как работать с прокси-серверами в ядре Java. Сначала мы рассмотрели более старый, более глобальный стиль подключения через прокси-серверы с использованием системных свойств. Затем мы увидели, как использовать класс Proxy, который обеспечивает детальный контроль при подключении через прокси-серверы.



2021-04-29T21:34:43
Java