You are on page 1of 5

JavaFX c bn v pht trin

Xin cho mt cng ngh mi trn nn tng Java. JavaFX l mt scripting trn nn Java tp trung vo giao din ha. Ci ni tin thn ca n l F3, mt gii php giao din h tr cc cng ngh hin hnh nh Flash hay SVG,... bn c nhng ng dng c pht trin bng Flash hay SVG ri th F3 s chy c chng vi ha nh ca Swing. Ni thng, n l Swing, JavaFX cng vy, ch l mt cch thc con ngi ta vit code nhanh hn thi. Scripting th hin c nng lc xut xc trong giao din ha ng dng. n gin, nhanh, d tinh chnh, d nhin vi nhng ci t ln v phc tp th scripting khng th la chn c. Trc ht JavaFX l mt ngn ng, iu nhc nh rng n c c php th hin ca n, bt buc bn phi tun th. Chng hn nu trong java chng ta khai bo bin nh sau : String a = nhuthuan.blogspot.com th vi JavaFX, chng ta c kiu khai bo nh sau : var a = nhuthuan.blogspot.com. Bn hy xem on code di y : Code: Chn ht var x = [thuan, viet, linh tinh]; insert vao day into x; // s thnh [thuan, viet, linh tinh, vo y] Hoc : Code: Chn ht select n*n from n in [1..10] Nhn qua th bn thy quen quen ng khng, c select v insert into khng cn l lm t SQL Scripting languague hay [1..10] t Groovy hoc Ruby. Bo l JavaFX l mt scripting languege m. Nu xt v mt logic th JavaFX c ng php rt gn vi cc scripting thng dng hin nay. Kiu d liu cng khng qu cu k v ng c, tp trung 4 kiu d liu c bn hay s dng trong scripting l Integer, Number (chc thay cho Double hay Float), Boolean v String (char). Bn thy , khng c byte hoc nhng thc kiu d liu khc, qu n gin tha mn ht nhng g bn cn th hin trn giao din ha. Cc biu thc hoc ton t th n gin ri, ch khc g Java u, y ht. Th nhng vi mng, chng ta c thm cc ton t ging nh ca chun SQL, cng insert, delete, select, before,... chng hn bn nhn qua mt on code sau : Code: Chn ht Hocsinh { ten: "Nhu Dinh Thuan" email: "nhudinhthuan@yahoo.com" diem: [20, 60, 45, 55, 34, 68] }; var hoten = select ten from Hocsinh where email == "nhudinhthuan@yahoo.com"

H, c nh l ang lm vic vi c s d liu y. V khi d liu c y t database ra ri lu thnh mng th chng ta v t vit cc cu lnh SQL. Bn c th tham kho thm lin kt cui bi c nhng ci t phc tp hn. Cc mnh , x l vng lp cng ging Java nh if else, while, try-catch,throw exception, ...Tuy nhin bn s bt gp c php vng lp for ging nh trong Groovy hoc cc ton t SQL ngay trong n, chng

hn : Code: Chn ht for (i in [0..10] where i % 2 == 0) { System.out.println("i = {i}"); } hoc : for (i in [1,3..10]) { System.out.println("i = {i}"); } Th v khng, v cn mt mt iu ngc nhin na khi bn phi lm vic vi nhng m hnh d liu nh mng hai chiu chng hn: Code: Chn ht for (i in [0..10], j in [0..10]) { System.out.println(i); System.out.println(j); } l scripting grammar, n gn vi i thng hn, gn hn, d s dng hn rt nhiu.

Lin h g vi java hay khng ? C ch, JavaFX trc tin vi ci tn c tin t Java, n l Java, chng ta c th import cc th vin trong java v dng n mt cc bnh thng. Chng hn, c php ca mt on code sau th hin iu : Code: Chn ht import javafx.ui.*; import java.net.URL; import demo.Demos; import java.lang.System; import net.java.javafx.typeImpl.F3WebStart; operation DemoLauncher.startApp(app:DemoApp) { var baseURL = if app.baseURL == null then new URL("file:") else new URL(app.baseURL); var args = [app.className, "-classpath", "{select "{new URL(baseURL, p)};" from p in app.classPath}"]; F3WebStart.start1(args, null, null); }

Nh bn thy y, chng ta s dng lp URL t gi java.net.URL, d nhin khng c thoi mi nh ngi trong nh, lp System t java.lang bn cng phi ... import. V mi th ging nh kiu mun dng th phi xin php nh. Chng ta c th to i tng nh trong java, gi cc hm hay ci t interface. Reflection cng c trin khai mt cc ng nhm tng cng s linh hot cho scripting ny. Chng hn : Code: Chn ht class ABC { attribute a: Number;

} var x = new ABC(); System.out.println(x.class.Name); Kt qu s in ra l ABC, ra chuyn l tn lp ca i tng x l ABC. Thy cha, n cng kh ging Java y ch. V n hng i tng. Vng chng ta cng phi vit class, tm thi b qua nhng c im c tnh sch v nh tha kt hay a tha k, interface, tru tng d liu, a hnh,... chng ta hy xt n s n gin ca m hnh ci t hng i tng. Ngha l mt i tng c thuc tnh (d liu)v chc nng (kh nng x l). Hy xem class sau : Code: Chn ht class Window extends AbstractFrame { attribute screenx: Number; operation Window.pack() { frame.pack(); } } Rt hng i tng, phi khng, cng tha k nh ai v cng ging gn nh cc i tng nh dng trong HTML l c ... attribute. Tuy nhin class khng c constructor, cc thuc tnh cng khng c setter-getter nh trong cc Java bean. Ni khng ngoa, vic ci t cc setter-getter trong java bean lm ti mt t n v ri tinh tm. Thay v c setter, JavaFX a ra trin khai mi tng c l triggers ging nh trong SQL. Trigger c c php bao gm phn u v phn thn, phn u ch r trigger gn d liu vo u v phn thn l ch r gn ci g vo. c v d sau l bn hiu ngay : Code: Chn ht import java.lang.System; class X { attribute nums: Number*; } trigger on new X { // gn d liu vo khi to mi i tng insert [3,4] into this.nums; // d liu gn vo } var x = new X(); System.out.println(x.nums == [3,4]); // kt qu in ra l true Bn c mt vi kiu trigger l to mi, cp nht, thay th, lng d liu vo, xa...chng hn trigger xa d liu s vit nh sau: Code: Chn ht trigger on delete num from X.nums { System.out.println("just deleted {num} from X.nums at position {indexof num}"); }

D nhin, trong bi vit, ch c gng dt nga cho bn ngm hoa, mun thun thc v linh hot th bn cn phi thc hnh nhiu v b sung vn ng php lm vic vi JavaFX bng cc ti liu chnh thng t Sun. lc Th su, thng nm 11, 2007 9:35:00 SA, Blogger nhu dinh thuan vit... Tr li mc ch chnh Java c rn thm a con ny chnh l giao din. Nh ni, scripting th hin mt nng lc xut xc trong lnh vc GUI cho Application. Do , mc nh chnh ca JavaFX l lm n gin ha qu trnh to giao din v ci thin c v tc code ln tc thc thi ng dng. Giao din ha m JavaFX th hin chnh l Swing look and feel. Cc component tng ng cng ging nh trong Swing, chng ta c Window, Button, Label, Text, ProgressBar, Menu... ging nh HTML Tag, cc i tng ha ny hng nhiu n FORM hn l nh dng ti liu, chng cng c attribute nh HTML gip cho vic trang tr mu m nh font, nn, c ch,... Chng hn, xem mt on code n gin sau: Code: Chn ht import javafx.ui.*; Frame { title: "Hello JavaFX Article" width: 200 height: 50 content: Label { text: "h h" } visible: true } Component c th cha component. Tuy nhin, khc vi HTML l chng ta c th ci cc action vo y. Chng hn on code sau : Code: Chn ht Frame { content: Button { text: "n em no!" action: operation() { System.out.println("n na i anh!"); } } visible: true } Qu tuyt phi khng, nu mun ci cc action listener trong HTML node chng ta phi cn n JavaScript v nh vy th chng khng ng nht v tng minh cho lm. Chng ta cng c nhng khi nim v layout hay border, chng c b t Swing sang : GridPanel GridLayout GridBagPanel GridBagLayout FlowPanel FlowLayout BorderPanel BorderLayout Box BoxLayout StackPanel, CardPanel CardLayout GroupPanel . Y ht nh, cng c canvas bn v vi hoa l vo y v n hon ton h tr 2D thm ch l c 3D na. Ti th cha th t no nn cng kh nh gi, thy Sun qung co vy th n theo ni leo vy thi ch c bit g u. Mt im c bit ca c bit na l JavaFX c h tr HTML. HTML th qu thng dng ri, ai cng bit, do

JAVAFX h tr HTML khng c g ngc nhin c v n lm tng cng tnh hp dn ca cng ngh ny vi lp trnh vin. Chng hn xem on code sau: Code: Chn ht Frame { content: Label { text: bind "

Shopping Cart
} visible: true } Li cn c th vit logic code xen ln code HTML c na ch, th mi ku. Cui cng th, ni g nh, va c mt ci lic dc, lic ngang vi mt sn phm mi l JavaFX ca Sun. ni chung l mt s n cho, n mnh cho ta pht trin cc ng dng c giao din ha phc tp. Sun ang c mt chin lc, l chin lc cho mt m hnh ng dng pht trin vi giao din ha Swing v phn phi qua Internet. Tt c phi n ch s ra i ca Java 7, khi m JRE c bn Kernel c phn phi qua net vi kch thc trn di 3mb. JavaFX c nhn nh l i th thch thc Flash, AJAX,Flash, Silverlight ... nhng mi ch l nhn nh. Vic n c t c thnh qu hay khng th hy cn ch, nhng trc mt, n s n gin qu qu trnh code ca lp trnh vin vi cc ng dng desktop trn Java. L mt scripting language, c php rt gn gi v d hc. Nu bn c kinh nghim vi Swing, kin thc v SQL, tng lm vic qua vi mt scripting no nh JavaScript, Ruby hay Groovy th vic hc v lm vic vi JavaFX l qu d dng. Cam oan vi bn l hc khng n mt ngy u. Do ng vi vng g m m ly JavaFX hc ngay khi ngi ta cn ang ba hoa v n. Khi no cn th hy ng n n, thi gian tp trung vo nhng vic khc tt hn, chng hn nh ngi vit linh tinh nh ti by gi y ny. Ti cng ch hc n lm g, khi thy Java One qung co th down code v cng lt qua my tutorial ri ni hng in in vit bi vit ny. Ch thc lng c hc g u, cng ch lm vic bao gi, thm ch ti cng khng thm bt Netbean ln g vi dng xem n th no na. H, ng hc bn nh, mt thi gian, khi no cn th mn cng c.

You might also like