Comments 30
А почему под маком чудеса не потребовались? Не стали трогать, или произошло невероятное и все само «срослось»?
> Новая Java собрана с использованием MSVCR100.dll
Очевидно, под мак Java не собирается с использованием MS C++ Runtime.
Очевидно, под мак Java не собирается с использованием MS C++ Runtime.
dll, so и иже с ними — костыль под малые объёмы памяти. Такой же, каким в своё время были оверлеи на 16-битной адресации. Уже лет 7 как пора вернуться к статической линковке.
О да, я еще помню парад апдейтов, когда в libz вдруг vulnerability нашли. Лучше б экономили память ;-)
Там dlopen() сюрпризов не преподнес.
Вообще, в деле запуска Java, для мака разницы немного, основных отличий — вот они
и вот это
Вообще, в деле запуска Java, для мака разницы немного, основных отличий — вот они
#ifdef WINDOWS
#define CORRECT_JNI_VER JNI_VERSION_1_6
#else //MACINTOSH
#define CORRECT_JNI_VER JNI_VERSION_1_4
#endif
и вот это
JavaVMInitArgs vm_args;
vm_args.version = CORRECT_JNI_VER;
JavaVMOption* options = new JavaVMOption[vmParamCount];
options[0].optionString = memoryOpt; // -Xmx...
options[1].optionString = classpath;
#ifdef MACINTOSH
options[2].optionString = "-Djava.awt.headless=true";
options[3].optionString = "-XstartOnFirstThread";
#endif
А установить Microsoft Visual C++ 2010 x86 Runtime на компьютер заказчика никак нельзя?
do {
...
} while (false);
Какова цель такого оборачивания?
break в середине позволяет в любой момент выйти из блока кода.
return не совсем аналогичная замена. После этого блока могут идти еще инструкции
Я и не утверждал что это тру вей. Как раз наоборот. Вот тут поподробнее мое мнение о goto и break.
Каким бы неправильным не был подход с выходом из блока через break, тем не менее он не эквивалентен return-у. И несколько return-ов это такой-же хак как и то что сделал тс.
Просто скорее всего человек уже набил руку на таком подходе, и плюс даже если сейчас у него после этого блока нет инструкций, завтра они могут там появится. Так что не надо спорить, это не ЗАМЕНА, ни в данном случае ни в каком другом случае.
Каким бы неправильным не был подход с выходом из блока через break, тем не менее он не эквивалентен return-у. И несколько return-ов это такой-же хак как и то что сделал тс.
Просто скорее всего человек уже набил руку на таком подходе, и плюс даже если сейчас у него после этого блока нет инструкций, завтра они могут там появится. Так что не надо спорить, это не ЗАМЕНА, ни в данном случае ни в каком другом случае.
В данном случае это эквивалент.
А лепить цикл вместо GOTO — неудобочитаемо.
В данном случае вопрос решается легко ступенчатыми if
ИМХО, это наглядней отображает логику алгоритма, а ширина современных мониторов не даст коду «не влезть» в экран.
А лепить цикл вместо GOTO — неудобочитаемо.
В данном случае вопрос решается легко ступенчатыми if
ИМХО, это наглядней отображает логику алгоритма, а ширина современных мониторов не даст коду «не влезть» в экран.
if (...) {
if (..) {
if (..) {
}
}
}
Мои современные мониторы используются в портретном режиме.
для начала, египетские скобки крайне неудобочитаемы
Весьма оригинальный GOTO без GOTO :-) Школу с бейсиком вспомнил.
Стандартный трюк по оборачиванию лестницы условий, по-моему даже свое название имеет. В Adobe SDK все примеры так обернуты, мы решили по стилю не выделяться.
Впрочем, еще можно встретить вот такое
В MS DDK встречается в примерах.
Впрочем, еще можно встретить вот такое
__try {
if(foo) __leave;
}
__except(...) {
}
В MS DDK встречается в примерах.
Уж лучше честно писать goto, чем городить такое.
Так это замена не goto, и не замена пачке if.
Я ж специально более понятный пример привел — это имитация try/catch в том случае, когда не допускается использование родного.
Например — когда собирается проект с флажками -fno-exceptions -fno-rtti. Или у микрософта — без флажка -EHsc. Или нижележащий фреймворк принципиально не знает про throw.
Поймите правильно — я совершенно не в восторге от такого трюкачества. Но — приходится.
Я ж специально более понятный пример привел — это имитация try/catch в том случае, когда не допускается использование родного.
Например — когда собирается проект с флажками -fno-exceptions -fno-rtti. Или у микрософта — без флажка -EHsc. Или нижележащий фреймворк принципиально не знает про throw.
Поймите правильно — я совершенно не в восторге от такого трюкачества. Но — приходится.
Какая цель приследовалась при переходе на Java 7? В ней конечно есть некоторые фишечки, но не так уж и много и не такие уж и фундаментальные…
А можно полюбопытствовать, какой юзкейс решает связка Adobe InDesign Server CS5 + встраиваемая Java?
SVG диаграммы в документы вставлять в одном автоматизированном решении. Это было проще, чем конвертировать в растр и потом сражаться с непопаданием в pantones. «А у вас наш шестикомпонентный цвет на печати выглядит как россыпь точек — вы не попали в заданный CMYK color set!»
Поэтому взяли Apache Batik и дали ему нарисовать картинку на IGraphicsPort.
[irony]Так что уменьшили энтропию, сотня бангалорских индусов больше не выравнивает тысячи диаграмм в фотошопе каждый квартал.[/irony]
К слову, когда решали обратную задачу (нарезали InDesign документы в стопку одностраничных SVG) — использовали тот же подход в виде Apache PDFBox ;-)
Поэтому взяли Apache Batik и дали ему нарисовать картинку на IGraphicsPort.
[irony]Так что уменьшили энтропию, сотня бангалорских индусов больше не выравнивает тысячи диаграмм в фотошопе каждый квартал.[/irony]
К слову, когда решали обратную задачу (нарезали InDesign документы в стопку одностраничных SVG) — использовали тот же подход в виде Apache PDFBox ;-)
Sign up to leave a comment.
Как я вставлял Java 7 в работающее приложение, и что пришлось изобрести для С runtime