Java 8的新增功能(第I部分-JavaFX)

免责声明:我不为Oracle工作,也不以任何方式代表Oracle。 此功能列表不是官方的。 作为“局外人”,这只是我研究的一部分。

Java 8已在大约两个月前完成功能,并且开发者预览版即将来临(两周后)。 这篇博客文章将详细介绍下一个主要版本中的新功能,重点放在UIFX库JavaFX 8上。 JavaFX发行版编号现在与Java发行版相当,这就是为什么它从2.2跃升到8的原因。

这是由三部分组成的系列文章的第一部分。 第一部分将重点讨论Oracle正式告诉开发人员应该在JavaFX 8中发布的内容,第二部分将主要是投机性的,并列出我认为可能会出现的内容,但尚未正式报道。 最后一部分重点介绍Java 8即将发布的其余部分,但UI库除外(例如,新的语言功能等)。

发布日期

最初的时间表旨在于2013年9月上旬发布该版本,但由于最近将重点放在与浏览器相关的安全问题上 ,因此未能实现该日期。 新的时间表如下:

  • 2013/06/13 –功能完成

所有功能以及单元测试均已实现并集成到主目录林中。

  • 2013/09/05 –开发人员预览

发布了适合开发人员社区进行广泛测试的合理稳定的版本。 除非另有说明,否则此版本将包括所有计划的功能。

  • 2014/01/23 –最终版本候选

必须声明最终候选版本并提交进行测试的日期。 在计划的ZBB日期之后将宣布一个或多个候选发布者; 如果在此里程碑之后有其他要求,则通用发布日期将受到威胁。

  • 2014/03/18 –全面上市

最终版本,准备投入生产使用。

为此,我还要补充一点,我已经在Java 8下开发基于Java的应用程序一个多月了,并认为它相当稳定。 我也没有使用任何正在开发的功能(例如3D图形),所以我不能在这部分说什么。

您已经可以在这里获得JDK8的早期访问版本: http ://jdk8.java.net/download.html

在该站点上,您还可以下载一些示例应用程序,您可以在其中瞥见已经可以做的事情。

合奏8

新功能

以下列表将特别关注即将推出的最相关功能。 在此版本中,所有即将到来的新功能和对现有功能的更改的列表尤其庞大,可能其中一些相关功能可能已引起我的注意,而我可能没有提及。

富文本支持

富文本

富文本支持将通过TextFlow类添加到JavaFX 8中。

这将使您能够:

  • 个性化单个单词;
  • 对单词施加效果
  • 应用变换
  • 在文本中嵌入节点
  • 支持Bidi文本,即同时包含从右到左 (RTL)和从左到右 (LTR)两种文本方向的文本的文本
  • 创建可以通过CSS单独设置样式的文本

有关更多详细信息,请访问以下链接:

  • 富文本API详细信息: https : //wikis.oracle.com/display/OpenJDK/Rich+Text+API+Details
  • 样本和代码片段: https : //wikis.oracle.com/display/OpenJDK/Rich+Text+API+Samples

摆动节点

Swing节点将允许您将swing组件嵌入javafx场景内。 相反的支持,即已经可以通过JFXPanel将Javafx场景嵌入到swing应用程序中。

有关API规范和简单示例,请访问: http : //download.java.net/jdk8/jfxdocs/javafx/embed/swing/SwingNode.html

控件API的更改

控件API将会发生一些变化,这对于第三方控件提供者尤其重要:

  • 将公开的皮肤课程; SkinBase类将成为公共类,但是Behavior类和子类仍然是私有实现,在JavaFX 8之后,仍有一些工作要做。
  • 新CSS API,可让您定义控件和自定义伪类的自定义属性-有关其他详细信息,请参见: https : //wiki.openjdk.java.net/display/OpenJFX/CSS+API+to+support +自定义+ UI +控件

录像和录音

将添加对视频和音频录制的支持。

您可以观看此视频演示文稿以了解更多详细信息(跳至第39分钟以查看实际应用示例): http : //www.youtube.com/watch?v=jaPUbzfJx2A

打印支持

打印支持将添加到JavaFX。 您可以查看Carl Dea的这篇详细博客文章,以了解更多详细信息: http : //carlfx.wordpress.com/2013/07/15/introduction-by-example-javafx-8-printing/

带有名为Modena的新主题的新外观

摩德纳

通过名为Modena的新主题,外观得到了显着改善。 这次考虑了很多开发人员的反馈,以使最终结果非常好。

可以在这里找到更多详细信息: http : //fxexperience.com/2013/03/modena-theme-update/

新的DatePicker和TreeTable控件

JavaFX 8将具有DatePicker和TreeTable控件:

  • 日期选择器

datepicker-ux

用户体验文档: http : //openjdk.java.net/projects/openjfx/ux/datePicker/

实际的DatePicker屏幕截图:

日期选择器屏幕截图

更新:Jim Weaver写了有关DatePicker控件的文章,您可以在这里找到他的文章– http://learnjavafx.typepad.com/weblog/2013/08/quick-and-dirty-javafx-8-datepicker-example.html

  • 树表

树形表

API示例: https : //wikis.oracle.com/display/OpenJDK/TreeTableView+API+Examples

用户体验文档: https : //wikis.oracle.com/display/OpenJDK/TreeTableView+User+Experience+Documentation

WebView增强

WebView中添加了以下增强功能:

  • Nashorn JavaScript引擎( 更新:我并不是说Nashorn将成为Webview Javascript引擎。我只是说Nashorn将可用于Java8

Nashorn的目标是使用本机JVM在Java中实现轻量级高性能JavaScript运行时。 该项目旨在使Java开发人员可以将JavaScript嵌入Java应用程序中,并开发独立JavaScript应用程序。 (有关更多信息,请参见后面的文章)。

有关更多信息: https : //oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=4082&tclass=popup

  • WebSocket – http://javafx-jira.kenai.com/browse/RT-14947
  • 网络工作者– http://javafx-jira.kenai.com/browse/RT-9782

嵌入式支持

JavaFX将包含在Oracle的Java SE Embedded 8中。它将包含桌面版本的功能的子集,即不包括:

  • WebView支持
  • 媒体支持

媒体的解决方法:

对于媒体而言,有一种解决方法,如Jasper Potts的FXExperience中的此注释所述:

“ Pi上没有JavaFX媒体支持,我们通过了原型传递
将视频的硬件解码帧转换为OpenGL,以便可以绘制
在JavaFX Scene中,但是性能不是很好。 所以我们要做的就是画画 JavaFX具有透明背景,就像透明窗口一样 桌面。 然后使用本机omx媒体播放器将视频播放到较低位置 JavaFX图形下的图层。 所以基本上是标准的硬件覆盖 图形。 这在PI上效果很好,并且仅下降了10% 在下面播放高清视频流时的JavaFX性能。 很简单 动画,我们可以同时获得超过50 fps的视频。” (来源: http : //fxexperience.com/2013/08/javafx-hd-menus-on-raspberrypi/ )

改进的3D支持

此版本将提供改进的3D支持。 或者说起来更准确:真正的3D支持。

它是一项可选功能,您可以查询运行时以了解它是否可用于给定平台。 当JavaFX与软件渲染一起运行时,此3D功能将不可用。

·移动摄像机和SubScene

  • 相机现在是节点

可以将相机添加到场景图中,可以使用标准变换来设置其位置和目标(或方向)。

  • 子场景的添加

子场景是一个特殊的节点,可用于使用其他摄像机渲染场景的一部分。

·3D图元

  • 从抽象的Shape3D基类扩展了两种类型的3D形状:
    • 用户定义的形状(MeshView)

介绍了三种常用的预定义3D形状:盒子,圆柱体和球体。

Shape3D类层次结构:

  • javafx.scene.Node
    • javafx.scene.shape.Shape3D(抽象)

网格类层次结构:

  • java.lang.Object
    • javafx.scene.shape.Mesh(抽象)

·3D属性

  • 添加了灯光和3D材料,以增加3D形状的真实感。

材质指定3D形状的外观。 灯光与Shape3D的几何图形及其材质相互作用,以提供渲染结果。

可以将3D形状渲染为填充形状或线框。

·光

  • 灯光被定义为场景图中的一个节点
  • 有两种类型的光源:

AmbientLight :均等影响所有对象的光源。 AmbientLight对象可以模拟其他视觉对象反射的光。 如果您抬头看向桌子的底侧,尽管没有任何光源直接照在桌子的底面上,但您会看到桌子的底面(除非桌子下面有灯)。 桌子底面上的光从地板和其他物体上反射出来。 在具有许多物体的自然环境中,光会从许多物体反射回来以提供环境光。 AmbientLight类模拟此效果。

PointLight :具有位置的光源。 到给定对象的距离和方向会影响如何照亮该对象。 PointLight对象近似于没有反射镜或透镜的裸露的灯泡,蜡烛或其他光源。

将来可能会添加更多类型的灯(例如:聚光灯,一种模拟闪光灯等光源的灯)。

  • 场景包含一组活动光源

当活动光源组为空时,提供默认光源

  • 每盏灯包含一组受影响的节点

如果父项在集合中,则其所有子项都会受到影响。 默认值为场景的根节点。

·材料

  • 材质包含一组渲染属性
  • PhongMaterial是Material的一个具体子类。 它具有以下属性:
    • 环境颜色

·将方法添加到Node

  • LOD辅助方法,以像素为单位返回投影到物理屏幕上的Node区域:

公用double computeAreaInScreen()

LOD代表详细程度。 这是一种技术,它会根据与相机的接近程度或距离来改变对象的外观,换句话说,如果对象距离物体很远,则根据对象所占的面积来更改细节级别,然后可以将细节无需用户注意就降低了性能,从而提高了性能。

  • 一组新的转换3D点的方法

·装载机支持

存在许多3D文件格式,例如:Obj,Maya,3D Studio Max,Collada,KRML。 该API将不附带任何官方3D文件格式加载程序。 但是,Oracle将提供一种或两种流行格式的示例代码。 至少有一个Collada文件加载器正在开发中。

资源资源

  • Oracle在上一个JavaOne上展示了一个很酷的概念证明。 它建立在早期JavaFX原型的基础上,并增加了3D网格,相机和照明支持。 此博客文章中还显示了一个简单的3D示例(带有代码): http : //fxexperience.com/2013/02/javafx-3d-early-access-available/
  • 去年JavaOne展示了另一个非常简洁的示例应用程序: http : //www.youtube.com/watch?v= zFK0kpMpToM
  • 来自Oracle的Chien Yang和Kevin Rushforth的演示文稿展示了3D javafx API的最新技术。 它有点旧,所以有些事情可能已经改变: http : //www.youtube.com/watch?v=EBKHdV-_rIc
  • Oracle的另一个演讲是最近(2013年3月27日)所做的,– JavaFX 3D简介(声音质量和图像质量不太好)。 同样,某些情况可能已经改变(演示从43:18开始): http : //www.youtube.com/watch?v= 1Ebmy-JAygg&list=UUmRtPmgnQ04CMUpSUqPfhxQ&index =1#

其他次要功能,调整和变更

不推荐建造者

现在,此版本不建议使用构建器。 在Java 9中,它们将被删除(这需要几年的时间)。 如果正在使用构建器,则应该开始计划更换它们。

原因:

由于实现细节,除非引入了一些二进制不兼容性,否则Builders将停止在Java 8中工作。 因此,决定要逐步淘汰Builders,因此需要进行的更改会将Builder的价值降低到他们不值得的程度,并且在考虑移动/嵌入式用例时,建设者将是禁止的。 ( http://mail.openjdk.java.net/pipermail/openjfx-dev/2013-March/006725.html )

Javafx线程和swing将合并

JavaFX线程和swing可以合并,这仍然是一个实验性API,不会公开,您必须显式将其打开。 如果您正在开发Swing / JavaFX混合应用程序,这将简化代码,因为您只需要担心一个UI线程。

您可以在此博客文章中了解有关此内容的更多信息: http : //wiki.apidesign.org/wiki/JavaFX

JavaFX完全开源

JavaFX最近才变得完全开源 。 这是个好消息,因为它将允许第三方和开发人员更轻松,更彻底地扩展JavaFX的功能。 同样适用于调试错误和其他内容。

默认类路径上的JavaFX

这是开发人员经常提出的要求,JavaFX类现在位于Oracle Java实现的默认运行时类路径中。

参考: Pixel Duke博客上我们的JCG合作伙伴 Pedro Duque Vieira的Java 8新功能(第1部分– JavaFX) 。

翻译自: https://www.javacodegeeks.com/2013/09/whats-new-in-java-8-part-i-javafx.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql数据库sql语句优化

昨天帮同事优化了一个sql语句发出来共勉下: SELECT T.*, ( SELECT S.codeName FROM sys_codelist S WHERE S.codeValue T.packagingtype AND S.kindCode PACKAGING ) AS packagingtypeName, S.codeName AS codename, ( SELECT picpath FROM zl_b_gd_pic WHERE 1 1 AND gdid …

java调用外联服务用xml,Spring IOC 依赖注入的两种方式:XML和注解

IoC,直观地讲,就是容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。IoC还有另外一个名字——“依赖注入…

python第一个程序HelloWorld

在写第一个python程序之前,我们还需要了解的一个东西就是python解释器 解释器,顾名思义,就是解释一段代码的机器,程序运行的平台,例如Java的解释器就是jdk。 我们在写好的python代码,需要在解释器上执行&am…

Python中的__new__()方法的使用

__new__() 函数只能用于从object继承的新式类。 先看下object类中对__new__()方法的定义: class object:staticmethod # known case of __new__def __new__(cls, *more): # known special case of object.__new__""" T.__new__(S, ...) -> a new …

用Java分割大型XML文件

上周,我被要求用Java编写一些东西,该东西能够将单个30GB XML文件拆分为可配置文件大小的较小部分。 该文件的使用者将是一个中间件应用程序,该应用程序存在XML较大的问题。 在后台,它使用某种DOM解析技术,使它在一段时…

信号与线性系统翻转课堂笔记9——傅里叶变换概念

信号与线性系统翻转课堂笔记9——傅里叶变换 The Flipped Classroom9 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1,重点)…

from 下拉框多个值提交_Git commit 多行信息提交

git commit可接受多个消息标志(-m)来允许多行提交原文地址:https://www.stefanjudis.com/today-i-learned/git-commit-accepts-several-message-flags-m-to-allow-multiline-commits/原文作者:Stephan Schneider在命令行上使用git时,您可能已…

处理缓慢的资源泄漏

使用Java监视器查找资源泄漏 查找缓慢的资源泄漏是使应用程序服务器长时间保持正常运行的关键。 在这里,我解释了如何使用Java监视器来发现缓慢的资源泄漏,以及如何验证它们是实际的泄漏,而不仅仅是额外的预分配到某些HTTP连接器或数据库池中…

jquery简单实现点击弹出层效果实例

先看效果图&#xff1a;完整例子&#xff1a; <!-- 渐变弹出层 --><div id"race"><a href"#">点击</a></div><div id"racePop" class"raceShow">这里是弹出层效果</div> <script type&q…

Openfire源码阅读(一)

本篇先分析openfire源码的主要流程&#xff0c;模块细节后续再继续分析&#xff1b; 一、简介&#xff1a; Openfire是开源的实时协作服务器&#xff08;RTC&#xff09;&#xff0c;它是基于公开协议XMPP&#xff08;RFC-3920&#xff09;&#xff0c;并在此基础上实现了XMPP-…

php 查询方法all,获取多条:all静态方法

查询多条数据&#xff1a;all( )方法all方法与前节课学习的get方法都是静态方法&#xff0c;可用模型类直接访问2. 源码&#xff1a;/*** 查找所有记录* access public* param mixed $data 主键列表或者查询条件(闭包)* param array|string $with 关联预查询* param b…

[译文]过犹不及,别再在编程中高射炮打蚊子

原文链接&#xff1a;Anyway,stop recommending bazookas to kill flies in programming. 众成翻译地址&#xff1a;过犹不及&#xff0c;别再在编程中高射炮打蚊子 译者注&#xff1a;翻译这篇吐槽的文章&#xff0c;主要是为了自省~日常工作中确实会犯类似的错误&#xff0…

Java中的for循环

上一章呢我们学习了一下java中的while循环和do while循环 现在我们来了解一下另外一种循环 for循环 for循环是编程语言中一种开界的循环语句&#xff0c;而循环语句 由循环体及循环的终止条件两部分组成&#xff0c;for循环其在各种编程语言中的实现与表达有所出入&#xff0…

SpringFox swagger2 and SpringFox swagger2 UI 接口文档生成与查看

依赖&#xff1a; <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> <…

matlab期末复习资料,MATLAB期末复习习题及答案

MATLAB期末复习习题及答案13&#xff0c; ysin(x)&#xff0c;x从0到2 &#xff0c; x0.02 &#xff0c;求y的最大值、最小值、均值和标准差。(应用max,min,mean,std) 14&#xff0c; 参照课件中例题的方法&#xff0c;计算表达式z 10x3 y5e xcontour, hold on, quiver)15&…

多核可扩展计数器

到处都需要计数器&#xff0c;例如&#xff0c;查找应用程序的关键KPI&#xff0c;应用程序的负载&#xff0c;服务的请求总数&#xff0c;用于查找应用程序吞吐量的一些KPI等。 由于所有这些需求&#xff0c;并发复杂性也增加了&#xff0c;这使这个问题变得有趣。 如何实现…

三年前端,面试思考(二)

为什么还有&#xff08;二&#xff09; 没有想到上一篇 《三年前端&#xff0c;面试思考》 有这么多前端同学看到。 在评论区也有很多鼓励和质疑的声音&#xff0c;而且群里面交流的同学两天就达到了700人。 群里有同学问了很多问题&#xff0c;同时希望我再分享一些面试技巧…

51单片机auxr寄存器_MCS-51单片机有几个工作寄存器

工作寄存器有4组&#xff0c;每组都是8个工作寄存器R0~R7&#xff0c;通过PSW中的RS1、RS0两位来选择使用哪一组&#xff0c;如果不选&#xff0c;默认是选择第0组。RS1RS0组合为00时&#xff0c;选中第0组工作寄存器&#xff0c;R0~R7地址为00H~07H;RS1RS0组合为01时&#xff…

matlab中quat2angle,RPY_Euler_Quaternion_AngleAxis角度转化:Matlab、Python、Halc

RPY_Euler_Quaternion_AngleAxis角度转化&#xff1a;Matlab、Python、HalcRPY_Euler_Quaternion_AngleAxis角度转化&#xff1a;Matlab、Python、Halcon版本UR协作机器人和Franka机器人导出的位姿为angleVector&#xff0c;三个量表示&#xff0c;在Matlab中angleVector是四个…

基本注射/资格赛,范围

这是上周解决的DI / CDI基础知识的延续-在本文中&#xff0c;我将讨论基础注入&#xff0c;限定词和范围。 在上一个主题中&#xff0c;我们提供了有关DI / CDI概念的大量信息&#xff0c;我们还讨论了如何使用注释加载这些bean或类-这构成了对象的组成并创建了关于如何进行采…