Тема 1. Введение в Java - BelyiZ/JavaCourses GitHub Wiki

Содержание:

  1. Общая информация о Java
  2. Hello World приложение
  3. Создание проекта в Intellij IDEA
  4. Общая информация о системах контроля версий
  5. Checkout GItHub репозитория
  6. Список литературы/курсов

Общая информация о Java

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

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

Мобильная разработка — ещё одна область использования Java. На этом языке пишут приложения для устройств, работающих под управлением ОС Android.

На Java создают клиентские приложения. Простой и близкий разработчикам пример: IDE NetBeans написано на Java.

Также Java применяется для работы с Big Data, разработки программ для научных целей, например, обработки естественных языков, программирования приборов — от бытовых девайсов до промышленных установок.

Также Java применяется для работы с Big Data, разработки программ для научных целей, например, обработки естественных языков, программирования приборов — от бытовых девайсов до промышленных установок.

По результатам ежегодного отчёта State of the Octoverse, который выпускает Github, язык программирования Java по итогам 2020 года занимает третье место в списке самых популярных.

Java является объектно-ориентированным языком, относится к языкам программирования с сильной типизацией.

Создатели реализовали принцип WORA: write once, run anywhere или "пиши один раз, запускай везде". Это значит, что написанное на Java приложение можно запустить на любой платформе, если на ней установлена среда исполнения Java (JRE, Java Runtime Environment).

Эта задача решается благодаря компиляции написанного на Java кода в байт-код. Этот формат исполняет JVM или виртуальная машина Java. JVM — часть среды исполнения Java (JRE). Виртуальная машина не зависит от платформы.

В Java реализован механизм управления памятью, который называется сборщиком мусора или garbage collector. Разработчик создаёт объекты, а JRE с помощью сборщика мусора очищает память, когда объекты перестают использоваться.

Особенности языка:

  • чувствительность к регистру — идентификаторы User и user в Java представляют собой разные сущности;
  • для именования методов используется lowerCamelCase. Если название метода состоит из одного слова, оно должно начинаться со строчной буквы. Пример: firstMethodName();
  • для именования классов используется UpperCamelCase. Если название состоит из одного слова, оно должно начинаться с прописной буквы. Пример: FirstClassName;
  • название файлов программы должно точно совпадать с названием класса с учётом чувствительности к регистру; Например, если класс называется FirstClassName, файл должен называться FirstClassName.java;
  • идентификаторы всегда начинаются с буквы (A-Z, a-z), знака "$" или нижнего подчёркивания "_" ;

Hello World приложение

Изучать язык программирования, по традиции, начинают с программы 'Hello, World!', которая выводит этот текст на экран.

Hello, World!

В языке Java эта программа будет выглядеть так:

class App {

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

Текст Hello, World! появится на экране благодаря команде System.out.println(), где println() - это сокращение от английского print line. Она выводит на экран значение, указанное в скобках, в данном случае строку. Сама строка обрамляется двойными кавычками "". Если этого не сделать, то компилятор укажет на синтаксическую ошибку.

Создание проекта в Intellij IDEA

Прежде всего загрузим установочный дистрибутив с официального сайта https://www.jetbrains.com/idea/download. По этому адресу можно найти пакеты для Windows, MacOS, Linux. Кроме того, сама среда доступна в двух версиях - Ultimate (платная с триальным бесплатным периодом) и Community (бесплатная). Конечно, Community-версия не имеет ряда многих возможностей, которые доступны в Ultimate-версии (в частности, в Community недоступны опции для веб-приложений на Java), но ее будет достаточно в рамках нашего курса.

После установки запустим IntelliJ IDEA и создадим первый проект. Для этого на стартовом экране выберем New Project:

Создание проекта в IntelliJ IDEA Далее откроется окно создания проекта. В левой части в качестве типа проекта выберем Java.

Создание проекта Java в IntelliJ IDEA Кроме того, в поле Project SDK можно указать путь к Java SDK, который будет использоваться в проекте. Как правило, это поле по умолчанию уже содержит путь к SDK, который установлен на локальном компьютере. Если это поле пусто, то его надо установить.

После этого нажмем на кнопку Next. Далее будет предложено отметить шаблон проекта. По умолчанию тут один шаблон проекта - Command Line App, который предполагает запуск приложения как консольного.

Тип проекта Java в IntelliJ IDEA И в конце откроется окно, где надо будет ввести название проекта и пакета, а также указать его расположение на жестком диске. Здесь можно ввести любые данные. Ну в данном случае проект будет называться HelloApp, а базовый пакет ru.java.course.

Название и пакет проекта Java в IntelliJ IDEA И после этого для создания проекта нажмем на кнопку Finish. После этого среда создаст и откроет проект.

Первая программа на Java в IntelliJ IDEA В левой части мы можем увидеть структуру проекта. Все файлы с исходным кодом помещаются в папку src. По умолчанию она содержит каталог, который называется по имени пакета и имеет один файл Main.java.

В центральной части программы открыт исходный код программы в виде класса Main. Изменим его следующим образом:

package ru.java.course;

public class Main {

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

С помощью Run запустим проект.

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

Общая информация о системах контроля версий

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

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

Система контроля версий может быть организована при помощи: простого copy-paste, локальных, централизованных или распределенных систем контроля версий.

Copy-paste

Известный метод при применении к данной задаче может выглядеть следующим образом: будем называть файлы по шаблону filename_{version}, возможно с добавлением времени создания или изменения.

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

Локальная система контроля версий

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

Одним из примеров таких систем является система контроля версий RCS, которая была разработана в 1985 году (последний патч был написан в 2015 году) и хранит изменений в файлах (патчи), осуществляя контроль версий. Набор этих изменений позволяет восстановить любое состояние файла. RCS поставляется с Linux.

Локальная система контроля версий хорошо решает поставленную перед ней задачу, однако ее проблемой является основное свойство — локальность. Она совершенно не предназначена для коллективного использования.

Централизованная система контроля версий

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

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

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

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

Распределенная система контроля версий

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

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

К данному виду систем контроля версий относятся Mercurial, Bazaar, Darcs и Git.

Checkout GItHub репозитория

Рассмотрим универсальный инструмент git checkout, который может существенно увеличить скорость Вашей работы.

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

Для переключения между ветками:

git checkout[название ветки]

Для проверки более старого коммита с помощью хэша:

git checkout[SHA]

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

git checkout HEAD~[num-of-commits-back]

Чтобы отменить все локальные незакоммиченные изменения:

git checkout

Чтобы отменить определенное локальное незакоммиченное изменение:

git checkout--[имя файла]

Список литературы/курсов

  1. https://metanit.com/java/tutorial/1.1.php
  2. https://git-scm.com/doc
  3. https://dev.to/milu_franz/git-explained-an-in-depth-comparison-18mk
  4. https://proglib.io/p/sravnenie-5-komand-git-revert-checkout-reset-merge-i-rebase-2020-05-25
  5. https://github.com/kolei/OAP/blob/master/articles/skv.md

Тема 0. Введение в курс | Оглавление | Тема 2. Типы данных в Java