JavaFX Script
bullet Crystal -- 2009-07-08
Pár napja foglalkozok már a JavaFX technológiával, itt az ideje, hogy összefoglaljam az első tapasztalatokat :) Ebben a postban kizárólag a JavaFX saját nyelvéről, a JavaFX Script-ről fogok írni (tehát ebbe nem tartozik bele az API és az IDE támogatottság).

A JavaFX a szkriptnyelvek tipikus jellemzőit hordja magában, sok elemet felfedezhetünk benne a php, python, javascript nyelvekből. JVM nyelv, tehát nem java, de java bájtkódra fordul (régebbi írásom a témáról), és ez azért itt-ott érződik is rajta, a típustalansága csak látszólagos (ezzel néha akadnak is problémák, vannak dolgok, amiket a fordító nem tud kezelni).

A nyelv nem túl bonyolult, a referenciát 2-3 nap alatt át lehet nézni (bár ez a dokumentum még erősen hiányos). A legjobb és legfontosabb feature azt hiszem a binding, amivel sok favágó kódot megspórolhatunk, ha MVC modellt használunk (és ugyebár azt használunk:)), akkor a binding segítségével könnyen rá tudjuk drótozni a UI-t a modellre, ami nekem nagyon tetszik.

Érdekes dolgokat találunk a nyelv tömbkezelése környékén. Egyrészt tömbök tulajdonképpen nincsenek is, a referencia szekvenciának hívja őket, de mivel ennek nem fix a mérete, ezért szerintem nem felel meg az általános tömb-fogalomnak (egyébként ennyi erővel a php tömb sem igazi tömb). Szóval a szekvenciában az a nagyon furcsa, hogy csak egydimenziós lehet, amit nem igazán értek, nem lenne nehéz megoldani, hogy többdimenziós is lehessen. Persze mindent meg lehet oldani egy dimenzióval is, csak hát szívás. Ezt a "fícsört" egyébként a nyelv tömbkezelő műveletek gazdag arzenáljával kárpótolja, amiben egyébként tényleg vannak jó dolgok.

Closure-ök ("inline függvények" ha úgy tetszik) szkriptnyelvhez méltóan szintén vannak, ami mindig egy izgalmas lehetőség pl. eseménykezelésünk megvalósítására. Érdekes, hogy a java-val szemben a JavaFX Script támogatja a többszörös öröklődést, ami lövésem sincs hogy milyen bájtkódra fordul, majd ha kicsit több időm lesz utánanézek.

Na most elsőre ennyi, folyt. köv. :)
ClassFileAnalyzer
bullet Crystal -- 2009-07-04
Pár hónapja írtam a Jasmin-ról, ami egy java bájtkód assembler, azaz egy assembly-szintű nyelvből fordít java bájtkódot.

Nyilván ennek önmagában nincs sok értelme, gyakorlatilag senki nem olyan mazoista hogy nekiálljon kézzel (majdnem)bájtkódot írni. Elég sokáig tartott, mire találtam olyan java disassemblert, ami jasmin-komaptibilis assembly-re fordítja vissza a bájtkódot, de végül meglett, ő a ClassFileAnalyzer (nagyon fantáziadús neve van :)). Nekem jól fog jönni, érdekel a jvm és a bájtkód működése, de azért az kicsit sok lenne, hogy hexa editorral olvassak class fájlokat... Most elkezdtem JavaFX-et tanulni - majd írok arról is -, és sok nyelvi szerkezet érdekelne, hogy milyen bájtkódra fordul, ezért kerestem disassemblert.
Jasmin
bullet Crystal -- 2009-04-12
A Jasmin a Java Assembly Interface rövidítése, tehát "bytecode assembly"-ből fordít java bájtkódot. A bájtkódnak egyébként nincs szabványos assembly-szintű reprezentációja, a jasmin által értelmezett szintaxis számít de-facto szabványnak.

Persze kérdés, hogy mi értelme van egy assembly nyelven jvm-re programozni, mert hát tulajdonképpen semmi, max akkor jön jól, ha egy zárd kódú java programot akarunk hackelni. Ettől függetlenül java programozóként érdemes egyszer kipróbálni.