Вот то, как я делаю это:
// Based on: http://www.quirksmode.org/js/findpos.html
var getCumulativeOffset = function (obj) {
var left, top;
left = top = 0;
if (obj.offsetParent) {
do {
left += obj.offsetLeft;
top += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return {
x : left,
y : top
};
};
Точная формулировка вопроса немного вводит в заблуждение: это не «JVM» или «компилятор» , как есть множество поставщиков JVM (один jrockit, другой IBM) и несколько компиляторов .
JVM Sun написана на C
, хотя это не обязательно: JVM, работающая на вашем компьютере, зависит от платформы исполняемый файл и, следовательно, мог быть изначально написан на любом языке. Например, исходная JVM IBM была написана на Smalltalk
Библиотеки Java ( java.lang
, java.util
и т. Д., Часто называемые Java API ) сами написаны на Java, хотя методы, помеченные как native
, будут написаны на C
или C ++
.
Я считаю, что компилятор Java, предоставленный Sun, также написан на Java. (Хотя, опять же, существует несколько компиляторов)
Компилятор написан на Java, а среда выполнения написана на ANSI C
Эта ссылка должен ответить на ваш вопрос
Кажется, компилятор теперь написан на Java, но среда выполнения написана на ANSI C
Jikes RVM , автономная виртуальная машина Java, широко используемая в исследовательских целях, написана на Java. Это не тот, который люди запускают на своих настольных компьютерах, но он находится в моем списке «теперь давайте продемонстрируем общую мощь языка».
Предположим, вы говорите о JVM Hotspot, которая является iirc, предоставляемой Sun, она написана на C ++. Для получения дополнительной информации о различных виртуальных машинах для Java вы можете проверить эту ссылку . javac , как и большинство компиляторов Java, написан на Java.