| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Java виртуальная машина отличия от clr |
| Автор: DenWPF 18.4.2011, 09:34 |
| Мне тут не нужен холивар, мне интересует на сколько сильно отличается CLR от JAVA вирт. машины ( кстати как она называется?). К примеру в java какие типы бывают? так же ссылочные и значимые? Как они размещаются?? вот такого рода интересует информация. |
| Автор: Skynin 18.4.2011, 10:47 | ||||
| Отличается сильно. Потому что CLR вообще не виртуальная машина, она не выполняет байт-код (CIL) а компилирует в нативный при первом же вызове. JVM существует несколько. Самая известная - HotSpot от Sun. У Oracle в итоге их сейчас две, еще JRockit У IBMовской название не помню, погуглите. У Гугла, та что в Андроиде - Dalvik VM, в отличие от трех упомянутых - регистровая, а не стековая. Кстати CIL для CLR - также стековый.
Какой-то непонятный контекст вопроса. Вас интересует работа JVM и CLR или язык программирования?
На русском о CLR есть - Джеффри Рихтер, "CLR via C#" О стандарте Sun JVM не встречал такого уровня книг, тем более - спецификаций. Только на английском. |
| Автор: DenWPF 18.4.2011, 11:09 |
| Сам язык не интересует, по сути я его знаю. А вот как правильно писать, этого я не знаю...вот и хочется какую то литературу(русс) что бы не наступать на грабли, и не жрать память на ровном месте. |
| Автор: kemiisto 18.4.2011, 11:26 |
Да, только значимые называются примитивными (http://en.wikipedia.org/wiki/Java_syntax#Primitive_types). Значения примитивных типов могут быть:
Объекты (objects) размешаются в куче. НО! Начиная с 6.14 http://java.dzone.com/articles/escape-analysis-java-6-update штуку под названием http://en.wikipedia.org/wiki/Escape_analysis. Так что объект может оказаться и на стеке. И, соответственно, значения примитивных типов данных его полей концептуально тоже окажутся на стеке. В CLR, по-моему, escape analysis отсутствует. Ссылки на объекты (object references) либо на стеке, либо в куче. Первое - для локальных переменных и параметров, второе - для объектов, которые являются полями других объектов. В методы все параметры передаются по значению. Только в случае объектов по значению передаются ссылки на объекты. Поэтому формально можно сказать, что сами объекты передаются по ссылке. JVM. |
| Автор: DenWPF 18.4.2011, 11:38 | ||
JVM имеет свой подАсемблеровский язык по типу IL в CLR?
вот это можно пояснить? |
| Автор: kemiisto 18.4.2011, 12:24 |
Имеет. И именно код на этом языке JVM и исполняет. А CLR преобразует MSIL код в нативный исполняемый код для платформы посредством JIT-компилятора, а затем исполняет полученный машинный код. Добавлено через 48 секунд http://en.wikipedia.org/wiki/Java_bytecode |
| Автор: Skynin 18.4.2011, 12:26 | ||||||
Тогда Джошуа Блох "Java. Эффективное программирование" Там он касается вопросов связанных с устройством JVM
Естественно. А чем по Вашему занимается javac ? Так же свой байт-код имеет и питоновская VM.
http://ru.wikipedia.org/wiki/Интерпретатор http://ru.wikipedia.org/wiki/Компилятор JVM выполняет байт-код, и при определенных условиях его компилирует в нативный код. CLR сразу компилирует байт-код в нативный. Не умея его выполнять. Запрос к гуглу: является ли CLR интерпретатором Ответы: http://habrahabr.ru/blogs/net/107585/ - CLR — это sort of virtual machine, но это не интерпретатор. Еще раз повторюсь: MS.NET это НЕ ИНТЕПРЕТАТОР БАЙТКОДА. Специальный компилятор JIT постепенно преобразует байткод программы в нативный код http://crypto.pp.ua/2011/01/jit-kompilyator-i-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 http://www.skipy.ru/technics/likbez.html |
| Автор: DenWPF 18.4.2011, 14:16 |
| Skynin, спасибо, довольно понятно, тебе надо сеть и разобраться) |