Занятие №1

Java. Первый проект

Михаил

Павлов

Обо мне

Павлов Михаил

старший разработчик

компания "Сибирские интеграционные системы"

Опыт работы:

  • с 2012 по 2015гг работал в "Билайн" на поддержке биллинговой системы
  • с 2015 по настоящее время работаю в СИС
  • с 2017 руководителем группы разработчиков

Технологии, с которыми работал:

  • Базы данных: PostgreSQL, Oracle (PL/SQL), MongoDB
  • Бэкэнд: Java (Spring, Spring Boot, SpringData, Hibernate), C#, Cache (Mumps)
  • Фронтэнд: JavaScript, TypeScript, AngularJS, Angular (2-8), ActionScript

Что вы сегодня узнаете

  • Java, чем она хороша и почему стоит ее изучать
  • Что такое JVM, JDK, JRE
  • Основы синтаксиса языка
  • Как написать свою первую программу
  • Gradle, для чего нужен и как пользоваться

А также:

  • Много полезных ссылок
  • Домашнее задание

Что такое Java?

Java - это

  • статически типизированный
  • объектно-ориентированный
  • язык программирования

Почему именно Java?

Распространенность

  • Низкий порог вхождения
  • Работает на самой производительной платформе
  • Java и C# - основной выбор при разработке корпоративных приложений
  • 7,6 миллионов разработчиков в 2019г (источник)
  • 14% репозиториев на GitHub (источник)
  • Рынок труда (hh)

Особенности Java

Мы принимаем на работу java-разработчиков :)

Ключевые фичи

  • Упрощение и ускорение разработки программы за счет сборки мусора (GarbageCollector)
  • Кроссплатформенность

      ("Write once, run anywhere")

Garbage collector

C++ (нужно управлять памятью вручную)

Java (очищает память автоматически)

a = new float[10];
<...>
delete [] a
float[] b = new float[10];

Виртуальная машина

(JVM или Java Virtual Machine)

Компилятор транслирует приложение в платформонезависимый байт код, который будет выполняться виртуальной машиной

"Write once,

run anywhere"

Java Virtual Machine

Система версий Java

История

До Java 9 (java 8 вышла в 2014г):

  • Версии выходили раз в несколько лет
  • Мелкие фичи ждали релиза (ждали, пока доделаются крупные)

Начиная с Java 9 (2017):

  • 2 версии в год
  • Выходит больше мелких и приятных улучшений

Мы будем работать с Java 8

  • Во-первых, она получилась очень удачной и до сих пор активно используется

  • Во-вторых, программы написанные под java 8 будут работать и под java 13 (актуальная версия на данный момент)

(примеры будут адаптированы под эту версию)

С чего начать?

  1. Настроить окружение
  2. Разобраться с синтаксисом
  3. Написать и запустить

1. Окружение

JDK

Development Tools

JRE

JVM

Lib Files

JDK

- Java Develoment Kit

JRE

- Java Runtime Environment

JVM

- Java Virtual Machine

  1. Скачиваем и устанавливаем JDK для Java 8 версии

  2. (Windows) Указываем переменную среды JAVA_HOME

  3. (Windows) Добавляем в Path путь до %JAVA_HOME%/bin

Настройка

* Если возникнут проблемы, пишите в чат учебной группы

2. Синтаксис

Какие элементы есть в Java?

Class

Object

Method

Variables

public class Car {
}
new Car()
public void drive() {
}
int wheels = 4;

Что может включать класс


public class Car {
    private int wheelsCount;
    private boolean hasDriver;
    private String direction;
    private Long distance;
    private Car myCurrentCar;
    private Engine myEngine;

    public void driveToDirection(String direction) {
        if (direction != null) {
            System.out.println("go to " + direction);
        }
    }

    public int getWheelsCount() {
        return this.wheelsCount;
    }
}

Свойства:

Методы

примитивы​​

обертки

объекты

Какие бывают типы данных

Примитивы

Объекты

Обертки

  • boolean
  • int
  • long
  • float
  • char
  • ...
  • Boolean
  • Integer
  • Long
  • Float
  • Character
  • ...
  • Object
  • Car
  • ...

Из чего состоит метод

public static boolean checkIfValidGasoline(String gasoline) {
    // do check
}

Модификатор доступа

Возвращаемый тип

Имя метода

Входящие параметры

(тип и имя)

Тело метода

Ключевое слово

(необязательное)

Несколько классов и область видимости

public class Car {
    public void setColor(String color) {
    }

    private int getWheelsCount() {
    }
}

---------------------------------------------

public class Driver {
    public void createRedCar() {
        Car my = new Car();
        my.setColor("Red");
    }

    public void checkCarEquipment() {
        Car my = new Car();
        int wheelsCount = my.getWheelsCount();
    }
}

Модификатор доступа - public

Модификатор доступа - private

Обращение снаружи класса - ОК

Обращение снаружи класса - Ошибка доступа

Области видимости

Точка входа

public class MyNewApplication
{
    public static void main(String[] args) {
        // do something
    }
}

Важно запомнить

главное заклинание

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

Конвенция именования

Тип Описание
ClassName Существительное или фраза, начинается с заглавной, остальные слова слитно, первая буква каждого слова - заглавная (System, StringBuilder)
methodName Глагол, первая строчная, остальные слова слитно, первая буква каждого слова - заглавная (actionPerformed, printLn, getResult)
variableName Существительное или фраза, первая буква строчная, остальные слова слитно, первая буква каждого слова - заглавная (firstName, orderNumber, myVariable)
CONSTANTS Буквы в верхнем регистре, слова разделены подчеркиванием (MIN_WIDTH, NAME_TEMPLATE, TEXT_MAX_LENGTH)

Время писать программу

Gradle

(open-source система сборки проекта)

  • Инструмент для работы со сложными приложениями
  • Упрощает скачивание библиотек (14% репозитариев на GitHub)

Установка и создание проекта

  1. Скачать и установить gradle
  2. Выполнить команду в консоли:
    • gradle init
  3. Выбрать варианты ответов:
    1. тип проекта - application
    2. язык - java
    3. DSL - Groovy
    4. тестовый фреймворк - JUnit 4
    5. имя проекта
    6. пакет
Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Swift
Enter selection (default: Java) [1..5] 3

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1

Project name (default: unit1_test): my_app_test
Source package (default: my_app_test): com.github.my.test

Наименование пакетов

  • Имя пакета обеспечивает уникальность проекту
  • Обычно используют свой интернет домен, в обратном порядке. Например:
    • com.sun.eng
    • com.apple.quicktime.v2
    • com.github.myname

Что появилось в проекте

plugins {
    id 'java'
    id 'application'
}

repositories {
    jcenter()
}

dependencies {
    implementation 'com.google.guava:guava:28.1-jre'

    testImplementation 'junit:junit:4.12'
}

application {
    mainClassName = 'com.github.my.test.App'
}

1. build.gradle

rootProject.name = 'my_app_test'

2. settings.gradle

3. App.java в папке:

src\main\java\com\github\my\test

Как запустить

C:/temp > gradle build

C:/temp > gradle run
  1. Собрать проект командой build
  2. Запустить приложение командой run

Intellij Idea (IDE)

Ссылка на скачивание (нам хватит Community Edition)

Домашнее задание (ч.1)

Зарегистрироваться на GitHub (https://github.com/)

Домашнее задание (ч.2)

1) Установить Git (ссылка)

2) Установить TortoiseGit (ссылка)

 

Как работать с GitHub:

- для windows (ссылка)

- для linux (ссылка)

* Не забыть использовать нужный репозиторий

Домашнее задание (ч.3)

  1. Выкачать репозиторий
  2. Создать новую ветку (branch)
  3. Решить задачу из задания (следующий слайд)
  4. Закоммитить изменения в ветку
  5. Залить на GitHub
  6. (!) Создать pull-request (описание)

Задание

Необходимо реализовать метод, который переставит символы в строке в обратном порядке, без использования метода reverse() из класса StringBuilder.

Подробности в Readme репозитория

Работы без pull-реквестов приниматься не будут

Домашнее задание (ч.4)

Прислать письмо со ссылкой на проект нам, на эл. почту:

checkhomework.sis@gmail.com

Формат письма:

Тема: Имя Фамилия, номер домашнего задания.

В тексте письма ссылка на пулл-реквест

Крайний срок сдачи - через неделю после выдачи задания

Полезные ссылки

Вопросы

Спасибо за внимание!

Занятие 1

By Павлов Михаил