Форум программистов, компьютерный форум, киберфорум
Java: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 13.02.2020
Сообщений: 4

Из java байт кода в бинарный код

02.05.2020, 13:56. Показов 2392. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я знаю, наверное не тот раздел, если ошибся - поправте. Есть ли способ как-то "полностью" скомпилировать java код? Я то есть чтоб это был не байт код, а сделать то что делает jvm и скомпилить в бинарный код. Зачем? Чтоб потерять зависимость от jvm, защититься от декомпиляции
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2020, 13:56
Ответы с готовыми решениями:

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

Нужна программа для компиляции в apk из java или байт кода
Подскажите какие программы есть в арсенале android разработчика для этих целей , облазял весь инет не нашёл.

Компиляция C# кода сразу в байт код
Возможно ли скомпилировать простейшую программу Hello World сразу в байт код, минуя MSIL, JIT, CLR? Например как в С++

7
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
02.05.2020, 14:16
Какой смысл использовать Java, если ты хочешь нативную программу? Для защиты от декомпиляции принято использовать обфускацию

Вообще, вроде как возможно подобное сделать. Раньше можно было, по крайней мере. Я чёт не нашёл компиляторов, поддерживающих версии жавы позднее 6
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
02.05.2020, 17:24
Где то пилят какую то хрень которая Яву нативно компилирует. Graalvm кажется
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
02.05.2020, 18:00
Лучший ответ Сообщение было отмечено SubTiming как решение

Решение

Цитата Сообщение от SubTiming Посмотреть сообщение
Есть ли способ как-то "полностью" скомпилировать java код? Я то есть чтоб это был не байт код, а сделать то что делает jvm и скомпилить в бинарный код
Это называется AOT-компиляция (AOT = ahead of time в противоположность JIT = just-in-time).

https://docs.oracle.com/en/jav... jaotc.html (experimental)
https://www.graalvm.org/docs/r... ive-image/ — GraalVM Native Image (по большому счёту тоже experimental)

Есть (или были) ещё какие-то сторонние (в смысле не Sun/Oracle) AOT-компиляторы Java, но я уж не помню названий, да и они, скорее всего, платные.

Если тебе для работы, то забудь, пока ничего готового для production-использования нет. Если просто для себя, то рекомендую посмотреть GraalVM, проект, в целом, интересный.

Добавлено через 3 минуты
Цитата Сообщение от Goongala Посмотреть сообщение
Какой смысл использовать Java, если ты хочешь нативную программу?
Это ортогональные вещи.
1
 Аватар для Goongala
1022 / 562 / 185
Регистрация: 18.08.2013
Сообщений: 2,027
Записей в блоге: 2
02.05.2020, 18:17
korvin_, разве? Ведь жава оч сильно сковывает возможности, если приходится взаимодействовать с системой. Конечно, можно воротить штуки через JNI, но это ж очень заморочно. Куда удобнее выбрать язык, у которого есть доступ к нативным функциям изначально
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
02.05.2020, 18:53
Цитата Сообщение от Goongala Посмотреть сообщение
Ведь жава оч сильно сковывает возможности, если приходится взаимодействовать с системой. Конечно, можно воротить штуки через JNI, но это ж очень заморочно.
Java-проблемы.

Цитата Сообщение от Goongala Посмотреть сообщение
Куда удобнее выбрать язык, у которого есть доступ к нативным функциям изначально
Т.е. C/C++?

Но так или иначе, какое это всё имеет отношение к AOT/JIT компиляции?
0
Модератор
Эксперт Java
 Аватар для alecss131
2850 / 1358 / 405
Регистрация: 11.08.2017
Сообщений: 4,332
Записей в блоге: 2
02.05.2020, 20:33
Не обязательно самому использовать jni/jna, есть куча готовых библиотек которые по сути являются jni/jna обертками нативных библиотек, например пакет lwjgl чисто такой. По опыту opengl/vulkan на java скажу что еще пояаляются пляски с памятью, так как нативы не имеют доступа к куче а gc не имеет доступа к памяти вне кучи, а для раьоты с нативами нужна как раз память вне кучи, выделить не проблема, но нужно не забывать чистить за собой, а то будет утечка памяти. Да и дебаг с использованием jni крайне неинформативный, прога крашится и минидамп (если включен), никакого стектрейса и указания где ошибка, только в описании очень неточная и странная отсылка к участку кода. Если память считал то указатель сдвигается и для повторного чтения его надо возвращать руками обратно, вроде эта память не видна при дебаге.

В нативы вроде компилирует еще и с#, хотя по опыту в юнити он декомпилируется получше джавы))) Не знаю может это особенности движка и без его использования все куда лучше. Но язык не сильно отличается от джавы по синиаксису и сложности.

А так имхо да, правильно насироенная обфускация прилично портит декомпилированный код, что фиг разберешься что да как. И если нужна нативная программа то логичней использовать язык для этого предназначенный, а не избавляться от главной "фишки" джавы. В целом даже нативный код прилично сложно защитить от взлома, сильно усложнить может только vm (не jvm). Сейчас скорости инета у всех достаточные что привязка к jvm (а точнее jre) не проблема, можно будет просто jre вшивать в программу и писать на нативном языке простенький лаунчер на полтора десятка строк кода который будет запускать программу без установленной jre, пара сотен мб не так много, да и в новых версиях можно собрать компактней jre под конкретную программу.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
03.05.2020, 00:28
Цитата Сообщение от alecss131 Посмотреть сообщение
И если нужна нативная программа то логичней использовать язык для этого предназначенный
Почему это логичней и чем Java менее предназначена для этого? А Kotlin (Native) — предназначен?

Цитата Сообщение от alecss131 Посмотреть сообщение
а не избавляться от главной "фишки" джавы
И какая же «фишка» джавы — главная?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2020, 00:28
Помогаю со студенческими работами здесь

Перевод текста в бинарный код (Java)
Необходимо перевести текст в бинарный код. String text= new String((Files.readAllBytes(file.toPath())),"UTF-8"); ...

Утилита, которая транслирует байт код java в ЕХЕ файл.
Hi all недавно в форуме мелькала тема о утилите которая транслируют байт-код java в исполняемый exe файл никак не могу найти...

Передача переменной из кода JS в код Java SE
Пишу десктоп-приложение с GUI на html+js, и вот возник вопрос: возможно ли передавать данные из кода js в код Java? т.к. на js нельзя...

Как записать в бинарный файл пустой байт
Приветствую вас. Вот какая проблема, есть бинарный файл его структура такова, 55 байт первые 4 байта float потом 25 чисел short по два...

Можно ли осуществить вставку ассемблерного кода непосредственно в код Java?
Гуру, помогите!! Можно ли осуществить вставку ассемблерного кода непосредственно в код Java? Если можно, то как?:help: Заранее спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru