Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли увидеть код который получается после, прекомпиляции Java 1.5 
:(
    Опции темы
Royan
Дата 15.5.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

Репутация: 3
Всего: 15



Речь идет о том, можно ли посмотреть какой получается код после того как выполнены все преобразования/проверки и прочее касающееся настраиваемых типов, то есть именно тот код который потом компилируется. Очень хочется посмотреть оригинал, остающийся от работы javac до перевода этого оригинала в байт код, а не декомпилированный вариант.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Maksym
Дата 15.5.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Royan
Если ты имеешь в виду, что javac при оптимизации кода формирует какой-то новый source файл на базе твоего, то этого не происходит.
PM MAIL   Вверх
nornad
Дата 15.5.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Royan @  15.5.2007,  13:07 Найти цитируемый пост)
то есть именно тот код который потом компилируется. Очень хочется посмотреть оригинал, остающийся от работы javac до перевода этого оригинала в байт код, а не декомпилированный вариант.

Что-то ты сам себе противоречишь. Или ты не понимаешь, как работает жаба, или не можешь объяснить, чего хочешь.
1. Как и сказал Maksym, javac не генерит (ни для себя, ни для кого другого) никаких "чистых исходников".
2. При выполнение жаба не производит декомпилирование байт-кода обратно в исходник.

Если у тебя стоит задача восстановить исходник из скомпилированных классов, то так и скажи. Точный начальный исходник ты при этом не получишь. Как минимум, имена переменных не будут совпадать. Нет, конечно, при желании можно написать такой исходник, чтобы он восстановился в точности, но это уже маразм - ты пока писать будешь сам не раз запутаешься. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Royan
Дата 16.5.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

Репутация: 3
Всего: 15



Видимо я не ясно выразился. Мой вопрос был связан с явлением generics'ов. В С++ есть термин предварительная компиляция. Я не знаю применим ли он к джава в данном случае, но факт в том, что все проверки типов в java осуществляются на этапе прекомпиляции (первичном анализе кода или как угодно иначе) после чего вся информация о типах выкашивается и остается java 1.4 совместимый код.  Вот именно его я и хочу посмотреть. Вопрос возможно ли это? Если да, то как?


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
nornad
Дата 16.5.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Royan @  16.5.2007,  13:56 Найти цитируемый пост)
Вопрос возможно ли это? Если да, то как?

Сильно сомневаюсь. Хотя, если написать свой "переводик"... smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
cube
Дата 16.5.2007, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 3



Цитата(Royan @ 16.5.2007,  10:56)
Вопрос возможно ли это? Если да, то как?

нет, невозможно
PM MAIL   Вверх
gaff
Дата 18.5.2007, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Компилятор записывает в класс сигнатуры методов/классов, содержащих генерики, так скажем, в двух видах:  
  -  в виде понятном java 1.4, пишется в дескриптор метода (конструктора, типа поля, класса). Использется виртульной машиной и доступен через reflection, например, через Method.getParameterTypes() для методов и конструкторов.
  -  в java 1.5  и выше, пишется в специальный Signature аттрибут, который используется исключительно компилятором. Также доступен через reflection, например, через Method.getGenericParameterTypes()

Подробнее здесь:
http://java.sun.com/docs/books/jvms/second...ormat-Java5.pdf, глава 4.4 

Собственно, чтобы посмотреть во что комилятор преобразовывает сигнатуры, содержащие генерики, вам надо сравнить дескрипторы и Signature аттрибуты в скопилированом классе. Возможно, это именно то, что вам нужно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




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


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

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