Урок 2. обзор java: введение, преимущества и история создания языка программирования
Содержание:
- Плюсы и минусы Java
- Есть ли у Java альтернатива?
- Как освоить язык программирования Java?
- Поэтапная установка Jivosite
- Производительность и лучшие практики
- Приоритет операторов в Java
- Как запустить Java на Windows (XP, 7, 8 и 10)
- Объектно-ориентированное программирование
- Преимущества Java-программирования
- История создания языка программирования JAVA
- Ограничения Jivosite
- Использование Google Tag Manager (GTM)
- Интерфейс Jivosite
- А что с работой?
- Проверка условий
- Как и когда чат Jivo загружается?
- Сравнение
- Заключение
- Изолированные типы (Sealed Classes). JEP 397
- Описание программы
- Паттерны для instanceof (Pattern Matching for instanceof). JEP 394
- Минусы Java
- Игра «Угадай число»
- Заключение
Плюсы и минусы Java
У всех качеств Java, будь то строгая типизация или объектная ориентированность, есть свои плюсы и минусы, а ещё они есть у самой Java как у языка.
Плюсы
- Независимость — ваш код будет работать на любой платформе, которая поддерживает Java.
- Надёжность — в немалой мере достигается благодаря строгой статической типизации.
- Мультифункциональность.
- Сравнительно простой синтаксис.
- Java — основной язык для Android-разработки.
- Объектно-ориентированное программирование (ООП) тоже приносит много выгод:
- параллельная разработка;
- гибкость;
- одни и те же классы можно использовать много раз;
- код хорошо организован, и его легче поддерживать.
Минусы
- Низкая скорость (по сравнению с С и С++).
- Требует много памяти.
- Нет поддержки низкоуровневого программирования (Java — высокоуровневый язык). Например, у неё нет указателей.
- С 2019 года обновления для бизнеса и коммерческого использования стали платными.
- Для ООП нужен опыт, а планирование новой программы занимает много времени.
Есть ли у Java альтернатива?
Может показаться, что Java — абсолютный лидер и у неё нет соперников, но на самом деле всё совсем наоборот. Её часто сравнивают с С# и Python, и это только главные «противники». Давайте посмотрим на них внимательнее.
Java против Python
Java и Python соревнуются не первый год: в рейтингах они раз за разом занимают места рядом друг с другом (вот рейтинг 2019 года). Сравнивают их не просто так, у них действительно есть общие черты: оба языка очень популярные, объектно-ориентированные и работают вне зависимости от платформы.
Давайте посмотрим, что у них различается.
Типизация
У Java статическая типизация вы должны прописывать тип данных, когда вводите новую переменную.
У Python динамическая типизация: это значит, что типы данных не надо прописывать, они определяются автоматически. Ещё одно отличие типизации: в Python разные типы переменных можно смешивать. Но и тут есть свои границы: например, вы можете сделать массив со строками и числами, но прибавить строку к числу уже нельзя.
Python даст вам больше гибкости и лёгкости в написании, зато Java предупредит ошибки.
Читаемость
Этот пункт связан с предыдущим, потому что то же указание типов влияет на конечный вид кода. Хотя у Java достаточно простой синтаксис по сравнению с другими языками, здесь Python выигрывает. Гораздо лучше слов эту разницу покажет пример.
Вот так может выглядеть код в Python:
То же самое, написанное в Java:
В целом у синтаксиса в Python простая ясная структура, он хорошо читается, его можно даже назвать интуитивным. Он хорошо подойдёт новичкам.
В Java код более комплексный, со множеством слов и знаков: на английском такой синтаксис называют словом «verbose», то есть «говорливый» код, многословный. Он хуже читается и может быть сложноват для новичков, хотя многие разработчики чувствуют себя комфортнее со строгим синтаксисом.
Как освоить язык программирования Java?
Официальная документация Java
Oracle, компания, владеющая Java, публикует качественные уроки. Официальная документация освещает все функции Java и регулярно обновляется.
Примечание: единственный минус — официальная документация Java не всегда написана самым простым языком.
Рекомендуемые книги по Java
Если вы действительно хотите изучить программирование на Java, купите хорошую книгу. Конечно, 1000 страниц не прочитать за один день. Но хороший учебник поможет вам научиться программированию.
Java: Полное руководство (10-е издание)
Отличная книга для тех, кто только начинает изучать Java. Последнее издание включает все функции релиза Java 8.
В книге описано всё, что нужно знать про программирование на Java, включая синтаксис, ключевые слова и фундаментальные основы программирования, а также библиотеку API Java, апплеты Java и многое другое.
Философия Java (4-е издание)
Если вы переходите на Java с другого языка программирования, эта книга для вас. Если же вы начинаете с нуля, лучше всего читать её вместе с другой.
Java 8. Карманный справочник: Скорая помощь Java-программистам
Эта книга содержит понятные ответы на вопросы, возникающие при обучении Java программированию с нуля. Она кратко рассказывает обо всех основных концепциях Java (включая Java 9). Не хотите листать сотни страниц в поисках нужной строчки? Купите эту книгу.
Поэтапная установка Jivosite
Первое окно, которое появится у вас на экране после регистрации – предложение сразу же добавить Jivosite на ваш сайт. Здесь можно выбрать платформу, сразу же скопировать код или отправить инструкции вебмастеру.
Этот этап можно пропустить, сначала настроив личную информацию. В таком случае повторно найти код для установки Jivosite можно при нажатии на кнопку «Управление» (подсвечивается красным уведомлением, пока вы не встроили виджет сервиса на свой сайт). Выберите «Каналы связи» в левом меню. Откроется вот такое окно:
Здесь снова можно настроить Jivosite с нуля. Рассмотрим установку на примере плагина для WordPress.
- Нажмите на иконку WordPress. В открывшемся окне нажмите «Скачать модуль» – кнопка подсвечивается зелёным.
- В меню WordPress выберите «Плагины», затем «Новый». Загрузите файл с плагином Jivosite со своего компьютера.
- Нажмите «Активировать плагин».
- Если появится надпись о свежей версии Jivosite, обновите плагин.
Теперь им можно пользоваться. В том же окне настроек каналов связи можно настроить внешний вид всплывающего виджета, прием платежей, опросники и количество уведомлений. Здесь, например, настраиваются кнопки:
Производительность и лучшие практики
Пустая коллекция вместо Null
Если ваша программа может вернуть коллекцию, которая не содержит никаких значений, убедитесь, что возвращается пустая коллекция, а не Null. Это сэкономит вам время на различные проверки и избавит от многих ошибок.
Создание объектов только когда необходимо
Создание объектов — одна из самых затратных операций в Java. Лучше всего создавать их только тогда, когда они действительно нужны.
Deadlocks (Дедлоки)
Взаимная блокировка (Deadlock) потоков может происходить по многим причинам, и полностью защититься от них в Java 8 очень сложно. Чаще всего, это происходит, когда один синхронизируемый объект ожидает ресурсов, которые заблокированы другим синхронизированным объектом.
Вот пример тупика этого потока:
Результат этой программы:
Взаимоблокировок можно избежать, изменив порядок вызова потоков:
Вывод:
Приоритет операторов в Java
Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:
Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».
В таблице операторы с наивысшим приоритетом размещаются в верхней части, и уровень приоритета снижается к нижней части таблицы. В выражении высокий приоритет операторов в Java будет оцениваться слева направо.
Категория | Оператор | Ассоциативность |
Постфикс | () [] . (точка) | Слева направо |
Унарный | ++ — — ! ~ | Справа налево |
Мультипликативный | * / % | Слева направо |
Аддитивный | + — | Слева направо |
Сдвиг | >> >>> | Слева направо |
Реляционный | > >= | Слева направо |
Равенство | == != | Слева направо |
Побитовое «И» («AND») | & | Слева направо |
Побитовое исключающее «ИЛИ» («XOR») | ^ | Слева направо |
Побитовое «ИЛИ» («OR») | | | Слева направо |
Логическое «И» («AND») | && | Слева направо |
Логическое «ИЛИ» («OR») | || | Слева направо |
Условный | ?: | Справа налево |
Присваивание | = += -= *= /= %= >>= | Справа налево |
Запятая | , | Слева направо |
В следующем уроке поговорим об управлении циклом в программировании на Java. В этом уроке будут описаны различные типы циклов, как циклы могут быть использованы в разработке программ, и для каких целей они используются.
Поделитесь:
Как запустить Java на Windows (XP, 7, 8 и 10)
Для освоения Java основ программирования и запуска платформы на Windows потребуется JAVA SE Development Kit (JDK) и IDE для разработки проектов. Следуйте пошаговой инструкции, приведенной ниже:
Установка Java
После скачивания запустите установочный файл и следуйте инструкциям, которые будут появляться на экране. Нажмите «Next». Выберите все функции, нажав «This feature will be installed on local hard drive» и скопируйте место установки (оно выделено жёлтым) в «Блокнот», после чего снова нажмите «Next».
- В процессе установки появится запрос об установке JRE. Нажмите «Next, а затем «Finish для завершения установки.
- Теперь необходимо отредактировать переменную PATH. Перейдите в Панель управления > Система и безопасность > Система. В левой панели выберите «Дополнительные параметры системы».
Нажмите «Переменные среды». В разделе «Системные переменные» найдите переменную PATH и в следующем окне нажмите «Изменить».
Выберите весь текст в поле «Значение переменной» и скопируйте его в отдельный текстовый файл. Так будет легче его отредактировать и проверить на наличие ошибок. Посмотрите, есть ли в скопированном тексте строка: C:ProgramDataOracleJavajavapath;. Если да, то можно переходить к следующему шагу
Если нет, то вставьте скопированное ранее место установки в начало переменной и добавьте в конце строки bin вот так: C:Program Files (x86)Javajdk1.8.0_112bin; Обратите внимание, что ваша версия JDK (jdk1.8.0_112) может отличаться. Скопируйте значение переменной и вставьте его в окошко PATH
- Нажмите «ОК», чтобы сохранить внесенные изменения.
- Чтобы проверить, правильно ли установлена платформа для введения в программирование Java, откройте командную строку, набрав cmd в строке поиска Windows или через команду «Выполнить…» (Windows — R). Введите команду java -version. Если отображается текущая версия Java, значит, установка прошла успешно. Если нет, сверьтесь со страничкой помощи Oracle.
Установка IntelliJ IDEA
- Перейдите на страницу загрузки IntelliJ IDEA.
- Скачайте бесплатную версию Community Edition, нажав «Загрузить».
После загрузки запустите файл установки и следуйте инструкциям, которые будут появляться на экране. Затем создайте ярлык на рабочем столе для 64-битной версии и добавьте ассоциации с расширением .java. Нажмите «Next» и продолжайте установку.
- После установки откройте IntelliJ IDEA, нажав на значок на рабочем столе.
- Выберите «Don’t import settings («Не импортировать настройки») и нажмите «OK». После этого принимаем политику приватности Jetbrains, нажав «Accept».
- Теперь можно настроить интерфейс под себя. Также можно пропустить этот шаг и оставить всё по умолчанию, нажав кнопку «Skip All and Set Defaults».
- Программа покажет страницу приветствия. Нажмите «Create New Project» («Создать новый проект»).
- В следующем окне выберите «Java» в левой панели и нажмите «New в верхней части окна программы для выбора JDK. Здесь надо выбрать местоположение, куда установили JDK во время установки Java, после чего нажать «Next».
- IntelliJ IDEA найдёт JDK и распознает его. Никакие другие опции отмечать не нужно, просто нажмите «Next.
- На следующем экране введите имя проекта: HelloWorld и нажмите «Finish». Если программа скажет, что директории не существует, нажмите «ОК». Если вы не видите левой панели, перейдите в меню Views > Tool Windows > Project.
- Чтобы задать имя класса, выберите в левой панели папку src. Кликните по ней правой кнопкой мыши, зайдите в New > Java и задайте имя класса. В имени класса не должно быть пробелов.
- Напишите код и сохраните проект Java урока программирования.
- Для запуска программы, зайдите в меню Run > Run… Нажмите на HelloWorld — программа скомпилирует файл и запустит его.
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) в настоящее время активно вытесняет «структурные» и «процедурные» подходы, разработанные в 1970-х годах, фактически становясь доминирующей методикой. Java — это объектно-ориентированный язык, и для его продуктивного использования необходимо владеть ООП. Для ООП требуется иной образ мышления по сравнению с подходом, типичным для процедурных языков.
Изучение ООП начинается с рассмотрения класса — элемента, составляющего основу Java. Поля класса содержат данные, методы — код. Методы могут иметь параметры и возвращать значения. Конструкторы — особые методы. Объекты создаются на основании классов. Инкапсуляция — первый принцип ООП — подразумевает связывание и сокрытие. Изучаются модификаторы полей и методов: public, protected, private. Вводится понятие перегрузки методов. Затем рассматриваются понятия и механизмы наследования и полиморфизма. Разъясняется разница между статическими полями и методами и нестатическими. Обсуждаются абстрактные классы и методы, вводится понятие интерфейса.
Материал по этому разделу можно найти в книгах:
- «Java. Библиотека профессионала. Том 1. Основы» — главы 4, 5, 6;
- «Java 8. Полное руководство» — главы 6, 7, 8.
Преимущества Java-программирования
Независимость от архитектуры и платформы. Вы пишете код, не задумываясь об особенностях операционной системы или процессора. Всё это берёт на себя виртуальная машина, а вы только пишете логику работы.
Объектно-ориентированное программирование. ООП — это современный стандарт программирования в коммерческих и промышленных системах. В случае с Java это получится само собой: дело в том, что, как и Ruby, Java — чистый ООП-язык. В нём даже функции превратились в методы и могут существовать только внутри класса.
Работа с памятью. Программисту не нужно следить за тем, сколько памяти расходует его программа и как её освободить, когда какая-то переменная больше не нужна. Для этого в Java встроено автоматическое управление памятью: Java не допускает её утечек и разрастания объёма, а после завершения программы освобождает все ресурсы.
Безопасность. Виртуальная машина сама следит за тем, чтобы программа не получила доступ к тому, что выходит за её полномочия. Например, Java-программа не сможет прочитать содержимое остальной оперативной памяти или связаться с другим компьютером, если это не предусмотрено изначальными правами доступа.
Большое сообщество и поддержка. Java — третий по популярности язык программирования в мире. В Сети есть тысячи сайтов, которые рассказывают об этом языке, помогают разобраться в коде или содержат готовые решения.
Стандарт в корпоративном программировании. Большим компаниям в программах нужна надёжность, стабильность работы и возможность поддерживать их долгое время. Сочетание ООП, управления памятью и независимости от архитектуры делает Java идеальным решением для этого.
История создания языка программирования JAVA
История JAVA началась еще в 1991 году, когда Патрик Ноутон, Билл Джой и Джеймс Гослинг начали работу над собственным проектом. Основной целью проекта было создание аппаратно-программной платформы нового поколения, использование которой не требовало бы специальных знаний. Речь шла о создании «компьютера для людей», максимально надежного и при этом простого в управлении. Проект получил название «Green». В ходе работ возникла потребность в новом языке программирования, который был бы максимально универсальным и мог бы применяться на любых платформах. Так появился «Oak».
Язык программирования JAVA в том виде, в котором мы его знаем, появился далеко не сразу. Несколько лет подряд разработчики пытались внедрить новую технологию в различные сферы, начиная от интерактивного телефиденья и заканчивая игровыми приставками, ноо везде потерпели неудачу. Первым продвижением с мертвой точки стало создание в 1994 году браузера «WebRunner», который был способен отображать интерактивные программы-апплеты, встроенные непосредственно в страницы. Новый браузер обладал всем необходимым набором для того, чтобы стать популярным:
- Универсальность, отсутствие привязки к конкретной платформе
- Не требовал предварительной установки приложений
- Быстро загружался за счет компактного кода
- Имел встроенную систему безопасности
Новый браузер начинал становиться популярным, и в итоге в 1995 году «Oak» получил новое имя. Так родился язык программирования JAVA, таким, каким мы его знаем. Браузер переименовался в «HotJava», однако его существование уже подходило к концу. А вот JAVA начал победное шествие по миру: сначала, 23 мая 1995 года, он был официально представлен и интегрирован в поуплярнейшем браузере того времени, Netscape Navigator 2.0, в 1996 году его начал поддерживать известный сейчас каждому Microsoft Internet Explorer, тогда еще в версии 3.0.
В 1997 году JAVA перетерпел ряд существенных обновлений , разделился на несколько отдельных платформ и начал приобретать все более и более широкую популярность, которая не угасла и по сей день.
Ограничения Jivosite
Бесплатная версия программы не имеет ограничений по сроку использования. Но функции в таком случае лимитированы. Переписка, например, хранится всего 2 месяца, а не бесконечно, как в премиум-аккаунтах, а чаты не распределяются по разделам автоматически. Более того, вы не сможете получать информацию о посетителях – регион, IP и источник перехода на сайт.
Стоимость и подробная информация о функциях, доступных в разных версиях программы, находятся во вкладке «Тарифы» на главной странице Jivosite:
Профессиональную версию можно получить бесплатно на пробный период – две недели. Для этого нужно ввести свой почтовый адрес внизу вкладки «Тарифы» или активировать функцию в личном кабинете после регистрации.
Использование Google Tag Manager (GTM)
Если для управления Google Analytics вы используете Google Tag Manager и события Jivo не передаются, проверьте следующие параметры в настройках контейнера с Google Analytics и сделайте необходимые изменения.
1.Зайдите в настройки контейнера с Universal Analytics (называться он у вас может иначе).
2.Раскройте «дополнительные настройки» → «расширенная конфигурация» и поставьте галочку в поле «Имя трекера», при этом в поле рядом ничего вводить не нужно.
Также рекомендуем включить улучшенную атрибуцию ссылок, ее желательно использовать для событий начала чата и установки соединения.
В новой версии Tag Manager эти настройки находятся вот здесь — скриншот.
Интерфейс Jivosite
Сразу после регистрации вы попадаете на главную страницу личного кабинета – вкладку с диалогами. Сейчас они пустые, поскольку наш Jivosite не интегрирован в какой-либо сайт как виджет. Слева находится меню, при наведении курсора названия иконок подсвечиваются:
Во вкладке CRM можно увидеть сводные данные по всем клиентам:
Сервис предполагает настройку задач, поэтому результаты поиска можно сортировать по критерию выполненности задачи. Сортировка по этому критерию находится в верхней вкладке «Все задачи».
Вкладка «Все статусы» будет полезна для сортировки клиентов. Jivosite отмечает, кто обратился к вам повторно, а кто – в первый раз, с кем нужно обязательно связаться позже. Статусы также отличаются визуально, поэтому перепутать их сложно.
Группы – ещё один важный элемент интерфейса. По умолчанию здесь созданы два чата – «Работа» и «Кофе-брейк». Их цели ясны из названий. Сюда добавляются приглашенные вами пользователи. Таким образом, рабочие переписки можно вести прямо в сервисе, при необходимости интегрируя их в Slack или любое другое приложение, где вы привыкли фиксировать рабочие моменты.
Во вкладке «Телефон» настраивается телефонный номер, по которому с вами смогут связаться клиенты. Стоимость такой услуги не входит в стандартный пакет Jivosite.
В разделе «Статистика» удобно отслеживать изменения в использовании виджета по конкретным временным периодам. Для оценки доступны:
- активность диалогов;
- активные приглашения;
- время работы онлайн-клиента;
- обратные звонки и многое другое.
В этой же вкладке система дает советы по улучшению работы с клиентами, ориентируясь на ваши показатели. Например, если количество пропущенных диалогов превышает 5%, это повод что-то изменить – поменять рабочее время или добавить новых операторов, чтобы клиенты не пропадали.
Метрика анализирует не просто общее количество диалогов, но и обращения из социальных сетей. Кроме того, данные можно сравнивать как со вчерашним днем, так и с днем на прошлой неделе.
А что с работой?
Прежде чем учить какой-то язык программирования, вы наверняка хотите знать: «А что же потом?»
Поэтому мы собрали для вас небольшую статистику по вакансиям.
На Яндекс.Работе в Москве от 900 до 1000 вакансий для Java-разработчиков, а на HeadHunter — около 2000 (все данные приведены за декабрь 2019 года).
Вакансии, в которых указана зарплата, начинаются от 70 тысяч рублей. Большинство предложений попадает в диапазон от 100 до 200 тысяч, а продвинутым разработчикам предлагают до 300 тысяч рублей.
Как вы видите, Java-разработчики востребованы, и даже по московским меркам у них хорошая зарплата (по данным Банка заработных плат HeadHunter, средняя зарплата по Москве в третьем квартале 2019 года составила 85 707 рублей).
Проверка условий
Любой язык программирования высокого уровня позволяет изменять порядок выполнения программы в зависимости от заданного условия. В 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.
Как и когда чат Jivo загружается?
Актуальный код вставки Jivo выглядит как скрипт с атрибутом async:
Это означает, что чат загружается асинхронно, то есть не мешает загрузке вашего сайта и отображению контента на нем. Говоря совсем просто, последовательность такова: сперва загружаются все ресурсы вашего сайта, и только потом, когда страницей можно полноценно пользоваться, начинается загрузка чата Jivo.
Основной скрипт чата (bundle_*.js) начинает инициализироваться только после того, как событие load(window.onload) сработает на странице сайта. Проще говоря, событие происходит, только когда браузер полностью загрузил HTML, картинки, стили и другие ресурсы.
На скриншоте — пример правильной загрузки скриптов чата после загрузки сайта. Сначала прогружаются все ресурсы вашего сайта, и только после того, как сайт загружен и готов к работе, начинается исполнение скрипта Jivo:
Сравнение
Для того чтобы все было как можно проще, я собираюсь пройтись по каждому из отдельных пунктов и посмотреть, в чем C++ или Java так хорош. Давайте начнем с производительности.
У какого языка лучше производительность?
Хотя оба языка программирования довольно различны по своему дизайну. Язык программирования Java и язык C++ считаются первоклассными с точки зрения производительности. Тем не менее, язык C++ немного быстрее — это потому, что код Java должен интерпретироваться во время выполнения, что делает процессы, выполняемые языком, более медленными. Однако когда дело доходит силы языка (возможностей), оба эти языка показывают себя хорошо, хотя и по-разному.
Какой из языков популярнее?
Не секрет, что и Java, и C++ очень известны и популярны. В то время , когда C++ доминировал на рынке, язык программирования Java начал набирать все большую популярность примерно в 2012 году. Сегодня язык программирования Java широко используется как более популярная альтернатива, хоть он не предназначен для такого широкого использования, как язык C++. У обоих языков есть свои поклонники, и есть множество информации о них, доступной каждому, кто ищет, какой из них изучить.
Преимущества
- Простой в использовании
- Предлагает качественный контент
- Очень открытый в своих ценах
Особенности
- Бесплатные сертификаты об окончании
- Фокус на навыки науки о данных
- Гибкое расписание занятий
Посмотреть На Все Купоны Лучших Платформ Для Онлайн Обучения Преимущества
- Огромное разнообразие курсов
- Простая навигация
- Нет технических проблем
Особенности
- Огромное разнообразие курсов
- Политика 30-дневного возврата средств
- Бесплатные сертификаты об окончании
Посмотреть На Все Купоны Лучших Платформ Для Онлайн Обучения
Специалисты какого языка зарабатывают больше?
Согласно Glassdoor.com, разработчик Java может рассчитывать на получение около 88 100 долларов США в год или почти 7350 долларов США в месяц. В это же время, разработчик C++, по оценкам, зарабатывает более 95 000 долларов США в год, что составляет около 8000 долларов США в год!
Очевидно, что программисты на С++ зарабатывают больше денег…Почему это так? Во многом это связано со сложностью языка — C++ считается одним из самых сложных языков программирования в мире, который действительно сложно освоить.
Заключение
Итак, какой из двух языков программирования стоит изучать? Если вы хотите выучить язык, который является абстрактным и может использоваться в создании разных проектов, но также довольно сложен — C++ — хороший выбор. Однако, если вы хотите быть более конкретным и попробовать что-то простое — язык Java вам прекрасно подойдет.
Каким бы ни был ваш выбор, я надеюсь, что из этой статьи вы узнали больше о производительности C++ или Java, зарплатах специалистов, плюсах и минусах каждого языка. Удачи в изучении!
Изолированные типы (Sealed Classes). JEP 397
Изолированные классы и интерфейсы могут быть расширены и реализованы только теми классами и интерфейсами, которым это разрешено. Это позволяет передать компилятору знания о том, что существует ограниченная иерархия каких-либо классов. Для объявления изолированных типов используется модификатор sealed. Затем, после ключевых слов extends и implements идет ключевое слово permits, после которого перечисляются классы, которым разрешено расширять или реализовывать данный класс/интерфейс. Взглянем на пример:
Классы, перечисленные после ключевого слова permits должны находиться рядом с родительским классом: в том же модуле или пакете. Если они малы и их не так много, их можно разместить в одном файле с родительским классом, в этом случае ключевое слово permits можно опустить. Каждый дочерний класс должен быть прямым наследником изолированного класса. Каждый дочерний класс должен использовать один из трех модификаторов:
-
Модификатор final, если иерархия типов не должна расширяться далее.
-
Модификатор sealed, если иерархия типов может расширяться далее, но в ограниченном ключе.
-
Модификатор non-sealed, если эта часть иерархии может расширяться произвольным образом.
Поскольку компилятор теперь обладает знанием того, что иерархия классов ограничена, это должно позволять нам перебирать типы объекта изолированного класса следующим образом:
Однако, мне так и не удалось заставить такой код работать (возможно, потому что это все еще превью реализация):
UPD: как выяснилось в , ожидание анализа на exhaustiveness в цепочках if-else появилось в результате ошибочного понимания объяснения в JEP.
Описание программы
Первая версия программы Java была создана северно-американским разработчиком Sun Microsystems в конце предыдущего столетия. Изначально она именовалась как “Oak”, то есть “дуб” и предназначалась для программирования электронного оборудования в быту.
Программисты и продвинутые пользователи ПК использовали Java на устройствах, чтобы писать коды для так называемых «апплетов». Так в профессиональной среде именуют приложения, работа которых возможна через браузер. Например:
- Календарь;
- Виджет часов;
- Гостевая книга
- Интернет-сообщество, которое позволяет общаться в режиме реального времени.
Но Java необходима на компьютере не только для написания программ. Она нужна также и для их работы. Сейчас многие приложения, игры и интернет сайты используют ресурсы Java. Это значит, что для их работы требуется наличие актуальной версии данной программы.
Например, популярный Minecraft не начнет работать, если не установлена Java. Не запустится и такая система программирования как IDE. Она включает текстовый редактор, отладчик и другие функции, которые полезны для создания новых приложений на компьютер.
Паттерны для instanceof (Pattern Matching for instanceof). JEP 394
Практически в каждой программе встречается код вида:
Проблема этого кода в том, что он излишне многословен. Понятно, что после проверки типа, мы захотим привести объект к нему. Почему бы не сделать это автоматически? Для упрощения этой процедуры и были введены паттерны в оператор instanceof:
Область видимости переменной s может быть как внутри блока if (как в примере выше), так и за его пределами, например:
Переменную паттерна можно использовать и в выражении оператора if:
Однако такой пример приведет к ошибке компиляции:
Переменные из паттерна могут затенять поля класса, следует быть внимательным при именовании и использовании переменных:
Минусы Java
Выделить недостатки языка так же четко, как и преимущества, гораздо сложнее. Минусы довольно расплывчатые. Первое, что приходит на ум – порог вхождения. Да, я упомянул ранее, что Java похож на JavaScript, но начать изучать второй гораздо проще. Java, несмотря на огромное сообщество поклонников и безумную популярность, все еще дается новичкам сложнее.
Java создавался для решения относительно комплексных задач. Поэтому использовать его для написания небольших скриптов не рекомендуется. Это как вспахивать грядку на небольшом дачном участке с помощью промышленного комбайна. Можно, но зачем?
А еще из-за того, что весь код запускается в виртуальных машинах, Java сложнее оптимизировать. Поэтому производительность Java-приложений временами может ощутимо снижаться. В частности, это было заметно на ранних этапах развития Android. Тогда он заработал себе репутацию вечно зависающего и до жути медлительного продукта. Всему виной был Java.
Игра «Угадай число»
Мы узнали достаточно, чтобы написать игру «Угадай число». В ней компьютер «загадывает» целое число от 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 = ; 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 = ; 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 на примере создания других игр. Следите за блогом!
Другие статьи из серии «Быстрый старт с Java»:
- «Быстрый старт с Java: крестики-нолики»
- «Быстрый старт с Java: «лопни шарик»
Если язык Java вас заинтересовал — приглашаем на факультет Java-разработки. Если ещё не совсем уверены — посмотрите истории успеха наших Java-выпускников:
- Приключения бравого джависта в поисках пропитания. Как начать карьеру программиста Java, если в твоём городе пять вакансий и везде требуют опыт от года
- «Иногда за сутки я спал один час в метро перед работой». Из белорусской типографии — в московские тимлиды.
- Первая работа в IT с переездом в Москву: как это бывает. Опыт собеседований, тестовых заданий, учебных проектов и трудоустройства в международную компанию.
- Взгляд изнутри: как работается в «Альфа-Банке». Рассказывает Михаил Степнов, выпускник GeekUniversity и программист банка.