Учимся программировать на Java: TOP-30 советов!

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

А сегодня я отвечу на вопрос Юрия из Ярославля. Который интересуется языком программирования Java: что он даёт, почему стоит выбрать именно его и где научиться.

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

Как платных, так и на безвозмездной основе. А почему можно посоветовать Java? Да потому, что это то, что называют «кроссплатформенный язык», то есть созданные с его помощью приложения могут быть быстро и легко развёрнуты на любом компьютере.

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

Содержание

Вступление

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

  • Базовые инструменты для написания и запуска программ на Java.
  • Библиотеки и классы — ядро языка. Они обеспечивают основные функциональные возможности программирования на Java: обработку исключений, многопоточность, коллекции, логирование, рефлексию, безопасность, работу с сетью, работу с XML, сериализацию, регулярные выражения.
  • Инструменты для развертывания и автоматического запуска приложений.
  • Инструменты для создания фронтенда (GUI, интерфейса пользователя). Это классы библиотек JavaFX, Swing и Java2D.
  • Библиотеки, для работы с базами данных, удаленно по сети, такие как JDBC, JNDI, RMI и Java RMI-IIOP.

Если вы хотите узнать больше о классах и инструментах Java, прочтите документацию Oracle — там есть всё. Первая версия Java JDK 1.0 включала «всего лишь» несколько сотен классов. Зато в настоящее время их число увеличилось до нескольких тысяч. За время жизни языка авторы внесли огромное количество изменений, которые повышают его безопасность, функциональность и переносимость.

Благодаря постоянному совершенствованию и поддержке языка со стороны его разработчиков, Java всегда шла в ногу с развитием IT-технологий. Так что в настоящее время перед нами — современный язык, основными характеристиками которого являются:

  • Невысокий порог вхождения. Изучать Java проще, чем большинство языков с Си-подобным синтаксисом.
  • Объектно-ориентированность. Программы в Java строятся на основании объектов и их взаимодействии, что позволяет задействовать все преимущества ООП.
  • Переносимость. Благодаря использованию интерпретатора — виртуальной машины Java, — программы переносятся на различные платформы и устройства.
  • Платформенная независимость. Программа, написанная на Java для одной платформы, компилируется в промежуточный байт-код, который может запускаться на других платформах благодаря интерпретации с помощью JVM под каждую платформу.
  • Развитая многопоточность. Средства Java позволяют управлять выполнением нескольких потоков, что позволяет создавать многопоточные приложения.
  • Безопасность. Благодаря встроенной в JVM верификации байт-кода, отсутствии в Java ручного управления памятью, слежением за переполнением стека, а также наличию различных API, которые позволяют контролировать безопасность, на этом языке можно создавать действительно безопасные приложения.
  • Отказоустойчивость. Механизм исключений как при компиляции, так и во время непосредственного выполнения повышает отказоустойчивость программ и снижает количество ошибок.
  • Интерпретируемость. Java-интерпретатор может выполнять байт-коды Java на любой машине, на которой имеется JVM и JRE.
  • Распределенность. У Java есть инструменты для создания распределенных приложений.
  • Производительность. Использование JIT (Just-in-time)-компилятора обеспечивает высокую скорость работу приложений, сопоставимую по скорости с языками С и С++.

Как начать программировать на Java?

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

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

Что нужно для программирования на Java?

Для начала вам нужно установить программное обеспечение для разработки и запуска программ — JDK (Java Development Kit). После этого настройте JDK на компьютере, скачайте и установите одну из IDE (Integrated Development Environment) — это среда для разработки программного обеспечения. Самая популярная IDE — IntelliJ IDEA. Альтернативы — Eclipse, NetBeans, JCreator и даже обычный блокнот.

Установка Java на компьютер

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

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

Вот, например, описание установки JDK и переменной окружения для операционной системы Windows.

Основные определения

Если вы только начали изучать Java, непременно встретите следующие термины: JVM (Java Virtual Machine) — виртуальная машина Java. Это программный модуль, зависящий от платформы, который служит для интерпретации исходного байт-кода в машинный код и его исполнения. JRE (Java Runtime Environment) — среда выполнения Java.

Включает в себя реализацию JVM для конкретной платформы и набор библиотек, необходимых для выполнения программ на Java. JDK (Java Development Kit) — набор инструментов разработчика, необходимых для написания программ на Java. Включает в себя компилятор, JRE, набор стандартных библиотек Java, документацию, различные утилиты.

Исходный код — текстовый файл на языке Java, имеющий расширение .java Байт-код — машинно-независимый низкоуровневый код, представляющий собой набор инструкций для JVM. Машинный код — набор машинных инструкций в двоичном формате, которые непосредственно выполняются процессором. Компиляция — преобразование исходного кода в байт-код.

Интерпретация — преобразование байт-кода в машинный код.

Платформа — программно-аппаратная среда, в которой происходит выполнение программ и приложений. Наиболее популярными платформами являются Microsoft Windows, Linux, ОС Solaris и Mac OS. Эта схема поможет лучше ориентироваться в понятиях JVM, JRE и JDK:

Жизненный цикл программы

Жизненный цикл программы на языке Java начинается с написания исходного кода в текстовом формате. Обычно для этого используются специальные среды для разработки — Integrated Development Environment (IDE), но простые программы можно набирать и в текстовом редакторе, даже в Notepad, который поставляется с любой редакцией ОС Windows. Исходный код необходимо сохранить в файл, имеющий расширение .java.

Пример программы HelloWorld.java:

public class HelloWorld {
public static void main(String[] args) {
System.out.println(«This is my first program»);
}
}

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

Наша программа HelloWorld.java будет скомпилирована в файл HelloWorld.class. Платформа Java не предусматривает инструментов для редактирования байт-кода, но возможность просмотреть его все же есть. Чтобы посмотреть, что представляет собой байт-код программы на Java, можно воспользоваться утилитой дизасcемблера javap, которая входит в состав JDK.

HelloWorld. class будет содержать такой байт-код:

Compiled from «HelloWorld.java»
public class HelloWorld {
public HelloWorld();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object.»<init>»:()V
4: return

public static void main(java.lang.String[]);
Code:
0: getstatic #2//Fieldjava/lang/System.out:Ljava/io/PrintStream;
3: ldc #3// String This is my first program
5:invokevirtual#4//Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}

Теперь наша программа хранится в скомпилированном виде в файле HelloWorld.class. Для ее выполнения на любой из платформ необходима установленная JRE. Возможность переносимости Java-программ на любую платформу обеспечивается за счет использования JVM. Исполнение программы — это выполнение байт-кода виртуальной машиной Java. Выполнение программ производит утилита java, которой необходимо указать имя скомпилированного файла. Выполнение происходит в следующей последовательности:

  • В оперативной памяти компьютера запускается JVM. По сути это программа, которая служит для выполнения написанных нами Java-программ.
  • С помощью начального загрузчика классов JVM загружает и инициализирует наш класс в памяти компьютера. В нашем примере это класс HelloWorld.
  • Далее в нашем классе JVM ищет метод public static void main(String[]).
  • Выполняется код метода main. Если это необходимо для выполнения программы, производиться загрузка и инициализация других классов.
  • После выполнения кода производится уборка мусора — очистка памяти и закрытие программы JVM.
При выполнении всех этих действий JVM интерпретирует (преобразовывает) байт-код в машинную инструкцию для процессора с учетом операционной системы, на которой она выполняется. 

Выбор и установка среды разработки

Чтобы быстро и эффективно программировать на Java, вам понадобится среда разработки — приложение для написания программ на Java. Наиболее популярными IDE среди разработчиков на Java являются:

  • IntelliJ IDEA
  • Eclipse
  • NetBeans

Согласно обзору популярности инструментов Java-разработки, который подготовила компания RebelLabs, в 2017 году лидером стал IntelliJ IDEA, второе место занимает Eclipse, а на третьем месте со значительным отставанием от пары лидеров расположился NetBeans. Доля остальных IDE невелика и не превышает в общем объеме 3%. Хороший сравнительный обзор этих IDE можно посмотреть здесь.

Для новичков вполне достаточно установить IntelliJ IDEA Community Edition. Во-первых, вы получите все плюсы современной IDE, такие как: подсказки, проверка кода, возможность отладки кода, удобная интеграция с БД, серверами и поддержка многих инструментов и технологий разработки. Во-вторых, вы сделаете первый шаг в освоении профессионального инструмента разработки, используемого большинством разработчиков. Инструкция по установке IntelliJ IDEA приводится в начале третьего уровня обучающего онлайн-курса JavaRush.

За сколько можно выучить Java?

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

Заключение

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

  • Установите Java на компьютер
  • Изучите основные понятия
  • Установите среду разработки
  • Напишите и запустите свою первую программу.

https://javarush.ru

Как стать Java программистом и связать свою жизнь с IT?

От автора: на этом языке программирования работает примерно 3 миллиарда смартфонов, 125 миллионов телевизоров и все до единого Blu-Ray проигрыватели в мире. Этот язык регулярно занимает призовые места в рейтингах разработчиков ПО и является самым востребованным среди крупнейших IT-компаний. Он является техническим феноменом и работает абсолютно на любом устройстве, что соответствует его принципу «написал один раз — запускай везде» (WORA — «write once, run anywhere»). Кто догадался, поднимите руки! Конечно же, это язык Java. И сегодня я раскрою вам все карты и расскажу всю правду о том, как стать Java программистом с нуля! Устраивайтесь поудобнее!

Несколько фактов о Java

Дабы не утомлять вас длинными теоретическими проповедями, я сгруппировал некоторые сведения о Java в списочек, после прочтения которого вы получите озарение понимание того, что это за язык такой, и какова его роль в дикой природе программировании:

  • Java — это «модный» и кроссплатформенный язык программирования. Он работает на любом устройстве с любой операционкой. На нем написаны все Google и Android-приложения. Ни по одному другому языку вы не найдете столько информации и обучающих материалов;
  • официальная дата выпуска языка — 23 мая 1995 г. Изначально он задумывался для интерактивного кабельного телевидения, но «не срослось». Изобретателем Java является компания Sun Microsystems, которую в 2010 г. выкупила Oracle;
  • многие путают Java и JavaScript. Если вы хотите заниматься front-end разработкой (веб-сайты, веб-приложения), то выбирайте второй вариант. Java — это back-end, т. е. разработка начинки приложений;
  • это объектно-ориентированный язык программирования, код которого выполняется специальной виртуальной java-машиной (JVM). В США примерно на 9 из 10 компьютеров установлена эта самая JVM;
  • свое название язык получил от марки кофе — вот почему на официальной эмблеме изображена вдохновляющая чашечка.

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

Установка программной среды

Как ни странно, у некоторых возникают проблемы уже на этапе установки программной среды Java. Для этого нужно перейти на официальный сайт компании-разработчика — Oracle. Ссылку на актуальную версию вы увидите в самом верху сайта. Вам нужны Java SE (Standard Edition) и Java Development Kit — набор инструментов для разработки. Обратите внимание, что существуют разные дистрибутивы под разные операционные системы.

Допустим, у нас Windows. Заходим в «Свойства системы» и смотрим, какая у нас система — 32-разрядная или 64-разрядная. Скачиваем файл, который подходит нам по разрядности. Если выберете неправильный дистрибутив, то при компиляции кода получите ошибку. После подтверждения Accept License Agreement нажимаем кнопку скачивания.

Каков инструментарий Java-разработчика?

Большую часть времени программист проводит в IDE (IntelliJ IDEA, Eclipse, WebStorm, NetBeans). IDE — это интегрированная среда разработки, специальный интерфейс для программирования. Он не только помогает при написании кода, но и упрощает использование других инструментов программирования. Некоторые советуют тем, кто хочет стать Java программистом с нуля, первые свои программы писать в обычном блокноте или Notepad++.

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

При командной работе, когда над одной программой работает сразу несколько человек, нужно обязательно использовать, так называемую, систему контроля версий (Perforce, Git, Subversion и т. д.). Впрочем, системы контроля версий очень удобны и при работе в одиночку.

Примерный алгоритм изучения Java

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

Разбор расширенных возможностей языка Java. На этом этапе изучите синтаксис, библиотеки и фреймворки, которые пригодятся вам при создании более сложных приложений с практическим уклоном. Хороший программист не только умеет пользоваться различными библиотеками, но и знает, как они устроены внутри. Кроме этого, такие понятия, как операции ввода/вывода, наследование и абстракции, сериализация, родовые типы, регулярные выражения, не должны быть для вас пустым звуком.

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

Как начать программировать?

Для тех, кто собирается стать Java-программистом с полного нуля, я расскажу, как написать свою первую программу. Итак, открываем любой текстовый редактор и записываем:

class HelloWorld {
public static void main(String[] args)
System.out.println(«Hello World!»);
}

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

Теперь мы должны скомпилировать программу, используя компилятор javac из JDK. Пока мы не установили среду разработки, будем компилировать с помощью командной строки cmd, вызвав ее из меню «Пуск». В появившемся окне набираем cmd и жмем Enter.

Если мы сохранили HelloWorld.java в папку Progа на диске C, то вписываем команду: cd C:\Progа
и нажимаем Enter. Таким образом, мы изменили каталог на тот, где расположена наша программа. Затем вводим: javac HelloWorld.java

Опять нажимаем на Enter. Если система не выдала ошибку, значит, компиляция прошла успешно, и в папке Progа вы обнаружите файл HelloWorld.class. Объясню, для чего он нужен. Файл с расширением .java — это только «набросок» кода, не содержащий «техническую часть», которая влияет не на функции, а на запуск программы. А файл .class содержит байт-коды, позволяющие выполнить написанный код через Java-интерпретатор.

Если вы все сделали правильно, то на экране увидите свое творение, зарождающийся электронный разум, который поприветствует вас: «Hello World!»

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

https://webformyself.com/

Как начать программировать на Java

JDK

Чтобы начать программировать на Java, требуется установить JDK (java development kit — набор разработки для Java). Его скачивают с сайта компании Oracle. Например, JDK восьмой версии https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

JDK включает JRE и пакет разработчика, в который входит компилятор с языка Java, документация и др.

JRE (java runtime enviroment) – виртуальная машина для выполнения приложений, скомпилированных в соответствующий объектный код. Также включает библиотеки, но не компилятор и другие инструменты разработчика. Скачать JRE можно с сайта java.com. Грубо говоря, JRE – урезанная версия JDK. Поэтому разработчику, а не пользователю java-программ, этот пакет не нужен.

После распаковки пакета JDK в его подкаталоге bin вы найдете файл javac, запускающий компилятор, и файл java, запускающий виртуальную машину. Куда вы положите каталог с JDK, по большому счету не важно. Однако если это сделано не в предусмотренный для программ каталог (в случае Linux скорее всего это так), ОС не будет знать, что в ней появились новые программы. Тогда вам надо будет каждый раз указывать полный путь до компилятора и виртуальной машины.

Чтобы этого не делать, в Linux можно дописать путь в системную переменную $PATH. Сделать это можно несколькими способами. Например так, как описано ниже.

Допустим, мы распаковали JDK в каталог /usr/local/, и папка носит имя jdk1.8.0_191. В ней находится каталог bin с исполняемыми программами. Таким образом получаем путь /usr/local/jdk1.8.0_191/bin/. Открываем скрытый в домашнем каталоге файл .bashrc и дописываем туда:

PATH=/usr/local/jdk1.8.0_191/bin:$PATH
export PATH

Здесь переменной PATH присваивается содержимое системной переменой $PATH и добавляется еще один наш каталог, точнее приписывается впереди. После этого выполняется экспорт. Теперь надо перезапустить «Терминал», чтобы файл .bashrc выполнился.

Можно ничего не качать и не менять $PATH, а установить из репозитория дистрибутива пакетным менеджером. Однако подобным образом обычно ставят не JDK от Oracle, а openJDK – полностью свободный аналог JDK. Установка в Ubuntu может выглядеть так:

sudo apt install openjdk-8-jdk

В любом случае Bash должен видеть как java, так и javac. Чтобы убедиться, наберите java и два раза нажмите Tab. В списке должны быть оба. Если в систему были установлены разные JDK, то узнать какой используется можно с помощью команды which:

Зачем нужна виртуальная машина Java

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

Байт-код – это не машинный код. Поэтому он машинно-независим и может выполнять по большому счету на любых устройствах. Байт-код интерпретирует/компилирует на машинный язык виртуальная машина java в момент выполнения программы.

Хотя байт-код – не машинный код, но он достаточно низкоуровневый, чтобы исполняться быстрее, чем это происходило бы при чтении интерпретатором исходных кодов. Таким образом, javac’ом мы компилируем до байт-кода. А java интерпретирует байт-код на машинный язык.

Первая программа

Чтобы проверить работоспособность установленного ПО, напишем программу HelloWorld на языке Java. Файлам с исходниками принято давать расширение .java. Программу можно набрать в любом текстовом редакторе. Например, в nano, vim, atom или geany.

Примечание. Если вы хотите освоить работу в Vim, наберите в терминале vimtutor. Откроется небольшой курс, обучающий работе в редакторе.

class HelloWorld {
public static void main(String[] args) {
System.out.println(«Привет World!»);
}
}

Далее передаем этот файл javac’у. Он нам выдает файл HelloWorld.class, содержащий байт-код. Его мы передаем виртуальной машине java, не указывая расширение:

IntelliJ IDEA

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

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

Наиболее популярной IDE для Java является IntelliJ IDEA от компании JetBrains. Существует две версии – бесплатная Community и платная Ultimate (30 дней триальный период). В случае Linux в документации рекомендуют распаковывать скаченный архив в каталог /opt/. После этого из подкаталога bin запускают скрипт idea.sh, который запускает мастер установки.

В одном из окон мастера будет предложено выбрать SDK (в данном случае JDK). Следует указать каталог, куда вы распаковывали пакет JDK. IDEA будет использовать компилятор и другое отсюда. Когда вы напишите первую программу, надо будет сконфигурировать запуск, указав главный класс, содержащий функцию main(), или нажимать Ctrl + Shift + F10.

https://younglinux.info

Быстрый старт с Java: от знакомства до вашей первой игры

Эта статья рассчитана на новичков в программировании. Её цель — объяснить азы языка Java (классы, методы, компиляция, байт-код, JVM, переменные, условия, циклы, импорт). Этот материал поможет:

  • научиться писать код, компилировать и запускать байт-код;
  • познакомиться с переменными;
  • узнать об условных операторах и циклах;
  • освоить использование классов из стандартных пакетов;
  • написать простую консольную игру «Угадай число».

Java Development Kit (JDK)

В строку поиска Google вводим запрос: “jdk 8 download”, первая же строка поисковой выдачи даст нам ссылку на страницу загрузки на сайте oracle.com. Листаем вниз, щёлкаем по радио-кнопке “Accept License Agreement”, соглашаясь с лицензией, и выбираем пакет в колонке “Download”, который соответствует вашей операционной системе и её разрядности (32/64). Для скачивания потребуется регистрация на сайте (нужно будет указать логин и e-mail). Скачиваем и устанавливаем. На этапе выбора пакетов и папки JDK рекомендуется отказаться от Public JRE и сократить имя папки до “jdk1.8”.

Счастливым обладателям Windows потребуется также настройка системных переменных. Как их найти: Панель управления → Система → Дополнительные параметры системы → Вкладка «Дополнительно» → кнопка «Переменные среды», второе окошко сверху. В нем надо создать переменную JAVA_HOME и изменить (дополнить) Path (для этого используются кнопки «Создать» и «Изменить». Значение для переменной JAVA_HOME содержит путь к папке JDK. Переменную Path дополняем значением %JAVA_HOME%\bin. Обратите внимание, что список путей разделяется точкой с запятой (;). Инструкция есть также на сайте Oracle.

JDK содержит много утилит, но нам потребуется только компилятор (javac) и виртуальная машина Java — JVM (java). Проверить правильность установки и настройки можно в командной строке (на Windows: Win + R → cmd) или в терминале (Linux, Mac), набрав следующие команды:

javac -version
java -version
В качестве альтернативы можно использовать онлайн-JDK вместе с редактором, например на сайте Repl.it.

Написание кода

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

Для Windows хорошим выбором будет Notepad++ с плагином NppExec. Для Linux и Мас существуют другие текстовые редакторы, например Atom или Geany. Подробно об их настройке можно прочитать в статье «Пишем код на Java и Go в текстовом редакторе».

Hello, world!

При изучении нового языка писать программу, выводящую «Hello, world!», — это традиция. Она возникла в 1978 году, с выходом в свет книги «Язык программирования С» Брайана Кернигана и Денниса Ричи.

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

Код начинается с ключевого слова class. Java-программы состоят из классов — это «кирпичики» приложения. В реальных приложениях их могут быть десятки, сотни и тысячи. Затем пишется имя класса — HelloWorld. Имена классов принято писать в стиле CamelCase (все слова слитно, каждое с заглавной буквы). Классам, как и другим сущностям — методам, полям и переменным — рекомендуется давать мнемонические, «говорящие» имена.

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

В нашем классе только один метод — main(). Он особенный, его часто называют стартовым. Когда виртуальная машина Java получает класс для исполнения, она ищет в нём метод main. Если находит — выполняет код, который содержит метод. Если нет — выдаёт сообщение об ошибке. Важно, чтобы метод main() имел строго определённую сигнатуру: был публичным (public), статическим (static), не возвращающим никакого значения (void), с параметром в виде массива строк (String[] args). В противном случае виртуальная машина его просто не найдёт.

Наш метод main() содержит лишь одну строку, которая выводит в консоль текст «Hello, world!». Перед компиляцией сохраняем написанный код в файл. Имя файла должно соответствовать имени класса с точностью до регистра символов (Java — регистрозависимый язык). Затем открываем командную строку (или терминал) и вызываем сначала компилятор (javac), а потом виртуальную машину JVM (java).

C:\Users\User>javac HelloWorld.java
C:\Users\User>java HelloWorld
Hello, world!
После компиляции возникнет бинарный файл HelloWorld.class, содержащий байт-код. Имя этого файла (без расширения) передаётся как параметр при вызове виртуальной машины. В результате видим строку «Hello, world!» — это результат выполнения программы.

Переменные

Переменные хранят данные (числа, строки, логические значения и другие). Они похожи на коробочки: надписи на них — это имя и тип переменной, а внутри находится значение. При этом возможны две операции:

  • запись значения в переменную (или присвоение значения);
  • чтение значения из переменной.

В Java перед использованием переменную нужно обязательно объявить, указав тип и имя, поскольку Java — язык со строгой и статической типизацией. Попытка использовать переменную без объявления приведёт к ошибке компиляции. По типу переменные могут быть простыми (числа, символы, логические значения) или ссылочными (массивы, строки, любые другие объекты). В Java есть восемь простых типов (byte, int, short, long, float, double, boolean, char) и бесконечное количество ссылочных.

В примере ниже мы видим объявление двух переменных целого типа (int). Причём переменная second инициируется при объявлении. Затем переменной first присваивается результат выражения, в котором присутствует переменная second. В результате выполнения программы в консоль будут выведены значения обеих переменных: 35 и 10.

class Variables {
    public static void main(String[] args) {
        int first;
        int second = 10;
        first = second * 3 + 5;
        System.out.println(first);
        System.out.println(second);
    }
}
Имя переменной может содержать буквы и цифры, знак подчёркивания и $. Имя не должно начинаться с цифры. В профессиональной разработке в именах переменных используют только буквы. Имя должно явно указывать на назначение переменной. Например: countString — счётчик строк, errorSign — признак ошибки. Рекомендуется избегать однобуквенных имён — за исключением временных переменных (существующих в рамках цикла или небольшого кодового блока).

Проверка условий

Любой язык программирования высокого уровня позволяет изменять порядок выполнения программы в зависимости от заданного условия. В Java для этого используется конструкция if. После этого ключевого слова в скобках записывается логическое выражение, затем в фигурных скобках — группа команд. Если результат логического выражения — true (истина), то эта группа команд выполняется, если false (ложь) — нет.

class ComparisonShort {
    public static void main(String[] args) {
        int i = 10;
        if (i == 10) {
            System.out.println("i = 10");
        }
    }
}

Результат этого примера — строка “i = 10” в консоли, так как результат логического выражения (проверка на равенство) будет true. В качестве знаков сравнения допустимы: <, <=, >, >=, ==, !=. Добавив ключевое слово else, получаем полную форму оператора сравнения.

class ComparisonFull {
    public static void main(String[] args) {
        int i = 10 + 2;
        if (i == 10) {
            System.out.println("i = 10");
        } else {
            System.out.println("i != 10");
        }
    }
}

Выполнив эту программу, мы увидим в консоли сообщение “i != 10”, так как результат сравнения значения переменной i и цифры 10 будет false. Поэтому выполнится набор команд в фигурных скобках после слова else.

Циклы

Циклы предназначены для повторения группы команд. Java позволяет использовать два вида циклов:

  • с определённым количеством итераций: for;
  • без определенного количества итераций: while и do-while.
class CycleFor {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println(i);
        }
    }
}

Запустив этот пример, мы увидим в консоли колонку чисел от 0 до 4. Это результат работы классического цикла for со счётчиком. В круглых скобках три параметра цикла, разделённые точкой с запятой: объявление и инициализация счётчика, проверка условия продолжения цикла, действие после каждой итерации. В фигурных скобках — тело цикла. В нашем случае это команда, выводящая значение счётчика i в консоль.

Когда будем писать игру, используем циклы while и do-while — там и увидим их работу на практике. Пока достаточно сказать, что их синтаксис проще for, а тело цикла повторяется до тех пор, пока логическое выражение в круглых скобках после while возвращает true.

Пример ниже иллюстрирует вторую форму цикла for — без счётчика. Такой вариант удобен при переборе элементов массива или списка.

class CycleForeach {
    public static void main(String[] args) {
        int[] arr = {5, 4, 3, 2, 1};
        for (int a : arr) {
            System.out.println(a);
        }
    }
}

Импорт и использование классов

Один из важных принципов программирования — DRY: Don’t Repeat Youself (не повторяйся). Разработчик должен уметь использовать то, уже создано, отлажено и работает. Java поставляется с набором packages (пакетов). Они содержат скомпилированные классы, сгруппированные по тематике. На неё указывает имя пакета: java.io, java.util, java.net и так далее.

В игре нам потребуется случайное число от 0 до 9. Писать генератор случайных чисел незачем, так как в пакете java.util есть готовый класс Random. Чтобы использовать класс из пакета, его нужно импортировать. Строки с директивами импорта располагаются в самом начале файла класса.

import java.util.Random;

Создадим объект на основании класса, чтобы можно было вызвать нужный метод. Слева от знака присваивания (=) объявляем ссылочную переменную (объект) random типа Random. Справа создаём объект с помощью директивы new.

Random random = new Random();

Вызываем метод через точку после имени объекта: random.nextInt(10). Цифра 10 ограничивает диапазон генерируемых чисел (от 0 до 9). В результате получим строку из 30 случайных чисел. Запустите программу несколько раз и обратите внимание, что последовательность чисел не повторяется.

import java.util.Random;
 
class RandomInt {
    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 0; i < 30; i++) {
            System.out.print(random.nextInt(10) + " ");
        }
    }
}

Игра «Угадай число»

Мы узнали достаточно, чтобы написать игру «Угадай число». В ней компьютер «загадывает» целое число от 0 до 9, а человек должен угадать его — есть три попытки. Создадим класс GuessTheNumber с методом main(), импортируем нужные нам классы и добавим соответствующие объекты. Класс Scanner обеспечит чтение чисел с консоли (System.in — консоль).

import java.util.Scanner;
import java.util.Random;
 
class GuessTheNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
    }
}

Объявим и инициируем три переменные: счётчик попыток count, для чтения числа с консоли — guess, для хранения загаданного числа — number.

int count = 0;
int guess = -1; 
int number = random.nextInt(10);

Опишем основной игровой цикл, используя while. В цикле запрашиваем число с консоли, сравниваем с загаданным. В случае несовпадения выводим подсказку и увеличиваем счётчик попыток на 1.

while (count < 3 && guess != number) {
    System.out.print("Guess the number (0..9): ");
    guess = sc.nextInt();
    if (number != guess) {
        System.out.println("Your number is " +
            ((guess > number)? "greater" : "less"));
        count++;
    }
}

Тело цикла while повторяется, пока логическое значение в скобках возвращает true. Таким образом наш цикл будет повторяться, пока значение счётчика попыток меньше 3 и число не отгадано. Обратите внимание на конструкцию, которая позволяет выбрать одно из двух значений согласно условию в скобках. Это тернарный оператор. Если условие в скобках true, то возвращается значение слева от двоеточия, если false — справа.

(guess > number)? "greater" : "less"

Остаётся добавить строку с выводом результата игры (победа или проигрыш) после цикла — тут снова используется тернарный оператор. Текст работающей программы выглядит так:

import java.util.Scanner;
import java.util.Random;
 
class GuessTheNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
        int count = 0;
        int guess = -1;
        int number = random.nextInt(10);
        while (count < 3 && guess != number) {
            System.out.print("Guess the number (0..9): ");
            guess = sc.nextInt();
            if (number != guess) {
                System.out.println("Your number is " +
                    ((guess > number)? "greater" : "less"));
                count++;
            }
        }
        System.out.println("You " +
            ((guess == number)? "WIN!" : "Lose: " + number));
    }
}

Сохраняем программу в файл GuessTheNumber.java, компилируем (javac), вызываем JVM (java) — и пробуем выиграть у компьютера. Добавим заключительный штрих: используя цикл do-while, позволим пользователю повторять сеанс игры без перезапуска программы. В приведённом ниже коде комментарий нужно заменить на соответствующий фрагмент из предыдущей программы. Попробуйте сделать это самостоятельно.

import java.util.Random;
import java.util.Scanner;
 
class GuessTheNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
        do {
            //
            // Вставьте фрагмент, который должен повторяться
            //
            System.out.println("Repeat game? Yes - 1, No - 0");
        } while (sc.nextInt() == 1);
    }
}
Обратите внимание, что тело цикла do-while повторяется на тех же условиях, что и тело цикла while: логическое выражение в скобках должно быть true.

Заключение

На всякий случай прилагаю мой telegram — @biblelamp. Если вас заинтересовала тема, рекомендую почитать «Java-программирование для начинающих» Майка МакГрата и «Изучаем Java» Кэти Сьерра и Берт Бейтс. В следующих статьях мы продолжим начальное изучение Java на примере создания других игр. Следите за блогом!

https://geekbrains.ru/

<h2″>9 сложностей при изучении Java.

1. Первый вопрос, который вы себе задаёте: C чего начать?

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

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

Желание задавать другие вопросы пропадает напрочь. Но вы не опускаете руки – пытаетесь написать свою первую программу – но не тут-то было, элементарная программа не запускается. Вместо “Привет мир!” на экране – ошибка, которая вам мало о чем говорит.

Сидите Вы и думаете: “Из книги мало что понял, в интернете меня принимают в штыки, как только появляюсь со своими глупыми вопросами, я даже первую программу запустить не могу. Может я не такой умный как все и Java не для меня? Как же другие начинают?”. И вы начинаете злиться на самого себя.

2. Ещё одна мысль, которая посещает новичка: “Java – слишком сложный язык, наверное, не всем дано на нем программировать”.

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

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

3. Следующая боязнь новичка: “Новичков никто не любит, им никто не хочет помогать, над ними смеются и издеваются”

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

Не у всех они есть. Мало того, вас часто пытаются осадить более умные коллеги, поставить на место, иногда унизить и за счет этого потешить свое эго. Вам и так то нелегко поначалу, а тут ещё и какие то “псевдо гуру” пытаются на вас давить и насмехаться над вами. Часто бывает  так: что то не получилось – а спросить не у кого.

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

4. Четвертая проблема новичка: “Где находить нужную информацию?”

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

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

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

5. Рассмотрим ещё одну проблему: новичок уверен, что нужно прочитать не один десяток книг, чтобы научится программировать.

У вас не возникало такой мысли: “Учиться по книге могут только гении, ну или приближенные к ним” или “Чтобы дочитать полностью книгу нужно обладать супер  дисциплиной ”?

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

6. Ещё одна мысль, которая посещают начинающих: “Java очень быстро развивается, мне за ним не угнаться, тем более я ещё даже не начал изучение”.

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

Поэтому кажется, что поезд уже ушел, тот кто успел на него запрыгнуть – счастливчики, а нам придется продолжать программировать на своем “родных” Паскале и Visual Basic, в глубине души завидуя всем остальным. Про себя вы все время повторяете, что находитесь не то что в начале пути, а вы даже не ступили на этот путь.

7. Следующая проблема новичка: “Хочу устроиться на работу программистом, но без опыта нигде не берут”

Вы изучаете новый язык программирования, чтобы реализовать свой творческий потенциал и зарабатывать на этом деньги. Но проблема в том, что работодатель часто смотрят на ваш опыт, а у вас там только университетская программа, которая в наше время очень сильно хромает и не является показателем. Если вы только конечно не отучились где – нибудь в Оксфорде или Кембридже (тогда не надо искать работу, она сама вас найдет ? ) В большинстве случаев реальность такова, что пройдя университетскую программу обучения, вы получаете следующие качества:

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

Даже если вы изучили visual basic или Паскаль, и если вы напишите это в своем резюме, работодатель рассмеется вам в лицо. По окончании учебы невольно приходят мысли: “Что делать? Где набраться опыта? Почему я раньше об этом не думал, вместо этого гулял и развлекался? Нужно было все осваивать самому, а не надеяться на университет”. Чувство потерянного и неправильно спланированного времени не покидает вас.

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

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

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

9. В скором времени все новички приходят к такому вопросу: «Какую среду программирования выбрать? Сколько людей – столько и мнений».

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

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

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

https://kvodo.ru/

Стоит ли становиться Java разработчиком в 2020

Данная статья, описывает моё личное мнение основанное на моём опыте и опыте моих друзей. Может быть полезна только людям не знающим не один язык, но имеющим желание начать свою карьеру в сфере IT.

Привет DTF. Скажу сразу, что если тему заголовка ставить как вопрос, то однозначного ответа я не дам. Я могу лишь описать своё видение и опыт. Я являюсь Java программистом. Работаю в компании, где присутствуют множество языков. Основной проект компании написан на Java, но все новые проекты написаны на других языках.

Список языков в компании такой:

  • Java
  • Java Script
  • Type Script
  • C++
  • Go
  • Kotlin
  • Swift
  • Python

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

Java — это не про создание, а про поддержку.

Поясню. Java долгое время была лидером на рынке языков программирования — это было модно, стильно, молодёжно. Когда-то на ней писали всё: мобильные игры, серверную часть сайтов, десктопные приложения. Многие из успешных проектов, которые существуют и приносят прибыль создателям до сих пор, всё ещё написаны на Java. Их не стремятся переписать т.к. на этом может уйти много времени, сил и денег. Плюс встаёт вопрос куда девать всех jav’истов.

Этим я хочу сказать следующее — если вы решили стать именно Java программистом, буд-те готовы, что в 75% случаев, вас поставят не в молодой проект. Скорее всего вы будете поддерживать и фиксить баги в коде, который мог ещё остаться от java 5 или 6 версии. Вы в любом случае будете прокачиваться, возможно даже быстро, но не ждите что приобретённые вами навыки будут востребованы на рынке.
Так же в подобных проектах много дедов, которые не готовы к изменениям и не хотят разбираться в новых фишках java.

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

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

Какой курс капитан?

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

  • Игровая индустрия. Сразу нет, не мучайте себя и других людей. Вы всегда можете выкрикнуть Minecraft, но я отвечу — «Хотите разрабатывать игры, учите C++ и C Sharp».
  • Автотесты. Возможно. На рынке сейчас очень много вакансий для автотестов на Python и scala, иногда даже встречается C Sharp. Java не самый плохой вариант из предложенных. Плюс в других странах — эта сфера в целом очень популярна становится и прибыльна. Если интересен данный путь развития, Java — добротный вариант с множеством документации и информации.
  • Мобильная разработка. Kotlin в Android сейчас «БОСС качалки», у Яблока есть Swift. Сейчас, если где-то Java и используется, то она скорее f**g slave, чем реальный конкурент.
  • Web(Бэк)Spring — это та технология, которая делает java одним из королей бэкенда. Если вы освоили Spring, то вы будете тем самым счастливчиком, который может поучаствовать в разработке/поддержке нового проекта. Ваша стоимость на рынке так же вырастет.
  • Web(Фронт). У Java был когда-то JSF. Не дай бог парни! JS и TS к вашим услугам.

Всё плохо?

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

Я лишь пытаюсь объяснить, что всё уже не так идеально, как это было например в 12-15 годах. Просто учить Java и не задумываться о том, как ты хочешь применять свои навыки — это очень плохая практика.

Да у Java в Ру сегменте есть JavaRush, на HH она довольно часто повторяется в списке вакансий, по ней много книг и если у вас есть знакомые программисты, скорее всего 1 из них точно программирует на Java. Однако — это не повод бездумно начинать учить этот язык, в надежде получать большие деньги, скорее всего всё закончится тем, что вы разочаруетесь или в этом языке, или в программировании в целом.

https://dtf.ru/

Один комментарий

  1. Знания Java сейчас требуют даже те работодатели, которые пока вроде и не связаны с непосредственным созданием программного обеспечения. Считается, что эти знания не помешают, любому сотруднику, связанному с IT. Научиться программированию Java онлайн не так уж просто, но если реально задаться этой целью, то можно найти несколько неплохих курсов, которые помогут достигнуть цель.

Добавить комментарий для Олег Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *