Portál AbcLinuxu, 1. května 2025 05:51
Je to už nějaký čas, kdy Dan Ingalls zveřejnil demonstrační verzi svého malého projeku SqueakOnJava, což je implementace smalltalkovského virtuálního stroje v Javě. Bohužel od té doby se nedostal ke zveřejnění zdrojových kódů.
Protože se nezdá, že by k jejich zveřejnění mělo brzy dojít, zkusil jsem využít jedné z pozitivních vlastností Javy, kterou zdědila po Smalltalku - čitelný dekompilovaný kód. Binární třídy jsem tedy prohnal programem jad.
Původně jsem měl za to, že Dan vytvořil translator Smalltalku na Javu a nechal kód interpretu vygenerovat podobně, jako se to dělá pro jazyk C. Alespoň se jsem tak odvozoval od nijak oslňující rychlosti výsledného virtuálního stroje. SqueakOnJava je ale zcela samostatná implementace od nuly. Narozdíl od JPythonu, JRuby apod. nepoužívá překlad přímo do bytekódu Javy, ale smalltalkovský bytekód jednoduše interpretuje.
Samotný výstup z jadu není sice dokonalý (neumí si dobře poradit např. se zanořenými třídami či návěstími), ale úprav skutečně mnoho nepotřebuje. Celý tento virtuální stroj má cca 5500 řádků dobře čitelného kódu. Současná implementace má ještě řadu nedostatků. Neumí ukládat image, má problémy se čtením image s jiným endianem, implementuje minimum primitiv apod. Ovšem k puštění a provozování malé MVC image postačuje.
Krom toho, že to jednoho zarytého smalltalkera přinutilo zase jednou pustit Netbeans, to zatím k ničemu užitečnému asi dobré není, ale minimálně pro případ, kdy potřebujete provozovat Smalltalk někde, kde nelze nainstalovat nativní virtuální stroj, to může být v budoucnu dobrý pomocník.
Download: SqueakOnJava.zip
Tiskni
Sdílej:
nejnovější Ingallsův vynález
JRuby nepřekládá do java bytecode.Zatím. Ale chtějí to, bohopytelně z výkonových důvodů.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.