成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談Java和JavaFX之間的互操作性

開發(fā) 后端
JavaFX Script 編程語言(以下稱為JavaFX)是Sun微系統(tǒng)公司開發(fā)的一種declarative, statically typed(聲明性的、靜態(tài)類型)腳本語言。JavaFX技術(shù)有著良好的前景,包括可以直接調(diào)用Java API的能力。因?yàn)?JavaFX Script是靜態(tài)類型,它同樣具有結(jié)構(gòu)化代碼、重用性和封裝性,如包、類、繼承和單獨(dú)編譯和發(fā)布單元,這些特性使得使用Java技術(shù)創(chuàng)建和管理大型程序變?yōu)榭赡堋1疚闹饕v述Java和JavaFX之間的互操作性。

從JavaFX官方博客上讀了一篇文章,是討論從Java代碼中調(diào)用JavaFX類的方法。現(xiàn)在的情況是,JavaFX可以調(diào)用Java的類,基本沒有什么限制,而反過來,Java卻不可以隨便調(diào)用JavaFX的類。這點(diǎn)可以從JavaFX項(xiàng)目的編譯過程看出原因。以NetBeans為例,Build的過程是先編譯Java代碼(javac),然后才是JavaFX代碼(javafxc),這樣一來,Java代碼不知道有JavaFX類,而JavaFX類卻可以”看見”Java類。搜索一下我們可以發(fā)現(xiàn),很多程序員都在尋找各種從Java中調(diào)用JavaFX類的方法。有一篇有趣的(英文)文章是介紹如何通過反向工程來分析JavaFX類的結(jié)構(gòu)。就連那篇JavaFX官網(wǎng)上的文章,也采用了非標(biāo)準(zhǔn)的API來實(shí)現(xiàn)這一目的,而且也”保證”這種方法肯定會(huì)在下一版本中失效。

那么我們到底需不需要Java和JavaFX之間的這種互操作性呢?我覺得這種互操作性是很有必要的。如果兩者可以近似于可以混用的程度,從長(zhǎng)遠(yuǎn)上看,JavaFX可以有更大的生命力。試想一下運(yùn)用MVC的設(shè)計(jì)模式(Model-View-Controller),我們可以用Java和JavaFX結(jié)合在一起開發(fā)應(yīng)用:用Java來寫”M”和”C”兩部分,用JavaFX來寫”V”部分,這將是非常有趣的一件事情。

目前,有幾種”標(biāo)準(zhǔn)”的方法來從Java調(diào)用JavaFX。

1. 使用ScirptEngineManager類,的文章提到,我們可以這樣做:

package calc;
import java.io.InputStreamReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class CalculatorLauncher {
public static void main(String[] args) {
try {
ScriptEngineManager manager=new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByExtension("fx");
InputStreamReader reader = new InputStreamReader (CalculatorLauncher.cla
ss.getResourceAsStream("Calculator.fx")); engine.eval(reader); } catch (ScriptException ex) { } } }

但是,這種方法其實(shí)沒有多大意義,因?yàn)樗褪窍骃ystem.exec(”calc”)那樣做個(gè)系統(tǒng)調(diào)用而已。我覺得還不如用System.exec(”JavaFX Calculator.fx”)更加直接一些。

2. 采用Java Reflection來解析JavaFX的bytecode,得到各個(gè)method或?qū)傩裕缓筮M(jìn)行各種調(diào)用。原理上這是可行的。但是由于reflection非常復(fù)雜,使得實(shí)用性大打折扣,同時(shí),代碼也沒有什么可讀性了。

3. 第三種方法是定義一個(gè)Java的interface,然后在JavaFX中實(shí)現(xiàn)這個(gè) interface。例如:

public interface JavaInterface { ... }

在MyJavaFXClass.fx中, 可以這樣寫:

public class MyJavaFXClass extends JavaInterface
{ ... }

在Java代碼中,只需按照interface來調(diào)用JavaFX對(duì)象即可。這種方法可以解決大部分互操作性的問題。唯一的麻煩就是必需定義一大堆interface,但是這是我目前位置發(fā)現(xiàn)的一種最好的解決形式。

JavaFX現(xiàn)在是剛發(fā)布的第一版,所以我們無需對(duì)它苛求太多了。不過我還是希望JavaFX的設(shè)計(jì)者在下一版本中認(rèn)真考慮這個(gè)問題。

【編輯推薦】

  1. JavaFX能否實(shí)現(xiàn)Sun的桌面端夢(mèng)想
  2. Sun高管透露JavaFX開源計(jì)劃 移動(dòng)平臺(tái)明年發(fā)布
  3. 開發(fā)者對(duì)JavaFX信心不足 緣自兩大障礙
責(zé)任編輯:楊鵬飛 來源: javafxgame的博客
相關(guān)推薦

2009-06-08 10:49:00

JavaFX互操作性Java互操作性

2010-03-17 12:32:07

ASP.NETjQuery開源社區(qū)

2020-03-03 21:13:20

物聯(lián)網(wǎng)融合互操作

2023-10-13 09:00:00

云計(jì)算架構(gòu)

2017-02-06 11:50:12

NFV操作性測(cè)試

2017-02-06 14:34:24

NFV網(wǎng)絡(luò)功能MANO

2012-09-07 09:51:07

云互操作性云可移植性云計(jì)算服務(wù)

2019-01-07 05:56:23

NFV網(wǎng)絡(luò)功能虛擬化API

2010-02-24 15:27:04

ibmdwMashup

2009-07-17 13:49:57

Windows Emb

2018-02-27 15:41:27

IOT語義操作性

2021-08-19 14:12:30

物聯(lián)網(wǎng)數(shù)據(jù)結(jié)構(gòu)IoT

2011-06-15 10:09:31

云計(jì)算互操作混合云

2023-12-27 14:50:10

2023-06-15 15:40:36

2012-05-15 16:21:25

2018-03-21 16:38:19

IOT語義API

2015-06-16 09:19:12

OpenStackUnitedStack互操作

2018-10-17 10:46:54

區(qū)塊鏈互操作性比特幣

2020-02-14 08:00:00

WindowsLinuxSamba
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产一区二区 | 色视频在线播放 | 欧美第一页 | 在线一区| 亚洲精品电影在线观看 | 91原创视频在线观看 | 蜜桃av一区二区三区 | 免费黄色片在线观看 | 久久久久久国产 | 亚洲精品久久久 | 日本黄色影片在线观看 | 国产精品视屏 | 欧美性影院 | 亚洲欧美一区二区三区1000 | 国产中文 | 日韩在线观看网站 | 成人做爰www免费看视频网站 | 视频一区二区中文字幕 | 国产91 在线播放 | 一区二区伦理电影 | 激情欧美一区二区三区 | 成人精品一区二区三区中文字幕 | 91精品国产综合久久精品图片 | 日韩日b视频 | 黑色丝袜三级在线播放 | 精品1区2区 | 午夜视频在线视频 | 精品三区 | 综合精品在线 | 精品国产一区二区三区久久 | 亚洲激情在线 | 国精品一区 | 中文字幕在线一 | 国产精品精品视频一区二区三区 | 成人国产精品久久久 | 日日摸日日爽 | 波多野结衣在线观看一区二区三区 | 精品国产不卡一区二区三区 | 亚洲欧美日韩中文在线 | 少妇久久久久 | 九九热免费观看 |