ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ Π±Π°ΠΉΡ ΠΊΠΎΠ΄ java
Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ Java ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ?
Π ΠΏΡΠΎΡΠ»ΠΎΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» C ++ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π― Π·Π½Π°Ρ, ΡΡΠΎ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° C ++, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Β«ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄Β».
Π― Ρ ΠΎΡΠ΅Π» Π±Ρ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Java ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ. ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Java-ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ?
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Java ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π²ΡΡ ΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Java ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Java. ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ Java (JVM). Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ JVM ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Just-in-Time (JIT) Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΌΡ Π¦Π Π½Π° Π»Π΅ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM ΠΌΠΎΠ³ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π²ΠΌΠ΅ΡΡΠΎ JIT, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡ Π΅Π³ΠΎ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡ Π΅Π³ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ. Π₯ΠΎΡΡ ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ Β«ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌΒ», ΠΎΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠ°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ (ΡΠΎ Π΅ΡΡΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Java Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, ΡΡΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Java).
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Π»Π°Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Java Π² Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ». Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Java Π½Π°ΠΏΡΡΠΌΡΡ.
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
ΠΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Java:
ΠΠΎΠ³Π΄Π° Java ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ? ΠΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ JVM ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° ΡΠ°ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ ΠΈΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ»Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΡΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ; Π΄Π»Ρ ΡΠ°ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π° Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ°ΡΠΈΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°, ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°, ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ±ΡΠ°Π½Π° Π΄ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΡΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ.
Π’Π΅ΡΠΌΠΈΠ½Ρ Β«ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊΒ» ΠΈΠ»ΠΈ Β«ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊΒ» Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ»Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ / ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°ΡΡΠΈΡΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠΎΡΠ½ΠΎ Π² ΡΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ ΡΡΠΈΡΠ°Π»ΠΈΡΡ Β«ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈΒ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ JavaScript.
Java ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² Java VM, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ.
ΠΠΈΠ΄ ΠΎΠ±ΠΎΠΈΡ . Π‘Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Java (Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Β«ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΠΉΒ») Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΡ JIT.
Java Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ, ΡΠ°ΠΊ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ,
ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π°, Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ, Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° JIT. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π² 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, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ
5 Π»ΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ
ΠΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ? ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Java? ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π²Π°Ρ.
Π ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ΄Π½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π΄Π»Ρ Π²Π°Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π»ΡΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Java Π½Π° ΡΡΠ½ΠΊΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Windows.
Π§ΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°Π»ΡΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²Π°ΠΌ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΡΡ ΡΡ Π΅ΠΌΡ 5 Π»ΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java.
ΠΡΡΡΠ΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java
HotSpot
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
OpenJ9 ΠΎΡ Eclipse Foundation IBM ΡΠΈΡΠΎΠΊΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΌ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠΌ HotSpot. ΠΠ°ΠΊ ΠΈ HotSpot, ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Java ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Java.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Ρ Windows, AIX, macOS, Linux ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° β Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» OpenJDK β Π΄Π»Ρ ΡΡΠ΅Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΠ‘, ΡΠΎ Π΅ΡΡΡ Windows, Linux ΠΈ macOS.
ΠΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎ ΠΎΡΠ½Π°ΡΠ΅Π½Π°, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅ΠΉ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ OpenJDK ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΎΠΏΡΡ.
OpenJ9 β ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΈΠ½Π°Π½ΡΠΈΡΡΠ΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°. Π’ΠΎΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, OpenJ9 Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
JRockit
ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² Windows ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ISA: SPARC (Π΄Π»Ρ Solaris), x86-64 ΠΈ x86.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, JRockit ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. ΠΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Oracle JRockit Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Java, ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ°, ΠΌΡΠ³ΠΊΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ, Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π±ΡΡΡΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° (Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
JRockit ΡΡΠ°Π» ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² 2011 Π³ΠΎΠ΄Ρ, Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ Oracle. Π ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ.
Squawk ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π°
ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Squawk ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΄Π°ΡΡΠ΅ΠΉΡΡ JVM, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. ΠΡΠΎ ΠΌΠΈΠΊΡΠΎ Π²Π΅ΡΡΠΈΡ JVM, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ, Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΌ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎΠΌ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ½ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π° Java ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠΎΡΡ-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Windows, Linux ΠΈ macOS.
Squawk, ΠΊΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² / Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½ Java-Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ C ++ ΠΈ Assembly. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° Java, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Β«ΠΌΠ΅ΡΠ°ΠΊΡΡΠ³Π»ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌΒ».
ΠΡΡΠ³ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Squawk Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°, ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠΎΡΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ, ΠΌΠ΅ΠΆΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ, ΠΏΡΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Squawk Π»ΠΈΡΠ΅Π½Π·ΠΈΡΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ GNU General Public License (GPL), ΠΈ ΠΎΠ½ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ.
ΠΠΏΠ°Ρ ΠΠ°ΡΠΌΠΎΠ½ΠΈΡ
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 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 ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄.