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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java виртуальная машина отличия от clr 
:(
    Опции темы
DenWPF
Дата 18.4.2011, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Мне тут не нужен холивар, мне интересует на сколько сильно отличается CLR от JAVA вирт. машины ( кстати как она называется?).

К примеру в java какие типы бывают? так же ссылочные и значимые?
Как они размещаются?? вот такого рода интересует информация.
PM MAIL   Вверх
Skynin
Дата 18.4.2011, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

JVM существует несколько. Самая известная - HotSpot от Sun.
У Oracle в итоге их сейчас две, еще JRockit

У IBMовской название не помню, погуглите.

У Гугла, та что в Андроиде - Dalvik VM, в отличие от трех упомянутых - регистровая, а не стековая.

Кстати CIL для CLR - также стековый.

Цитата

К примеру в java какие типы бывают? так же ссылочные и значимые?

Какой-то непонятный контекст вопроса.

Вас интересует работа JVM и CLR или язык программирования?

Цитата
вот такого рода интересует информация.

На русском о CLR есть - Джеффри Рихтер, "CLR via C#"
О стандарте Sun JVM не встречал такого уровня книг, тем более  - спецификаций. Только на английском.



Это сообщение отредактировал(а) Skynin - 18.4.2011, 10:49
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
DenWPF
Дата 18.4.2011, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Сам язык не интересует, по сути я его знаю.

А вот как правильно писать, этого я не знаю...вот и хочется какую то литературу(русс) что бы не наступать на грабли, и не жрать память на ровном месте.
PM MAIL   Вверх
kemiisto
Дата 18.4.2011, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Цитата(DenWPF @  18.4.2011,  08:34 Найти цитируемый пост)
К примеру в java какие типы бывают? так же ссылочные и значимые?

Да, только значимые называются примитивными (primitive types).

Цитата(DenWPF @  18.4.2011,  08:34 Найти цитируемый пост)
Как они размещаются?

Значения примитивных типов могут быть: 
  • Полями объекта и храниться непосредственно там, в полях объекта. В таком случаем, они будут хранится там же, где объект (см. ниже).
  • Локальными переменными и храниться на стеке.

Объекты (objects) размешаются в куче. НО! Начиная с 6.14 запилили штуку под названием Escape analysis. Так что объект может оказаться и на стеке. И, соответственно, значения примитивных типов данных его полей концептуально тоже окажутся на стеке. В CLR, по-моему, escape analysis отсутствует.

Ссылки на объекты (object references) либо на стеке, либо в куче. Первое - для локальных переменных и параметров, второе - для объектов, которые являются полями других объектов.

В методы все параметры передаются по значению. Только в случае объектов по значению передаются ссылки на объекты. Поэтому формально можно сказать, что сами объекты передаются по ссылке.

Цитата(DenWPF @  18.4.2011,  08:34 Найти цитируемый пост)
кстати как она называется?

JVM.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
DenWPF
Дата 18.4.2011, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



JVM имеет свой подАсемблеровский язык по типу IL в CLR?


Цитата

она не выполняет байт-код 


вот это можно пояснить?
PM MAIL   Вверх
kemiisto
Дата 18.4.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Цитата(DenWPF @  18.4.2011,  10:38 Найти цитируемый пост)
JVM имеет свой подАсемблеровский язык по типу IL в CLR?

Имеет. И именно код на этом языке JVM и исполняет. А CLR преобразует MSIL код в нативный исполняемый код для платформы посредством JIT-компилятора, а затем исполняет полученный машинный код.

Добавлено через 48 секунд
Java bytecode


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Skynin
Дата 18.4.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

А вот как правильно писать, этого я не знаю...вот и хочется какую то литературу(русс) что бы не наступать на грабли

Тогда Джошуа Блох "Java. Эффективное программирование"
Там он касается вопросов связанных с устройством JVM

Цитата
JVM имеет свой подАсемблеровский язык по типу IL в CLR?

Естественно. А чем по Вашему занимается javac ? 

Так же свой байт-код имеет и питоновская VM.

Цитата
вот это можно пояснить?

http://ru.wikipedia.org/wiki/Интерпретатор
http://ru.wikipedia.org/wiki/Компилятор

JVM выполняет байт-код, и при определенных условиях его компилирует в нативный код.
CLR сразу компилирует байт-код в нативный. Не умея его выполнять.

Запрос к гуглу:
является ли CLR интерпретатором

Ответы:
Мифы и заблуждения насчёт CLR и .NET - CLR — это sort of virtual machine, но это не интерпретатор. Еще раз повторюсь: MS.NET это НЕ ИНТЕПРЕТАТОР БАЙТКОДА. Специальный компилятор JIT постепенно преобразует байткод программы в нативный код
JIТ-компилятор и CLR Среда CLR — это не интерпретатор. Она не производит повторную трансляцию кода IL при каждом его выполнении. ... CLR в действительности компилирует код IL в машинный код, прежде чем выполнять его, т.е. осуществляет JIT-компиляцию.

По поводу названия.
набираем 
java -showversion

У меня ответ:
java version "1.6.0_24"
Java™ SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot™ Client VM (build 19.1-b02, mixed mode, sharing)

™ - это торговая марка.

JVM - это НЕ торговая марка, НЕ имя личное, как и "автомобиль".

P.S.
Упреждая возможный вопрос - а что такое javac

Ликбез

Это сообщение отредактировал(а) Skynin - 18.4.2011, 12:48
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
DenWPF
Дата 18.4.2011, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

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

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


 




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


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

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