Доступен (https://github.com/leibnitz27/cfr/releases) новый выпуск проекта CFR (https://www.benf.org/other/cfr/) (Class File Reader), в рамках которого развивается декомпилятор байткода виртуальной машины JVM, позволяющий воссоздать содержимое скомпилированных классов из jar-файлов в форме кода на языке Java. Поддерживается декомпиляция современных возможностей Java, включая большую часть элементов Java 9, 10 и 12. CFR также может декомпилировать в Java содержимое файлов с классами и от других языков, использующих JVM, таких как Kotlin, Scala и Groovy. Код проекта написан на языке Java и распространяется (https://github.com/leibnitz27/cfr) под лицензией MIT.URL: https://github.com/leibnitz27/cfr/releases
Новость: https://www.opennet.ru/opennews/art.shtml?num=51181
На что угодно пойдут лишь бы open source не использовать!
MIT - не опенсорс? Да ладно? Тебе где-то она код запрещает использовать?
При чём тут лицензия на CFR?
А я думал, что java как IL код c# декомпилируется. Там вообще практически идентичный оригиналу код получается.
Правильно думал. А если забыли убрать отладочную информацию - можно даже имена переменных восстановить.
Смысл? Кроме Minecraft ни одного сложного софта на Java не знаю.
Intellij? Eclipse? NetBeans?
80 GB памяти должно хватить, почти не тормозит.
intellij idea летает на 768MiB RAM
Вы из Эстонии?
Можно узнать вашу ос на которой вы в idea пишите под jvm имея 768 mib ram. + размер swap файла
Из виртуалки с религиозно-чистым в Венде.
Arch Linux
swap 24GiB
>Вы из Эстонии? Можно узнать вашу ос на которой вы в idea пишите под jvm имея 768 mib ramПро 768МБ это бред, конечно, но на 4ГБ работать вполне нормально, если рядом хромы/шромы не открывать. А это тазик 10-15 летней давности, который жалко выкидывать, пока сам не сломался.
Если у прогера на работе стоит ПК с меньше чем 32ГБ ОЗУ, надо работу менять, там небось и на туалетной бумаге с мылом экономят.
Летает, но низенько-низенько
Не знаю как там Intellij Idea, но вот JetBrains GoLand:ps axw -o rss,cmd | sort -n | grep java | grep GoLand | awk '{print $1}'
1627980(это в килобайтах)
Ну предложите альтернативу полнофункциональному IDE для Java который не будет есть 80 Гб.
Новый Eclipse мало того, что с кучей ошибок, так еще и адски тормозит! Или г*вно новые Java.
ИДЕ, кстати, вообще склонны к нестабильности. С Эклипсом сие вообще так давно, что можно сказать: всегда.У других - получьше.
Не знаешь, потому что Java-приложения, которые считают лично твои (подчеркиваю: лично твои) деньги, ты не скачиваешь бесплатно без смс себе на свой комп, а работают в том банке, на котором лично твои (подчеркиваю: лично твои) деньги лежат.
Складывать и вычитать с правильной точностью - сложная задача? Да и какая разница, что там используют, лишь бы работало норм, а работает многих через одно место и по случайности там и жаба ииспользуется. Совпадение, правда?
> Складывать и вычитать с правильной точностью - сложная задача?Сложная — делать миллионы сложений и вычитаний одновременно, чтобы это ещё хотя бы выглядело безопасно. И не только их, так как ещё существует фискальная нагрузка, сложные проценты по вкладам и кредитам, конвертация валют и т. д.
С этой задачей и дотнет, как минимум, не хуже справляется.
> дотнетТе же яйца, только в профиль.
А новость про Яву
> а работают в том банкеи вот сейчас ты расскажешь про смысл и целесообразность декомпиляции тех Java-приложений, что работают в банке. В отличие от майнкрафта для таких приложений писать и использовать моды может быть слегка затруднительно.
о, вот там как раз бывает очень большой смысл - когда уже не то что разработчика, а еще два поколения пришедших после него закатали в бетон в подвале банка под серверной (чтоб умилостивить электронных богов и обеспечить много-много девяток - кстати, помогает), куда делись исходники уже и выяснять бесполезно, а крайне надо что-то поправить по мелочи, и, желательно, не стать следующим приношением богу девяток.> В отличие от майнкрафта для таких приложений писать и использовать моды может быть слегка
> затруднительно.иногда и не слегка. Но очень-очень надо, потому что заменять тот код полностью - это вообще катастрофа.
И кто на такую работу вообще согласится? Зачем это надо вообще простому смертному?
А так, анекдот неплохой получился.
>когда уже не то что разработчика, а еще два поколения пришедших после него закатали в бетон в подвале банка под сервернойтогда там не java, а cobol
> Не знаешь, потому что Java-приложения, которые считают лично твои (подчеркиваю: лично твои)
> деньги, ты не скачиваешь бесплатно без смс себе на свой комп,
> а работают в том банке, на котором лично твои (подчеркиваю: лично
> твои) деньги лежат.Уверен? https://picua.org/images/2019/07/28/dc659bb44fad8f66fe415521...
"банк".equals("банкомат") // => falseтвоя установленная-adhoc винда в банкомате -- лишь фронтэнд для приложений на Java
Банкомат этого банка должен работать на Firefox OS, и связь с банком держать через Tor :)
я такое относительно часто вижу при чем в разных странах. глючит, но все равно пихают. то банкомат, то почтомат, то реклама в магазинах. под линукс программы тоже глючат. видел такое как-то в медцентре.
>лично твоиНастоящие владельцы банков опеннет не читают, и тем более - не комментируют. Те деньги, которые лежат в банке - они не "твои", а того банка.
Кстати, да. Попробовать их обналичить много в один заход и сразу поймёшь, кто кого за какое место крепко схватил. )))
Ну не совсем. Тыж наверное их на счет кладешь и может даже хочешь все эти проценты и кешбеки получать, а это значит что банк их проворачивает и не возможность выдать большую сумму разом это нормально. Хочешь получить сразу все клади в ячейку, положил забрал когда захотел.
А если не хочешь - то всё равно морока. Собственно, это одна из причин появления крипты - то, что в банке, не особо получается считать "своими деньгами"
А в крипте что получается? Как Главный Разработчик (и его команда), лицо проекта, решил - так все и приняли. Потому что пользоваться продуктом, который не имеет обновлений беспонтово, а обновления надо разрабатывать, и кроме Главного Разработчика заниматься этим никто не хочет. Весь опенсорс по этому принципу построен. Где теперь Etherium Classic?
> Why?
> For fun. That's the entire reason. I moved from a C++ job to a Java job, and writing a decompiler seemed like a good way to learn the java ecosystem... - there's a lot of published material out there on coin, etc, but not a vast amount on what's going on with the bytecode...
> But... why java 6? This isn't 1996!
> Java 6 is still amazingly widely installed. Because CFR has its own implementations of all of the class file features / jls understanding, it doesn't actually need java 8 to understand java 8 features! (Though occasionally I find myself missing syntactic sugar!)https://www.benf.org/other/cfr/faq.html
Любопытно, что он уже 6+ лет этим занимается, и ему ещё не надоело пилить это just for fun, причём судя по github'у в одно лицо. Потрясающе. Мало лишь кто так может.
Вот видишь, какое это сложное дело - "to learn the java ecosystem". Это не какие-то там месячные курсы вебкодинга.
>Кроме Minecraft ни одного сложного софта на Java не знаю.Эталонный софт для сети I2P.
а как же любимый в постсовке l2j?
причем многие продают свои поделки без исходников и с привязкой к железу - вот там как раз сабж пригодится
> Кроме Minecraft ни одного сложного софта на Java не знаюЭто характеризует скорее тебя, чем Java
>Смысл? Кроме Minecraft ни одного сложного софта на Java не знаю.Зайди на сайт НASA и удивись - управление многими аппаратами написано на яве, в свое время гонял на эмуляторе первого марсохода, 400 мгб подкачки ,786 мгб озу,амд 750, но работало и под линь и под винду, журнал CHIP выкладывал.
А есть на Java нормальный модуль, чтобы под web писать по типу Sinatra (у Ruby), без классов, наследования, dependency injection и прочей ерунды?
Grails
JRuby
Если не хочешь "классов, наследования, dependency injection и прочей ерунды", то рекомендую оставаться и дальше на node.js. Java заточен под серьезные приложения, а не на твои однопоточные хелловорлды.
> Если не хочешь "классов, наследования, dependency injection и прочей ерунды", то рекомендую оставаться и дальше на node.jsНу, во-первых в JavaScript есть классы, наследование и dependency injection. Накой только последний в статически типизируемом языке не понятно, наверное, чтобы ошибок в рантайме было больше.
> Java заточен под серьезные приложения, а не на твои однопоточные хелловорлды.
На многопоточные хеллоуворлды? На каждый запрос новый поток? Вы не из Atlassian случайно?
> в JavaScript есть классы, наследование и dependency injectionГде тут в этом официальном[1] хелловорлде классы, наследования и dependency injection? --
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');> На каждый запрос новый поток?
Node.js bitchez dunno 'bout my thread poolz.
[1] https://web.archive.org/web/20130201004248/http://nodejs.org/
> Где тут в этом официальном[1] хелловорлде классы, наследования и dependency injection?А с чего ты взял, что я про официальную документацию к Node.js? И причем тут дока по Node.js, если мы говорим про JavaScript? Клоун.
> Node.js bitchez dunno 'bout my thread poolz.Что сказать-то хотел?
> причем тут дока по Node.js, если мы говорим про JavaScript?
>
> Клоун.Спасибо, что подписываешься. Кстати, клован, а как ты собрался на __голом__ яваскрипте веб-сервер писать? Можешь конечно заврапить стд либу нодежс в самописной обертке, которая будет оформлена через "наследования" и DI ("говорим про JavaScript!111 В JavaScript наследования и DI бывают!11111!"), но сомневаюсь, что ты станешь этим заниматься.
> > thread poolz.
> Что сказать-то хотел?Вот зачем тебе сложная Java, если ты и про такую уже достаточно старую технику, как thread pools, не слышал, раз считаешь, что многопоточное приложение обязательно будет выделять новый тред на каждый запрос? Оставайся лучше в понятном игрушечном node.js-мирке, где не придется думать о потоках, — будет примитивная кооперативная многозадачность как в MS DOS. Зато без страшных слов типа "наследование" и DI. (Хотя в JavaScript они и "бывают!11")
Видимо об асинхронном I/O и возможности создавать асинхронные плагины на C++ где внутри для простоты можно в тот же Thread Pool и возвращать необходимые результаты в основном потоке Вы не догадываетесь.
> Видимо об асинхронном I/O <...> Вы не догадываетесьЭто и есть кооперативная многозадачность. Пока не отработает до конца один коллбэк, другой коллбэк вызван не будет в принципе.
Вопрос интересный, но все же. Что Вы собираетесь делать сверхъестественного в обработчике на стороне JS? Переворачивать байты отсюда-туда? 95% веб-приложений это взять/положить в базу. Считать сложные вычисления тогда уж нужно из модуля на C++, банальщину оставить JS. Да есть старый добрый модуль Cluster где можно поднять по Instance на ядро, кто помнит CGI - прослезился. Не веб-разработчик, интересно было бы услышать о случаях где этот Ваш Энтерпрайз действительно нужен и мартышка с Node, PHP, Ruby не справится. В основном пишу на плюсах и не веб, просветите. Ворочял байты в Java - сомнительное удовольствие, от языка который не скрипт всегда ожидаю большего.
Как только "взять-положить в базу" оказывается сложной бизнес-логикой (да хоть бухгалтерия, erp и прочее) - резко появляется сверхъестественное. То есть, считай, любой корпоративный софт - они все сейчас на веб-морды поуходили.
> Накой только последний в статически типизируемом языке не понятно, наверное, чтобы ошибок в рантайме было больше.Очень интересное мнение, можно подоробнее?
А есть у Роллс-Ройса нормальная модель, без хрома, кожи, перегородки между водителем и пассажиром, вот этой дуры на капоте и прочей ерунды?
Ваи шашечки или ехать?
Да, называется Аурус.
Таврия
Была. МиГ-15.
Sparkjava, Javalin, Jooby
Писать на Java без классов - это интересное желание. Еще, пожалуйста, пчел без меда и водку без спирта.Что касается поменьше бойлерплейта и побольше дела - www.playframework.com
Неплохой метрикой для такого рода программ оказалось бы похожесть результата применения декомпилятора к скомпилированной версии самого себя против истинного исходного кода.
И? К чему ты это? Хочешь сказать что сейчас оценивают как-то иначе (ну кроме нюанаса "самого себя". Я не понимаю в чём ценность этого уточнения)?
>истинного исходного кодаИстинный исходник лежит на гитхаб. Если там бекдоров нет - то и в программе нет.
В чём отличие от JD-Core и FernFlower?
JD-Core - gpl. А сабж mit.
> JD-Core - gpl. А сабж mit.Да тут надо смотреть еще.