В случае с майнкрафтом виноват крайне кривой код, а не джава. Там используется OpenGL десятилетней, если не больше, давности, не используются шейдеры, VBO.
Читайте код внимательнее, JAVA_HOME там не обязательна.
Чтоб написать кроссплатформенно, читайте исходники лаунчера из OpenJDK.
Библиотеки включить в программу, вероятно, можно, но это мазохизм какой-то будет. Ибо там нужна не одна какая-то библиотека, а весь JRE, который весит мегабайт так 150
Да-да, либу к проекту подключить не нужно, ее нужно линковать в рантайме. Если прям совсем сократить код (убрать всю кроссплатформенность, выбор правильной JVM из нескольких и обработку ошибок), то вы должны написать что-то типа этого:
#define JVM_DLL "libjvm.so"
#define JAVA_DLL "libjava.so"
typedef jint (JNICALL CreateJavaVM_t)(JavaVM **pvm, void **env, void *args);
char libjava[PATH_MAX];
char jrepath[PATH_MAX];
Добавьте в текст вопроса конкретики побольше. Вопрос, на самом деле, довольно сложный. Ну то есть, вопрос, как по-нормальному динамически загружать либу на всех платформах. Ибо при сборке JNI_CreateJavaVM не слинковать (ну, т.е. слинковать то можно, но тогда jvm.so как символ в таблицу импорта попадет и будет искаться в PATH при запуске. а ее там нету). Надо находить jvm.so, подключать через dlopen, и оттуда уже JNI_CreateJavaVM вызывать. Если это то, что вам нужно, могу подробнее написать. Хотя у меня самого там говнокод знатный=) За нормальным кодом нужно в исходники OpenJDK лезть. Исходники лаунчера лежат в /jdk/src/share/bin и /jdk/src/linux/bin. Кода там не то чтоб прям слишком много...
Это библиотека? Вроде ASM? А нет GUI утилиты вроде reJ или JBE? Ну или консольного ассемблера. У самого недавно та же задача стояла, так и не нашел годного инструмента.
Это уже интереснее. С таким я раньше не сталкивался. Здесь есть ответ: stackoverflow.com/questions/5206619/jarinputstream... Говорят, эклипс по-своему компонует жарку, устанавливает собственный загрузчик и url протокол 'rsrc'. При экспорте проекта снимите галку с 'Package required libraries into generated JAR'. Вроде должно помочь. Сам не пробовал, собираю через gradle. Эклипс так то IDE, а не build tool.
Уважаемый, вы написали какую-то хрень. В Java 1.7 блок finally стал практически не нужен, для автоматического закрытия потока используется конструкция try (InputStream is = ...) {...}. Чтобы обработать сразу все возможные исключение, нужно перехватывать Exception, а не каждый отдельно его подкласс. И обработка обычно весьма тривиальна, вроде e.printStackTrace(); или logger.warn("...", e);
Мне непонятно только одно: почему если люди не хотят читать книжки, то они обязательно докучают всем своими глупыми вопросами? Я тоже книжек не читал и учил Java методом постоянного гугления, но ни одного вопроса ни на одном форуме или Q&A я не задал. Если что-то было непонятно, мог сутками сидеть не вставая, гуглить, читать статьи, искать ответы. Я знал, что вопросы возникают потому, что я не прочитал 1000 страниц какого-нибудь Шилдта, и не имею права никому их задавать. Почему же вы считаете иначе? К слову, настолько примитивные вещи как то, что аргументы передаются по значению, а не по ссылке, нужно знать с первого дня, а лучше еще до знакомства с Java. Как вы умудрялись спрашивать что-то про Spring (предыдущим вопросом), если не знаете таких примитивных вещей?
Что за idResult вообще? У вас в коде эта переменная не объявлена, но используется. Как так? Это ошибка компиляции должна быть, и не исключение в рантайме.
@beduin01 Java не тормозит, а просто жрет много ресурсов и долго разгоняется (пока JIT соберет достаточно статистики). По производительности опережает большинство языков того же уровня абстракции, в том числе и Python. Не знаю как в D, вполне вероятно, что достаточно разогнавшись опрережает и его (если не говорить про системный уровень), ибо компилятор не в состоянии собрать столько статистики, сколько JIT. Java не особо прижилась на десктопах все по тем же причинам - долго разгоняется и жрет много ресурсов на тот же JIT и сборщик мусора. На андроиде используются другие JVM, призванные решить эти проблемы. ART вообще норм, заранее комилит код, и JIT так же использует. Но для холиварщиков все это не аргументы, обычно они совершенно не разбираются в технологиях, которые поносят. Особенно JavaНенавистники. За сим я прощаюсь, выводы за вами.
Ключевое слово - "сходу". Ну и вышеописанными продуктами никогда не пользовался, хотя IntelliJ IDEA многие советуют. Все как-то руки не дойдут попробовать.