java8 javafx_Java 8的新增功能(第1部分– JavaFX)
java8 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
在該站點上,您還可以下載一些示例應用程序,您可以在其中瞥見已經可以做的事情。
新功能
以下列表將特別關注即將推出的最相關功能。 在此發行版中,所有即將推出的新功能和對現有功能的更改的列表尤其龐大,可能其中一些相關功能可能已引起我的注意,而我卻未提及。
富文本支持
富文本支持將通過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控件:
- 日期選擇器
用戶體驗文檔: 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實現的默認運行時類路徑中。
翻譯自: https://www.javacodegeeks.com/2013/09/whats-new-in-java-8-part-i-javafx.html
java8 javafx
總結
以上是生活随笔為你收集整理的java8 javafx_Java 8的新增功能(第1部分– JavaFX)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM体系结构:JVM和JVM体系结构概
- 下一篇: 电脑出现loading怎么办(电脑出现l