Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно программу на Java в gcc компилить? 
V
    Опции темы
Dray
Дата 16.2.2006, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

Репутация: нет
Всего: 6



Слышал можно Java код на gcc в Линуксе компилировать. Правда это?


--------------------
忍者

user posted image
PM MAIL   Вверх
tux
Дата 16.2.2006, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: нет
Всего: 132



Сущая правда - http://gcc.gnu.org/java/.
Может компилить исходники не только в байт-код, но и непосредственно в машинный код процессора и преобразовывать байт-код в машинный код.
PM MAIL Skype GTalk Jabber YIM   Вверх
batigoal
Дата 16.2.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



А есть ли смысл? Ведь официальный компилятор бесплатен.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
3,14
Дата 16.2.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: нет
Всего: 24



Компилить в машинный код клиентские приложения ещё как имеет, побыстрее работать будут


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
anonymouse
Дата 23.2.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 18.8.2004

Репутация: нет
Всего: 1



Не хочется тебя огорчать но это не совсем так. Виртуальные машины уже достаточно оптимизированы и компилирование в машинный код необходимо только в конкретных случаях.
--------------------
Много чего интересного...
PM MAIL   Вверх
erka
Дата 23.2.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2005

Репутация: нет
Всего: 1



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

Предположем так...
Код

/**
 * @author <a href="mailto:[email protected]">erka</a>
 * @version 0.1
 */
public class Test {
    public static void main(String[] args) {
        try {
            Class clazz = Class.forName("TestLoad");
            Object object = clazz.newInstance();
            System.out.println(object.toString());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
    }
}

Компилим с помощью gcj. (gcj --main=Start -o someName.exe Test.java ). получаем someName.exe

берем второй класс, например
Код

/**
 * @author <a href="mailto:[email protected]">erka</a>
 * @version 0.1
 */
public class TestLoad {

    public String toString() {
        return "Hello world!";
    }
}



Компилим это нашим javac, получаем TestLoad.class

в одной папке собираем TestLoad.class,someName.exe и dll, которые нужны (смотря чем компилить).

запускаем someName.exe и что получается ?

У меня на Windows + gcj 3.4.5 c mingw - "Hello world". Какой тут машинный код спрашивается?



PM MAIL   Вверх
LSD
Дата 23.2.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Не знаю как GCJ, но Jet Excelsior поддерживает динамическую загрузку классов, и компиляцию их прям во время исполнения.
1. Попробуй запустить приложение на голой системе без JRE.
2. Попробуй вместо константы вставить туда скажем args[0].


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 23.2.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



Цитата(erka @ 23.2.2006, 17:21 Найти цитируемый пост)
Компилим это нашим javac, получаем TestLoad.class

в одной папке собираем TestLoad.class,someName.exe и dll, которые нужны (смотря чем компилить).

запускаем someName.exe и что получается ?

У меня на Windows + gcj 3.4.5 c mingw - "Hello world". Какой тут машинный код спрашивается?


На самом деле gcj в библиотеках содержит и байт-интерпретатор тоже (написанный Kresten Krab Thorup). Так что если вы используете Class.forName(), байт-интерпретатор будет прилинкован к вашей программе. Если не используете, ваша программа будет чистый машинный код.

Кстати, при использовании Class.forName ваш .exe файл сначала ищет .dll с подходящим именем, и только если не находит, то грузит .class файл и интерпретирует байт код.

Проблема gcj в том, что по языку она примерно на уровне jdk1.3. Новый фич нет.


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
3,14
Дата 26.2.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: нет
Всего: 24



Цитата(anonymouse @ 23.2.2006, 11:28 Найти цитируемый пост)
Не хочется тебя огорчать но это не совсем так. Виртуальные машины уже достаточно оптимизированы и компилирование в машинный код необходимо только в конкретных случаях.

Ну GUI в java, например, работает, мягко говоря, не очень быстро.


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
anonymouse
Дата 27.2.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 18.8.2004

Репутация: нет
Всего: 1



Цитата

Ну GUI в java, например, работает, мягко говоря, не очень быстро.


Тут даже не заню что сказать с одной стороны зависит от того как писать, но с другой стороны у самого осталась оссоциация java и медленного гуи. Может всетаки виноват свинг ? И неужели откомпилированная в машинный код программа начинает заметно быстрее работать с гуи ?



--------------------
Много чего интересного...
PM MAIL   Вверх
LSD
Дата 27.2.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Цитата(anonymouse @ 27.2.2006, 11:16 Найти цитируемый пост)
И неужели откомпилированная в машинный код программа начинает заметно быстрее работать с гуи ?

По моему опыту, нет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 27.2.2006, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



гуй гую рознь. Тот же swt весьма шустро работает в явовских программах. По крайней мере визуально от сишных программ по скорости не отличить


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
LSD
Дата 27.2.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: нет
Всего: 538



Зато глючит, я например в одной SWT-шной программе регулярно наблюдаю десктоп сквозь главное окно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergejzr
Дата 27.2.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Цитата(anonymouse @ 23.2.2006, 09:28 Найти цитируемый пост)
Не хочется тебя огорчать но это не совсем так. Виртуальные машины уже достаточно оптимизированы и компилирование в машинный код необходимо только в конкретных случаях.


Цитата(3 @ 14, 26.2.2006, 11:04 Найти цитируемый пост)
Ну GUI в java, например, работает, мягко говоря, не очень быстро.


И первое верно и второе верно. Java код работает очень шустро. Единственный недостаток - медленный ГУИ (но это только под виндой кстати). Думаю медленность ГУИ связана с кроссплатформенностью. Вон SWT например - летает. А на процессорах > 3 гигагерц и свинг летает smile

Вообще скорость ГУИ от байткод/нативный-код мало зависит. Те же самые вызовы АПИ. GCJ линкует сборщика мусора (при компиляции там тоже можно кое какие опции выставить), в остальном - тотже exe, что и с++.
По моему личному опыту по скорости что gcj скоппованная, что javac - проги не отличаются. Но на линуксе "нормальный" javac намного удобнее конечно из за кроссплатформенности.
Смысл gcj же вижу только для того, чтобы поиграть.
Добавлено @ 11:36
PS:
JAV исты зря в ГУИ полезли вообщето. ИМХО именно этим JAVA себе "славу" медленности заработала. Иначе возможно она была бы намного распространённее для консольных приложений, библиотек и что немаловажно - серверов. Потому что по всем параметрам кроме ГУЙ она перегоняет многие языки по скорости и удобству.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Бонифаций
Дата 27.2.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40





Цитата(sergej.z @ 27.2.2006, 11:33 Найти цитируемый пост)
Смысл gcj же вижу только для того, чтобы поиграть.


1) иногда удобно 1 выполняемый файл иметь. Без необходиомсти ставить jre
2) в gcj более тесная интеграция с всеми gcc-шными языками.
3) скорость скомпилированной программы сопоставимая с jre, но все-таки выше. В тех случаях когда это критично, имеет смысл рассмотреть альтернативу.






--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




[ Время генерации скрипта: 0.0831 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.