Особенности языка Java
Основные парадигмы Java, благодаря которым он остаётся одним из самых востребованных языков вот уже 22 года.
13 сентября 2017 2 минуты 23164
Автор статьи
Илья Бубнов

Автор статьи
Илья Бубнов
https://gbcdn.mrgcdn.ru/uploads/post/1211/og_cover_image/af051162c2f3d9b699c1165e046d9931

Язык Java был создан в 1995 году, и за 22 года своего существования покорил сердца миллионов программистов. Как ему это удалось? Почему за это время не появилось ни одной достойной замены? Чтобы разобраться в этом, поговорим об особенностях языка Java.
Компания Sun Microsystems при выпуске языка заложила 5 парадигм потенциального успеха:
- простота, объектная ориентированность и понятность;
- надёжность и безопасность;
- переносимость и независимость от платформы;
- высокая производительность;
- интрепретируемость, поточность и динамичность.
Рассмотрим каждую из них подробнее.
Простота
Синтаксис языка был унаследован от C++. Сегодня на фоне Python, Groove или Go его трудно назвать простым, однако тогда эволюционный вид позволил привлечь внимание Си-разработчиков.
Стандартная программа “Hello World” выглядит следующим образом:
public static void main(String[] args)
System.out.println(«Hello World»);
>
Такая форма конструкций не увеличивает скорость набора, однако читать, понимать и воспроизводить его просто.
Надёжность
Надёжность обеспечивается двумя принципами:
- ООП. Иерархия наследования увеличивает читаемость кода и снижает количество невынужденных ошибок.
- Строгая типизация. Разработчику приходится выполнять больший объём работы, но данные интерпретируется однозначно.
Кроме того, первоначально в Java предполагался запрет прямого доступа к памяти, что также повышало бы надёжность. Но разработчики оставили несколько лазеек, например бэкдор sun.misc.Unsafe, которые этот запрет обходят.
Безопасность
Кроме сохранения общей формы конструкций, Java по сравнению с C++ формально лишился двух потенциальных опасностей: указателей и множественного наследования. На деле обе функции сохранены, но представлены в ином виде: вместо указателей используются значения, а в множественном наследовании участвуют не классы, а интерфейсы. Тем не менее, такая особенность java программирования почти исключает возможный урон от невнимательности разработчика.
Удобство
Дословно концепция Java звучит как: «Write once, run anywhere». То есть исполняемость кода не зависит от используемой операционной системы или установленного ПО. Достигается это благодаря транслированию в байт-код виртуальной машиной JVM.
Как нельзя кстати пригодилась эта особенность java на android. Разнообразие производителей, моделей телефонов, характеристик — всё это могло бы негативно сказаться на работе приложений, если бы не существование такого универсального инструмента.
Производительность
Особенность ява, связанная с транслированием в байт-код, положительно сказывается и на производительности конечных продуктов. По скорости исполнения однотипные программы на java уступают в 1,5-2 раза программам на C/C++, при этом превосходят JavaScript, Ruby, Python.
Развитая экосистема
За 22 года жизни язык оброс десятками IDE и фреймворков, сотнями сообществ и форумов, тысячами библиотек и плагинов. Всё это благоприятно сказывается на пороге вхождения в профессию, востребованности и качеству производимых с помощью java продуктов.
Безусловно, каждый популярный язык программирования уникален, каждый имеет свои недостатки и преимущества. Особенности Java не имеют революционного характера, они незначительны, но вместе с тем фундаментальны. Именно то, что отличает хороший язык от лучшего.
Советуем пройти бесплатный двухдневный интенсив по основам Java и познакомиться с этим языком 🙂
Как выглядит язык java
Думаете об обучении программированию, но не знаете, с какого языка начать? Это один из самых частых вопросов, которые задают студенты: «Какой язык программирования лучше выбрать для изучения новичку и почему?»
Независимо от того, хотите ли вы начать кодирование в качестве хобби, новой карьеры или просто повысить свою текущую роль, первое, что вам нужно сделать, это решить, с какого языка программирования вы хотите начать. Правильного ответа, конечно же, нет. Выбор первого языка будет зависеть от того, над какими проектами вы хотите работать, на кого вы хотите работать или какой уровень сложности вам нужен. В этой статье мы расскажем вам, как понять, какой язык программирования учить, на каком языке лучше программировать, а также расскажем о самых популярных языках и сферах их применения.
Что такое языки программирования?
Языки программирования — это инструменты, которые мы используем для написания инструкций для компьютеров. Компьютеры мыслят бинарно, а языки программирования помогают нам переводить 1 и 0 в код, понятный людям.
Можно ли выбрать «неправильный» язык программирования?
Начинающие разработчики часто колеблются, прежде чем выбрать язык программирования, опасаясь, что они потратят время и энергию на изучение того, что никогда не будут использовать. Но правда в том, что на самом деле нет такого, как выбор «неправильного» языка. Независимо от того, какой язык вы выберете, вы все равно будете приобретать ценные навыки.
На первый взгляд языки программирования могут выглядеть по-разному, но у них много общего. Они имеют схожие шаблоны и структуры, и, изучая один язык, вы познакомитесь с ключевыми концепциями кодирования, которые помогут вам изучать другие языки в будущем. Кроме того, разработчики нередко переключаются между разными языками на протяжении всей своей карьеры, поскольку их просят решать проблемы разного рода. Так что не беспокойтесь слишком о том, изучаете ли вы «лучший» язык программирования. Вместо этого сосредоточьтесь на получении базовых знаний на любом языке, который вы выберете.
Базовые советы перед выбором языка программирования
Итак, вы должны учитывать следующие факторы:
- рынок труда для языка;
- долгосрочные перспективы языка;
- как легко выучить язык;
- какие проекты вы можете создавать во время обучения на этом языке.
Для начала вам нужно будет хорошо выучить один язык, а затем уже приступать ко второму, третьему и так далее.
Если вы будете постоянно перепрыгивать с языка на язык, вы далеко не подниметесь по карьерной лестнице.
Чтобы выйти за рамки основ, вам нужно хорошо выучить свой первый язык, тогда уже овладеть вторым языком будет намного проще.
Популярные языки программирования и какие задачи они выполняют
Еще один часто задаваемый вопрос: «Как сравнивать языки программирования?» Ответ очень прост и лаконичен: их не нужно сравнивать, потому что каждый из них хорош для определенной задачи, поэтому для начала вам нужно определиться, что вы хотите создать благодаря определенному языку программирования. Ниже мы расскажем о самых популярных из них.
HTML, CSS
Если вы находитесь в самом начале своего пути к кодированию, вам нужно изучить основные языки разметки, такие как HTML и CSS. Эти два элемента необходимы для Frontend-разработки и могут использоваться для структурирования и дизайна веб-страниц с интерактивными элементами.
HTML широко используется в веб-разработке. HTML — это код, который служит основой веб-страниц, позволяющий людям создавать и структурировать электронные документы для просмотра в Интернете.
Изучение HTML и CSS — отличная отправная точка для тех, кто хочет создавать веб-сайты с нуля. Ознакомившись с HTML/CSS, вы можете перейти к языкам и библиотекам, таким как JavaScript, Node.js или React , чтобы обеспечить вашему веб-сайту необходимую функциональность.
Python
Его всегда рекомендуют, если вы ищете простой и интересный язык для изучения программирования.
Простота использования этого языка обусловлена его простым, менее загроможденным синтаксисом и грамматикой со свободой методологии во время программировании. В отличие от большинства языков, в python вместо пунктуации используются английские слова. Это позволяет вам получить базовые знания о методах кодирования, не зацикливаясь на мелких деталях, которые часто важны в других языках. Это отличный шаг к изучению более сложных языков программирования и фреймворков!
Python также идеально подходит для веб-разработки, графических пользовательских интерфейсов и разработки программного обеспечения. Фактически, он использовался для создания Instagram, YouTube и Spotify , поэтому он явно пользуется спросом у работодателей в дополнение к более быстрой адаптации. Разработчики из разных отраслей полагаются на Python для автоматизации, обработки больших данных и интеллектуального анализа данных. Он идеально подходит для приложений общего назначения.
Используется для разработки прототипов. Python прост, его легко читать и работать, и, что самое главное, он очень универсален. Python идеально подходит для крупных проектов разработки, начинающих разработчиков и мультипрограммистов.
Несмотря на свои преимущества, Python часто считают медленным языком, который требует большего количества тестов и не так удобен для разработки мобильных приложений, как другие языки.
С
Хотя C один из самых сложных языков для изучения, он по-прежнему является отличным первым языком, потому что в нем реализованы почти все языки программирования. Это означает, что как только вы изучите C, вам будет легко выучить другие языки, такие как C++ и C# .
Поскольку C имеет статус более «машинного уровня», его изучение отлично поможет вам понять принцип работы компьютера. Разработчик программного обеспечения Джоэл Спольски, сравнивает это с пониманием основ анатомии до того, как стать врачом.
Таким образом, C — это исключительный выбор для того, чтобы стать мастером кодирования и талантливым разработчиком с самого начала, если вы готовы принять сложный вызов.
Преимущества изучения C#
C# часто считается одним из самых универсальных языков программирования, идеально подходящих для создания надежных приложений. Поскольку это объектно-ориентированные веб-сайты, созданные с использованием C#, они легко масштабируются и очень эффективны. Инженеры, хорошо разбирающиеся в C и C++, могут легко освоить C#, им не нужна специальная подготовка.
C# идеально подходит для создания динамических веб-сайтов и приложений.
С++
В недавнем опросе Stack Overflow среди тысяч разработчиков по всему миру 22,55% назвали C++ своим любимым языком программирования . Это мощный универсальный язык программирования, используемый для создания приложений с более высокой производительностью и гораздо более эффективной масштабируемостью. На самом деле базовая основа большинства программ для Windows была написана на C++.
C++ идеально подходит для управления ресурсоемкими приложениями, такими как веб-браузеры, операционные системы, настольные приложения, облачные вычисления и даже видеоигры. Он используется в различных отраслях, включая виртуальную реальность, робототехнику, разработку программного обеспечения и игр, а также научные вычисления. Ключевыми особенностями этого языка являются его кроссплатформенная аппаратная поддержка и адаптируемость к меняющейся внутренней среде.
С#
C# — это язык программирования Microsoft. Он адаптирован для платформ Windows, Linux, iOS и Android. C# также известен наличием огромной коллекции библиотек и фреймворков.
Его часто выбирают разработчики игр и создатели мобильных приложений, хотя он также используется в корпоративном программном обеспечении. Если вас интересует игровой дизайн, вы, скорее всего, столкнетесь с C# при создании новой игры.
JavaScript
JavaScript — самый популярный в мире язык программирования. По данным Генеральной Ассамблеи, многие веб-сайты, которые вы используете каждый день, используют JavaScript, включая Twitter, Gmail, Facebook. Прошли те времена, когда Javascript использовался только для базовой разработки веб-сайтов. Теперь это неотъемлемая часть почти 95% веб-сайтов и приложений.
Он имеет динамическую типизацию, первоклассные функции и объектную ориентацию на основе прототипов. В то время как HTML создает основу для веб-сайтов, JavaScript управляет веб-сайтами. В JavaScript есть известная библиотека JQuery, используемая большинством веб-сайтов.
Кроме того, он необходим при добавлении интерактивности на веб-сайты, поскольку он взаимодействует с HTML и CSS. Это делает его незаменимым для клиентской разработки и веб-сайтов, ориентированных на потребителя, и в то же время становится все более важным для серверной разработки, а спрос на него постоянно растет.
С JavaScript нечего устанавливать, так как он уже встроен в браузеры, так что это самый простой язык для начала работы с точки зрения настройки. Минус здесь в том, что это означает, что он интерпретируется по-разному в разных браузерах (вам потребуется провести дополнительное кросс-браузерное тестирование) и может иметь недостатки в адаптивном дизайне.
Java
Java — это объектно-ориентированный и многофункциональный язык программирования, пользующийся большим спросом. Он был построен по принципу «Напиши один раз, работай где угодно», что означает, что его можно писать на любом устройстве и работать на разных платформах.
Это делает его одним из самых высокооплачиваемых языковых навыков. Так что, если вы хотите выучить язык, который поможет вам сделать хорошую карьеру, это может быть именно то, что вам нужно.
Кроме того, Java часто используется для разработки приложений для Android и iOS, поскольку он является основой операционной системы Android, что делает его одним из лучших вариантов для создания мобильных приложений.
Чем отличается Java от JavaScript?
Java отличается от JavaScript тем, что это строго типизированный язык, требующий более глубокого изучения. Сложность — это преимущество, благодаря которому Java имеет более высокую производительность. Разработчики также используют Java для создания приложений Android для мобильных устройств. Виртуальная машина Java позволяет языку работать на многих платформах.
Ruby
Ruby похож на Python тем, что это один из самых простых языков для людей, не имеющих опыта программирования. Вам не нужно знать массу команд или иметь словарный запас программирования, чтобы изучить его, и у него есть множество библиотек и инструментов, которые пригодятся в дальнейшем.
Он используется для анализа и визуализации данных и обладает возможностями статистических вычислений, которые делают его полезным инструментом для специалистов по данным и бизнес-аналитиков.
Важная причина, по которой люди любят Ruby, заключается в потрясающем полнофункциональном фреймворке Ruby on Rails , который становится все более популярным среди стартапов и корпоративных решений. Airbnb, Groupon, Hulu и Soundcloud — это лишь некоторые из веб-сайтов, которые были созданы с помощью Ruby on Rails , и Ruby сегодня имеет довольно активное сообщество разработчиков.
Однако причина, по которой он так популярен среди малого бизнеса, часто является одной из многих критических замечаний в его адрес. У Ruby могут возникнуть проблемы с масштабируемостью в большой системе и проблемы с производительностью на больших веб-сайтах.
Заключение
- Если вы новичок и ищете что-то простое и широко используемое: выбирайте Python.
- Ищете прочную основу, чтобы в будущем стать мастером-разработчиком: C, C++, C#.
- Вы ищете работу разработчика или хотите создавать мобильные приложения, используйте надежный язык: Java.
- Хотите попробовать фронтенд-разработку, но также хотите, чтобы язык был универсальным для серверной части, мобильных приложений и разработки игр: Javascript.
- Вы программируете веб-сайт своего стартапа и ищете надежный язык программирования с последовательными процессами: Ruby.
Если вы подумываете о карьере в IT-сфере и ищите курсы обучения it , то рекомендуем обратить внимание на компанию DAN.IT. Благодаря актуальным знаниям, которые вы получите во время обучения от преподавателей-практиков, вы сможете начать карьеру программиста, дата-аналитика, веб-дизайнера, маркетолога или тестировщика, а в дальнейшем — стать востребованным айтишником. Советуем обратить внимание на обучение javascript и курс ux ui . Регистрируйтесь на бесплатную консультацию уже сейчас.
Перевод манов с оффсайта Sun. Часть 1
Еще в сентябре прошлого года, начиная изучение Java я наткнулся на подкаст Голодного «The Art Of Programming». В одном из них он прославлял мануалы? расположенные на оффсайте Sun. Достаточно долгое время проведя со словарем и IDE, я добился некоторого результата.
Недавно пришла мысль, что люди, не сильно владеющие английским языком не могут использовать этот ресурс, каким бы хорошим он ни был.
Ниже последует перевод первой статьи (она небольшая), а к хабралюдям есть вопрос: как вы оцениваете качество/целесообразность подобного перевода?
P.S. Публикую в блоге JAVA, потому что никак не получается опубликовать в «Стартап Программист»
P.P.S. За дельный совет в переводе спасибо miravingin
О Java-технологии
Понятие Java-технологии в равной степени применимо как к языку программирования, так и к платформе.
Java, как язык программирования
- Объектно-ориентированый
- Простой
- Распространенный
- Многопоточный
- Высокопроизводительный
- Платформо-независимый
- Переносимый
- Защищенный
Как выглядит программный процесс разработки:
Так как виртуальная Java-машина доступна на различных операционных системах, одинаковые файлы .class способны работать под Microsoft Windows, под the Solaris TM Operating System (Solaris OS), под Linux, или под Mac OS. Некоторые Java-машины (например Java HotSpot virtual machine) выполняют дополнительные действия, чтобы увеличить быстродействие приложения. Пример таких действий: нахождение и исправление не очень удачных участков кода и рекомпиляция (в нативный код) часто повторяющихся участков кода.
С помощью JVM одинаковые приложения функционируют на разных платформах:
Java-платформа
Под платформой мы обычно понимаем аппартаное или програмное окружение, в котором работает программа. Мы уже упомянули некоторые наиболее популярные платформы, такие как Microsoft Windows, Solaris OS, Linux и Mac OS. Большинство платформ могут быть охарактеризованы, как комбинация операционной системы и базисного оборудования, однако Java-платформа — исключительно програмная платформа работающая поверх других.
- The Java Virtual Machine (JVM) — Виртуальная Java-машина
- The Java Application Programming Interface (API) — Интерфейс Прикладной Программы (интерфейс, посредством которого приложение получает доступ к операционной системе и другим сервисам).
В свою очередь API — собрание готовых програмных компонент, обеспечивающих различые полезные возможности. Компоненты группируются в библиотеки подобных классов и интерфейсов. Эти библиотеки называются packages (пакеты). В следующей статье, «Что может Java-технология?», будут освещены некоторые возможности, обеспечивающиеся API.
API и JVM изолируют программу от используемого оборудования:
Как платформо-независимая технология, Java платформа может работать немного медленнее машинного кода, однако достижения в разработке компилятора и технологий виртуальной машины позволяют достичь производительности близкой к показателям машинного кода при этом не влияя на мобильность разрабатываемого приложения.
To be continued.
Что такое JavaScript?
Добро пожаловать на курс MDN JavaScript для начинающих! В первой статье курса мы дадим базовое определение JavaScript, ответим на вопросы «Что такое JavaScript?» и «Что он делает?», узнаем как работает JavaScript и как добавить его на веб-страницу.
| Необходимые навыки: | Базовая компьютерная грамотность, знание основ HTML и CSS. |
|---|---|
| Цели: | Знакомство с JavaScript и его возможностями, способами его подключения к веб-странице. |
Определение высокого уровня
JavaScript это язык, который позволяет вам применять сложные вещи на web странице — каждый раз, когда на web странице происходит что-то большее, чем просто её статичное отображение — отображение периодически обновляемого контента, или интерактивных карт, или анимация 2D/3D графики, или прокрутка видео в проигрывателе, и т.д. — можете быть уверены, что скорее всего, не обошлось без JavaScript. Это третий слой слоёного пирога стандартных web технологий, два из которых (HTML и CSS) мы детально раскрыли в других частях учебного пособия.

- HTML — это язык разметки, который мы используем для визуального и смыслового структурирования нашего web контента, например, определяем параграфы, заголовки, таблицы данных, или вставляем изображения и видео на страницу.
- CSS — это язык стилей с помощью которого мы придаём стиль отображения нашего HTML контента, например придаём цвет фону (background) и шрифту, придаём контенту многоколоночный вид.
- JavaScript язык программирования, который позволяет вам создать динамически обновляемый контент, управляет мультимедиа, анимирует изображения, впрочем, делает всё, что угодно. Окей, не все, что угодно, но всё равно, это удивительно, что можно достичь с помощью нескольких строк JavaScript-кода.
Три слоя прекрасно выстраиваются друг над другом. Возьмём простой текст для примера. Для придания структуры и смыслового назначения тексту, разметим его с помощью HTML:
p>Player 1: Chrisp>

Затем мы добавим немного CSS, что бы это выглядело симпатичнее:
p font-family: "helvetica neue", helvetica, sans-serif; letter-spacing: 1px; text-transform: uppercase; text-align: center; border: 2px solid rgba(0, 0, 200, 0.6); background: rgba(0, 0, 200, 0.3); color: rgba(0, 0, 200, 0.6); box-shadow: 1px 1px 2px rgba(0, 0, 200, 0.4); border-radius: 10px; padding: 3px 10px; display: inline-block; cursor: pointer; >

И наконец, добавим немного JavaScript для придания динамического поведения:
const para = document.querySelector(‘p’); para.addEventListener(‘click’, updateName); function updateName()
Попробуйте кликнуть по тексту чтобы увидеть, что произойдёт (Вы так же можете найти это демо на GitHub — смотрите исходный код, или запустите вживую)!
JavaScript может делать намного больше — давайте выясним это более детально.
Так что же он действительно может делать?
Ядро языка JavaScript состоит из некоторого количества обычных возможностей, которые позволяют делать следующее:
- Хранить данные внутри переменных. В примере выше, мы, например, запрашивали ввод нового имени, которое нужно было ввести, затем сохраняли имя в переменной name .
- Операции над фрагментами текстов (известными в программировании как «строки»). В примере выше мы брали строку «Player 1: » и присоединили её к значению переменной name для получения полного текста, например: »Player 1: Chris».
- Запускать код в соответствии с определёнными событиями происходящими на web странице. В нашем примере выше, мы использовали click (en-US) событие, для определения момента, когда кнопка была кликнута, в соответствии с этим запускался код, который обновлял текст.
- И многое другое!
Ещё более увлекательным является функциональность, созданная поверх основного языка JavaScript. Так называемые интерфейсы прикладного программирования (API) предоставляют вам дополнительные сверхспособности для использования в вашем коде JavaScript.
API — это готовые наборы блоков кода, которые позволяют разработчику реализовывать программы, которые в противном случае было бы трудно или невозможно реализовать. Они делают то же самое для программирования, что готовые комплекты мебели делают для домашнего строительства — гораздо проще брать готовые панели и скручивать их вместе, чтобы сделать книжную полку, чем самому разрабатывать дизайн, ходить в поисках правильной древесины, вырезать все панели необходимого размера и формы, найти подходящие винты, а затем собрать их вместе, чтобы сделать книжную полку.
Они обычно делятся на две категории.

API-интерфейсы браузера встроены в ваш веб-браузер и могут отображать данные из окружающего компьютерного окружения или делать полезные сложные вещи. Например:
- API-интерфейс DOM (Document Object Model) позволяет вам манипулировать HTML и CSS, создавать, удалять и изменять HTML, динамически применять новые стили к вашей странице и т. д.. Каждый раз, когда вы видите всплывающее окно на странице или какое-то новое содержимое, Как мы видели выше в нашем простом демо), например, это DOM в действии.
- API геолокации извлекает географическую информацию. Так Google Maps может найти ваше местоположение и нанести его на карту.
- API Canvas и WebGL позволяют создавать анимированные 2D и 3D-графики. Люди делают некоторые удивительные вещи, используя эти веб-технологии — см. Chrome Experiments и webglsamples.
- Аудио и видео API, такие как HTMLMediaElement и WebRTC, позволяют делать действительно интересные вещи с мультимедиа, такие как проигрывание аудио и видео прямо на веб-странице, или захватывать видео с веб-камеры и отображать его на Чужой компьютер (попробуйте наш простой демонстрационный снимок, чтобы понять идею)
Примечание: Большинство наших демо не будут корректно работать в старых браузерах — поэтому будет хорошей идеей, для запуска вашего кода установить один из современных браузеров , таких как Firefox, Chrome, Edge или Opera . Также понадобится более подробно рассмотреть раздел по кроссбраузерному тестированию, когда вы приблизитесь к разработке производственного кода (т.е реального кода, который будут использовать клиенты).
По умолчанию сторонние API-интерфейсы не встроены в браузер, и вам придётся захватывать их код и информацию из какого-либо места в Сети. Для примера:
- Twitter API позволяет вам отображать ваши последние твиты на вашем веб-сайте.
- Google Maps API позволяет вам встраивать пользовательские карты на ваш сайт и другой подобный функционал.
Примечание: Эти API-и являются продвинутыми, и мы не будем их рассматривать в нашем курсе, но ссылки, данные выше, предлагают полную документацию, если вы заинтересованы в более подробной информации.
Доступно ещё больше! Но пока не заостряйте на этом внимание. Вы не сможете создать следующий Facebook, Google Maps или Instagram после 24 часов изучения JavaScript — сначала нужно изучить основы. И именно для этого вы здесь — давайте двигаться дальше!
Что JavaScript делает на вашей странице?
В этой главе мы рассмотрим код и увидим что же действительно происходит, когда на странице запускается JavaScript.
Давайте составим краткий бриф, что же происходит когда мы загружаем страничку в браузере (первое упоминание в статье Как работает CSS). Когда вы загружаете страничку в браузере, вы запускаете ваш код (HTML, CSS и JavaScript) внутри исполняемой среды (внутри вкладки браузера). Это как будто фабрика берёт сырьё (некий код) и выдаёт продукцию (веб-страничку).

Код JavaScript выполняется JavaScript-движком браузера, после того как код HTML и CSS был обработан и сформирован в веб-страницу. Это гарантирует, что структура и стиль страницы уже сформированы к моменту запуска JavaScript.
Это хорошо, так как часто использование JavaScript заключается в динамическом изменении HTML и CSS в целях обновления пользовательского интерфейса посредством Document Object Model API (как упоминалось выше). Если бы запуск JavaScript осуществлялся прежде загрузки HTML и CSS, то это привело бы к возникновению ошибок.
Безопасность браузера
Каждая вкладка браузера представляет собой отдельную коробку для запуска кода (в техническом языке, эти коробки называются «средами исполнения») — это значит, что в большинстве случаев код на каждой вкладке запускается полностью отдельно, а код одной вкладки не может напрямую влиять на код другой вкладки или на другом веб-сайте. Это хорошая мера безопасности — если бы это было иначе, пираты могли написать код, который крал информацию с других сайтов или делал другие плохие вещи.
Примечание: Есть способы отправлять код и данные между разными веб-сайтами/вкладками безопасным способом, но это продвинутые методы, которые мы не будем рассматривать в рамках этого курса.
Последовательность выполнения JavaScript
Обычно, когда браузер сталкивается с блоком JavaScript, он запускает его по порядку, сверху вниз. Это значит, что вам нужно осторожно выбирать порядок. Например, вернёмся к блоку JavaScript, который мы видели в первом примере:
const para = document.querySelector(‘p’); para.addEventListener(‘click’, updateName); function updateName()
Здесь мы выбираем абзац текста (строка 1), а затем добавляем к нему обнаружение событий (строка 3), чтобы при нажатии на этот абзац выполнялся блок кода updateName() (строки 5–8). Блок кода updateName() (эти типы многократно используемых блоков кода называются «функции») запрашивает у пользователя новое имя, а затем вставляет это имя в абзац для обновления отображения.
Если вы поменяете порядок первых двух строк кода, он перестанет работать — вместо этого вы получите ошибку возвращаемую в консоль браузера — TypeError: para is undefined . Это значит, что объект para ещё не существует и вы не можете добавить к нему обнаружение событий.
Примечание: Это очень частая ошибка — вы должны быть осторожны, чтобы объекты, на которые ссылается ваш код, существовали до того, как вы попытаетесь что-то с ними сделать.
Интерпретируемый против компилируемого кода
В контексте программирования, вы можете услышать термины интерпретация и компиляция. JavaScript является интерпретируемым языком — код запускается сверху вниз и результат запуска немедленно возвращается. Вам не нужно преобразовывать код в другую форму, перед запуском в браузере.
С другой стороны, ккомпилируемые языки преобразуются (компилируются) в другую форму, прежде чем они будут запущены компьютером. Например, C / C ++ компилируются в язык ассемблера, который затем запускается компьютером.
Оба подхода имеют разные преимущества, которые на данном этапе мы обсуждать не будем.
Серверный против клиентского кода
Вы так же можете услышать термины серверный и клиентский код, особенно в контексте веб-разработки. Клиентский код — это код, который запускается на компьютере пользователя. При просмотре веб-страницы, клиентский код загружается, а затем запускается и отображается браузером. В этом модуле JavaScript мы явно говорим о клиентском JavaScript.
С другой стороны, серверный код запускается на сервере, затем его результаты загружаются и отображаются в браузере. Примеры популярных серверных веб-языков включают PHP, Python, Ruby и ASP.NET. И JavaScript! JavaScript так же может использоваться, как серверный язык, например в популярной среде Node.js — вы можете больше узнать о серверном JavaScript в нашем разделе Dynamic Websites – Server-side programming.
Слово динамический используется для описания и клиентского JavaScript, и серверного языка — это относится к возможности обновления отображения веб-страницы/приложения, чтобы показывать разные вещи в разных обстоятельствах, генерируя новый контент по мере необходимости. Серверный код динамически генерирует новый контент на сервере, например достаёт данные из базы данных, тогда как клиентский JavaScript динамически генерирует новое содержание внутри браузера на клиенте, например создаёт новую HTML таблицу, вставляя в неё данные полученные с сервера, затем отображает таблицу на веб-странице, которую видит пользователь. В этих двух контекстах значение немного отличается, но связано, и обычно оба подхода (серверный и клиентский) работают вместе.
Веб-страница без динамического обновления контента называется статической — она просто показывает один и тот же контент все время.
Как добавить JavaScript на вашу страницу?
Внутренний JavaScript
- Сначала, сделайте локальную копию нашего файла-примера apply-javascript.html. Сохраните его в удобное для вас место.
- Откройте этот файл в вашем браузере и в вашем текстовом редакторе. Вы увидите, что HTML создаёт простую веб-страницу с активной кнопкой.
- Затем, перейдите в текстовый редактор и добавьте следующие строки перед закрывающим тегом :
script> // здесь будет JavaScript script>
.addEventListener("DOMContentLoaded", function () function createParagraph() let para = document.createElement("p"); para.textContent = "You clicked the button!"; document.body.appendChild(para); > const buttons = document.querySelectorAll("button"); for (let i = 0; i buttons.length; i++) buttons[i].addEventListener("click", createParagraph); > >);
Примечание: вы можете увидеть эту версию на GitHub-е как apply-javascript-internal.html (посмотреть вживую).
Внешний JavaScript
Это отлично работает, но что если мы хотим поместить наш JavaScript в отдельный файл? Давайте сейчас разберёмся с этим.
- Сначала, создайте новый файл в той же папке, что и ваш файл-пример HTML. Назовите его script.js — убедитесь, что у имени файла расширение .js, так как оно распознается, как JavaScript.
- Замените ваш текущий элемент на следующий:
script src="script.js" defer> script>
function createParagraph() let para = document.createElement("p"); para.textContent = "You clicked the button!"; document.body.appendChild(para); > const buttons = document.querySelectorAll("button"); for (let i = 0; i buttons.length; i++) buttons[i].addEventListener("click", createParagraph); >
Примечание: вы можете увидеть эту версию на GitHub-е как apply-javascript-external.html и script.js (посмотреть вживую).
Инлайновые JavaScript обработчики
Обратите внимание, что иногда можно столкнуться с частями JavaScript-кода, который живёт внутри HTML. Это может выглядеть примерно так:
function createParagraph() var para = document.createElement("p"); para.textContent = "You clicked the button!"; document.body.appendChild(para); >
button onclick="createParagraph()">Click me!button>
Вы можете попробовать эту версию в нашей демонстрации ниже:
Эта демонстрация имеет те же функциональные возможности, что и в предыдущих двух разделах, за исключением того, что элемент содержит встроенный обработчик onclick , который запускает функцию при нажатии кнопки.
Но пожалуйста, не делайте этого. Это плохая практика — загрязнять ваш HTML кодом JavaScript, и она не эффективна — вам нужно будет добавить атрибут onclick=»createParagraph()» к каждой кнопке, к которой вы хотите подключить JavaScript.
Использование чистой JavaScript конструкции, позволит вам выбрать все кнопки, используя одну команду. Код, который можно использовали для этой цели, выглядит следующим образом:
const buttons = document.querySelectorAll("button"); for (let i = 0; i buttons.length; i++) buttons[i].addEventListener("click", createParagraph); >
Это может выглядеть немного длиннее, чем атрибут onclick , но это будет работать для всех кнопок, независимо от того, сколько их на странице, и сколько их удалят или добавят. JavaScript менять не нужно.
Примечание: Попробуйте отредактировать вашу версию apply-javascript.html и добавить ещё несколько кнопок в файл. После перезагрузки вы должны увидеть, что все кнопки создают параграф, если кликнуть на них. Классно, да?
Стратегии загрузки скриптов
Существует ряд проблем, связанных с загрузкой скриптов в нужное время. Всё не так просто, как кажется! Распространённой проблемой является то, что весь HTML-код на странице загружается в том порядке, в котором отображается. Если вы используете JavaScript для манипуляции элементами на странице (или, точнее, в DOM – Объектной Модели Документа), ваш код не будет работать, если JavaScript-код загрузится и распознается раньше HTML-кода, с которым вы пытаетесь взаимодействовать.
Комментарии
Так же, как и в HTML и CSS, возможно писать комментарии в вашем JavaScript-коде, что будет проигнорировано браузером, и существует только для того, чтобы давать подсказки вашим друзьям-разработчикам о том, как работает код (и лично вам, если вы вернётесь к коду спустя 6 месяцев и не сможете вспомнить, что вы делали). Комментарии очень полезны, и вы должны часто их использовать, особенно для больших приложений. Вот два типа комментариев:
-
Однострочный комментарий пишется после двойного слеша (//), например:
// Я комментарий
/* Я тоже комментарий */
Так, например, мы можем описать наш последний демо-пример JavaScript подобными комментариями:
// Функция: создаёт новый параграф и добавляет его вниз тела HTML. function createParagraph() var para = document.createElement("p"); para.textContent = "You clicked the button!"; document.body.appendChild(para); > /* 1. Получаем ссылки на все кнопки на странице в виде массива. 2. Перебераем все кнопки и добавляем к ним отслеживатель события нажатия. При нажатии любой кнопки, будет выполняться функция createParagraph(). */ var buttons = document.querySelectorAll("button"); for (var i = 0; i buttons.length; i++) buttons[i].addEventListener("click", createParagraph); >
Выводы
Поздравляем, вы сделали ваш первый шаг в мир JavaScript. Мы начали всего-лишь с теории, чтобы вы привыкли к тому, что вы будете использовать JavaScript, и что именно вы можете делать с его помощью. На этом пути вы увидели несколько примеров кода и выучили, как JavaScript вписывается в остальной код на вашем сайте среди всего прочего.
JavaScript может показаться немного пугающим в данным момент, но не переживайте — в этом курсе мы проведём вас сквозь него простыми шагами, которые имеют смысл, забегая наперёд. В следующей главе мы погрузимся непосредственно в практику, подталкивая вас погрузиться в код и сделать ваши собственные примеры JavaScript.
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
