Comments 30
Скоро на JS мы сможем написать что угодно свое с блекджеком и шлю печенюшками :)
Ок, но почему JVM? Хотя… не худший вариант.
Вообще есть такая тенденция, что JS — это как ассемблер. Я себе при этом кажусь динозавром, который не хочет переходить на C, т.к. «я и на ассемблере все могу».
Вообще есть такая тенденция, что JS — это как ассемблер. Я себе при этом кажусь динозавром, который не хочет переходить на C, т.к. «я и на ассемблере все могу».
Вообще, мне кажется, что это здравая мысль.
Ведь сейчас разработчики часто всячески стараются ужать яваскриптовые файлы по максимуму. Так почему бы сразу не преобразовывать их в какой-то байт код, который смогут обрабатывать все браузеры?
Но тут опять встаёт вопрос о поддержке всеми браузерами, поэтому раскатывать губу пока не буду :o)
Ведь сейчас разработчики часто всячески стараются ужать яваскриптовые файлы по максимуму. Так почему бы сразу не преобразовывать их в какой-то байт код, который смогут обрабатывать все браузеры?
Но тут опять встаёт вопрос о поддержке всеми браузерами, поэтому раскатывать губу пока не буду :o)
По его мнению, вместе с движком для рендеринга JavaScript в состав браузеров нужно включать виртуальную машину, которая позволит запускать программы на любом языке программирования.Ну есть же гугловский NaCL. На него, кстати, уже портанули Mono, так что можно писать на C#, да и явовский код через IKVM вполне реально запустить.
Кстати, не такая уж далёкая от практики идея. Я сейчас занимаюсь чем-то похожим (пишу преобразователь байткода в JS) с вполне практической целью. Всё началось, когда я задумался, как в своём фреймворке сделать валидацию форм так, чтобы не надо было дублировать код на сервере (Java) и на клиенте (JavaScript). Всяческие аннотации для типовых случаев не всегда спасают, плюс они как-то плохо сочетались с локализацией. В итоге мысль пошла именно в сторону преобразования байт-кода в JS. И тут открылись ещё несколько интересных вещей:
1. Помимо валидации, на клиент можно тащить ту часть логики, которая не зависит от БД. Например, в форме редактирования статьи есть кнопка «предпросмотр», которая без JS просто отправляет форму на сервер, а сервер формирует ту же страницу редактирования, но уже с предпросмотром статьи. Фактически, от сервера тут требуется распарсить вики-разметку и по ней сгенерировать HTML. Это можно вынести на клиент. Опять же, вынести можно автоматически.
2. Аналогично, научить генерировать JavaScript можно шаблонизатор. Эту возможность я планирую использовать всё для той же обработки форм. На кнопку отправки формы ставится обработчик. Этот обработчик делает AJAX-запрос, который сервер обрабатывает и возвращает параметры, назначенные шаблону, вместо того, чтобы рендерить шаблон. По этим параметрам браузер сам перерисует части страницы, которые изменились. Получаем AJAX, ничего специально для этого не дописывая. При этом можно и отключить JS — в этом случае генерацию страниц возьмёт на себя сервер.
Вообще, странно, что до сих пор такие штуки больше похожи на игрушки. Вон, делают же javascript-бэкэнд для LLVM, а кроме как поиграться никто не рассматривает. Впрочем, с Java всё равно интереснее, так как байт-код можно получить прямо в рантайме.
1. Помимо валидации, на клиент можно тащить ту часть логики, которая не зависит от БД. Например, в форме редактирования статьи есть кнопка «предпросмотр», которая без JS просто отправляет форму на сервер, а сервер формирует ту же страницу редактирования, но уже с предпросмотром статьи. Фактически, от сервера тут требуется распарсить вики-разметку и по ней сгенерировать HTML. Это можно вынести на клиент. Опять же, вынести можно автоматически.
2. Аналогично, научить генерировать JavaScript можно шаблонизатор. Эту возможность я планирую использовать всё для той же обработки форм. На кнопку отправки формы ставится обработчик. Этот обработчик делает AJAX-запрос, который сервер обрабатывает и возвращает параметры, назначенные шаблону, вместо того, чтобы рендерить шаблон. По этим параметрам браузер сам перерисует части страницы, которые изменились. Получаем AJAX, ничего специально для этого не дописывая. При этом можно и отключить JS — в этом случае генерацию страниц возьмёт на себя сервер.
Вообще, странно, что до сих пор такие штуки больше похожи на игрушки. Вон, делают же javascript-бэкэнд для LLVM, а кроме как поиграться никто не рассматривает. Впрочем, с Java всё равно интереснее, так как байт-код можно получить прямо в рантайме.
Может пригодится:
Closure Templates/ — шаблонизатор от Гугла. Файл шаблона может быть как использован из Java кода на сервере, так и преобразован в JavaScript код для выполнения на клиенте.
Closure Templates/ — шаблонизатор от Гугла. Файл шаблона может быть как использован из Java кода на сервере, так и преобразован в JavaScript код для выполнения на клиенте.
Да уже давно свой шаблонизатор есть. Там всё очень от гугловского подхода отличается. Хотя бы тем, что это не «шаблонизатор, который может быть использован из JavaScript и Java». Я не использую свой шаблонизатор из JavaScript. Я заставляю его на сервере генерировать HTML, а на клиенте — перестраивать уже готовый HTML согласно изменившимся параметрам.
А можно на сервере реализовать на Javascript-е и не извращаться так
Не, JavaScript неудобен своей динамической типизированностью. Кроме того, остаётся не совсем ясным, как автоматически вынести логику, реализованную на сервере на javascript, на клиент. В Java есть аннотации и т.п. Можно прочитать байт-код. Можно через reflection API поковыряться к любом классе. А в javascript, где всего этого нет, даже и не знаю как поступить…
Почему на игрушки, есть же GWT тот же, в котором яву в js гоняют уже давно. Вне веба ikvm тоже достаточно популярен.
Я как-то делал концепты полноценных сайтов для заказчика в виде:
— html+js — фронтэнд и бэкэнд
— mongo как хранилище.
Благо — монго имеет rest интерфейс.
В результате все довольны. Потрачено минимум времени и сил. Что то даже в таком виде в продакшен ушло
— html+js — фронтэнд и бэкэнд
— mongo как хранилище.
Благо — монго имеет rest интерфейс.
В результате все довольны. Потрачено минимум времени и сил. Что то даже в таком виде в продакшен ушло
Не-не-не, это плохо согласуется с идеологией веба. У веба идеология — REST. Т.е. каждая страница — это ресурс со своим адресом, причём всё это без состояния. Чем это хорошо — у любой страницы есть адрес, если нужно поделиться интересной веб-страницей — достаточно просто кинуть ссылку на неё. Поэтому в своё время веб и стал столь популярен и фактически среди масс стал синонимом слова «интернет». А тут дали людям в руки инструмент, так они делают свой браузер внутри браузера, только ущербный. Сайт вида «статический HTML с JS, который мастер-на-все-руки» хорош только в том случае, если это корпоративный интрасайт, потому что быстро разрабатывать, но нет специфических требований, которые идут от «большого» интернета. Причём, если это уж корпоративное ПО, то его лучше писать на GWT/Script#.
Я тут подумал… Ведь это будет просто вещью для всякого рода банков, которые для выполнения различных операций требуют электронную подпись! Если раньше они требовали Java, то теперь тот же код без портирования смогут выполнить на JavaScript. Охват аудитории больше — больше довольных клиентов банка.
если можно сделать так, что бы виртуальная машина имела такие возможности, и была бы реализована на javascript, то почему просто не реализовать это на javascript? минус только один — два кода варианта кода написать. Но наверное не зря они полноценную яву требуют (а может и зря, я не знаю что там для чего нужно, что бы эту электронную подпись сделать).
А чем сам JVM не подходит как виртуальная машина? Для нее уже сейчас можно писать на огромнейшей куче языков en.wikipedia.org/wiki/List_of_JVM_languages о существование которых я даже не подозревал. Лучше бы api из jvm в браузер попилил бы там, или стабильность jvm в браузерах.
Есть проблема: сейчас правами на Java распоряжается Oracle. Так что сейчас завязывать браузеры на Java никто не будет.
Ну вообще-то Java Virtual Machine != Java, да и реализаций её пруд пруди en.wikipedia.org/wiki/List_of_Java_virtual_machines
Реализаций-то много, да вот только стабильных и производительных — не очень. И, что главное, для Java 7 правила лицензии поменялись. Или вы не видели, какой удобной стала установка Oracl'овской версии под Linux? )
Об этом и речь, что лучше чем плодить очередную нафиг никому не нужную фигню в жанре «because i can», лучше допилить то что уже и так есть.
Не вижу проблем с установкой явы под линуксом. OpenJDK как был по умолчанию так и остался. А если хочется оракловой явы, то и раньше её нужно было руками ставить. И вообще ораклы заявили, что эталонной реализацией явы является OpenJDK. А оаркловая ява позиционируется как проприетарное расширение для корпоративных пользователей. Вот никто же не жалуется на IBM, что у них есть проприетарная ява, кому надо те используют. Теперь нужно привыкать, что есть проприетарная ява и свободная. И если не нравится, что разработка OpenJDK управляется ораклом, то форкните код, ведь лицензия GPL. ikvm как раз так и поступили, коды классов выдрали оттуда, и запускают на дотнете… правда зачем это было нужно остается вопросом. Но все ровно круто :)
Как же я надеюсь, что такие штуки игрушками останутся. А то неосиляторы вместо изучения JS'а будут наводнять веб тормозными чудищами.
Может быть лет через 10, на людей которые будут писать на чистом HTML и Javascript, все будут смотреть с непониманием )
Меня такая тенденция больше огорчает. Эксперименты — это конечно здорово, но из-за распространённости js появляются тенденции с которыми приходится считаться (например создание аналогов десктопных приложений, платформ). По мне уж лучше строить будущее веб и не только приложений на основе кросплатформенных платформ и типизированных языков (.NET, Java). Что-нибудь вроде открытого WPF было бы просто супер
js сейчас вполне себе компилируемый язык программирования и по скорости он уже почти сравнялся с java. Я гонял тестовые проги на node.js. В принципе он не сильно медленее С++ сейчас работает на числодробильных задачах. А универсальной платформой мог бы оказаться llvm конечно. Но лучше уж будет в вебе один ЯП, один язык для разметки и один язык для стилей, чем ужасный зоопарк.
Sign up to leave a comment.
JVM на JavaScript