Я видел несколько интересных вопросов и ответов о программном создании файлов Jar из других файлов Jar. «Машины, делающие машины», если хотите.
Это вызвало у меня вопрос новичка: можете ли вы создать исполняемый файл Jar из String без предварительного вывода его в исходный файл или временный файл? Я гуглил вопрос и не нашел ответа, в основном потому, что не уверен, где искать.
В любом случае, иллюстрация может помочь объяснить мой вопрос. Скажем, у меня есть что-то вроде этого:
String newClass = "class testing{ \n"+
" public static void main(String args[]){ \n"+
" System.out.println(\"This works!\"); \n"+
" } \n"+
"}";
Могу ли я скомпилировать это в исполняемый файл Jar без предварительного вывода его в файл .java или во временный файл? И затем, когда я дважды щелкну по нему на выходе Jar, я получу окно консоли с надписью «Это работает!»? (Конечно, в приведенном выше коде нет паузы, поэтому я бы ее не увидел.)
По сути, мое любопытство проистекает из моего интереса, могут ли люди теоретически создавать программы, даже если исходный код никогда не касался их жесткого диска. Я знаю, что люди могут декомпилировать программы, а что нет; но все же это кажется законным вопросом. Программы дешифрования, например, которые могут хранить ключ, введенный пользователем; или пользователь, который покупает программу онлайн, которая регистрируется для них на лету.