![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
DenWPF |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1659 Регистрация: 26.9.2009 Репутация: нет Всего: 1 |
Мне тут не нужен холивар, мне интересует на сколько сильно отличается CLR от JAVA вирт. машины ( кстати как она называется?).
К примеру в java какие типы бывают? так же ссылочные и значимые? Как они размещаются?? вот такого рода интересует информация. |
|||
|
||||
Skynin |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
Отличается сильно. Потому что CLR вообще не виртуальная машина, она не выполняет байт-код (CIL) а компилирует в нативный при первом же вызове.
JVM существует несколько. Самая известная - HotSpot от Sun. У Oracle в итоге их сейчас две, еще JRockit У IBMовской название не помню, погуглите. У Гугла, та что в Андроиде - Dalvik VM, в отличие от трех упомянутых - регистровая, а не стековая. Кстати CIL для CLR - также стековый.
Какой-то непонятный контекст вопроса. Вас интересует работа JVM и CLR или язык программирования?
На русском о CLR есть - Джеффри Рихтер, "CLR via C#" О стандарте Sun JVM не встречал такого уровня книг, тем более - спецификаций. Только на английском. Это сообщение отредактировал(а) Skynin - 18.4.2011, 10:49 |
||||
|
|||||
DenWPF |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1659 Регистрация: 26.9.2009 Репутация: нет Всего: 1 |
Сам язык не интересует, по сути я его знаю.
А вот как правильно писать, этого я не знаю...вот и хочется какую то литературу(русс) что бы не наступать на грабли, и не жрать память на ровном месте. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Да, только значимые называются примитивными (primitive types). Значения примитивных типов могут быть:
Объекты (objects) размешаются в куче. НО! Начиная с 6.14 запилили штуку под названием Escape analysis. Так что объект может оказаться и на стеке. И, соответственно, значения примитивных типов данных его полей концептуально тоже окажутся на стеке. В CLR, по-моему, escape analysis отсутствует. Ссылки на объекты (object references) либо на стеке, либо в куче. Первое - для локальных переменных и параметров, второе - для объектов, которые являются полями других объектов. В методы все параметры передаются по значению. Только в случае объектов по значению передаются ссылки на объекты. Поэтому формально можно сказать, что сами объекты передаются по ссылке. JVM. -------------------- |
|||
|
||||
DenWPF |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1659 Регистрация: 26.9.2009 Репутация: нет Всего: 1 |
JVM имеет свой подАсемблеровский язык по типу IL в CLR?
вот это можно пояснить? |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Имеет. И именно код на этом языке JVM и исполняет. А CLR преобразует MSIL код в нативный исполняемый код для платформы посредством JIT-компилятора, а затем исполняет полученный машинный код. Добавлено через 48 секунд Java bytecode -------------------- |
|||
|
||||
Skynin |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
Тогда Джошуа Блох "Java. Эффективное программирование" Там он касается вопросов связанных с устройством JVM
Естественно. А чем по Вашему занимается 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 |
||||||
|
|||||||
DenWPF |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1659 Регистрация: 26.9.2009 Репутация: нет Всего: 1 |
Skynin, спасибо, довольно понятно, тебе надо сеть и разобраться)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |