О языке Java

Модуль 1. Java Syntax
1 уровень , 0 лекция
Открыта

Java – строго типизированный объектно-ориентированный язык программирования. Его создали в 1995 году, и с того времени он получил много улучшений. Стабильно занимает лидирующие места в рейтингах языков программирования и в рейтингах зарплат разработчиков.

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

1. Кроссплатформенность – написанный код транслируется в байт-код, который выполняет JVM. Существуют реализации JVM под самые разные платформы, и это означает, что написанный один раз код будет работать и на Windows, и на Linux, и на macOS, и даже на разной экзотике, такой как Arduino, умном холодильнике, пылесосе… То есть, код будет работать на разных платформах и операционных системах, и при этом его не нужно адаптировать под каждую из них.

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

3. Скорость работы (just-in-time компилятор) – в дополнение к статической компиляции, которая происходит «заранее», работает динамическая компиляция. Это актуально для серверного кода, который может работать месяцами и даже годами. Код, который выполняется часто, компилируется разными вариантами и замеряется его время исполнения. Таким образом, чем дольше работает приложение, тем быстрее она работает. И это при активно работающем сервере. Круто, правда?

4. Обратная совместимость – код, написанный на более старых версиях Java, будет работать и на более новых версиях. Это удобно: после обновления не нужно переписывать половину проекта «ради обновления», и при этом можно получить последние патчи безопасности.

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

6. Статическая типизация (fail-fast) – проверка соответствия типов переменных на этапе компиляции. Компиляцию запускают все разработчики, поэтому ошибки компиляции отлавливаются почти моментально. Чем более поздним будет этап, на котором обнаружат ошибку – тем дороже ее исправление.

7. Сode as documentation – Java читается как предложения на английском языке. За счет этого в большинстве случаев не нужно тратить усилия на ведение документации, так как любой разработчик, посмотрев в код, понимает, что делает этот метод, или за какое поведение отвечает интерфейс. Кроме этого, сильно развита практика «правильного» именования всех сущностей в коде. Часто по названию метода понятно, что он делает.

Например, метод getContext() возвращает контекст, а поле age отвечает за хранение возраста. В Java длина названия не влияет на количество ресурсов системы, которые нужны для работы с сущностями. Этим грешит С – когда разработчик приходит на новый проект, вместо того, чтоб разбираться в логике кода, он занимается его расшифровкой.

8. Множество open source библиотек и фреймворков – 99% задач, с которыми в ежедневной практике сталкивается разработчик, уже кто-то когда-то решал. Если такие решения удачные, со временем они вырастают в библиотеки и даже фреймворки. Что лучше – погуглить 5 минут или изобретать свой велосипед на квадратных колесах?

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

Уже названо много положительных «качеств» Java, но хочется добавить еще несколько аспектов:

  • JVM (Java Virtual Machine) сама управляет памятью процесса: за счет этого она безопасна, и является языком #1 для финансовых инструментов.

  • На Java очень удобно писать back-end сервера (серверную логику).

  • До недавнего времени Java был основным языком для приложений на Android.

    Сейчас вместо него Kotlin, который является JVM языком, и от Java отличается наличием пары фич и «синтаксическим сахаром». Перейти с Java на Kotlin и наоборот займет несколько дней. А учитывая, что цикл обновления Java сейчас составляет полгода, не исключено, что в следующем релизе в ней будет все хайповое, ради чего писался Kotlin.

  • Много известных компаний используют Java: Google, Facebook, Twitter, Amazon, LinkedIn, eBay, JavaRush и много-много других.

Комментарии (32)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
5 ноября 2025
start 05.11.2025
Ad Уровень 24
29 июля 2025
Start : 29.07.2025....
valera shnitz Уровень 19
15 июля 2025
Start 15.07.2025
Ruslan Уровень 28
28 апреля 2025
Start 28.04.2025 -> xx.xx.xxxx
Лаура Уровень 13
23 апреля 2025
Видео не грузит, с чем это может быть связано?
Виталий Уровень 8
1 февраля 2025
🔴 3 🔴 2 🔴 1 🔵 Поехали!!!
Виктор Ш Уровень 72
12 декабря 2024
Привет всем! У меня вопрос: когда я использую типы byte, int or long, java в таком случае выдалеяет для них память. Но какую? Динамическую или физическую память? Ведь автор видео говорит о том, что память играет важную роль в работе кода и всей программы джавы. Если я выделил при использовании int 32 байта памяти, а ввел цифру 2, не жирно ли это будет для такой цифры? Спс! )😀
Anton Уровень 2
16 декабря 2024
Привет. В любом случае, нужно следить за значениями. Джава строго-типизированный язык. Когда мы пишем тип int, то мы ясно и точно говорим выделить нам 4 байта(32 бита). Для цифры 2 - это мега-жирно, для этого и были придуманы типы поменьше, например, short.
Виктор Ш Уровень 72
19 декабря 2024
Я спросил преподавателя и он ответил то же самое. Но все же жирно выделять для цифры 2 столько байтов. Но система есть система
Anton Уровень 2
19 декабря 2024
Есть еще тип byte.
Ardan Уровень 57
24 сентября 2024
Видео интересное
Артур Уровень 7
5 апреля 2024
Привет, я новичок! Слушаю лекцию про автоматическое выделение памяти: "автоматически, платформа решает проблему по выделение нужного объема памяти для того, или иного кода"(поправьте если ошибся). Правильно ли я понял, если я начну писать код длиною в "n" то платформа не даст этого сделать? Вопрос про скорость работы (JIT) чем больше используешь тем быстрее работает, проще говоря происходит адаптация? Вопрос по статической типизации, если я что-то назвал уткой, то оно и будет уткой, как ты не крути? В целом лекция понравилась!
Дмитрий Уровень 106 Expert
1 июня 2024
Позволю себе ответить на данные вопросы. Возможно, что ещё каким-то новичкам придётся кстати! Начну с "утки". Это не совсем так, в контексте того, что понятие утиной типизации действительно существует и оно больше характерно для языков с динамической типизацией данных. Суть в том, что тип объекта определяется не на основе явной реализации того или иного интерфейса через явную установку контракта (посредством ключевого слова implements), а на основе анализа, какие методы были реализованы у объекта, а какие — нет. Такое можно наблюдать, к примеру, в JavaScript (на третьем модуле будем с ним немного работать). Смысл же статической типизации (вот здесь уже дело напрямую касается нашего любимого языка) сводится к тому, что связывание типа с переменной происходит буквально на этапе самого объявления и тип переменной невозможно будет изменить позднее. Грубо говоря, это всё происходит на этапе компиляции. Что касается выделения нужного объёма памяти, то здесь подразумевается, что этим процессом управляет сама JVM. Разумеется, что мы тоже можем принять своё участие в этом процессе и тонко настроить размер той или иной области памяти (для этого существуют опции виртуальной машины и специальные флаги, которые мы можем для этого прописать). Тем не менее, это не то, о чём нужно думать на первых уроках... С утечками памяти можно столнуться и система обязательно даст об этом знать.
Дмитрий Уровень 106 Expert
1 июня 2024
Что касается JIT, то здесь стоит немного понимать процессы, которые происходят "под капотом". Скорость работы (если максимально упрощённо) достигается за счёт того, что JVM в процессе работы анализирует и находит так называемые "горячие участки кода", которые можно напрямую транслировать в машинный код целевой архитектуры (этот код сможет напрямую выполнить вычислительное ядро нашего CPU) и хранить их в специльном месте, к которому мы всегда сможем в случае необходимости обратиться. Очевидно, что такая дополнительная трасляция тоже занимает время и ресурсы, но при многократном обращении даёт свой эффект. Ты прав в том отношении, что это можно сравнить со своего рода "адаптацией". Очень хорошо, что возникают такие вопросы, но если вдруг чего-то непонятно, то не стоит отчаиваться. В течение курса все мы погружаемся в такие дебри, что всем нам даже и не снилось...
Андрей Пазюк Уровень 122 Expert
25 ноября 2023
Привет новичок! Ты наверное купил курс с надеждой на то, что тебя за ручку проведут через весь этот путь, показывая море информации, которая сама запоминается и ее даже учить не нужно. Но спешу разрушить твой маленький "маня-мирок" порцией правды. К концу курса больше половины студентов отвалились. А само обучение похоже на адскую прожарку в Освенциме. Тут море информации, которую нужно УЧИТЬ! Если ты не готов учиться, то программистом тебе не быть никогда. Но если ты прям точно готов полтора года пахать над собой как раб в угольной шахте, с мыслями о суициде и мечтой отдохнуть, то единственный твой способ закончить эту прожарку - дисциплина! Когда я закончил курс, то был по истине счастлив, что сумел продержаться до самого конца. Как говорит одна поговорка: "Сколько бы ты сейчас имел, если бы начал свой путь год назад". Так вот, я уже закончил этот путь. Да, я существую и искренне желаю тебе тоже его закончить. Удачи тебе, а еще помни - ни при каких обстоятельствах не здавайся, иначе ничего через год иметь не будешь!