Двустороннее взаимодействие между JavaScript и Java
А где работает «приложение на Java» — на сервере или на клиенте? Если на клиенте, то как оно туда попадает — речь о том, что пользователь заходит на сайт, должно запускаться приложение на Java или оно независимо устанавливается на машину пользователя и вопрос, как с уже установленным приложением взаимодействовать из JS браузера? Вы можете менять и JS и Java-код? Чем вас не устраивают сокеты?
6 авг 2015 в 12:57
Все работает на клиенте и все запущенно постоянно и работает всегда. Сокеты устроили бы, но начальство против них.
6 авг 2015 в 13:06
Да, вопрос более правильный такой — взаимодействие с запущеныпм Java-приложением из браузера. Причем — взаимодействие — двустороннее.
6 авг 2015 в 13:07
Про «начальство против» — как-то несерьезно, должны быть объективные причины быть против, вам же не запрещают букву «A» использовать в программах. Кроме того, для нормального ответа нужно еще больше контекста: какие браузеры/ОС вы поддерживаете, для каких сайтов эта фича должна работать — это просто web ui локальной программы или какой-то публичный сайт, — можете ли ставить расширения на браузеры, менять их настройки.
6 авг 2015 в 13:45
Браузер — старенький InternetExplorer 6. Ось — Винда. Будет не сайт, а простая HTML страница — так сказать — пользовательский интерфейс или WebUI локальной программы. Настройки браузера менять можно
6 авг 2015 в 13:52
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
По очевидным причинам, браузеры не позволяют произвольным web-сайтам взаимодействовать с произвольными локальными приложениями — это была бы масштабная дырка в безопасности.
Поэтому вам надо:
- либо 1) модифицировать браузер так, чтобы конкретно вашей веб-страничке можно было больше, чем остальным (расширения/настройки)
- либо 2) сделать вашу программу доступной через интерфейсы, к которым разрешено обращаться веб-страничкам.
Конкретно LiveConnect — это функция, которую сейчас реализует Oracle Java Plugin. Да, она только для аплетов, и не меняя настройки безопасности аплеты не смогут коммуницировать с локальной программой. Помимо всего прочего, производители браузеров отрицательно настроены по отношению к плагинам, поэтому по моему скромному мнению эта технология не имеет будущего и вам не стоит ее изучать и строить на ней продукты без крайней необходимости.
Вариант (1) «модифицировать браузер» требует повторения для разных браузеров (если вам нужно их поддерживать) и тоже куча копания.
Java & JavaScript: принципы и приемы взаимодействия
Рассматриваемые в этой статье возможности подразумевают использование в качестве броузера Netscape Navigator 3.0 или выше. Предполагается, что читатели владеют основами JavaScript и Java.
Известно, что языки JavaScript и Java расширяют возможности представления и обмена информацией на Ваших web-страницах. Но есть ограничения, которые накладываются при использовании этих языков. Вот несколько из них:
Для JavaScript
- Поле деятельности жестко ограничивается рамками броузера: все, что существует за его пределами, для JavaScript не существует вовсе. Обмен информацией с внешним миром возможен только при использовании различных HTML-расширений серверов (единого стандарта для которых нет вовсе), CGI и переменной location.search (Решение)
- Почти никаких функций для работы с изображениями (за исключением смены картинки в документе при помощи поля src объекта Image) (Решение)
- Интерфейс (за исключением форм) статичен и негибок (Решение)
- Отсутствует возможность динамической генерации документов (Решение)
- Отсутствует поддержка E-Mail (если не установлены специальные библиотеки, распространяемые отдельно от JDK) (Решение)
- До сих пор не решена проблема отображения символов русского алфавита (если не используется СУБД) (Решение)
Но. Можно заметить, что эти ограничения, накладываемые на один из языков, так или иначе обходятся в другом. Таким образом, обеспечив взаимодействие JavaScript-кода с Java-апплетами, можно еще более повысить гибкость Ваших страниц. В этой статье кратко описывается, как это делается, и даются примеры.
Для того, чтобы разрешить взаимодействие JavaScript и Java, Вам необходимо включить опции Enable Java и Enable JavaScript в меню Options|Network Preferences. |Languages.
Взаимодействие JavaScript и Java-апплетов может осуществляться тремя способами:
- Доступ из JavaScript к переменным, методам, классам и пакетам Java
- Управление Java-апплетами и внедренными объектами (plug-ins)
- Доступ из Java-апплетов к методам и свойствам JavaScript
Классы пакета netscape:
Доступ из JavaScript к переменным, методам, классам и пакетам Java
Для доступа к классам и пакетам Java в JavaScript есть объект Packages . Используя свойства этого объекта, можно получить доступ к любому классу любого пакета, поддерживаемого навигатором. Напр., для доступа к пакетам java , sun и netscape используются следующие операторы: Packages.java , Packages.sun , Packages.netscape . Строго говоря, при обращении к этим трем пакетам использование Packages необязательно, чего нельзя сказать об остальных пакетах. Так, Packages.java.lang.System.out.println(myString) эквивалентно java.lang.System.out.println(myString) .
var myDate = new java.util.Date(); var wnd = open(); var doc = wnd.document; doc.open(); doc.write(""); doc.write("var myDate = new java.util.Date();"); doc.write("function showStat(param) <"); doc.write("alert(param)>"); doc.write(""); doc.write(myDate + "
"); for (var i in myDate) doc.write("" + i + "
"); doc.write("Закрыть"); doc.close();
Нажав на кнопку, можно увидеть все переменные и методы вновь созданного объекта (внимание! нажатие на гиперссылку в создаваемом документе успешно выполнит только те методы, которые не принимают параметров (почему, видно из кода выше)):
Внимание! Не используйте любые методы Java, которые могут бросать исключения, т.к. в JavaScript нет обработки исключений, и код, вызывающий такие методы, не пройдет: будет выведено соответствующее сообщение
Управление Java-апплетами и внедренными объектами
Для обращения к Java-апплетам в документе можно использовать один из трех путей:
- Обращение по имени апплета (указанному в параметре NAME тэга APPLET):
document.appletName - Обращение по индексу в массиве applets:
document.applets[index] - Обращение по имени апплета в качестве индекса в массиве applets:
document.applets[«appletName»]
Напр., если в документе присутствует единственный апплет:
- var aplt = document.myapplet
- var aplt = document.applets[0]
- var aplt = document.applets[«myapplet»]
После получения ссылки на апплет можно получить доступ к любым общедоступным (public) переменным и методам этого апплета.
-
Исходный текст апплета:
import java.awt.*; import java.applet.Applet; public class myapplet extends Applet < public String myString; TextField myField; public void init() < setLayout(new BorderLayout()); myField = new TextField(); myField.setEditable(false); add("Center", myField); setString("Initial string"); >public void setString(String s) < myField.setText(s); >>
Нажатие на кнопку вызовет установку текста в апплете равным вычисленному выражению в поле ввода формы.
Внедренные объекты
Внедренные объекты (аудио- и видеофайлы WAV, AU, AVI. ) вставляются в документ при помощи тэга EMBED (должен быть установлен соответствующий plug-in). Синтаксис:
Здесь URL — URL внедряемого объекта. Параметры widthValue и heightValue — размер панели для размещения объекта. Используйте размеры 140 и 60 соответственно для полного показа панели и 2 и 2 для скрытия панели. (Установка размеров в 1×1 или 0x0 в действительности не принесет желаемого результата). Использование параметра NAME не рекомендуется, т.к. при этом часто блокируется работа внедренного объекта (скорее всего, это ошибка в раелизации Netscape Navigator 3.0) autostart=booleanValue — при загрузке объекта он сразу воспроизводится (действительно только для объектов, которые можно воспроизводить)
loop=booleanValue — при true воспроизведение пойдет по циклу (до покидания документа или вызове метода stop
Доступ к внедренным объектам осуществляется при помощи массива document.embeds[index] , где в качестве index следует указать индекс объекта (0 соответствует первому внедренному объекту, 1 — второму, . , document.embeds,length — 1 — последнему).
Чаще всего внедренный объект порождается от класса netscape.plugin.Plugin . В этом случае Вы можете использовать общедоступные переменные и методы данного класса для управления объектом. Кроме этого, каждый тип внедренного объекта может иметь свои собственные переменные и методы. Следующий код позволяет узнать, какие из них доступны в конкретном случае:
var myEmbed = document.embeds[myIndex]; var s = myEmbed + "\n"; for (var i in myEmbed) s += i + " = " + myEmbed[i] + "\n"; alert(s);
Общими для всех внедренных объектов являются следующие методы:
- getWindow() — возвращает окно, содержащее документ, в который внедрен данный объект
- isActive() — определяет, является ли данный объект активным в данный момент
- Plugin() — конструктор
Остальные, не указанные здесь, методы используются в основном разработчиками новых внедряемых объектов (plug-ins). Вы не должны их вызывать.
Кроме этого, наиболее часто в объектах присутствуют три метода, которые обеспечивают основные функции управления:
play() — воспроизводит клип (если он таковым является) (при задании в качестве параметра функции true воспроизведение происходит в режиме LOOP)
stop() — останавливает воспроизведение, «перематывая» клип в начало
pause() — приостанавливает воспроизведение. После этого при вызове play() воспроизведение продолжится с того места, где было приостановлено
Доступ из Java-апплетов к методам и свойствам JavaScript
Для того, чтобы разрешить Java-апплетам доступ к методам и свойствам JavaScript, необходимо в тэге APPLET указать атрибут MAYSCRIPT, иначе будет бросаться исключение. Для доступа к JavaScript необходимо импортировать пакет Netscape javascript:
import netscape.javascript.*;
При этом в переменную окружения CLASSPATH необходимо добавить путь к файлу с пакетами, поставляемыми с Netscape Navigator. Напр., если Netscape Navigator установлен в каталог c:\Program Files\Navigator , в CLASSPATH необходимо добавить (для Netscape Navigator Gold) c:\Program Files\Navigator\Program\Java\CLASSES\java_301
Пакет javascript определяет класс JSObject для описания объектов JavaScript и исключение JSException, бросаемое при ошибке во время обращения к объектам JavaScript.
Перед тем, как Вы сможете получить доступ к JavaScript, Вам необходимо получить ссылку на окно (объект window), содержащее апплет:
JSObject win = JSObject.getWindow(this)
Лучше всего включить этот оператор в функцию init() апплета.
Получить доступ к объектам и свойствам JavaScript можно одним из следующих способов:
-
Применив функцию eval объекта window:
JSObject win = JSObject.getWindow(this); JSObject myForm = (JSObject)win.eval("document.myForm");
JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject)win.getMember("document"); JSObject myForm = (JSObject)doc.getMember("myForm");
Вызвать методы объектов JavaScript можно одним из следующих способов:
-
Применив функцию eval :
JSObject win = JSObject.getWindow(this); win.eval("alert('My message !')");
JSObject win = JSObject.getWindow(this); String argums[] = new String[1]; argums[0] = "My message"; win.call("alert", argums);
Данный способ позволяет вызвать не только методы объекта JavaScript, но и определенные пользователем функции (для чего используйте функцию call объекта winddow). Если функция/метод не принимает параметры, в качестве второго параметра функции call указывается пустой массив:
JSObject win = JSObject.getWindow(this); JSObject nav = (JSObject)win.getMember("navigator"); String argums[] = (""); nav.call("javaEnabled", argums);
Преобразование типов от Java к JavaScript:
- Java-типы byte, char, short, int, long, float и double преобразуются в числа JavaScript
- Java-тип boolean преобразуется в boolean JavaScript
- Java-тип JSObject преобразуется в соответствующий объект JavaScript
- Прочие Java-объекты преобразуются в объекты-надстройки JavaScript для доступа к полям и методам этих объектов. Java-объекты могут быть преобразованы в строку (вызывается метод Java-объекта toString ). Если происходит преобразование в число, вызывается метод Java-объекта floatValue (который бросит исключение, если такое преобразование невозможно). Аналогично происходит преобразование в boolean (метод booleanValue )
- Java-массивы преобразуются в псевдо-массивы JavaScript (которые в действительности ведут себя точно так же, как и JavaScript-массивы, где в качестве индекса используются целые числа, но устроены по другому)
Преобразование типов от JavaScript к Java:
- Объекты-надстройки для Java-объектов преобразуются в Java-объекты
- Остальные объекты преобразуются в JSObject
- Строки, числа и boolean преобразуются соответственно в Java-объекты String, Float и Boolean
JSObject — объект JavaScript
Любой объект JavaScript в Java-апплетах представляется потомком класса JSObject (подробнее см. Доступ из Java-апплетов к методам и свойствам JavaScript)
Методы класса JSObject :
public Object call(String methodName, Object args[])
вызывает метод methodName объекта JavaScript с аргументами args[] . Эквивалентен JavaScript-коду:
this.methodName(args[0], args[1], . )
public Object eval(String s)
вычисляет выражение s , являющееся любым допустимым выражением JavaScript. Вычисление производится в контексте объекта. Напр., код
JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject)win.eval("document");
public Object getMember(String name)
возвращает поле-член JavaScript-объекта. Аналогичен JavaScript-коду this.name . Напр., код
JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject)win.getMember("document");
public Object getSlot(int index)
Возвращает индексированный элемент массива (если объект им является). Аналогичен JavaScript-коду this[index] . Напр., код
JSObject win = JSObject.getWindow(this); JSObject frames = (JSObject)win.getMember("frames"); JSObject frame1 = (JSObject)frames.getSlot(0);
public static JSObject getWindow(Applet applet)
public void removeMember(String name)
public void setMember(String name, Object value)
public void setSlot(int index, Object value)
public String toString()
JavaScript: обмен информацией с внешним миром
Как известно, Java-апплеты могут обмениваться информацией с тем сервером, откуда он загружен, а если создать соответствующее серверное приложение, то через него и с любым сервером. (Очень хороший пример такого приложения — IDS Server компании IDS Software, взаимодействующий с апплетами с помощью пакетов ids.sql и с серверами или локальными базами данных через систему псевдонимов). Для того, чтобы код JavaScript мог воспользоваться такими возможностями, достаточно в апплете опреденить public-функцию, осуществляющую необходимый способ обмена информацией. После этого JavaScript вызывает данную функцию апплета, когда нужно.
JavaScript: работа с графикой
С помощью Java можно рисовать как на поверхности визуальных компонентов, так и на поверхности изображений (класс Image). Рисование происходит посредством объекта Graphics, являющегося одним из свойств класса Image. Из JavaScript можно напрямую вызывать функции объекта Graphics, предварительно создав в апплете public-переменную:
Graphics myGraph = myImage.getGraphics();
Таким же образом осуществляется рисование на поверхности компонентов апплета.
JavaScript: гибкий интерфейс
Обычно для поддержки взаимодействия с пользователями бывает достаточно использовать формы. Однако часто бывают ситуации, когда возможностей, предоставляемых формами, недостаточно. К тому же в случаях, когда во взаимодействии участвуют несколько HTML-документов (при большом числе вводимых параметров и необходимости динамически изменять последовательность действий), пользователям приходится много времени ждать загрузки тех или иных документов или блоков информации. Все это решается достаточно тривиально с использованием апплетов: хотя апплеты загружаются дольше обычных компонентов документа, это происходит один раз за сессию работы с броузером, а потом работают достаточно быстро. При этом можно создать один документ и все взаимодействие сосредоточить в нем.
Например, если количество вводимых параметров велико, можно установить для апплета (или какой-либо его панели) менеджер компоновки CardLayout и размещать интерфейсные элементы на его страницах (что является аналогом диалоговых окон в виде блокнота с закладками в Windows).
Если же необходимо динамически изменять последовательность действий и/или интерфейсные элементы, то делается это еще проще. В апплетах для изменения набора выводимых элементов предназначены такие функции класса Container, как void remove(Component comp) (для удаления из контейнера элемента comp), void removeAll() (для удаления из контейнера всех элементов) и Component add(Component comp [, int index]) (для добавления нового элемента). И связанная с этим последовательность действий легко изменяется.
Java: динамическая генерация документов
Часто бавает необходимо из Java-апплетов влиять на внешний вид документа в зависимости от некоторых условий (такие условия могут возникнуть в то время, когда документ уже загружен). Например, нужно создать какую-либо таблицу в ответ на введенные пользователем данные. Если контакт апплет загружен с СУБД-сервера, последний может (но не всегда) предоставить некоторые функции для динамической генерации документов. К сожалению, набор таких функций очень ограничен и неудовлетворителен. В других случаях дела обстоят еще сложнее. Таким образом, мы можем в апплете воспользоваться возможностями JavaScript в области создания документов. Для этого есть функция document.write(. ). Грамотно используя данную функцию можно построить документ (почти) любой сложности на лету.
Java: поддержка E-Mail
Из JavaScript есть возможности послать сообщение по E-Mail. Есть для этого три способа:
JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject)win.getMember("document"); JSObject myMail = (JSObject)doc.getMember("myMail"); myMail.call("click", null)
JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject)win.getMember("document"); JSObject myForm = (JSObject)doc.getMember("formName"); myForm.call("submit", null);
JSObject win = JSObject.getWindow(this); JSObject location = (JSObject)win.getMember("location"); location.setMember("href", "mailto:rbravant@yahoo.com");
Java: проблема символов русского алфавита
На самом деле существуют особые механизмы, которые позволяют работать с кириллицей несмотря на то, что в Java такая поддержка отсутствует. Они достаточно нетривиальны, и их рассмотрение выходит за рамки обсуждаемой темы. Есть легкий путь с применением JavaScipt вывода кириллицы в апплете. (Текст, введенный в апплет, может также успешно быть отправлен на сервер, хотя никакой гарантии в этом нет.) Решение таково: в документе в секции SCRIPT определяется ряд переменных с текстом на русском языке (не забудьте защитить символы я и ч обратным слэшем). Получить к ним доступ из апплета не составит труда.
Js != Java или как совместить разное
Начал учить JS. Увлекло, получается, нравится и т.д. Сказали учить ооп и php, НО. Хоть Java никак не относится к JS, хочется учить и ее. Вопрос к профессионалам. Можно ли эти 2 языка учить паралельно? Не будет ли потом каши и путанницы в голове? Какая последовательность должна быть, чтобы знать в итоге и то, и другое? Не кидайте тапками за возможный тупизм и орфографию 🙂
Подобається Сподобалось 0
До обраного В обраному 0

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
239 коментарів

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
свежая шутка на эту тему от HR-a одной из украинских компаний. после отсылки резюме javascript developer получаю ответ «мы не сможем пригласить Вас на собеседование, так как не работаем с технологиями Java»
Подсумируем тему: мои вбросы удались, защитники js высказались. В результате все довольны. Кроме автора темы, он так и не получил внятных ответов 🙁
Твої вкидання вдалися б, якби цього ніхто не помічав. Але це бачили навіть сліпі. Ну, в когось — так, був час посратися, але то таке.
Подиви список топ коментарів — то практично все відповіді на мої вкидання. Хіба це не перемога?
Іди візьми з полиці пиріжок, воїн-побєдун.
нє, ну всяке бачив. Але гордитись тим що ти троль, притому жирний троль, це трішки перебор =))))
Зачем было именно мою тему засирать? А потом вы жалуетесь, что из новеньких никто не соображает, как вы. Сами же убиваете неубиенное.
Я больше не буду засирать темы, стану хорошим 🙂
Big Brother’s watching you
Java и JS как свинка и морская свинка.
не мучьте организм.
зарплаты у тех и этих похожие, перспективы тоже.
Даааа! Спросил «Можно или лучше не надо. », а получил «Что?. Даже без опыта я понимаю, что все ЯП нужны, если они еще существуют. Завтра может появиться человек, который скажет, что избрел визульный ЯП в виртуальной реальности и что, теперь? Не учить вообще ничего? Каждый из вас прав по-своему. Кажлый учить начинал язык не за его оплату или сложность, а потому, что он нравился на тот момент. О чем тогда спор? Тем более, что тема топика совсем другая.
Не обращай внимания на срачи, мы просто развлекаемся.
Можно или лучше не надо, это все субъективно. Известно одно, чем больше у вас багаж знаний — тем лучше. Если у вас получается учить 2 языка, то почему нет?
Но и распыляться не надо. По сути, как я вроде уже и писал тут, надо смотреть на конкретную область, на вакансии в ней и что в них требуются, и учить это.
Второй язык можно взять как хобби )
Лучше чтобы работа была хобби))
В нашей сфере обычно наоборот, хобби превращается работу и приходится искать новое хобби.
Anna Petrova Senior Software Developer 27.07.2015 13:41
Давайте не забывать, что программы пишет не язык программирования, каким бы крутым он не был, а человек. Язык — это всего лишь инструмент. Есть крутые проекты на PHP, есть провальные убожества на . Ключевым был, есть и остается человек и то, что у него в голове, а не язык.
С# и его фреймворк .Net новее и похож на жабу, сейчас я бы начинал с него, жаба старый суровый энтерпрайз (кроме андроида) где редко что-то меняют. Не исключено, что большинство кода с которым будете работать написано индусами в стиле тех времен версии 1.5 и ниже.
жаба старый суровый энтерпрайз (кроме андроида) где редко что-то меняют.
Ой, деточка, а ну-ка расскажи-ко свои фантазии о состоянии джава инфраструктуры на сегодняшний день?
Времена J2EE уже давно прошли. В том же суровом энтерпрайзе уже очень много чего поменялось, а там где не поменялось, там и дотНет версии 2.0.
Blitz .net Developer 27.07.2015 12:37
А что сейчас в тренде?
Anna Petrova Senior Software Developer 27.07.2015 13:07
Набирают обороты технологии, на которых можно быстро, но не в ущерб качеству, делать стартапы
Blitz .net Developer 27.07.2015 13:12
Я хотел бы услышать конкретные названия.
Я хотел бы услышать конкретные названия.
Если вы про всякое «легковесное», то dou.ua/. a/digests/java-digest-15
А что сейчас в тренде?
В том то и фишка что одного «тренда» нет. Времена гегемонии «кровавого энтерпрайза» уже прошли:
— JEE и Spring стали куда более дружественными, в том числе и фрейворки «все в одном» на их основе;
— появилась куча перенесенных идей с других платформ (хотя бы РоР-подобные и Синатро-подобные фремворки);
— всякие Вертексы и тд;
— наработки НетФликса по микросервисам;
— так называемая «функциональная парадигма» идет в массы.
Blitz .net Developer 27.07.2015 15:43
Понятно. Похоже рано или поздно разница между нашими стеками таки исчезнут.
Учить fullstack js, у него большие перспективы. Дальше смотреть куда планируете развиваться. Хотите работать в большой энтерпрайз компании и жрать бесплатное печенье, то Java. Хотите в будущем поднять свой стартап на коленке, или фрилансить живя на берегу моря то php (в паре с js тут перспектива конечно лучше, так как нужны многостаночники). Плюс есть куча замечательных технологий под разные задачи. Тот же golang (серверные приложения под любые задачи), scala (здравствуй java), ror, swift, и тд.
Но, в программирование самое главное практика. Вам надо выбирать тот стек в котором у вас есть возможность практиковаться.
Хотите в будущем поднять свой стартап на коленке, или фрилансить живя на берегу моря то php
Странно, по данным доу пхп получает меньше долларов, чем java. Это я к теме о море
Так на php и программистов меньше, так все джумла кодеры. Хороший программист на любой технологии получает столько сколько ему нужно. Есть вакансии на js с ЗП которые джавистами не снились.
+ меньше конкурс на синьера при выборе из колектива 😉
Господа, перестаньте перепалку относительно языков! Каждый выбирает, что ему по душе. Давайте останемся при своих мнениях и просто дадим КОНСТРУКТИВНУЮ пищу для размышлений. Подрастающее поколение не так уж и глупо и в состоянии разобраться со своими мыслями.
ты начинаешь тему «что лучше, жава, жс или похепе» и ждешь конструктива? да ты оптимист!
Мне наоборот это всене нужно. Вопрос был уточняющим. См. в топике. Амбиции у людей разыгрались )
Олег Шестаков Forever Jun 28.07.2015 00:13
Лучше не надо вместе учить Java и PHP, будет каша в голове. Что-то одно. JS позже, т. к. это (в основном) язык front-end разработки. А там уже можно смотреть на Node.js.
А еще можно учить php, python, node.js, android, ios, c, c++, c#. Все сразу. Потом можно в портфолио круто написать эти языки в графу «знаю».
Угу.и их будет знать только это поле резюме, а сам буду знать только их названия
Это был сарказм. Не понимаю зачем вам надо распыляться изучая сразу и java и js. Вы же учитесь чтобы получить работу, а не чтобы учиться? Смотрите на область. Я не знаю что там с веб java, но если цель веб php/python и что там еще, то тогда да, надо и js выучить и html, css и потом еще что то.JS основы учятся за неделю-две, потом еще неделю на jquery и можно в бой. А то что говорят что в JS надо понять какую то дзен — не верьте. JS — максимально упрощенный язык чтобы любая обезьяна могла «спец эффекты» писать, точнее ляпать. Веб — это быдлокодинг, и джуниор 100% в него попадет. И да, быдлокодинг настолько, что даже там где можно на чистом js написать — там пишут на jquery. Не быдлокодинг начинается наверно только с уровня мидл и выше, и то хз, не везде. Ну или попадите в хорошую компанию. Вообщем все неаселяторы JAVA и подобного сложного идут в веб, который я выше описал. А JAVA — это для настоящих программистов, там жуниора быдлокодера не возьмут, в то время как в пехопе даже ООП много кто не знает из джунов.
Gennady Dogaev full-stack web developer (freelance) 26.07.2015 18:21
Веб — это быдлокодинг
Обычно быдлокодеры так и говорят. При этом часто они быдлокодят на других языках, например Java.
В JAVA такой порог входа, что не всякий быдлокодер пройдет. Ну и андроид разработка дело посложнее этих ваших сайтиков типичных. Потому если я и быдлокодер, то поэлитнее пхп быдлокодеров.
Євген Козлов Front-end developer в SoftServe 26.07.2015 19:49
о, элитарность Джавы всплыла.
да что такое Java против Lisp’a?!
да что там за такой «порох входа» супротив R?
Ну, тут уже не знаю. Может у кого есть таблица элитарности языков?
да что такое Java против Lisp’a?!
На джаве крутится весь мир, а что на лиспе вообще написали грандиозного, что кто-то заикнулся сравнивать его с джавой?
Євген Козлов Front-end developer в SoftServe 26.07.2015 21:47
илитарность же! при чем тут «популярность» или «распространенность»?
вы не попали на одну волну с нами, попробуйте еще раз
Я про элитарность не писал, я просто писал что странно сравнивать индустриальный инструмент с наречием на котором разговаривают несуществующие единороги.
Та нет, чистая правда.
Олег Шестаков Forever Jun 28.07.2015 00:15
Ну на Lisp-е написано ядро Grammarly. Вас это не впечатляет?
Я не берусь судить об эпичности ядра грамарли, т.к. слабо знаком с ним. Думаю еще два-3 таких же примера в мире наберется, обьясняющиеся тем что какой то программист в начале разработки не выбрал более удачный инструмент в силу религиозных заблуждений.
Самый популярный LISP работает на JVM 🙂
На JVM может работать усе.
нужно только скомпилировать в байткод.
да что такое Java против Lisp’a?!
а что такое джава и лисп против хаскеля и монад?))))
Почему-то две цитаты всплыли:
«скрипачи поспорили, чьи бандиты круче»,
«в сортах говна не разбираюсь»
Розкажи Хаслел девелоперам, про твій високий поріг входу на Java.
Yegor Roganov Python Developer в EVO 26.07.2015 20:47
На jquery уже мало кто пишет, вы остали от веб-технологий на несколько лет. Почитайте хотя бы про React, Ember и Angular.
Про илитарность Java, в которую джуниором до недавнего времени брали после месячных курсов, очень смешно.
На jquery уже мало кто пишет
Лол. Откройте вакансии и биржи фриланса. Новомодное != популярное.
По поводу JAVA, даже не начинайте. Сами понимаете сколько нужно недель с JS, чтобы уже взяли клепать формочки.
Євген Козлов Front-end developer в SoftServe 26.07.2015 20:58
Сами понимаете сколько нужно недель с JS, чтобы уже взяли клепать формочки.
то-то я смотрю, у нас вакансии висят.
ну на клепать формочки это вакансии больше под лейблой «нужен пехопе программист». А то что таких вакансий куча — так это потому что нынче каждой лавочке нужен свой сайт на вордпрес. Хотя не уверен что жуниоры так уж и нужны еще, все прутся.
Если бы с JS было бы все так просто, то Ваш мобайл засунули туда же, где сейчас находятся basic и dos
Жабоскрипт крив для серьезной прикладной разработки, потому ничего он не засунет.
Євген Козлов Front-end developer в SoftServe 26.07.2015 21:06
для серьезной прикладной разработки
что же вы называете «серьезной прикладной разработкой», можно узнать?
То что в мобайле
Євген Козлов Front-end developer в SoftServe 26.07.2015 21:19
например, секундомер, ага.
или очередной клиент для Джаббера.
или программа для заказа еды под определенную службу доставки.
google maps, конечно, может быть реализован исключительно под Андроид, а в браузере — на джаваскрипте! — его сделать не под силу.
про всякие asm.js и прочие dosbox-like даже писать не охота.
«Особенность Firefox OS в том, что на ней будут запускаться только те приложения, которые основаны на web-технологиях (HTML5, CSS и JavaScript). Ограничившись только языками веб-программирования, разработчики платформы хотят ускорить работу системы при выполнении некоторых задач. Основными недостатками вышеописанного является затруднённая разработка сложных приложений, в этом случае разработчики прибегают к использованию JavaScript, который тоже имеет ограничения.»
т.е. Моззила фаундейшн джаваскрипт для мобил типа одобряет)
Мало ли что она одобряет, она к андроиду или иос(а это практически весь рынок) отношения не имеет, так что шавка гавкает а паровоз идет.
так что шавка гавкает
ничего себе шавка))
она к андроиду или иос(а это практически весь рынок) отношения не имеет
ну так и «мелкомягкие» к андроиду и к иос тоже отношения не имеют походу — так что тоже шавка со своими виндоусфонами)) а еще есть канноникал с тизеном.
Ну так подсчитайте процент использования мобильных ОС. Напомните, на каком там месте это чудо файерфокс ОС? А то я даже не слышал. Кстати, их браузер еще живой?
П.С. мне очень жаль людей, которые лоханулись и купили смартфон с файерфокс ос.
меня не интересует процент использования мобильных осей) если я буду покупать смартфон мне будет как-то без разницы какую она ось использует) и если у меня будет хватать деньгов на мобилу с Firefox OS и будет выбор, и мобила с файерфоксом мне понравиться (по функционалу, удобству и прочему) — куплю ее, несмотря, что она не в тренде)
Кстати, их браузер еще живой?
живее всех живых)
П.С. мне очень жаль людей, которые лоханулись и купили смартфон с файерфокс ос.
а чем они лоханулись, если допустим их устраивает файерфок ос?)
это как владелец мерса скажет, что ему жаль человека, который купил мазду или опель (несмотря на то, что раз человек купил опель, то это значит, что опель его по каким-то сугубо личным причинам вполне устроил).
P.S. если чел купил Firefox OS, а потом внезапно понял, что не то, что он хотел — это его проблемы, пусть мучается)) потом десять раз подумает перед тем как покупать ту или иную современную мобилу)
А чем их может устраивать смарт на Динозавр ОС? Под такое чудо никто даже апликухи не пишет. К примеру хочет человек скачать приложение к понравившемуся сайту, смотрит, а там только под иос и андроид. То что ты бы купил это чудо — ничего не доказывает. Не все такие умные как ты.
А чем их может устраивать смарт на Динозавр ОС? Под такое чудо никто даже апликухи не пишет.
1. аппаликухи сами мозиловцы и пишут вроде)
2. а если челу не нужны навороченные проги, которые есть тока под андроид/иос? у каждого свои требования к мобиле/смартфону.
Вот я свою Нокию 6630 использую преимущественно как читалку, а также чтобы в пару игр поиграть типа шашки/шахматы/тетрис. Стоит даже интерпретатор Питона для симбиан (версия 2.4 вроде). И мне пока навороты андроида и яблофона не нужны)
Хотя да, хотелось бы иметь смартфон, чтобы тестить приложения и сайты на смартфоне, например. Ну и чтобы там был текстовый редактор с подсветкой основных языков программирования.
То что ты бы купил это чудо — ничего не доказывает.
а я и не собираюсь никому ничего доказывать, я просто о том, что Firefox OS и подход «джаваскрипт для мобил» вполне имеет право на существование.
И я не настолько умный, как хотелось бы (иначе бы давно уже был бы миллионером и тусовал с Цукербергом).
аппаликухи сами мозиловцы
а если челу не нужны навороченные проги
Боюсь, что с выходом windows10, android окажется в глубоком тылу.
Уже сейчас много моих знакомых переходит на смартфоны с windows-phone.
Или, что более реалистично, MS в очередной раз зафейлит, на старые виндофоны нельзя будет поставить (так же как на старые виндофоны нельзя поставить под них перестанут выпускать апдейты и, в итоге, софт, нород спросит у MS какого хрена и горстка лояльных виндофилов окончательно разбредется по другим платформам.
Это руки у кого-то кривые. Возьмите любой популярный сайт и отрубите в браузере JSю Посмотрим, какие впечатление у вас он оставит. Я не просил ничего оценивать и не сравниваю ваш мобайл ни с чем более. Тем более, что не просил совета, что мне учить, а что нет. Сидите и тыцайте по манюне-экранчику в поиске багов. Нет ответа по существу- проходим на следующую остановку. Давайте уже закончим на том!
Я вас удивлю, но в веб 3.0 javascript потеснят c++,c# и еще пару языков, на которых будут писать КОМПИЛИРУЕМЫЕ фронт енд апликухи. Называется эта вещь webassembly. Усе, конец этому языку формочек, теперь только серьезный фронт енд как в мобайле и десктопе.
Коментар порушує правила спільноти і видалений модераторами.
Коментар порушує правила спільноти і видалений модераторами.
Коментар порушує правила спільноти і видалений модераторами.
кто там следующий на очереди потеснить javascript в веб фронтенде?
WebAssembly, и писать будут под это на си шарпе и еще пару языках. Эту вещь разрабатывают Google, Microsoft, Mozilla и другие. Еще вопросы?
Google, Microsoft, Mozilla и другие. Еще вопросы?
Я давненько ушел с платформы MS и не слежу за новостями, поэтому вопрос пока один, эти товарищи уже пристрелили Silverlight из гуманитарных соображений, или он все еще трепыхается и агонирует?
А я не слежу что такое
Silverlight
Я кинул название того, что будет в веб 3.0. И это внедрят корпорации очень большие, и некоторые из них создатели браузеров.
А я не слежу что такое
Плохо что не следите. Если бы следили, знали бы, каких успехов достигают мегакорпорации пытаясь в очередной раз убить Javascript.
Я кинул название того, что будет в веб 3.0.
Костыль, разработанный мегакорпорациями за 5 минут на коленке, работающий в двух с половиной браузерах будет всем рулить в web 3.0. Спасибо, почти поверил.
И это внедрят корпорации очень большие, и некоторые из них создатели браузеров.
Эти большие мегакорпорации 2 года никак не могут запилить совместимые реализации HTML5 MSE в своих же браузерах по стандарту, который они же сами разработали.
да что там говорить, они до сих пор не сделали чтоб в их браузерах одинаково выполнялся Javascript, к слову, уже 20 лет языку стукнуло.
В итоге что-то сделают, оно будет работать в двух с половиной браузерах, причем в каждом браузере по-своему.
Ясно, что никто на это не перейдет, потому что никому не нужно веб-приложение, которое не работает в фаерфоксе/IE12/you name it.
Корпорации посмотрят на это и начнут потихоньку выпиливать эту хрень из браузеров, потому что никто ее не юзает, а поддерживать, фиксить дыры, и приводить в соответствие со «стандартом» стоит денег.
Обманутые вкладчики разработчики, поверившие корпорациям, офигеют от того, что в их любимом браузере их приложение вдруг перестало работать после апдейта, и в срочном порядке начнут переписывать свои приложения на Javascript, как сейчас переписывают с Silverlight на Javascript.
Как встроить JavaScript в HTML
В этой статье мы рассмотрим простые шаги по добавлению JavaScript в HTML . Независимо от вашего уровня опыта в программировании, наше короткое руководство поможет вам начать работу с JavaScript и с легкостью внедрить его в ваши проекты.
(1).jpg)
Что такое JavaScript
JavaScript (часто сокращается до JS) – это высокоуровневый, интерпретируемый язык программирования, который используется для создания динамических и интерактивных элементов на веб-сайтах.
JavaScript позволяет разработчикам добавлять функциональность к веб-страницам, делать их более отзывчивыми к действиям пользователя и обеспечивать взаимодействие с веб-серверами для загрузки или отправки данных без необходимости перезагрузки страницы.
Вместе с HTML и CSS JavaScript является частью трех основных технологий, необходимых для создания веб-сайтов. Помимо JS, в них входят:
- HTML (язык гипертекстовой разметки) обеспечивает структуру веб-контента. Например, определяет заголовки, таблицы данных и списки маркированных пунктов.
- CSS (каскадные таблицы стилей) применяет стиль и макет к содержимому HTML: настраивает цвет фона и шрифта, стандартизирует расстояние между элементами и добавляет фоновые изображения.
Для чего нужен JavaScript
JavaScript можно использовать для создания сложных веб-сайтов, браузерных игр и приложений, а также для подключения серверов к веб-сайтам и веб-приложениям.
Многие известные сайты и приложения используют JavaScript – включая Netflix, Google и YouTube.
С JavaScript разработчики могут:
- отображать своевременные и актуальные обновления контента;
- вставлять раскрывающиеся меню;
- воспроизводить аудио и видео;
- увеличивать и уменьшать изображения;
- добавлять 2D/3D графику и анимацию;
- вставлять эффекты, которые приходят в действие при наведении курсора;
- отображать и скрывать меню;
- предупреждать пользователей о недопустимых символах при вводе паролей;
- создавать сложные браузерные игры.
Также в последние годы появилось множество технологий, которые позволяют использовать возможности JavaScript. К примеру, JS имеет обширную коллекцию фреймворков для создания веб- и мобильных приложений.
Но что такое «фреймворки»?
Фреймворки – это библиотеки предварительно написанного кода JavaScript. Иными словами, их можно назвать своеобразными «чертежами» в мире программирования, ведь фреймворки помогают разработчикам создавать приложения и веб-сайты с большей функциональностью.
Три самых популярных фреймворка приложений JavaScript:
- React – используется при создании пользовательских интерфейсов для веб-приложений.
- React Native – используется при создании мобильных приложений.
- Node.js – обеспечивает двустороннюю связь с серверами для обмена данными.
О Node.js мы уже рассказывали более подробно в другой статье.
Java и JavaScript: одно и то же?
(1).jpg)
Несмотря на то что Java и JavaScript имеют схожий синтаксис и стандартные библиотеки, эти два языка программирования совершенно разные: Java является языком объектно-ориентированного программирования (ООП) – то есть запускается на виртуальной машине или в браузере.
JavaScript же – это язык сценариев ООП, который работает только в браузере.
Благодаря своей универсальности JavaScript остается одним из наиболее широко используемых языков программирования среди разработчиков. Однако, как мы упоминали ранее, при создании сайтов JS – не единственная технология, которая интересует разработчиков.
Часто встает вопрос о том, как встроить JavaScript в HTML. Об этом мы и поговорим далее.
Как добавить JavaScript в HTML
Мы уже рассмотрели, почему HTML, CSS и JavaScript необходимы для создания функциональных и динамических веб-страниц.
Но, говоря простыми словами, сайт состоит из трех уровней: HTML в качестве основы, CSS как средний слой и JavaScript – верхний.
Сначала вы структурируете контент на веб-странице с помощью HTML, затем добавляете стилистические элементы и правильный макет с помощью CSS. Далее добавляете динамические и интерактивные функции с помощью JavaScript.
Есть два способа добавить JavaScript в HTML:
- встроить JavaScript в теги HTML,
- создать внешний JavaScript-файл.
Способ 1. Разместите JS-код внутри парного тега
Код JavaScript можно встроить в документ HTML с помощью специального тега HTML . Его можно разместить либо в разделе вашего HTML, либо в разделе .
Размещение полностью зависит от того, когда именно вы хотите загрузить код.
Как добавить Javascript в тег
JavaScript-код можно вставить в раздел HTML-страницы. Это делается для того, чтобы функция оставалась изолированной от основного содержимого вашего HTML-проекта.
Вот пример того, как добавить JavaScript в раздел HTML-страницы:
document.getElementById(“demo”).innerHTML = “Paragraph changed.”;
Demo JavaScript in Head
Как добавить Javascript в тег
Если скрипт должен запускаться в определенной точке макета вашей веб-страницы, вам нужно будет вставить его в то место, где он должен вызывать функцию. Размещение обычно находится в разделе .
Вот пример того, как добавить JavaScript в раздел HTML-страницы:
Demo JavaScript in Body
document.getElementById(“demo”).innerHTML = “Paragraph changed.”;
Способ 2. Вставьте внешний JavaScript в HTML
Это достаточно простой способ вставить JS-код в HTML-страницу, который поможет вам, если ваш JS-скрипт большой или вы хотите распределить его по нескольким веб-страницам.
Использование отдельных файлов JavaScript позволяет разработчикам отделить разметку HTML от кода JS и предотвращает путаницу. Это также упрощает текущее обслуживание и ускоряет загрузку веб-страниц при кэшировании файлов JavaScript.
Вот пример внешнего сценария JavaScript:
document.getElementById(“demo”).innerHTML = “Paragraph changed.”;
Чтобы использовать этот внешний скрипт, вам необходимо добавить имя файла скрипта в атрибут src (source) тега :
Где «myScript» – имя файла вашего скрипта.
Советы по добавлению JavaScript в HTML
(1).jpg)
- Если сценарии должны запускаться только при их вызове, добавьте нужные функции в раздел . Таким образом, скрипт не помешает содержимому вашей страницы.
- Если ваш скрипт записывает содержимое страницы, оно должно находиться в разделе . В идеале скрипт должен располагаться в конце раздела , чтобы повысить скорость загрузки страницы.
- Если ваш сайт использует HTML5, добавление JS-кода в тег не потребуется.
- Некоторые программисты рекомендуют хранить сценарии HTML, CSS и JavaScript в отдельных папках. Самое главное – это правильно их связать.
Оптимизация JavaScript на странице
Оптимизация кода – это любой метод модификации кода для улучшения качества и эффективности кода.
Зачем нужна оптимизация JavaScript?
- Производительность. Неоптимизированный код JavaScript может снижать производительность веб-страницы, делая ее медленной и менее отзывчивой. Быстрая загрузка и выполнение кода JavaScript – это ключевые факторы для обеспечения плавности и отзывчивости пользовательского интерфейса.
- Экономия ресурсов клиента. Неэффективный код JavaScript может потреблять больше ресурсов: например, процессорное время и оперативную память на устройстве пользователя. Это может вызвать замедление работы браузера и даже вынудить пользователя закрыть вкладку или перезагрузить страницу.
- Экономия трафика. Код JavaScript также участвует в объеме данных, передаваемых между сервером и браузером. Большие скрипты могут увеличивать время загрузки страницы, особенно при медленном интернет-соединении или при работе на мобильных устройствах. Оптимизированный JavaScript сокращает этот объем данных.
- Совместимость. Разные браузеры могут по-разному интерпретировать JavaScript, и неоптимизированный код может вызвать проблемы на некоторых платформах. Оптимизация обеспечивает лучшую совместимость и устойчивость вашего веб-сайта.
- Лучший пользовательский опыт. Быстрая загрузка и отзывчивость веб-страницы, а также экономия ресурсов и трафика, делают пользовательский опыт более приятным. Это приведет к увеличению уровня удовлетворенности пользователей и повышению вероятности их возвращения на ваш сайт.
- Снижение нагрузки на сервер. Оптимизированный код JavaScript не только улучшает производительность на стороне клиента, но также снижает нагрузку на ваш сервер. Меньший объем передаваемых данных и меньшая нагрузка на браузеры означают меньшую нагрузку на сервер и снижение затрат на хостинг.
Аренда сервера

Если вы уже работаете над собственными сайтами, то, возможно, задумывались над арендой сервера для своих проектов.
Линейка хостинговых продуктов RU-CENTER крайне обширна и включает в себя всё: от доступного хостинга для небольших сайтов до аренды выделенных серверов для масштабных проектов.

Наши серверы – это мощные системы с отказоустойчивой инфраструктурой, которые соответствуют самым современным стандартам индустрии. Они станут надежным решением для размещения новых или переноса уже существующих сайтов.
Как оптимизировать JavaScript на странице
(1).jpg)
- Обратите внимание на порядок загрузки элементов
Важно, чтобы все элементы в разделе были предварительно загружены, прежде чем посетитель увидит что-либо в браузере. В таком случае все последующие элементы будут загружаться логическим образом.
Любой код JavaScript внутри раздела может замедлить загрузку страницы.
Когда загружается неоптимизированная страница, скорее всего, пользователь увидит «белый экран» до загрузки полной страницы.
Оптимизированная загрузка страницы (фактически рендеринг) происходит поэтапно, позволяя пользователю постепенно видеть некоторый контент, пока страница не загрузится полностью.
- Минимизируйте код JavaScript вручную
Оптимизация – это особый тип минификации JavaScript. Минификация же, в свою очередь, – это процесс удаления лишних или избыточных данных в коде. Она помогает уменьшить время загрузки страницы.
Разрывы строк, дополнительные пробелы или комментарии – всё это увеличивает размер JavaScript-файла и влияет на скорость загрузки страницы. Сжатие кода хорошо решает эту проблему.
- Оптимизируйте Javascript с помощью сторонних программ
Существуют различные минимайзеры, которые не только удаляют ненужные пробелы, запятые, комментарии, но также помогают избежать мертвого кода. Среди них можно выделить:
- Google Closure Compiler,
- UglifyJAVASCRIPT,
- Microsoft AJAX Minifier.
Как выглядит оптимизированный код? Давайте рассмотрим на примере.
До оптимизации
После оптимизации
var parent = node.parentNode;
alert( «We are Ru-Center!» );
function test(){alert(«We are Ru-Center!»)}
Что именно произошло при оптимизации?
- Переменная родительского класса для выполнения кода не потребуется, поэтому её удалили.
- «if(0) {…}» в этом случае считается мертвый кодом.
- Также удалили «return» – это еще один мертвый код.
- Воспользуйтесь асинхронной загрузкой JavaScript
Асинхронная загрузка JavaScript означает, что браузер может одновременно загружать несколько ресурсов (в том числе и скрипты) без блокировки отображения остального контента на странице. Это существенно улучшает производительность, так как браузер не ожидает загрузки каждого скрипта перед продолжением обработки страницы.
Для выполнения асинхронной загрузки отлично подходят атрибуты: «async» и «defer». Их применение позволяет оптимизировать процесс загрузки и выполнения скриптов, чтобы ускорить отображение страницы для пользователей.
Атрибут «async». При его использовании браузер начнет загрузку скриптов параллельно с остальными ресурсами страницы, и он не будет блокировать отображение контента. Скрипты будут выполняться, как только загрузятся, и порядок выполнения может быть непредсказуемым.
Это полезно для скриптов, которые не зависят от других и могут быть выполнены независимо.
Атрибут «defer». При его использовании скрипты также загружаются асинхронно, но браузер гарантирует, что они будут выполнены в том порядке, в котором они расположены на странице.
Важно отметить, что выполнение скриптов будет отложено до тех пор, пока весь HTML-контент страницы не будет обработан браузером. Это полезно, если скрипты зависят друг от друга или от содержимого страницы.
Таким образом, атрибут «async» подходит для независимых скриптов, которые можно выполнять параллельно, в то время как атрибут «defer» подходит для скриптов, которые зависят от порядка выполнения и контента страницы.
Эти методы помогают улучшить производительность и восприятие пользователей при загрузке веб-страниц.
Важно! Атрибуты «defer» и «async» доступны только для внешних скриптов (с тегом src=»»). Они не будут выполняться во внутренних скриптах ().
(1).jpg)
Итак, в этом руководстве вы узнали, что внедрение JavaScript в HTML предоставляет веб-разработчикам мощный инструмент для создания интерактивных и динамичных веб-страниц. С помощью этой техники они могут улучшить пользовательский опыт, добавить функциональность и сделать веб-сайты более отзывчивыми.
Правильное использование JavaScript в HTML открывает двери к бесконечным возможностям для создания более современных и удобных веб-приложений.