谈谈对于JavaFX开发的感想

从2008年发布的第一个JavaFX版本开始,在这几年里,断断续续的利用业余时间进行JavaFX的学习和开发,也怀有用JavaFX进行游戏开发的想法。

不过目前决定暂时停止JavaFX游戏开发相关的内容,仅仅将JavaFX作为一个Java的GUI来进行开发自己的工具和软件,除非后续Oracle有重大的更新和改变现状的措施。

下面我会谈谈在JavaFX开发中遇到的一些问题,以及和其他几种技术相比的不足和缺陷。

首先的问题,自然是我为什么会选择使用JavaFX?

这个原因很简单,对于大多数想要使用JavaFX的人来说,无外乎只有一个原因:自己是javaer。

从读大学开始我就是自学Java的,大学的时候用Java做过各种游戏,软件,毕业后从事Android开发工作,后来又对Unity3D感兴趣,转向Unity3D开发,期间做过C#的项目,也做过几个C++的项目,但从某种程度上来说,Java才是我最熟悉的语言。你可以说,"语言只是工具,项目需求什么就做什么",但这也不能否认每个开发者都有自己最熟悉和最喜欢用的开发语言以及工具。

就像C#的开发者会使用Silverlight一样,Java开发者大多会选择JavaFX。不过对于微软的追随者来说,还是很幸苦的。微软的技术更新很快,几乎3年左右就会丢弃,重新开发。从Winform,WPF,到Sliverlight(事实上Sliverlight已经被微软放弃)。由于WP8的游戏开发技术XNA已被微软放弃,所以WP8进行一次大的革新也是必然的结果。还好,微软财大气粗,也不靠这发财。

JavaFX从08年底开始问世,中间经历了SUN被收购,后来又推出2.x版本至今。

当然,对于现在的Oracle来说,Java不算什么,JavaFX更不算什么。目前JDK和JavaFX都已经有开源项目OpenJDK,OpenJFX了。

这样也导致了很多的问题,去年由于JDK连续爆出重大漏洞,导致JDK8推迟了半年发布。另外从JavaFX来说,OpenJFX目前已经很久没有什么重大更新了,3D不算。因为JavaFX 3D目前几乎无法完整的应用到项目中,比它优秀成熟的3D技术很多,秀逗了才会选它。而OpenJFX里面又有很多分支,3D模块是单独一个分支进行开发,还有个JavaFXPorts,主要是进行JavaFX在移动平台Android和IOS上运行的研究。

然而即使是JavaFX部署到Android和IOS上的步骤也很繁琐,还会有很多的API兼容性问题。从某种方面来讲,JavaFX应用到Android和IOS上目前也只是可行,无法实际广泛应用。

接下来的问题才是重点,由于Java之前连续爆出重大漏洞,目前的Java Applet程序必须要在Java安全性为中或者高的情况下才能运行,否则只会弹出下面的对话框。

目前即使是发布到网站上,如果没有经过正规机构颁发的签名,是无法运行的(自签名也不行)。这样对于普通的开发者来说,几乎是完全无法在网站上发布自己的JavaFX应用。

除非是自己添加指定的站点到例外列表里,如下图:

然后即使是你添加到了站点列表了,又会弹出下面一个大框:

你觉得任何一个访问某个站点的人,会进行这样一系列的操作之后,在弹出一个大框告诉你存在安全风险,还会固执的留在这个页面吗?

我相信没有一个人会,除了开发者。

但是如果JavaFX不发布在网站上,那么它就已经失去了和其他技术竞争的资本了。毕竟在本地使用的话,可替代的更好的技术比比皆是,JavaFX毫无存在感。

所以说在不考虑效率的问题下,JavaFX目前有以下问题阻碍发展:

1.OpenJFX模块较多,负责各个模块的同时开发的团队估计不少,但是很多却都是半成品,无法应用。就像上面说的3D模块,应用到Android和IOS,即使是导出为本地程序和安装包,也会有"安装包图标很难的修改,安装界面无法定制"等各种问题,除非自己手动使用Inno Setup,exe4j等打包,但通常开发工具都是减少工作量的,没见过这种要自己修改增加工作量的。

2.Java Applet在网络上运行限制太多,自己开发的程序几乎完全没法放在网络上让大家运行使用,虽然这是因为Java会请求访问本地文件的权限导致安全性不好,但为何不限制Applet程序无法访问本地文件,最好是做一个mini sdk专门进行网络分发的程序和游戏开发。

3.几经缩减,但是JRE的大小还是太大。我做的Unity游戏放在网络上,别人分分钟就可以下载Unity的运行环境并运行,但是下载JRE耗时太长,没人愿意等候太久。更何况,Java插件本身就是属于冷门插件,用的人太少。

4.JavaFX目前读取资源,在eclipse IDE上运行,本机运行和Web运行都存在差异。至于能不能找到两全的解决方式,我也未进行深入研究。

当然,还有其他的问题,我就不一一列出了。

目前比较火的,那自然当属HTML5了,不过根据我运行了一些市面上已经有的Demo,发现手机上的体验不行,很多demo只有十几的FPS,而且不是专门为手机定制的页面的话,在手机上运行也没啥体验可言。不过最重要的优点就是各个平台都可以运行,即使是不支持flash的ipad等设备也能运行,由此看来HTML5也有一定的潜力。

不过Unity3D也加入了这场大战,在Unity3D 5的预览版里面,已经可以导出为HTML5了,采用了WebGL。效率的话,也还可以,当然肯定是比native差很多。现在暂时不支持mobile,我在手机上尝试过运行官方的示例,发现可以载入,提示不支持手机,但可以继续载入,运行,不过无法点击。但都是迟早的事,所以说Unity3D也是一个有力的竞争者。

相对而言,JavaFX就逊色了很多,各个方面都有不少的差距。

个人建议,JavaFX当作Swing的替代品就好,进行游戏开发目前还是不是很适合。

本文章为个人原创,转载请注明出处,本人CSDN博客:http://blog.csdn.net/wingfourever 个人博客地址:http://www.wjfxgame.com。

-----------------------------------------------------------------------

很少没写这么长的内容了,不过最近越来越发现JavaFX进行游戏开发的问题很多,当然作为GUI技术还是不错的,我也用它做了很多工具和软件。

如何取舍就看大家的选择了。

JavaFX的教程也还是会在CSDN和我的个人博客上更新。

----------------------------------------------------------------------

时间: 2024-11-07 11:54:24

谈谈对于JavaFX开发的感想的相关文章

JavaFX开发的2048游戏

自从JavaFX被纳入Java 8之后,JavaFX团队决定跳过几个版本,追赶Java 8.而如今的JavaFX的与以往的Swing和JavaFX 1.2 版本已大大不同,为了更加容易理解和开发,JavaFX的改观不容小觑,但仁者见仁,智者见智,对于JavaFX而言,还有多久才能走到大众开发视线,拭目以待. JavaFX开发的2048游戏 我想不用说,2048游戏大家应该是有过尝试的,这款游戏由 Gabriele Cirulli 作者开发,并开源在 GITHUB 上,大家可以尝试一下 目前已经从

使用JavaFX开发桌面程序

使用JavaFX开发桌面程序 注:我也是JAVA FX的初学者之一,自己在学习的时候踩了许多的坑,中文英文的资料查了不少,但是觉得FX技术和其他热门技术相比,教程还是太少了.这里就尽量做一点微小的贡献吧 使用环境 注:写这个只是为了说明我的环境,使用和我的不一样的环境在理解这篇教程的时候并没有什么问题,例如使用Windows平台.使用Oracle JDK(这样就不需要再单独安装FX组件了,可以不用MAVEN).使用Oracle的SceneBuilder.可能唯一一个比较影响体验的就是不使用IDE

谈谈XAML前端开发

GUI的发展 在图形用户界面的操作系统(Windows,MAC)出现之前,计算机软件是命令行界面的程序,用户和程序的交互是通过输入命令,查看命令运行结果进行的.当然很不友好.后来出现了文本图形界面的程序,即用制表符等特殊文本拼接出图形界面的效果,来使程序以图形界面的方式和用户交互.出现了菜单项,状态栏等概念,当时在DOS下流行的QBASIC,TurboC等IDE就是典型的文本图形界面程序. 随着Windows操作系统的普及,GUI(图形界面)程序的交互方式成为了用户和计算机交互的标准方式.Win

JavaFX开发环境安装配置

从Java8开始,JDK(Java开发工具包)包括了JavaFX库. 因此,要运行JavaFX应用程序,您只需要在系统中安装Java8或更高版本. 除此之外,IDE(如Eclipse和NetBeans)为JavaFX提供支持. 在本章将介绍如何设置这两种开发工具的环境,来开发和运行JavaFX应用程序. 安装Java8(JDK8) 首先,必须通过打开命令提示符并在其中键入命令"Java"来验证系统中是否已经安装了Java8及以上的版本. 如果尚未在系统中安装Java,命令提示符将显示以

这几年开发的感想

回想一下,做开发也三年了.一路走来,有心酸也有快乐.这篇文章说一说我的感想和观点.其中有不对的地方,希望大家指正.也算是抛砖引玉吧. 下面步入正题.刚开始步入移动开发这个行列的时候,大家应该也猜的到,经常被骂.相信每一个人都会经历这个痛苦的阶段.那个时候上班的时候,每天都是上午2个小时,下午4个小时.每天都是这样充实地度过每一天.相信做过开发的人都会清楚,每个工程师最有效的时间都是这6个小时.可能会根据每个人的不同这个时间段不同,但基本上没个人有效的时间就是6个小时.那个时候上下班在地铁上看视频

JavaFX开发的地图编辑器WiTKMapEditor(更新GitHub地址)

其实早在几年前就有开发一个自己的游戏地图编辑器的想法,当时使用JavaSE开发的,纯属练手.结果后来笔记本出问题了,数据丢失,代码都找不回来了. 于是便准备重新开发一个游戏地图编辑器的,因为自己偶尔会研究JavaFX,而且论GUI技术,JavaFX也确实还是不错,所以就使用JavaFX做了. GitHub地址:javafx-TKMapEditor. JavaFX相关个人博客上也有很多内容:http://www.wjfxgame.com. 目前WiTKMapEditor版本号0.7.6.2015.

JavaFx开发的图表实例

1.import javafx.application.Application; 2.import javafx.collections.FXCollections; 3.import javafx.collections.ObservableList; 4.import javafx.scene.Scene; 5.import javafx.stage.Stage; 6.import javafx.scene.chart.*; 7.import javafx.scene.Group; 8. 9

阅览敏捷开发的感想

敏捷开发,换句话说就是为了应对快速开发而产生软件开发模式. 这种模式没有具体的定义,根据当时的情况,进行相对应的调节.不 过这种调节,并不是根据自己或团队的方便而调节.而是根据用户需 求而改变,根据市场的需求而变化,但是这种调节并不是盲目的,而 是在一个大计划里,进行改变.也就是说,在一个软件开发的过程中, 在需求设计方面,要考虑的相对全面,在这个前提下,进行相适应的 调节. 在敏捷开发的过程中,团体的沟通与理解是非常重要的,所以敏捷 开发5个价值观:沟通.简单.反馈.勇气以及谦逊.如果说一个项

一些关于it开发的感想

一.快速开发: 快速开发并不意味着可以将工程性的东西都省略.省略那些,貌似可以在很短时间内快速开发出一个东西来,但是往往意味着后面无数的重复工作. 快速开发在国内竟然成为了速度比拼工具.仿佛快人一步就有钱.这在大环境下竟然是真的.哎--- 能不能先将测试数据统一起来,能不能先将数据库定义先弄出来.这些会造成后面无数的重复啊. 二.不重视工程性,流程性: 这些在“中国速度”的藐视下,成了一个可有可无的玩意儿.确实它不影响你完成程序.你终究会完成程序.所以它的意义何在呢? 三.其实我们都是it民工,