Есть ли программа для чтения байт-кода Java, реализованная в javascript?

Я знаю, что существует множество библиотек, которые считывают байт-коды, написанные на Java. Кто-нибудь знает о библиотеке байт-кода, реализованной в Javascript?


person vkraemer    schedule 15.12.2010    source источник
comment
Что вы хотите с этим делать? Читать байт-коды и выгружать их? Анализировать их?   -  person Pointy    schedule 16.12.2010
comment
узнайте классы и методы, используемые в файле jar на моем локальном диске...   -  person vkraemer    schedule 16.12.2010
comment
+1 за совершенно правильный вопрос, с которым, похоже, никто не может справиться, не подвергая сомнению ваши мотивы.   -  person z5h    schedule 16.12.2010
comment
Есть разница между вопросом о мотивах и вопросом о намерениях (что вы хотите сделать? и почему вы хотите это сделать?).   -  person Zecc    schedule 16.12.2010
comment
мотив: расширить что-то вроде jarfinder.com, findjar.com и другие, чтобы быстро ответить на запрос, подобный этому: stackoverflow.com/questions/4417820/. Доставка всей банки на место для анализа кажется расточительной. Кажется подделкой, что javascript не может выполнять задачу, которую простой html input type=file ежедневно выполняет по всему Интернету.   -  person vkraemer    schedule 16.12.2010
comment
Да, было бы неплохо, если бы браузеры позволяли javascript фактически читать содержимое файлов, выбранных с помощью ввода HTML. К сожалению, нет. Я даже не думаю, что ActiveX позволяет читать двоичные файлы.   -  person StriplingWarrior    schedule 17.12.2010


Ответы (3)


Поскольку javascript обычно запускается внутри браузера, он, как правило, не может считывать фактические байты из файлов, что делает его менее чем идеальным для чтения байтов java. Если вы каким-то образом закодировали байтовые коды в форме, которую может прочитать javascript, что вы ожидаете от библиотеки? Можете ли вы предоставить более подробную информацию о том, что вы пытаетесь сделать?

Если вы хотите писать код на Java и запускать его в браузере, взгляните на GWT. Он использует Java для перекомпиляции вашего байт-кода в оптимизированный javascript.

Изменить

Основываясь на вашем добавленном комментарии, вы надеетесь «узнать классы и методы, используемые в файле jar на моем локальном диске»:

Поскольку javascript не может получить доступ к файлам на локальном диске (по крайней мере, без использования ActiveX), технология просто не позволит сделать это. Есть ли причина, по которой вы хотели использовать для этого javascript, а не java?

И, пожалуйста, примите мои извинения, если это прозвучало так, будто я сомневаюсь в ваших мотивах. Я действительно просто хотел получить достаточно информации, чтобы иметь возможность адекватно ответить на ваш вопрос.

person StriplingWarrior    schedule 15.12.2010
comment
Не хотел бы downvoter объяснить свое возражение против этого ответа? - person StriplingWarrior; 16.12.2010
comment
Я не был тем, кто проголосовал против, но я просто хотел бы сказать, что вполне возможно запускать JavaScript вне контекста браузера и иметь доступ к файлам на диске. - person Zecc; 16.12.2010
comment
Я проголосовал против, потому что то, что вы ввели в то время, не было ответом на очень четкий вопрос, который опубликовал оператор. Ваши вопросы относятся к разделу комментариев. Ваше утверждение о принадлежности javascript в браузерах устарело и вводит в заблуждение. Javascript не требует браузера (см. v8, node.js, rhino и т. д.). Я, возможно, пропустил это, но у тебя 5000+ баллов, и я ожидал большего от члена твоего калибра. - person z5h; 16.12.2010
comment
@z5h: Спасибо за объяснение. Я не возражаю против отрицательных голосов, если они объясняются, чтобы я мог учиться у них. Даже член моего калибра не знает всего. Однако в данном случае я не чувствую, что был не прав. Javascript обычно запускается внутри браузера, поэтому, если ОП не планировал использовать специальную структуру, подобную той, которую вы упомянули, то, о чем он просит, невозможно. В таких случаях я часто предлагаю обходные пути. Если он пытался прочитать определенный байт-код, чтобы оценить/запустить его, то GWT мог бы быть подходящим обходным путем. - person StriplingWarrior; 17.12.2010
comment
@z5h: Если нет, мне нужно больше информации, чтобы лучше ответить на вопрос, поэтому я попросил больше деталей. Даже Джон Скит делает такие вещи в своих ответах (stackoverflow.com/questions/4465242/4465266#4465266) . Как выясняется, он не пытается запустить байт-код, но он пытается проверить его из браузера, поэтому правильный ответ: это невозможно сделать с помощью одного javascript. - person StriplingWarrior; 17.12.2010

Обновление:

Похоже, японский проект, на который я пытался сослаться ниже, давно исчез. В любом случае, время прошло, и теперь в Google есть пара ссылок на «jvm in javascript». А именно:


Посмотрите, что я нашел:
http://ejohn.org/blog/running-java-in-javascript/

Это помогает?

Редактировать: к сожалению, похоже, что исходный сайт проекта мертв.
Вы можете попробовать через веб-архив, здесь (на японском, попытался перевести это Google, но я думаю, что это было слишком косвенно :))

Ради бога, если вы перейдете по этой ссылке, запустите загрузку через антивирус.
Я не знаю, заслуживает ли он доверия.

person Zecc    schedule 16.12.2010

Существуют компиляторы, которые могут компилировать Java в JavaScript. В крайнем случае вы можете использовать один из этих компиляторов, чтобы взять дизассемблер байт-кода JVML, написанный на Java, и скомпилировать его в JavaScript. Одним из примеров такого компилятора является GWT.

Точно так же существуют компиляторы, которые могут компилировать байт-код JVML в JavaScript. Опять же, вы можете взять один из вышеперечисленных дизассемблеров байт-кода JVML, написанных на Java, использовать любой компилятор Java-to-JVML (javac, ecj, gcj, …), чтобы скомпилировать его в JVML (т.е. .class файлов) , затем скомпилируйте эти файлы .class в JavaScript.

person Jörg W Mittag    schedule 15.12.2010