Thursday, April 19, 2007

Bookmark April 19 2007

Actionscript Virtual Machine

Actionscript Virtual Machine (AVM) merupakan engine yang terdapat di Flash Player untuk mengeksekusi code-code dari bahasa program Actionscript.

Dalam sejarahnya sampai posting ini dipublish, AVM bisa dibedakan menjadi 2 generasi.

Generasi pertama atau biasa disebut AVM1 (Actionscript Virtual Machine 1) digunakan pada Flash versi 4 – versi 8.

Generasi kedua (AVM2) diperkenalkan pada Flash versi 9.

Pembahasan mengenai AVM tidak lepas dari sejarah actionscript.

Berikut adalah perkembangan actionscript dari Flash 3 – Flash 8 :



- Pada Flash 3, actionscript hanya berupa kode perintah sederhana untuk mengatur pergerakan dan kontrol animasi. Movieclip mulai diperkenalkan.

- Pada Flash 4 pemakaian variable mulai dioptimasi dan dilengkapi interface untuk berhubungan ke CGI (Server).

- Pada Flash 5 actionscript versi 1 mulai mengikuti ECMAScript. Operasi dengan XML mulai diperkenalkan.

- Pada Flash 6, di authoring tool Flash MX disertakan component UI yang merupakan penerapan OOP pada actionscript dengan memakai konsep prototype.

- Pada Flash 7 (Flash MX 2004) actionscript beranjak ke versi 2 dan dibakukan menurut ECMAScript. Tetapi belum 100% “standard compliant”. Pembakuan ini hanya untuk kepentingan aturan notasi dan deklarasi penulisan, dan belum merupakan pembakuan kode dalam arti yang sebenarnya. Karena sewaktu dikompilasi kode-kode actionscript 2 tetap serupa dengan actionscript 1. Demikian juga proses eksekusi bytecode oleh AVM , tidak ada perbedaan berarti antara code actionscript 1 dan actionscript 2.

- Pada Flash 8 terdapat peningkatan yang nyata pada aspek visual, misalnya Filter dan Glow, Bitmap Caching, optimasi Flash Video (flv), Blend mode dan lain-lain. Sedangkan dalam Core API terdapat API baru yaitu External Interface yang mempunyai fungsi hampir sama dengan fscommand untuk eksekusi kode yang terdapat di host (kontainer ActiveX , Javascript di browser, dll).



Actionscript Virtual Machine 2 (AVM2) dan Actionscript 3.0

AVM2 merupakan penulisan ulang (full rewrite) dari AVM1. Dan Actionscript 3.0 adalah versi selanjutnya dari actionscript yang ditujukan untuk AVM2.

Baik AVM2 dan actionscript 3.0 pertamakali diperkenalkan pada Flash 9 public beta (Flash 8.5) yang direlease akhir 2005.

Keduanya (AVM2 dan Actionscript 3.0) merupakan kata kunci dalam terminologi flash versi 9.

Pada awal kemunculan Flash 9 sering muncul kerancuan pada kata lain yaitu “Flex”.

Flex adalah sebuah framework yang dibangun berdasarkan teknologi Flash.

Flex pasti Flash dan Flash tidak hanya Flex.

Framework Flex terdiri dari package raksasa class class actionscript 3.0 yang diperkenalkan oleh adobe (macromedia) untuk membuat aplikasi web di swf.

Hampir serupa dengan .NET framework yang dibangun di C/C++ oleh Microsoft.

Sampai saat ini Flex sudah mencapai versi 2, dan ditulis di actionscript 3.0.



Mengapa bahasa Actionscript diklaim mempunyai keseimbangan baik sebagai static language dan dynamic language?

- Dikatakan static seperti halnya bahasa C++, C#, dan Java karena sanggup membangun system aplikasi yang komplek dan sempurna dibanding versi sebelumnya.

- Dikatakan dynamic karena seperti halnya bahasa – bahasa dinamis seperti ECMAScript, Perl, Python; actionscript mampu menawarkan flexibilitas dan lebih expresif.



Actionscript 3.0 diyakini sudah 100% memenuhi spesifikasi ECMA-262, dan fitur–fitur bahasa yang terbaru yang terdapat didalamnya berdasarkan proposal ECMAScript 4 Netscape.





Flash Player 9


Flash player adalah keseluruhan engine yang mengeksekusi file movie (swf) flash. Mulai dari me-render vector graphic, menjalankan animasi sampai sebagai interpreter dari code – code actionscript, yang sebelumnya sudah dirubah menjadi bytecode sewaktu swf di-compile.

Flash player bisa diakui sebagai salah satu monumen yang terdapat di internet. Salah satu interpreter terkecil dan terluas penyebarannya ke seluruh dunia dan hampir ke seluruh platform sistem operasi.

Sewaktu masih bersama Macromedia, menjaga ukuran player tetap kecil adalah prioritas utama dari tim enginering flash player. Ada kemungkinan prioritas lain akan bertambah dan berpengaruh sesudah teknologi flash dipegang Adobe.

Di player versi 9, kedua virtual machine (AVM1 dan AVM2) masing-masing eksis. AVM2 untuk mengeksekusi Flash9 dan AS3, sedangkan AVM1 untuk mengeksekusi flash dan actionscript versi sebelumnya.



Hal ini memberikan keuntungan dalam kompatibilitas tipe swf yang dieksekusi, dan memberikan kebebasan developer dalam membuat movie tanpa terbatasi oleh versi movie swf yang mereka buat.

Mengapa actionscript harus dirubah menjadi bytecode sewaktu di-embed ke dalam swf? Salah satu alasannya adalah untuk menjaga ukuran flash player tetap kecil. Karena dengan format bytecode, flash player tidak perlu lagi client-side compiler untuk mengeksekusi-nya. Bayangkan bila client-side compiler tetap dimasukkan ke dalam arsitektur player.., yang pasti akan mempengaruhi ukuran player menjadi lebih besar.

Perbedaan nyata Flash player 9 dengan versi sebelumnya, di versi ini eksekusi di-klaim lebih cepat 10 kali dari sebelumnya, dan penggunaan memory dihemat 50% bahkan lebih.



Just-In-Time compiler

Just-In-Time compiler atau JIT adalah compiler internal yang terdapat dalam setiap Flash Player untuk meng-kompilasi bytecode actionscript menjadi native machine code sewaktu runtime.

Dengan adanya JIT di Flash player 9 inilah maka eksekusi code actionscript meningkat sangat pesat dibanding versi sebelumnya.

JIT merupakan solusi untuk memperbaiki kinerja AVM2 sewaktu menjalankan code actionscript. Dan diharapkan kode-kode actionscript kita akan berjalan dengan kecepatan hampir sama dengan kode – kode Java/ C++.



Mengapa JIT ?

Karena actionscript yang highly dinamic, loosely typed, dan merupakan bahasa scripting interpreter seperti halnya kebanyakan bahasa scripting dinamis lainnya akan dieksekusi lebih lambat dibanding code – code Java/ C++ yang statis yang telah berupa native machine code sewaktu code (Java/C++) tersebut dikompilasi.

Sehingga dengan JIT code-code actionscript yang sudah berupa bytecode di swf akan ditranslasi menjadi bahasa mesin. Penggunaan JIT juga dimaksudkan untuk menanggulangi perbedaan arsitekstur mesin / prosessor tempat Flash Player berjalan.

No comments: