|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。
从JavaFX官方博客上读了一篇文章,是会商从Java代码中挪用JavaFX类的办法。如今的情形是,JavaFX能够挪用Java的类,基础没有甚么限定,而反过去,Java却不成以任意挪用JavaFX的类。这点能够从JavaFX项目标编译历程看出缘故原由。以NetBeans为例,Build的历程是先编译Java代码(javac),然后才是JavaFX代码(javafxc),如许一来,Java代码不晓得有JavaFX类,而JavaFX类却能够”瞥见”Java类。搜刮一下我们能够发明,良多程序员都在寻觅各类从Java中挪用JavaFX类的办法。有一篇风趣的(英文)文章是先容怎样经由过程反向工程来剖析JavaFX类的布局。就连那篇JavaFX官网上的文章,也接纳了非尺度的API来完成这一目标,并且也”包管”这类办法一定会鄙人一版本中生效。
那末我们究竟需不必要Java和JavaFX之间的这类互操纵性呢?我以为这类互操纵性是很有需要的。假如二者能够近似于能够混用的水平,从久远上看,JavaFX能够有更年夜的性命力。试想一下使用MVC的计划形式(Model-View-Controller),我们能够用Java和JavaFX分离在一同开辟使用:用Java来写”M”和”C”两部分,用JavaFX来写”V”部分,这将长短常风趣的一件事变。
今朝,有几种”尺度”的办法来从Java挪用JavaFX。
1.利用ScirptEngineManager类,的文章提到,我们能够如许做:
packagecalc;
importjava.io.InputStreamReader;
importjavax.script.ScriptEngine;
importjavax.script.ScriptEngineManager;
importjavax.script.ScriptException;
publicclassCalculatorLauncher{
publicstaticvoidmain(String[]args){
try{
ScriptEngineManagermanager=newScriptEngineManager();
ScriptEngineengine=manager.getEngineByExtension("fx");
InputStreamReaderreader=newInputStreamReader(CalculatorLauncher.cla
ss.getResourceAsStream("Calculator.fx"));
engine.eval(reader);}catch(ScriptExceptionex){}
}
}
可是,这类办法实在没有多粗心义,由于它就是象System.exec(”calc”)那样做个体系挪用罢了。我以为还不如用System.exec(”JavaFXCalculator.fx”)加倍间接一些。
2.接纳JavaReflection来剖析JavaFX的bytecode,失掉各个method或属性,然落后行各类挪用。道理上这是可行的。可是因为reflection十分庞大,使得有用性年夜打扣头,同时,代码也没有甚么可读性了。
3.第三种办法是界说一个Java的interface,然后在JavaFX中完成这个interface。比方:
publicinterfaceJavaInterface{...}
在MyJavaFXClass.fx中,能够如许写:
publicclassMyJavaFXClassextendsJavaInterface
{...}
在Java代码中,只需依照interface来挪用JavaFX对象便可。这类办法能够办理年夜部分互操纵性的成绩。独一的贫苦就是必须界说一年夜堆interface,可是这是我今朝地位发明的一种最好的办理情势。
JavaFX如今是刚公布的初版,以是我们无需对它苛求太多了。不外我仍是但愿JavaFX的计划者鄙人一版本中仔细思索这个成绩。
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。 |
|