LINUX.ORG.RU

Статья «Java to EXE» на Javalobby


0

0

В статье рассматриваются различные методы преобразований Java-приложений в native исполняемые файлы: от программ-обёрток (wrappers) до статических Java-компиляторов. Обсуждаются плюсы и минусы каждого подхода, при этом делается внушительный обзор существующих коммерческих и бесплатных программ-утилит.

>>> Статья

anonymous

Проверено: Shaman007 ()
Ответ на: комментарий от mutronix

Эээ...
А ты пробовал делать то, что делает Элджер?
Я имею в виду использовать С++ как инструмент для создания новых языков

Fedor ★★★
()
Ответ на: комментарий от mutronix

Если цпп --- это инструмент для создания новых языков, то доопределить сам цпп должно быть тем более легко. Приведи пожалуйста код, добавляющий в цпп синтаксическую конструкцию for-each. Это тот же самый for только он принимает на входе массив и обрабатывает его поэлементно. На каждом этапе в одной стандартной переменной находится номер элемента массива, а в другой --- его содержимое. Т.е. что то вроде этого.

for-each(a){ cout<<"number= " <<n <<" item = "<<item<<endl; }

и если в массиве содержались цифры 1 2 3, то оно выведет

number= 0 item = 1 number= 1 item = 2 number= 2 item = 3

На лиспе такие доопределения делаются с пол--пннка.

ugoday ★★★★★
()
Ответ на: комментарий от Fedor

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

--седайко стюмчик

anonymous
()
Ответ на: комментарий от anonymous

ссаныч иди пость свои ссаные новости на opensolaris.org.ru

--седайко стюмчик

anonymous
()
Ответ на: комментарий от anonymous

>многие говорят про абстракции и при этом мало в этом понимают.

И ты один из них. Управление уровнем абстракции/сложностью приложения --- очень удобный инструмент для решения *прикладынх* . Это видно даже в тех несложных счётно -- экспертных хреновинах, которыми я немножко занимиаюсь.

ugoday ★★★★★
()
Ответ на: комментарий от Idiot

На мой взгляд сравнение C++ и Common Lisp является некорректным. Это совершенно разные подходы к проектированию и кодированию.

Пример задачи просто решаемой на С++ и сложно или неэфективно на Lisp - численные методы во всяких проявлениях. Вы можете долго доказывать, что легко напишите библиотеку для решения различных УрВЧП на Lispе, но, как говаривал небезызвестный товарищ - не верю!

Java - очень хороший язык, но мне там не хватает переопределения операторов, шаблонов и множественного наследования. Причем без шаблонов в большой задаче прожить можно, но множественное наследование помогает существенно упростить задачу.

В Java можно делать implementation интерфейса, но множественное наследование дает возможность минимизировать интерфейс и при этом в родительском классе иметь не виртуальные вспомогательные методы, за счет которых код будет на много короче.

rymis ★★
()
Ответ на: комментарий от ugoday

>for-each(a){ cout<<"number= " <<n <<" item = "<<item<<endl; }
>На лиспе такие доопределения делаются с пол--пннка.

RTFM std::for_each уже давно написан и делает то что нужно.

Вы C++ вообще знаете?

anonymous
()
Ответ на: комментарий от kos

Строго говоря в стандарте компилятора нет такого заголовка windows.h, да и вообще кстати виндовых библиотек ф-ции которых он описывает. Этот заголовок не из стандартной библиотеки, а из win32 sdk:-) Так что с вопросом о его кроссплатформенности, вместе с win api, к M$. Хотите переносимости пользуйтесь qt

stich
()
Ответ на: комментарий от anonymous

>for (i=1, i<100, i++) {}

>Двойка!

for (i=0, i<100, i++) {} ? Так правильно? Так это ошибка потому, что я этой дурью на C++ не маюсь, потому и ошибся. А у тебя видимо написание таких циклов доведено до инстинкта

anonymous
()
Ответ на: комментарий от rymis

>Пример задачи просто решаемой на С++ и сложно или неэфективно на Lisp - численные методы во всяких проявлениях.

А зачем С++ для счётных задач? Классы, темплейты и дры и пры тут не используются. Тут голого С за глаза хватит. Что касается Lisp'а, то обычно тяжёлые вычисления выносятся в отдельную С--либу, а потом линкуются с основной lisp--программой.

ugoday ★★★★★
()
Ответ на: комментарий от Fedor

просто :)
из математиков почти всегда
самые плохие программисты
поэтому математически чистые языки программирования
самые плохие языки программирования
____
написание программ инженерная задача
к филосфии она имеет отдаленное отношение
и абстракции тут инструмент
а не занудная песня математиков
___
абстракции програмирования не есть абстракции
философии или математики

yeolahim
()
Ответ на: комментарий от ugoday

>Приведи пожалуйста код, добавляющий в цпп синтаксическую конструкцию for-each.

Вы будете смеяться, но в с++ есть таки for_each. Курите STL ;) Но из-за отсутсвия синтаксина для лямбды пользоваться им не очень-то удобно.

human0id ★★★
()
Ответ на: комментарий от ugoday

кстати
есть тенденция переносить счетные задачи на c++
в силу белее высокой их эффектности и эфективности по сравнению с фортраном
и как раз там шаблоны и тд и тп
просто счастье
:))
______________
товарисчи
если вы собираетесь быть профессионалами
знайте 3-4-5-6 языков
спорить о преимуществах или недостатках
одного из них сравнивая с единственным который знаешь
верх ИДИОТИЗМА

yeolahim
()
Ответ на: комментарий от yeolahim

> верх ИДИОТИЗМА

седайко стюмчик???

anonymous
()
Ответ на: комментарий от mutronix

> C++ - это на самом деле не столько язык, сколько инструмент для создания ваших собственных языков.

Про Лисп эта фраза была бы истинной. Про C++ - просто лживая реклама. Инструменты метапрограммирования в C++ крайне ограниченны и неполноценны.

> Проблема решается так же элегантно, как это слелал бы настоящий язык типа Smalltalk или Lisp, но при этом ваш процессор не дымится от напряжения, а на Уолл-Стрит не растут акции производителей чипов памяти.

И тут - ложь. По производительности Лисп ничуть не хуже C++, а по memory footprint часто - сильно лучше и компактнее, благодаря некоторым особенностям GC.

Idiot
()
Ответ на: комментарий от anonymous

Все задачи реального мира состоят из абстракций.

Гораздо интереснее и продуктивнее работать с абстракциями "клиент", "счёт", "транзакция", чем с низкоуровневым отстоем типа "класс", "массив", "signleton pattern" и пр.

Так что вам, жабафилам, оправдания нет и не будет. Вы не программируете, а только делаете видимость бурной деятельности.

anonymous
()
Ответ на: комментарий от human0id

Товарищи, не надо меня считать совсем идиотом. Про stl я знаю. Говоря о for_each я хотел сказать, что вот такой код

template<typename _InputIter, typename _Function>
    _Function
    for_each(_InputIter __first, _InputIter __last, _Function __f)
    {
      // concept requirements
      __glibcpp_function_requires(_InputIteratorConcept<_InputIter>)
      for ( ; __first != __last; ++__first)
        __f(*__first);
      return __f;
    }

Не является верхом изящества. А ведь это --- простейшая конструкция. Следовательно при использовании С++ для создания проблемно--ориентированного языка программист умрёт с горя.

ugoday ★★★★★
()
Ответ на: комментарий от rymis

> Пример задачи просто решаемой на С++ и сложно или неэфективно на Lisp - численные методы во всяких проявлениях.

Ложь. Производительность CL в вычислительных задачах не хуже, чем у C++.

> Вы можете долго доказывать, что легко напишите библиотеку для решения различных УрВЧП на Lispе, но, как говаривал небезызвестный товарищ - не верю!

Это от безграмотности и тупости. Бывает...

anonymous
()
Ответ на: комментарий от anonymous

>Гораздо интереснее и продуктивнее работать с абстракциями "клиент", "счёт", "транзакция", чем с низкоуровневым отстоем типа "класс", "массив", "signleton pattern" и пр.

>Так что вам, жабафилам, оправдания нет и не будет. Вы не программируете, а только делаете видимость бурной деятельности.

Не понял импликации.

Напиши класс "клиент", с требуемыми операциями. Это и будет абстракция.

WFrag ★★★★
()
Ответ на: комментарий от yeolahim

> поэтому математически чистые языки программирования самые плохие языки программирования

Слабо этот бредовый взвяк обосновать?

> и абстракции тут инструмент

Вот именно. И куда надо послать язык, этого инструмента не имеющий?

> абстракции програмирования не есть абстракции философии или математики

Обосновывать будешь, ничтожество? Или просто вякаешь?

anonymous
()
Ответ на: комментарий от WFrag

Хотя, да, согласен, не все абстракции можно выразить тем убогим ООП, что есть в Java, при этом не попадая под 10 правило Гринспуна.

WFrag ★★★★
()
Ответ на: комментарий от anonymous

Раз уж тут пошёл такой злостный оффтоп, то подскажите мне, пожалуйста, хороший электронный источник для того, чтобы начать изучать Lisp. Желательно не reference, а именно tutorial.

the_one
()
Ответ на: комментарий от WFrag

Это будет не абстракция, а класс. Хреновина с методами, и т.п. Останется низкоуровневой сущностью, над которой нельзя будет производить непредусмотренные языком операции.

anonymous
()
Ответ на: комментарий от ugoday

>Не является верхом изящества

ну измени имена и выкини то что не понимаешь

template<typename T, typename func>
void for_each(T *beg, T*end, func f)
{
for (T *p=beg; p!=end; ++p)
f(*p);
}

и что в это не изящного?

anonymous
()
Ответ на: комментарий от ugoday

Переносимость - не основное, и не преимущество. Однородность рантайма - преимущество, но оно и не теряется при пре-компиляции.

Idiot
()
Ответ на: комментарий от WFrag

Компактификация, заточенность под выделение cons-ячеек - при активном их выжирании не будет появляться новых страниц, когда известно, что старые скоро наверняка освободятся.

Idiot
()
Ответ на: комментарий от anonymous

Нет. Это будет текст. На любом языке это будет текст. Абстракции - у тебя в голове. :)

>Останется низкоуровневой сущностью, над которой нельзя будет производить непредусмотренные языком операции.

Операция "выдать товар" разве предусмотрена языком?

В общем, я не понимаю в чем проблема. :) По-моему, более-менее объективные параметры языка - это стоимость решения той или иной задачи, стоимость внесения изменений, стоимость внесения изменений сторонним разработчиком. Тут Java, да, не на высоте (ну разве что стоимость внесения изменений сторонним идиотом для программы Java вестимо будет ниже). Остальные рассуждения про абстракции - ИМХО, демагогия.

WFrag ★★★★
()
Ответ на: комментарий от WFrag

Да нет, не демагогия. Ты тормозишь сильно - ты не можешь преобразовывать объект так, как это не предусмотренно языком. Далеко не всё можно представить в виде вызовов методов - это лишь самая примитивная (хоть и наиболее частая) абстракция, которая в реальной жизни встречается. А Java ограничивает тебя применением только этой абстракции, и не даёт возможности сформулировать никакие другие.

Idiot
()
Ответ на: комментарий от Idiot

кокой-то идеот использует мой ник (--седайко стюмчик) для сваих нихароших целей. банит сцука сдесь, а дурак... видимо, он "ограждается" таким образом :) Пипл, не поддавайтесь на провокации!

--седайко стюмчик

anonymous
()
Ответ на: комментарий от Idiot

>Да нет, не демагогия. Ты тормозишь сильно - ты не можешь преобразовывать объект так, как это не предусмотренно языком. Далеко не всё можно представить в виде вызовов методов - это лишь самая примитивная (хоть и наиболее частая) абстракция, которая в реальной жизни встречается. А Java ограничивает тебя применением только этой абстракции, и не даёт возможности сформулировать никакие другие.

Нет. Как я уже говорил, абстракции - они в твоей голове.

Рассмотрим пример:

li.interpret("(print (+ 1 2))");

Что это? Вызов метода с параметром ввиде строки? Или вывод результата сложения двух чисел на языке LISP? По-моему, зависит только от твоего восприятия.

А если я в строку запихаю что-нибудь на LISP-е, например, с замыканиями. Казалось бы, в языке Java нет замыканий! Однако в программе они ведь будут использоваться? И это будет програма на Java. С замыканиями.

Философ из меня, конечно, тот еще :)

WFrag ★★★★
()
Ответ на: комментарий от WFrag

В твоём примере ты уже вышел за рамки языка Java, дополнив его другим DSL-ем. Скорее всего, реализованным крайне неэффективно - потому как в самой Java отсутствуют средства (АБСТРАКЦИИ!!!) для эффективной реализации языков с семантикой, отличной от семантики Java.

Так что да, философ - тот ещё. Описанный тобой пример - это и есть порождение абстракции высшего порядка - введение новой семантики. Но за счёт убожества самого языка Java ты не можешь эту абстракцию реализовать легко и дёшево.

Idiot
()
Ответ на: комментарий от anonymous

Нам известно, что седайко стюмчик - жабофил-идейщик, так что разницы между настоящим жабофилом и поддельным я не вижу. Оба равноглупы.

Idiot
()
Ответ на: комментарий от ugoday

Насчет инструмена для создания новых языков. Вы что такие дубовые то? Не в том смысле сказано было, что на нем парсеры хорошо пишутся или с мета объектами он работать научен. Вы цитату целиком осмыслили? Что за нелепая привычка выдергивать кусок предложения? Я вам про мебель, вы мне мне про жидкий стул. С++ - обобщеный язык программирования, какие к чертям мета объекты. Туго мыслим, туго.

mutronix ★★★★
()
Ответ на: комментарий от Idiot

>В твоём примере ты уже вышел за рамки языка Java, дополнив его другим DSL-ем.

Ну код-то на Java :) Все то же - вызовы методов, строчки.

>Скорее всего, реализованным крайне неэффективно - потому как в самой Java отсутствуют средства (АБСТРАКЦИИ!!!) для эффективной реализации языков с семантикой, отличной от семантики Java.

Ну вот. О чем и речь - отсутствуют средства. Но реализовывать-то абстракции ничто не мешает (пусть и через жопу, прямо скажем)!

>Но за счёт убожества самого языка Java ты не можешь эту абстракцию реализовать легко и дёшево.

О чем и речь - вопрос в стоимости. :)

WFrag ★★★★
()
Ответ на: комментарий от ugoday

>> Операционная система на Лиспе > А где про это почитать можно?

1) http://www.sts.tu-harburg.de/~r.f.moeller/symbolics-info/

2) несколько лет назад по этим ссылкам лежали фильмы, снятые с экрана компьютера, на котором работала Genera OS.

ftp.linux.org.uk/pub/lisp/rainer-lisp-machine-3a.mov

lemonodor.com/misc-gems/lispm.mov.gz

--

SVK

anonymous
()
Ответ на: комментарий от the_one

> хороший электронный источник для того, чтобы начать изучать Lisp

"Мир Лиспа" на русском языке:

http://deigris.pp.ru/files/lisp[12].djvu

--

SVK

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.