Программирование  •  01 марта 2022  •  5 мин чтения

Всё, что нужно знать новичку о Java

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

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

Материал по теме:
В чём разница между Java и JavaScript

Терминология: разбираемся со свойствами Java

У Java есть два свойства, которые определяют, какие задачи на нём можно решать. У этих свойств сложные названия, но с ними стоит разобраться прежде, чем идти дальше.

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

Java берёт лучшее из компилируемых и интерпретируемых языков. Чтобы разобраться в этом свойстве, нужно шагнуть ещё немного назад. Язык программирования — это язык, на котором программист и процессор договариваются, как выполнять команды. Так вот процессор не полиглот и не обязан знать все языки, на которых им хотят покомандовать. Поэтому язык программирования нужно переводить на язык процессора. Делается это двумя способами — интерпретированием и компилированием.

Интерпретирование

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

Компилирование

В случае с компилируемыми языками перевод языка программирования на язык процессора происходит заранее, до запуска программы. И когда программа запускается, процессору остаётся только выполнять код, потому что он уже отлично его понимает.

Схематично это выглядит так

И вот Java — компилируемый язык, но компилируется он не совсем обычно: сначала в байткод — особый код, который понимает Java-машина. А затем она уже интерпретирует байткод в машинный код.

Главное преимущество Java — кросс-платформенность

Прежде чем создать код для любой программы, разработчик выбирает, для какой платформы или железа он пишет. Обычно программу для Windows нельзя запустить на macOS, нужно многое переписывать. А вот программу на Java — можно.

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

В Java программист пишет код не под macOS, Windows или Linux, а под Java-машину — а она уже сама адаптирует код к железу и операционной системе

Код на языке Java пишется один раз и запускается на любом устройстве, для которого написана Java-машина. Это позволяет тратить меньше ресурсов на разработку программ.

Java «старый» язык, но у него есть все шансы остаться навсегда

Язык программирования Java появился в 1995 году и быстро стал востребованным благодаря виртуальной машине. Эта популярность привела к тому, что сейчас на этом языке написано много кода для IT-компаний, страховых, банков и так далее.

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

Платёжная система — лишь один пример использования Java. Таких систем много, и все их нужно поддерживать и обслуживать. Учитывая, сколько кода в мире написано на Java, мы считаем, что у этого языка есть шансы остаться навсегда наравне с языком C.

На Java пишут всё: от калькуляторов до софта для промышленных установок

На вопрос «А что пишут на Java?» можно ответить лаконично: на Java пишут почти всё, сфера применения языка очень широка. Вот лишь некоторые примеры программ на Java:
  • банковские программы;
  • десктопные приложения;
  • промышленные программы;
  • приложения для Android;
  • веб-приложения, веб-сервера, сервера приложений;
  • корпоративный софт.
А вот игры на языке Java программируют редко, потому что в игре нужна идеальная оптимизация под процессор и видеокарту. Если оптимизация будет плохой, то большинство средних компьютеров не потянут игру. Из-за Java-машины сделать идеальную оптимизацию нельзя, а вот на языке C++ — можно.

Какие сайты и программы работают на Java

Большие компании не используют одну технологию, но в том или ином виде Java присутствует в Google, Facebook*, Telegram, Яндексе и многих других. Java скрыт под капотом, и обычный пользователь его не видит. То, что мы видим в интерфейсе, — это не Java, а JavaScript. Это язык, который работает только в браузере, и с Java у них из общего только название.

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

● Клиент заходит на сайт банка и видит логотип, текст и форму для ввода логина и пароля — это был HTML, язык разметки браузера.
● Затем он вводит логин и по ошибке набирает его русскими буквами. Браузер сравнивает логин с условиями, видит, что в этом поле должны быть только английские буквы, и говорит «введите на латинице» — это был JavaScript.
● И вот клиент верно ввел доступы и нажал «Войти». Браузер пошёл спрашивать у сервера, верен ли логин и пароль, а затем пропустил его в личный кабинет. Попутно сервер сказал, что нужно ввести код, который прислали на телефон, пройти по ссылке из письма, ввести секретное слово и подтвердить личность клятвой на крови — всё это был Java.

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

Что гибче, быстрее и легче: сравниваем Java, Python и C

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

Тип языка. Мы уже разобрались, в чём разница между интерпретируемыми и компилируемыми языками, теперь можем сравнить.

Python
Java
C
Интерпретируемый
Компилируемые
Скорость. Java, как правило, быстрее Python. При этом маленький скрипт на Python обработается быстрее, потому что пока запускается Java-машина, интерпретатор Python уже закончит исполнение кода.

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

Python
Java
C
Медленный
Быстрый
Гибкость. Преимущество Java состоит в том, что программа пишется один раз и запускается на всех платформах, на которых есть Java-машина. С Python похожая история, а вот программу на языке C нужно переписывать под каждое железо.
Java, Python
C
Гибкие
Не гибкий
Порог входа. Язык C содержит функции, которые считаются сложными для входа в программирование: ручное выделение памяти, прямую работу с указателями и многое другое. Python считается самым лёгким языком для входа из-за простоты синтаксиса. Java для начинающих по сложности где-то посередине.
Python
Java
C
Простой
Сложный
Ещё Java-код сильно длиннее Python. Там, где Python нужна одна строчка, Java хочет пять.
Python
Java
print («Hello, World!»)

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

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

Чтобы научиться программировать на Java, нужно программировать на Java

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

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

Вот пример простой задачи на построение алгоритма. Вам нужно провести танк на базу мимо болот. Танк едет только вперёд, доступные команды: повернуть вправо, повернуть влево и вперёд = Х. Где Х — количество клеток. Постройте алгоритм, по которому танк доберётся до базы.

Правильный список команд: вперёд = 1; влево; вперёд = 3; вправо; вперёд = 3; вправо; вперёд = 3; вправо; вперёд = 1

В любом случае, изучать Java непросто. Но дело тут не в языке программирования, а в том, что учиться новому всегда сложнее, чем решать привычные задачи. Но и специальные «программистские» мозги тоже не нужны: они неизбежно сами станут такими в процессе обучения.

* сервис предоставляется организацией, признанной экстремистской на территории РФ

Статью подготовили:

Анастасия Рагозина
Яндекс Практикум
Продакт курса «Java‑разработчик»
Климент Лысенко,
Яндекс Практикум
Редактор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Fri Sep 27 2024 11:29:42 GMT+0300 (Moscow Standard Time)