各位,现在如何用java做界面面是不是fx最好

Java FX 技术预览:据说正式发布日期为12月2日 - Web前端 - ITeye资讯
相关知识库:
,目前最终发布版本在紧张测试中。Silverlight已经发布2.0版本,Flex 3.0也正式发布了。Sun需要加油了。
JavaFX 技术预览:
说道:由于Java技术的成功,sun希望在企业平台市场之外也能取得胜利,比如需要跨平台支持的移动开发,安全性和稳定性要求很高的领域,Java也能成为一个优秀的选择。但是某些开发任务从一些特殊定制的语言中获益,由于Java是一个通用语言,反而不那么适用。比如现代GUI用户图形界面设计提出了技术和管理两方面的挑战。
在管理方面,复杂的用户界面典型的需要一系列不同的角色,图形设计师,信息架构师,动画制作和开发。某些人也许同时同时具备这些能力,但是这样的人非常少,更多的情况是不同的人处于不同的角色,因此协调不同的角色工作成为一个大问题。在技术方面,现代UI用户界面设计经常需要高层次的技术知识,一个尖端的工具包类似Swing面对一个开发者解决一些复杂的控制之前,他们需要学习如何创建UI用户界面,界面的响应严重依赖协作。多线程Java开发是非常简洁的,但是结果是许多模板代码不得不管理转换和动画。
作为Adobe Flex和微软Silverlight的竞争对手,Sun JavaFX 是sun针对Java开发者推出的战略。JavaFX目标是提供新的基础平台来创建跨桌面,跨网络,跨移动设备的RIA富互联网应用。它也是Sun在java产品市场战略中重要的改变,sun期望看到用JavaFX创建完整的解决方案,而不是专注于独立底层架构。现在的JavaFX技术预览提供了两个重要组件:Project Nile,这是专注于设计者/开发者工作流,以及JavaFX Script,一个新的declarative language声明式语言,来编写java GUI 应用。
不管是Flex 还是 Silverlight 都是用XML作为声明式语言(MXML 和 个别使用XAML),sun选择开发一个新的脚本语言,JavaFX Script。Sun工程师Joshua Marinacci说道:sun没有计划添加XML语言支持。我们发现很多开发者非常讨厌使用XML,希望一个更加简洁的声明式语言来书写图形化界面。我们想熟悉JavaScript的开发者会发现JavaFX Script非常容易使用。
JavaFX Script是一个声明式,静态,编译的 特殊领域语言Domain Specific Language (DSL),基于Java基础和宏编辑之上来创建用户界面,使用目前的Java包能获得JavaFX环境。它目标是两种不同用户:
1。Java 开发者,已经熟悉Swing和寻找一种快速有效方式创建富界面应用。
2。web开发者,更加熟悉其他脚本语言,比如JavaScript 或 ActionScript。
JavaFX Script 拥有强大的生产力,包含一些方便的描述功能,用来插入和删除操作(比如insert 10 before x[1]),其他常见问题被优雅的解决,绑定UI组件到后台数据非常简单,比如语言通过一个简单的类似监听者结构,支持当变量改变触发一个动作。
Sun特别强调语言的可读性,容易管理开发者的代码。结果之一就是JavaFX Script使用类似BASIC的布尔操作符取代在Java和JavaScript中都使用的C风格的操作符。比如JavaFX Script使用'and'表示&&,'or'表示||,也使用'not'虽然也支持'!'。它对于目标用户的确很容易使用。
JavaFX Script也有其他的惊喜,比如支持使用目前保留的关键字创建变量和函数,另外JavaFX Script也支持多重继承,而不是采用Java的interface接口机制。Marinacci说道:我们发现GUIs的上下文非常简单,在大多数情况下,开发者不会使用任何子类,所以这不会成为一个问题,子类主要提供给组件开发者使用。
JavaFX翻修了一系列与Java类似的定义,一个注意的地方就是JavaFXDoc 相当于Javadoc,JavaFXDoc使用XML取代HTML作为输出格式。目前提供的XHTML 1.0格式还支持输出PDF格式文件或者进入数据库创建知识中心。新的输出格式不使用frames,容易通过CSS定义,也允许一些基本的过滤创建档案。这里是一个例子:。JavaFXDoc 面向产品化,还支持inline exapmles通过@examples标签。在自动生成的时候提供Example代码的语法高亮。文档工具编译运行example,并生成截屏,进入自动生成的文档,而且在代码修改后,能保持同步更新最新的截屏。基于Java 7的JavaFXDoc还将会提供更强大的搜索功能。
JavaFX Script能从任何现存的java包中获取,包括新的APIs,两个核心部分是media 媒体APIs(目前提供作为本地库,在version 1正式发布时,未来将被
取代 )以及scene graph 场景图形API。scene graph API是以前Swing提供GUI后台支持的升级部分,这里GUI作为视觉节点层创建场景和应答用户界面。scene graph模块支持效果,自由变形(放大缩小和旋转),以及动画。scene graph保留graphics object图形对象和在场景中画下它们,如果刷新事件发生,处理重画细节,缓存和许多其他类似即时模式比如Java2D。这个抽象层也允许API处理所有自动优化比如重载纹理和图形卡的元素。scene graph API和JavaFX紧密关联,但是你也可以在普通Java应用中使用它们。Sun分隔了APIs为三部分,其中两个现在已经可以使用:common profile通用部分在每个设备上对于所有的API都是可用的,包括scene graph API 和 media components媒体组件,desktop profile桌面部分代表更加类似于Swing的组件,第三个是mobile profile移动部分将在2009年发布,使得JavaFX成为一个完整的解决方案。
这里有两个明显的common API遗漏,比如这里没有Table, TabbedPane, TextArea, 和 BookPanel组件在JavaFX 预览版本中的类似替代。新的版本应该会更加完整和稳定。Marinacci说道:我们计划移动更多Swing组件到子类节点,所以你能自由混合Swing组件和图形节点,而不需要使用修改类。成为高级类(比如tree和table)只有存在于Desktop桌面中。决定开发一个新的语言,而不是跟随Adboe的领导是一个大胆的决定,但是我认为这是一个好的决定。
JavaFX Script是一个使用起来很舒服的语言,在目前应用之外也许还有其他用处,比如JavaFX数据格式(JavaFX data format FXD), project Nile的重要部分,使用JavaFX Script的子集申明格式来代表图形资源。
对于Silverlight,微软使用自己的工具包(Expression suite),直接取代Adobe的Creative Suite 工具包所提供的功能。Sun也在开发自己的工具,希望明年能够发布,可以使用Project Nile作为第一个专注点来支持流行的用Adobe的Illustrator 和 Photoshop 现存工具开发的资源。
操作系统方面,同时支持OS X和Windows,project Nile包括Adobe Illustrator 和 Photoshop CS3 插件和 SVG转换器,和一个JavaFX数据格式(JavaFX data format FXD)浏览器。一个设计者使用任何一个Adobe工具创建他们的图形资源,能够导入文件到FXD中。浏览器工具允许用户查看图形文件确认文件正确。在JavaFX script语言中,开发者能够使用多层独立的层来形成一个单一的图形资源文件。这个功能对于图形文件资源非常有用,但是对于提供用户基本组件方面仍然有些问题。Sun试图通过CSS和使用CSS的skin Swing组件来解决问题,这部分也将在JavaFX 1中正式发布。
支撑所有这一切的是Java 6 Update 10,最新的JRE,提升了部署,性能,内存使用和界面(使用新的Nimbus),所有这些帮助Swing作为桌面开发平台更加强大。不幸的是,对于开发者仍然有限制。Sun让update 10在Linux和Solaris平台上的支持和Windows一样好,而且不同版本关键性的实现比如applet quickstarter快速启动, kernel installer核心安装, 和 direct3D pipleine 管道等只在windows平台有限制。此外,Apple选择 在任何64位Intel Macs的OSX 10.5平台限制Java 6。Marinacci着重强调sun已经和Apple一起为提升Java和JavaFX在OSX上的支持而努力,但是没有提供更多细节。(Apple对Java一向不太友好,这种状况什么时候改变?)
Marinacci给出了最新的下载细节:
引用我们每个月都有4千万到5千万的JRE下载,有几个月甚至超过一亿。95%以上下载都是JavaSE 6。
Flash和Silverlight 都完全关闭了自身所有工具的源代码,以保证开发者转换的竞争壁垒。此外,Adobe提供的很多重要的Flash代码,比如音频和视频编译码器,都是第三方版权代码,所以Adobe很难象Sun开放Java一样开放平台。虽然没有最终发布,Sun已经承诺JavaFX将作为开源软件,在GPL v.2 license许可下发布和编译scene graph APIs。这对于吸引开发者转换平台很有好处,但是JavaFX希望成为一个强大的竞争对手,还需要更多努力。
如果运行javaFX要下载这么大的JRE,我宁可不用
银光?貌似微软自己都没有像样用过。
微软的什么东西,好用吗?反正我是没用过哦,还是sun的好
Customer JRE (java 6 update 10,大部分用户只要下载此jre 就行了,开发用户才需要下载jdk)体积和flash player 差不多。性能方面已经没有话,web中嵌入的applet的加载速度已经不亚于flash。一些网站有swingset2 的 applet 演示,速度已经相当满意。java 6 update 10中 applet 可以直接拖出浏览器,在桌面运行。现在万事俱备只欠东风了,java fx 发布,将给java 注入一种新的血液。但不得不说的java fx 要加强工具开发才行,要提供可视开发工具才行,和Netbeans的GUI开发一样。至于ms那个鸟东西,不知道有谁在用,不了解。
上面提到的问题现在已经从技术层面上解决了。作为一个Java使用者或是爱好者应该知道Java update10作出了什么样的改进。些外推广的程序不太理想,加油JAVA
jre不减小的话别的都没用。要是jre能做成flash播放器那么大,别说javafx,swing也早就火了。
有道理,但是前提太多。
不如现在的模式好,不过压缩体积有必要。
wolfbrood 写道jre不减小的话别的都没用。要是jre能做成flash播放器那么大,别说javafx,swing也早就火了。在java6 update 10中,Sun改进了发布,Java在线核心安装让首次使用Java的用户运行applets和Java web Start应用更快,不需要等待整个Java平台下载完成,核心kernel只有4-5MB大小下载完成就可以运行。
jre不减小的话别的都没用。要是jre能做成flash播放器那么大,别说javafx,swing也早就火了。
不太了解,现在JavaFX在客户端不需要JVM支持了么? 如果需要的话,估计下场会和applet一样的……20098人阅读
JAVA(156)
我用Swing做出的例子:
JavaFX做出的界面:
后来又做出了自己编写的一套基于Synth的L&F,其与直接在代码中重绘某个组件不同,最大优点是具有可插拔性,即在不改变原有程序代码的情况下,用户可以自己选择切换风格,通用性增强。对于前面的JLayer的界面切换成MyLNF后的效果:
(获得焦点效果)
(失去焦点后的效果)
(鼠标移到Container内容面板上后显示的效果)
最后说下自己的感想:
1、现在Java界面编程真的不是首选。可插拔式的Look and feel不论基于Basic还是Metal编写繁琐,开发周期长。后来1.7推出的Synth基于XML导入式概念虽然新颖,但是对于Components Specific Properties的支持不够例如对于JTable的Properties支持很少导致可定制性降低。基于Nimbus编写的话,首先运行效率不如Metal,然后重绘每个Component也很麻烦,用图片做背景需要九宫格技术的支持。无论如何,Look and feel由于Java内部本身的限制,提供定制的范围确实有限,有些东西你customize不了,因为它没有提供那样的接口。
2、但是简单的界面编写如对动态效果没什么要求,对Desktop集成没什么要求(Java需要调用JNI来集成一些桌面特性,如WIn7任务栏图片的进度加载显示,还有比如SystemTray也只能用AWT的PopupMenu导致没法定制出和QQ、迅雷等一样的托盘效果),使用Swing还是可以的,Swing的优势也就在于跨平台性好,优于SWT。建议简单界面能使用Swing的还是不要使用SWT,对于简单界面,自己编写的L&F也搓搓有余了。
3、对于想要Charts、多媒体支持、动画效果、滤镜支持、触摸事件感应处理等富Internet绚丽界面的追求的话,建议选择用JavaFX,可插拔式用外部链接的CSS代替,一般界面的编写可以用FXML,逻辑处理用Java语言或者JavaScript。这样结构化很明显,也很现代化(参见)。但是JavaFX目前Bug还是很多,很多功能不完善,比如SystemTray没有支持,Print打印功能也是在未来Java8中绑定,但是对于打印表格table似乎还没有支持(我不大确定,因为我只是初步的看了一下,还没有深入研究)。但其UI组件未来会逐渐增多。
4、目前的话Java界面编写还是JavaFX比较有前途,但是就目前的JavaFX而言似乎没有什么明显的竞争力,只能期待以后的发展了。
5、建议还是用目前主流的软件编写工具(例如论坛同志所说的“要做Desktop GUI 推荐QT C++,ui tool 和 qml 非常易用强大。”)。想要在Windows下使用的话,还是尽量调用本地化的windows API。
6、用数据库相结合的小软件编写,Java还是不错的。内置的JavaDB就不错,MySQL以及Microsoft Database也有很多开发案例,使用Oracle大型数据库就更不用说了。
Swing给我印象最深的就是绘图机制十分强大,至少在引入Android的NinePatch技术上领先JavaFX(如果有同志知道如何在JavaFX上使用类似于Android的NinePatch技术的,非常感谢告知我),一定要深刻理解java界面的绘图机制。像背景图片什么绘制是很简单的,至于图像的缩放,运用ImageOP写个缩放的,或者模糊效果等等,在Java 界面代码中用paintComponent()方法来定制背景图片的可以根据addComponentListener()中的componentResize()来缩放就可以了(使用repaint())。绘制Border或者Button的背景,图片最好使用九宫格技术,防止图片拉伸失真。在Synth中,它自带把图片分为9块的技术,使用起来十分方便,然而不如Android的NinePatch技术,因为她不仅可以分图片为9块,而且可以根据需要分为若干块我非常欣赏。最近正在写一套的基于Nimbus的lnf(当然使用了Android的NinePatch技术),感觉还不错,推荐诸位试一下,我顺带研究JavaFX,觉得前途还是有的,因为Oracle计划不断随着Java8,9,10的推出更新、支持JavaFX。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:640777次
积分:6711
积分:6711
排名:第3438名
原创:156篇
评论:85条
(5)(6)(1)(3)(1)(9)(1)(1)(1)(6)(5)(13)(27)(6)(14)(4)(10)(18)(26)

我要回帖

更多关于 如何用java做界面 的文章

 

随机推荐