это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

ЯвляСтся Π»ΠΈ Java ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования?

Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ я использовал C ++ Π² качСствС языка программирования. Π― знаю, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, написанный Π½Π° C ++, ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ процСсс компиляции, ΠΏΠΎΠΊΠ° Π½Π΅ станСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Β«ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄Β».

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Java Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ. Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Java-ΠΊΠΎΠ΄ запускаСтся ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ?

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Java ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ двухэтапный процСсс компиляции. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Java компилируСтся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ компилятором Java. Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ выполняСтся Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Java (JVM). Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ JVM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ компиляции Just-in-Time (JIT) для компиляции Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° с Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ инструкциями, понятными Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ ЦП Π½Π° Π»Π΅Ρ‚Ρƒ Π²ΠΎ врСмя выполнСния.

НСкоторыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JVM ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ вмСсто JIT, компилируя Π΅Π³ΠΎ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ выполняя Π΅Π³ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π₯отя это всС Π΅Ρ‰Π΅ считаСтся Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌΒ», ΠΎΠ½ довольно сильно отличаСтся ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ исходный ΠΊΠΎΠ΄ высокого уровня (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² этом случаС исходный ΠΊΠΎΠ΄ Java Π½Π΅ интСрпрСтируСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, это Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π²Ρ‹Π²ΠΎΠ΄ компилятора Java).

ВСхничСски Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Π»Π°Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Java Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Java Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Подводя ΠΈΡ‚ΠΎΠ³, Π² зависимости ΠΎΡ‚ срСды выполнСния, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

Код, написанный Π½Π° Java:

Когда Java ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚? Код прилоТСния ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ интСрпрСтируСтся, Π½ΠΎ JVM отслСТиваСт, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° часто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, ΠΈ транслируСт ΠΈΡ… Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для нСпосрСдствСнного выполнСния Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ. Для Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько Ρ€Π°Π·, это экономит врСмя компиляции ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ; для часто выполняСмого Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° JIT-компиляция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для запуска Π½Π° высокой скорости послС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„Π°Π·Ρ‹ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ мСньшСго количСства ΠΊΠΎΠ΄Π°, сокращСниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции являСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. НаконСц, Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, статистика выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ собрана Π΄ΠΎ компиляции, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык» ΠΈΠ»ΠΈ «скомпилированный язык» Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысла, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ любой язык программирования ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ / ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π’ настоящСС врСмя частичная компиляция Ρ‚ΠΎΡ‡Π½ΠΎ Π² срок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΌΠ½ΠΎΠ³ΠΈΡ… языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Π»ΠΈΡΡŒ Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈΒ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ JavaScript.

Java компилируСтся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Java VM, которая Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚.

Π’ΠΈΠ΄ ΠΎΠ±ΠΎΠΈΡ…. Π‘Π½Π°Ρ‡Π°Π»Π° компилируСтся Java (Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Β«ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉΒ») Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π»ΠΈΠ±ΠΎ компилируСтся, Π»ΠΈΠ±ΠΎ интСрпрСтируСтся Π² зависимости ΠΎΡ‚ настроСния JIT.

Java выполняСт ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ,

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ прСобразуСтся, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ с использованиСм компилятора JIT. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ подаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ выполняСтся.

Π’ соврСмСнных рСализациях Π½Π° языкС программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π² Java, для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ всС Π±ΠΎΠ»Π΅Π΅ популярно ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±Π΅ ΠΎΠΏΡ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ извСстно, ΠΊΠ°ΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² экосистСмС языка ΠΈΠ³Ρ€Π°Π΅Ρ‚ JVM. Однако Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π΅ разбираСтся Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ JVM ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ. Π₯отя для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Java это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ΄ станСт Π»ΡƒΡ‡ΡˆΠ΅, Ссли Π²Ρ‹ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ JVM, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ каТдая строка ΠΊΠΎΠ΄Π° влияСт Π½Π° процСссы Π²Π½ΡƒΡ‚Ρ€ΠΈ JVM.

Однако для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π²Π²ΠΎΠ΄Π΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ влияСт Π½Π° JVM Π²ΠΎ врСмя запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java?

Если Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΏΠΎΠ²Π΅Π΄ΡƒΡŽΡ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, скаТитС спасибо Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρƒ.

Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ JVM примСняСт для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, сгСнСрированный для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ зависит ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π³Π΄Π΅ ΠΎΠ½Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° любой машинС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ JVM для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°.

Как гСнСрируСтся Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄?

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java?

Если Π²Π°ΠΌ хочСтся ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сам Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ способ β€” Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ JVM

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, стоит ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ JVM Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ΄Π° для JVM. Π‘Ρ€Π΅Π΄Π° выполнСния Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” это, ΠΏΠΎ сути, Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… JVM. JVM создаСт Ρ„Ρ€Π΅ΠΉΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ созданный Ρ„Ρ€Π΅ΠΉΠΌ Π½Π°Π²Π΅Ρ€Ρ… стСка Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° для выполнСния.

Π€Ρ€Π΅ΠΉΠΌ состоит ΠΈΠ· локальной срСды, которая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для поддСрТания Π΅Π³ΠΎ выполнСния. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ½ содСрТит массив Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ стСк ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ эти элСмСнты ΠΈΠ· сСбя ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚.

Массив Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Массив Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ слСдуСт ΠΈΠ· названия, Π½ΡƒΠΆΠ΅Π½ для хранСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: ΠΎΠ΄ΠΈΠ½ статичСский ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра, Π½ΠΎ схоТиС Π²ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ массивы ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Ρ‚Π΅ΠΊ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ²

Π‘Ρ‚Π΅ΠΊ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² β€” это Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ пространство Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это стСк, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ значСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π΅Π³ΠΎ части. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструкций Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, Π»ΠΈΠ±ΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² стСк, Π»ΠΈΠ±ΠΎ Π·Π°Π±ΠΈΡ€Π°ΡŽΡ‚ значСния ΠΈΠ· стСка для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° load ΠΈ Π΅Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½ΡƒΠΆΠ½Ρ‹ для пСрСмСщСния значСния, хранящСгося Π² массивС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π² стСк. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ store примСняСтся для извлСчСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· стСка ΠΈ сохранСния Π² массивС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ значСния ΠΈΠ· стСка для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄

Π Π°Π΄ΠΈ возмоТности Π²Π³Π»ΡΠ΄Π΅Ρ‚ΡŒΡΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, я написал простой Java-класс:

ДСконструкция Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°

Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ: индСксы, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ инструкциям Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° β€” ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, ΠΎΠ½ΠΈ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ инструкции.

Число ΠΏΠ΅Ρ€Π΅Π΄ инструкциСй ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° индСкс Π΅Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°. А любой Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ², Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ².

Π’Ρ‹Π²ΠΎΠ΄

НадСюсь, Π²Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java. Π‘ этим Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΈΠΌ Π·Π½Π°Π½ΠΈΠ΅ΠΌ Π²Ρ‹ смоТСтС Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с самим Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, воспользовавшись Ρ‚Π°ΠΊΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ASM.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

5 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сСгодня

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

5 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сСгодня

Π’Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈΠ»ΠΈ программист? Π’Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java? Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для вас.

Π’ этой части ΠΌΡ‹ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java.

Π’ качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ программирования Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ исслСдованиС ΠΈ составили для вас ΠΏΠΎΠ»Π½Ρ‹ΠΉ список Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅, особСнно совмСстимых с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Windows.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ дальшС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ прСдставляСм Π²Π°ΠΌ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ схСму 5 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java.

Π›ΡƒΡ‡ΡˆΠ΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java

HotSpot

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

HotSpot ΠΎΡ‚ Oracle являСтся Π²Π΅Π΄ΡƒΡ‰ΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. И это возглавляСт наш список ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java.

HotSpot ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π² частности, функциями Β«Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΒ» ΠΈ «своСврСмСнной компиляции».

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, HotSpot ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ (ISA), Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ x86-84, IA-32, VFP ARMv7, SPARC (эксклюзивно для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Solari) ΠΈ ARMv8. Π­Ρ‚Π° систСма ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ISA, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π»ΡƒΡ‡ΡˆΠ°Ρ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ извСстныС особСнности HotSpot Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java, Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ (компилятор ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра), ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ компилятор, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ классов Java, сборщики мусора, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, Ρ„Π»Π°Π³ΠΈ JVM, кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java HotSpot ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² соотвСтствии с GNU General Public License (GPL). Как Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ, ΠΎΠ½ доступСн бСсплатно.

OpenJ9

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

OpenJ9 ΠΎΡ‚ Eclipse Foundation IBM ΡˆΠΈΡ€ΠΎΠΊΠΎ считаСтся блиТайшим ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠΌ HotSpot. Как ΠΈ HotSpot, это Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС совмСстимо со всСми основными ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами, Π² частности с Windows, AIX, macOS, Linux ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. БущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° β€” встроСнный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» OpenJDK β€” для Ρ‚Ρ€Π΅Ρ… извСстных ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ОБ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Windows, Linux ΠΈ macOS.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ настройку, которая Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ оснащСна, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСй Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, которая позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ OpenJDK ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΎΠΏΡ‹Ρ‚.

OpenJ9 β€” это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ финансируСтся Π·Π° счСт ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ со всСго ΠΌΠΈΡ€Π°. Π’ΠΎΡ‡Π½ΠΎ говоря, OpenJ9 доступСн для бСсплатной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

JRockit

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

Он поддСрТиваСтся Π² Windows ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… извСстных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² систСмах со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ISA: SPARC (для Solaris), x86-64 ΠΈ x86.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, JRockit ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для обСспСчСния быстрого выполнСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ особСнности Oracle JRockit Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java, сборку мусора, ΠΌΡΠ³ΠΊΡƒΡŽ настройку, Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, быстроС врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° (Π² микросСкундах) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

JRockit стал свободным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм Π² 2011 Π³ΠΎΠ΄Ρƒ, вскорС послС Π΅Π³ΠΎ приобрСтСния Oracle. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ бСсплатно.

Squawk Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Squawk являСтся Π²Ρ‹Π΄Π°ΡŽΡ‰Π΅ΠΉΡΡ JVM, которая ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для создания простых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. Π­Ρ‚ΠΎ ΠΌΠΈΠΊΡ€ΠΎ вСрсия JVM, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ разработанная для простоты, с нСбольшим внСшним Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ Π»ΡƒΡ‡ΡˆΠ΅ всСго приспособлСн для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… устройств ΠΈ встроСнных систСм. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java являСтся кросс-совмСстимым со всСми извСстными ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами, Π² основном Windows, Linux ΠΈ macOS.

Squawk, ΠΊΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² / Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Java-Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, написан Π½Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… языках программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C ++ ΠΈ Assembly. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, основныС аспСкты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния написаны Π½Π° Java, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Β«ΠΌΠ΅Ρ‚Π°ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌΒ».

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Squawk Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Π½ΠΈΠ·ΠΊΠΈΠΉ объСм памяти, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ интСрфСйс, ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΌΠ΅ΠΆΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Squawk лицСнзируСтся Π² соотвСтствии с GNU General Public License (GPL), ΠΈ ΠΎΠ½ доступСн бСсплатно.

Апач Гармония

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

Apache Harmony ΠΎΡ‚ Apache Software β€” Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ популярноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java. Π₯отя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ Π² 2011 Π³ΠΎΠ΄Ρƒ, ΠΎΠ½Π° всС Π΅Ρ‰Π΅ остаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин.

Apache Harmony поддСрТиваСтся Π² Windows, Linux ΠΈ macOS. БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ мобильная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Android, которая Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² основном Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… OpenJDK, Π° Π½Π΅ Π² качСствС ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Гармония написана Π½Π° C ++ ΠΈ Java. А Π΄ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π½Π° пСнсию Π² 2011 Π³ΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π½Π΅ дотягивало Π΄ΠΎ 2%.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, нСполная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Java, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Vuze, Geronimo (ΠΈΠ· Apache) ΠΈ ArgoUML.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, нСсмотря Π½Π° Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ, ряд ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ поддСрТиваСтся Π² Harmony. Π­Ρ‚ΠΈ прилоТСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя JUnit, Tomcat, Apache Velocity, Apache Ant ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Apache Harmony Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ классов, JIT-компилятор, ядро β€‹β€‹Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ портирования, диспСтчСр ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², сборщик мусора ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Apache Harmony Π±Ρ‹Π» ΡƒΠ΄Π°Π»Π΅Π½ (Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° остановлСна) Π² ноябрС 2011 Π³ΠΎΠ΄Π°. Однако ΠΎΠ½ всС Π΅Ρ‰Π΅ доступСн для скачивания, хотя ΠΈ Π±Π΅Π· тСхничСской ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Java. И Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π² Π²Ρ‹Π±ΠΎΡ€Π΅, ΠΌΡ‹ рассмотрСли ΠΏΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅.

Π­Ρ‚ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Java Π±Ρ‹Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ ΠΈ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° основС ΠΈΡ… ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ популярности ΠΈ долговСчности ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ.

БВЯЗАННЫЕ ИБВОРИИ, ΠšΠžΠ’ΠžΠ Π«Π• Π’Π« Π”ΠžΠ›Π–ΠΠ« УЗНАВЬ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ² своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ

это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java. Π€ΠΎΡ‚ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ java

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ языков программирования Π² послСдниС дСсятилСтия ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ вСсьма ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС. Π‘ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Java Virtual Machine Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ 90-Ρ… ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΠΆΠ΅ достаточно ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ² β€” Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅, Π° настоящСС.

Но данная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, Π½Π° ΠΌΠΎΠΉ взгляд, практичСски ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°, ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² пригодится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄Π΅Π½Ρ‚Π° Π½Π° Π·Π²Π°Π½ΠΈΠ΅ «Π―Π·Ρ‹ΠΊ Π³ΠΎΠ΄Π°» ΠΏΠΎ вСрсии TIOBE, Π½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π»ΡŽΠ±ΠΎΠΌΡƒ программисту.

Π‘Π»ΠΎΠ²ΠΎΠΌ, Ссли Π²Π°ΠΌ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ числа наши Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ языки программирования, ΠΎ Ρ‡Ρ‘ΠΌ Π΄ΠΎ сих ΠΏΠΎΡ€ спорят Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΈ ΠΊΠ°ΠΊ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ строки ΠΈ рСгулярныС выраТСния, ΠΏΡ€ΠΎΡˆΡƒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.

ΠŸΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡ

Одна ΠΈΠ· самописных систСм ΠΎΡ‚Π΄Π΅Π»Π° Business Intelligence нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ интСрфСйс Π² Π²ΠΈΠ΄Π΅ нСслоТного языка запросов. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии систСмы язык этот интСрпрСтировался Π½Π° Π»Π΅Ρ‚Ρƒ, Π±Π΅Π· компиляции, нСпосрСдствСнно ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки с запросом. Вторая вСрсия парсСра Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ с ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ язык запросов ΠΎΡ‚ ΠΈΡ… выполнСния ΠΈ сильно упростит ΠΊΠΎΠ΄.

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π²Ρ‚ΠΎΡ€ΠΎΠΉ вСрсиСй систСмы Ρƒ мСня случился отпуск, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ я Π½Π° часик-Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь отвлСкался ΠΎΡ‚ Π΄Π΅Π» сСмСйных Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², посвящённых Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с читатСлями Π₯Π°Π±Ρ€Π° Π² Π²ΠΈΠ΄Π΅ сСрии статСй.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… прСдставлСно ΠΏΡΡ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… (Π΄ΠΎ сотни строк ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° C) Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин(ΠΎΠΊ), каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… раскрываСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ аспСкт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ².

ΠžΡ‚ΠΊΡƒΠ΄Π° Π΅ΡΡ‚ΡŒ пошли Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹ Π² языках программирования

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² инструкций Π·Π° послСдниС нСсколько дСсятков Π»Π΅Ρ‚ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ΠΎ Π²Π΅Π»ΠΈΠΊΠΎΠ΅ мноТСство. ВикипСдия ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ языки программирования стали ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ прСдставлСния Π΅Ρ‰Π΅ Π² 60-Π΅ Π³ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°. КакиС-Ρ‚ΠΎ ΠΈΠ· этих ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈΡΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ процСссорами, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π½Π° Π»Π΅Ρ‚Ρƒ процСссорами Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² инструкций Π² качСствС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ прСдставлСния ΠΊΠΎΠ΄Π° ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ трСмя ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм нСсколько ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π½Π° C ΠΈ Π½Π° этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ основныС тСхничСскиС аспСкты Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин.

ΠŸΠΎΠ»Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½Π° GitHub. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ свСТим GCC:

ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ структуру: сначала ΠΈΠ΄Ρ‘Ρ‚ ΠΊΠΎΠ΄ самой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, послС β€” главная функция с assert-Π°ΠΌΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠ΄Π°. Π― старался внятно ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠΊΠΎΠ΄Ρ‹ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ мСста ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ². НадСюсь, ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ понятна Π΄Π°ΠΆΠ΅ людям, Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ Π½Π΅ ΠΏΠΈΡˆΡƒΡ‰ΠΈΠΌ Π½Π° C.

Π‘Π°ΠΌΡ‹ΠΉ простой Π² ΠΌΠΈΡ€Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°

Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ β€” сразу Π·Π° листингом, Π° Π½Π°Ρ‡Π½Ρ‘ΠΌ нСпосрСдствСнно с ΠΊΠΎΠ΄Π°:

Π—Π΄Π΅ΡΡŒ мСньшС ста строк, Π½ΠΎ всС Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ прСдставлСны. Π£ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ СдинствСнный рСгистр ( vm.accumulator ), Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ рСгистра, Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ рСгистра ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ( vm.ip ).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ vm_interpret Π² Π²ΠΈΠ΄Π΅ массива Π±Π°ΠΉΡ‚ΠΎΠ² β€” Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° (Π°Π½Π³Π». bytecode) β€” ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅ Π½Π΅ встрСтится опСрация Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ( OP_DONE ).

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ аспСкт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ β€” сСмантика, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ Π½Π΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅, ΠΈ ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ СдинствСнного рСгистра.

НСкоторыС исслСдоватСли (Virtual-machine Abstraction and Optimization Techniques, 2009) ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π° высокоуровнСвыС ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΏΠΎ близости сСмантики Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΊ сСмантикС физичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄.

Π’ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ случаС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ физичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, ΠΏΠΎΠ»Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ рСгистров, инструкциями Ρ€Π°Π±ΠΎΡ‚Ρ‹ со стСком ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Bochs, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, повторяСт Π½Π°Π±ΠΎΡ€ инструкций Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86.

И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚: ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ высокоуровнСвых Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π±Π»ΠΈΠ·ΠΊΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ сСмантику ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ спСциализированного языка программирования. Π’Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SQLite, Gawk ΠΈ многочислСнныС вСрсии Prolog.

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ языков программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ элСмСнты ΠΊΠ°ΠΊ высокого, Ρ‚Π°ΠΊ ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. Π’ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠ΅ΠΉ Java Virtual Machine Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ инструкции для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со стСком, Ρ‚Π°ΠΊ ΠΈ встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования с автоматичСским Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ памяти.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ ΠΆΠ΅ ΠΊΠΎΠ΄ относится скорСС ΠΊ самым ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин: каТдая Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ инструкция β€” ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΠΉ-двумя физичСскими инструкциями, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ рСгистр ΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт ΠΎΠ΄Π½ΠΎΠΌΡƒ рСгистру «ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ³ΠΎ» процСссора.

АргумСнты инструкций Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ СдинствСнный рСгистр Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ β€” ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСх выполняСмых инструкций. Однако Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² инструкции. Один ΠΈΠ· способов β€” прямо ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄.

Π Π°ΡΡˆΠΈΡ€ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, внСся инструкции (OP_ADDI, OP_SUBI), ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Π²ΠΈΠ΄Π΅ Π±Π°ΠΉΡ‚Π°, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ нСпосрСдствСнно Π·Π° ΠΎΠΏΠΊΠΎΠ΄ΠΎΠΌ:

НовыС инструкции (см. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ vm_interpret ) Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ· Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° свой Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²Π»ΡΡŽΡ‚ Π΅Π³ΠΎ ΠΊ рСгистру / Π²Ρ‹Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΈΠ· рСгистра.

Π’Π°ΠΊΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ называСтся нСпосрСдствСнным Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ (Π°Π½Π³Π». immediate argument), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ располагаСтся прямо Π² массивС ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ². Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² нашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт собой ΠΎΠ΄ΠΈΠ½-СдинствСнный Π±Π°ΠΉΡ‚ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 256 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ нашСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² инструкций Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚ большой Ρ€ΠΎΠ»ΠΈ. Но Ссли Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° настоящСго языка, Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚ массива ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ констант ΠΈ инструкции с нСпосрСдствСнным Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ адрСсу настоящСго Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ констант.

БтСковая машина

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π² нашСй нСслоТной Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС всСгда Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΎΠ΄Π½ΠΈΠΌ рСгистром ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ Π΄Π°Π½Π½Ρ‹Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρƒ инструкции ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСпосрСдствСнный, Π°, скаТСм, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния ΠΈΠ»ΠΈ умноТСния ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

ΠŸΡ€ΠΎΡ‰Π΅ говоря, Ρƒ нас Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ возмоТности Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ слоТныС выраТСния. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° стСковая машина, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина со встроСнным стСком:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΡƒΠΆΠ΅ большС, ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со стСком. OP_PUSHI ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π½Π° стСк свой нСпосрСдствСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ OP_ADD, OP_SUB, OP_DIV, OP_MUL ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ ΠΏΠΎ ΠΏΠ°Ρ€Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· стСка, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° стСк. OP_POP_RES снимаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ со стСка ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² рСгистр result, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния (OP_DIV) отлавливаСтся ошибка дСлСния Π½Π° ноль, Ρ‡Ρ‚ΠΎ останавливаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

ВозмоТности Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΠΈΡ€Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ с СдинствСнным рСгистром ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ слоТныС арифмСтичСскиС выраТСния. Π”Ρ€ΡƒΠ³ΠΈΠΌ (ΠΈ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½Ρ‹ΠΌ!) прСимущСством являСтся простота компиляции языков программирования Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ стСковой ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

РСгистровая машина

Благодаря своСй простотС стСковыС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ самоС ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² языков программирования; Ρ‚Π΅ ΠΆΠ΅ JVM ΠΈ Python VM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡ….

Однако Ρƒ Ρ‚Π°ΠΊΠΈΡ… машин Π΅ΡΡ‚ΡŒ ΠΈ нСдостатки: Π² Π½ΠΈΡ… приходится Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструкции для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со стСком, ΠΏΡ€ΠΈ вычислСнии Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ проходят Ρ‡Π΅Ρ€Π΅Π· Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ…, Π² стСковом ΠΊΠΎΠ΄Π΅ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ появляСтся мноТСство Π»ΠΈΡˆΠ½ΠΈΡ… инструкций.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ лишнСй инструкции Π²Π»Π΅Ρ‡Ρ‘Ρ‚ Π·Π° собой Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Ρ‚Π΅Π»Ρƒ инструкций.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° стСковым машинам β€” рСгистровыС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π£ Π½ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ слоТный Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄: Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции явно Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½ΠΎΠΌΠ΅Ρ€ рСгистров-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π½ΠΎΠΌΠ΅Ρ€ рСгистра-Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. БоотвСтствСнно, вмСсто стСка Π² качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ рСгистров.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° рСгистровая машина Π½Π° 16 рСгистров. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΠΎ 16 Π±ΠΈΡ‚ каТдая ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ трСмя способами:

Π£ нашСй нСбольшой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ совсСм ΠΌΠ°Π»ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, поэтому Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Π±ΠΈΡ‚ (ΠΈΠ»ΠΈ 16 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ) Π½Π° ΠΎΠΏΠΊΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ достаточно. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π±ΠΈΡ‚Ρ‹ инструкции.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΠΈΠ΄ кодирования (4 + 4 + 8) Π½ΡƒΠΆΠ΅Π½ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² рСгистры ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ OP_LOADI. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²ΠΈΠ΄ (4 + 4 + 4 + 4) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΊΡƒΠ΄Π° ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, послСдний Π²ΠΈΠ΄ (4 + 4 + 8 Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π±ΠΈΡ‚) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для инструкций с СдинствСнным рСгистром Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π² нашСм случаС это OP_MOV_RES.

Для кодирования ΠΈ дСкодирования инструкций Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° (функция decode ). Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π»ΠΎΠ³ΠΈΠΊΠ° инструкций благодаря явному ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ Π½Π° располоТСниС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² становится ΠΏΡ€ΠΎΡ‰Π΅ β€” ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со стСком.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности: Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅ рСгистровых машин мСньшС инструкций, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ инструкции ΡˆΠΈΡ€Π΅, компиляция Π² Ρ‚Π°ΠΊΠΎΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ слоТнСС β€” компилятору приходится Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступныС рСгистры.

Надо Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π² рСгистровых Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ стСк, ΠΊΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ; рСгистры ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для вычислСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π”Π°ΠΆΠ΅ Ссли явного стСка Π½Π΅Ρ‚, Ρ‚ΠΎ для построСния стСка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ массив, ΠΈΠ³Ρ€Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Ρƒ ΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ, Ρ‡Ρ‚ΠΎ опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² физичСских ΠΌΠ°ΡˆΠΈΠ½Π°Ρ….

Π‘Ρ‚Π΅ΠΊΠΎΠ²Ρ‹Π΅ ΠΈ рСгистровыС ΠΌΠ°ΡˆΠΈΠ½Ρ‹, сравнСниС

Π•ΡΡ‚ΡŒ интСрСсноС исслСдованиС (Virtual machine showdown: Stack versus registers, 2008), оказавшСС большоС влияниС Π½Π° всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² области Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин для языков программирования. Π•Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ способ прямой трансляции ΠΈΠ· стСкового ΠΊΠΎΠ΄Π° стандартной JVM Π² рСгистровый ΠΊΠΎΠ΄ ΠΈ сравнили ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Бпособ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ: ΠΊΠΎΠ΄ сначала транслируСтся, Π° ΠΏΠΎΡ‚ΠΎΠΌ достаточно слоТным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ оптимизируСтся. Но ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сравнСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ процСссора, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ инструкций, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‰Π΅Π³ΠΎ числа инструкций. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Ссли ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, рСгистровая машина оказалась эффСктивнСС стСковой.

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Ρƒ этой эффСктивности Π΅ΡΡ‚ΡŒ Π²ΠΏΠΎΠ»Π½Π΅ осязаСмая Ρ†Π΅Π½Π°: компилятор Π΄ΠΎΠ»ΠΆΠ΅Π½ сам Π°Π»Π»ΠΎΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистры ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠ³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

Π‘ΠΏΠΎΡ€ ΠΎ Ρ‚ΠΎΠΌ, какая ΠΆΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π»ΡƒΡ‡ΡˆΠ΅, всё Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ компиляторах Java, Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Dalvik VM, Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΏΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Android-устройствС, Π±Ρ‹Π» рСгистровым; Π½ΠΎ Ρ‚ΠΈΡ‚ΡƒΠ»ΡŒΠ½Π°Ρ JVM сохранила стСковый Π½Π°Π±ΠΎΡ€ инструкций. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Lua ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ²ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Π½ΠΎ Python VM β€” ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ стСковая. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°Ρ… рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

НаконСц, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π»Π΅Ρ‡ΡŒΡΡ ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим спСциализированный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ строки Π½Π° соотвСтствиС рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ:

Главная инструкция β€” OP_CHAR. Она Π±Π΅Ρ€Ρ‘Ρ‚ свой нСпосрСдствСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ сравниваСт Π΅Π³ΠΎ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ символом Π² строкС ( char *sp ). Π’ случаС совпадСния ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ символов Π² строкС происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ инструкции ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ символу.

Машина Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° (OP_JUMP), ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ СдинствСнный нСпосрСдствСнный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. АргумСнт ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ смСщСниС Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅, ΠΎΡ‚ΠΊΡƒΠ΄Π° слСдуСт ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ вычислСниС.

ПослСдняя ваТная опСрация β€” OP_OR. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° смСщСния, пробуя ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ сначала ΠΊΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌ, Π² случаС ошибки, Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ. Π”Π΅Π»Π°Π΅Ρ‚ ΠΎΠ½Π° это ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рСкурсивного Π²Ρ‹Π·ΠΎΠ²Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ инструкция Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±Ρ…ΠΎΠ΄ Π² Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ Π΄Π΅Ρ€Π΅Π²Π° всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² рСгулярного выраТСния.

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ² ΠΈ сСмидСсяти строк ΠΊΠΎΠ΄Π° достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ рСгулярныС выраТСния Π²ΠΈΠ΄Π° «abc», «a?bc», «(ab|bc)d», «a*bc». Π’ этой Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Π΄Π°ΠΆΠ΅ Π½Π΅Ρ‚ явного состояния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° инструкций, Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ β€” пСрСдаётся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Если Π²Π°ΠΌ интСрСсны Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π²ΠΈΠΆΠΊΠΎΠ² рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, для Π½Π°Ρ‡Π°Π»Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с сСриСй статСй Расса Кокса (Π°Π½Π³Π». Russ Cox), Π°Π²Ρ‚ΠΎΡ€Π° Π΄Π²ΠΈΠΆΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСгулярными выраТСниями ΠΎΡ‚ Google RE2.

Π˜Ρ‚ΠΎΠ³ΠΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³ΠΈ.

Для языков программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄Π²Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹: стСковая ΠΈ рСгистровая.

Π’ стСковой ΠΌΠΎΠ΄Π΅Π»ΠΈ основной структурой Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ способом ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ инструкциями являСтся стСк. Π’ рСгистровой ΠΌΠΎΠ΄Π΅Π»ΠΈ для вычислСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π°Π±ΠΎΡ€ рСгистров, Π½ΠΎ для хранСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ всё Ρ€Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ явный ΠΈΠ»ΠΈ нСявный стСк.

НаличиС явного стСка ΠΈ Π½Π°Π±ΠΎΡ€Π° рСгистров ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ ΠΈ Π΄Π°ΠΆΠ΅ физичСским. ОбилиС Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… инструкций Π² Ρ‚Π°ΠΊΠΎΠΌ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сущСствСнныС Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ рСсурсов физичСского процСссора приходятся Π½Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… инструкций.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² популярных Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΠΈ высокоуровнСвыС инструкции. Π’ Java, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это инструкции ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, аллокация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ сборка мусора.

Чисто высокоуровнСвыС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ β€” ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ² языков с Ρ€Π°Π·Π²ΠΈΡ‚ΠΎΠΉ ΠΈ Π΄Π°Π»Ρ‘ΠΊΠΎΠΉ ΠΎΡ‚ ΠΆΠ΅Π»Π΅Π·Π° сСмантикой β€” Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ проводят Π½Π΅ Π² диспСтчСрС ΠΈΠ»ΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π΅, Π° Π² Ρ‚Π΅Π»Π°Ρ… инструкций ΠΈ, соотвСтствСнно, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эффСктивны.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… я Ρ€Π°Π·Π±Π΅Ρ€Ρƒ практичСскиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π² популярных языках программирования ΠΈ расскаТу, Π·Π°Ρ‡Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»Ρƒ Business Intelligence Badoo понадобился Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *