Каково различие между внутренними работами JVM Java и CLR.NET?

Это можно сделать лучше, так как функция

x="\n"
echo -ne $x

-e будет интерпретировать обратные следы для последовательности escape-последовательности. Опция -n удалит конечную новую строку на выходе

PS: Команда echo имеет эффект, всегда включающий завершающую новую строку в выходе, поэтому -n требуется отключить эту вещь (и сделать ее менее запутанной)

19
задан Community 23 May 2017 в 10:29
поделиться

7 ответов

Это должно быть большим потоком.

Одно из самых больших различий между CLR, и JVM является CLR "s встроенная интеграция дженериков.

Java вместо этого удаляет универсальные типы, и JVM может только работать с объектами путем автоупаковки объектов, это, кажется, псевдо дженерики.

9
ответ дан 30 November 2019 в 04:54
поделиться

От здесь . Я, возможно, не сказал это лучше (Ну, за исключением войны пламени, это - бесстрастное место :-)).

Привет,

Ответ на Ваш вопрос кажется чреватым опасностью путем запуска войны пламени, таким образом, я продолжу двигаться осторожно.

существует много фундаментальных технических общих черт между Средой выполнения Java, и Общеязыковая среда выполнения, включая собрала "мусор" память, промежуточный язык (Microsoft IL по сравнению с байт-кодом Java), базовые системные библиотеки и поддержка довольно высокоуровневых языков, безопасности кода и развертывания.

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

я предложил бы спросить более предназначенный вопрос о любой из различных функций во время выполнения и областей компонента (например, управление памятью, компиляция, системные библиотеки, безопасность, и т.д.), и затем мы можем обеспечить более предназначенный ответ (например, блог, техническая статья или некоторые книги).

6
ответ дан 30 November 2019 в 04:54
поделиться

Одно существенное различие - то, что JVM является портативной через платформы и работает на Linux, Macintosh, и многих сотовых телефонах и встроенных устройствах.

CLR работает на поддерживаемых платформах Microsoft с Моно проектом еще, оказывающим частичную поддержку более старых версий CLR на некоторых.

Внутренне это означает, что производительность JVM будет варьироваться на тех различных платформах на основе возможностей, обеспеченных самими платформами.

2
ответ дан 30 November 2019 в 04:54
поделиться

Как Vinko сказал, полное изложение является путем вне объема сообщения форума. Различия/общие черты сводятся к этому:

Они - оба среда выполнения "песочница", которые включают "своевременный" компилятор, чтобы перевести инструкции по программе на промежуточном языке (MSIL или ByteCode) к собственному машинному коду и обеспечить автоматическое управление памятью (сборка "мусора"). Нахождение сверх соответствующих сред выполнения является рядом библиотек классов, которые предоставляют высокоуровневые абстракции разработчикам для упрощения задач разработки.

внутренности того, как те среды выполнения на самом деле реализованы, являются, по большей части, собственными к Microsoft и Sun. Алгоритмы, используемые системами сборки "мусора", например, в то время как, вероятно, подобный в технической функциональности, отличаются в реализации.

0
ответ дан 30 November 2019 в 04:54
поделиться

Miguel de Icaza упоминает здесь :

Закаленные промышленные программисты заметят, что вышеупомянутое очень похоже на Java и Java VM. Они правы, вышеупомянутое точно так же, как Java.

CIL имеет одну функцию, не найденную в Java хотя: это - представление кода байта, которое достаточно способно использоваться в качестве цели для многих языков: от C++, C, Фортрана и Eiffel к Lisp и Haskell включая вещи как Java, C#, JavaScript и Visual Basic в соединении.

мне жаль, что у меня не было времени для движения более подробно, но ради этого аргумента, будет достаточно вышеупомянутое.

комментарии вдаются в некоторые подробности, тем не менее, как оптимизация последних вызовов. Партия изменилась с 2002, хотя - и CLR и JVM теперь имеют несколько языков, предназначающихся для нее. Но тем не менее стоящий чтения.

1
ответ дан 30 November 2019 в 04:54
поделиться

Насколько мне известно, .Net CLR по-прежнему имеет гораздо более гибкую и мощную систему защиты доступа к коду, встроенную в среду выполнения, что обеспечивает более детализированные разрешения и политику выполнения.

0
ответ дан 30 November 2019 в 04:54
поделиться

Также и различия в мусоре. JVM использует копирование коллектора и отметки и подметать. .Net User Copying Collector и Mark и Compact (намного сложнее для реализации).

также типа стирания, упомянутые Flyswat, важно. JVM не имеет подсказки о дженеранах, и все объект и связано. штраф на бокс и распаковку. Также отражение не даст вам общую информацию. CLR поддерживает универсально.

-1
ответ дан 30 November 2019 в 04:54
поделиться