- 浏览: 197238 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
long2010:
看来是个太老的链接了。打不开……
一个纯java的H.264播放器--Onavia Video Player -
goodjin:
如果是这个语句怎么办?insert into t(id,nam ...
mysqldump导出数据到mssql -
HYbdbc:
貌似不能判断啊,我做了个测试,UTF-8编码的 还是显示gb2 ...
搜索引擎URI编码的处理 -
小鱼儿好:
Java Web实时会议解决方案 -
ssy341:
老帖子啊 连接都不能用了
JMS
java6出来以后,其一大特色就是对脚本语言的支持。以前只是粗略看了一下,没感觉到有什么具体的用处。最近又对java的特有脚本语言javaFX了解一下,感觉挺有意思。
一.以下是几个相关网址:
1.sun javafx 官方网站:.www.sun.com/software/javafx/script/
2.openjfx 网站: openjfx.dev.java.net/
3.JavaFX: First Steps - "Hello OnJava" App www.oreillynet.com/onjava/blog/2007/05/javafx_first_steps_hello_onjav_1.html
4.The JavaFX Script Programming Language Reference (Chinese version)
hello world 式的程序,很简单,稍看一下文档就明白了。
二.我比较喜欢这个语言的下面几个特征:
这个语言融合了javascript,php,actionscript,sql 等许多脚本语言的特征。
1.数组操作很有特色
var nums = [0..3];
.. 是范围表达式,上面的语句相当于 var nums == [0,1,2,3];
数组支持类似于sql语句一样的查询表达式。
var nums = select n*n from n in [1..100];
结果便是从1到100每个数字的平方组成的数组。
2.字符串
javaFX中的字符串支持嵌入表达式
程序在输出结果的时候会自动把字符串中的表达式 {} 算出来,替换成结果 。这段程序的输出结果是 : Hello Joe
这个特点和php很相似。用在来做结果输出模板时很有用,不必用自己创造标签语法,输出的时候又得用正则分析,替换。
3.类与对象
对象声明可以用一种类似于json的语法进行。
4.很有特色的反射操作
javaFX的反射很奇妙,我都在想,为什么java的反射也不做成这样。
方便吧?
三.在web中的尝试。
看了说明,好像javaFX出现的目标是简化Swing的界面开发编程。一方面javaFX还没有一个好的所见即所得的ide支持,另外本人对web方面的编程比较感兴趣。所以进行了一个小实验。
我的思路是用一个servlet拦截所有对fx的请求,根据requestURI,获得javafx文件的绝对路径,然后在servelt中调用java6的脚本引擎,解释执行。
FXServlet.java
web.xml
Hello.fx
运行:http://localhost:8080/jfx/Hello.fx
结果:Hello World!guest
运行:http://localhost:8080/jfx/Hello.fx?name=jolestar
结果:Hello World!jolestar
注意:本程序需要tomcat在jdk6环境下运行,如果还是提示找不到javax.script.ScriptEngine,请将jdk6 lib 下面的rt.jar中的javax.script包抽取出来,重新打包后放到 tomcat common lib 下面。
这个程序没有考虑效率问题。其实这样的事情应该由容器完成,本人只是做了个小小的实验。
一.以下是几个相关网址:
1.sun javafx 官方网站:.www.sun.com/software/javafx/script/
2.openjfx 网站: openjfx.dev.java.net/
3.JavaFX: First Steps - "Hello OnJava" App www.oreillynet.com/onjava/blog/2007/05/javafx_first_steps_hello_onjav_1.html
4.The JavaFX Script Programming Language Reference (Chinese version)
hello world 式的程序,很简单,稍看一下文档就明白了。
二.我比较喜欢这个语言的下面几个特征:
这个语言融合了javascript,php,actionscript,sql 等许多脚本语言的特征。
1.数组操作很有特色
var nums = [0..3];
.. 是范围表达式,上面的语句相当于 var nums == [0,1,2,3];
数组支持类似于sql语句一样的查询表达式。
var nums = select n*n from n in [1..100];
结果便是从1到100每个数字的平方组成的数组。
2.字符串
javaFX中的字符串支持嵌入表达式
- var name = 'Joe';
- var s = "Hello {name}";
- System.out.println(s);
这个特点和php很相似。用在来做结果输出模板时很有用,不必用自己创造标签语法,输出的时候又得用正则分析,替换。
3.类与对象
对象声明可以用一种类似于json的语法进行。
- class Person {
- attribute name: String;
- attribute parent: Person inverse Person.children;
- attribute children: Person* inverse Person.parent;
- function getFamilyIncome(): Number;
- function getNumberOfChildren(): Number;
- operation marry(spouse: Person);
- }
- var chris = Person {
- name: "Chris"
- children:
- [Person {
- name: "Dee"
- },
- Person {
- name: "Candice"
- }]
- };
4.很有特色的反射操作
javaFX的反射很奇妙,我都在想,为什么java的反射也不做成这样。
- import java.lang.System;
- System.out.println(1.class.Name) // prints "Number"
- System.out.println("Hello".class.Name); // prints "String"
三.在web中的尝试。
看了说明,好像javaFX出现的目标是简化Swing的界面开发编程。一方面javaFX还没有一个好的所见即所得的ide支持,另外本人对web方面的编程比较感兴趣。所以进行了一个小实验。
我的思路是用一个servlet拦截所有对fx的请求,根据requestURI,获得javafx文件的绝对路径,然后在servelt中调用java6的脚本引擎,解释执行。
FXServlet.java
java 代码
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.script.Bindings;
- import javax.script.ScriptContext;
- import javax.script.ScriptEngine;
- import javax.script.ScriptEngineManager;
- import javax.script.SimpleScriptContext;
- public class FXServlet extends HttpServlet {
- private String realPath;
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doWork(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doWork(request, response);
- }
- public void doWork(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
- System.out.println("begin ....");
- try {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- ScriptEngineManager manager = new ScriptEngineManager(loader);
- ScriptEngine engine = manager.getEngineByExtension("fx");
- Bindings bindings = engine.createBindings();
- //将request和response两个对象传递给脚本引擎。
- bindings.put("REQUEST:javax.servlet.http.HttpServletRequest",request);
- bindings.put("RESPONSE:javax.servlet.http.HttpServletResponse",response);
- ScriptContext context = new SimpleScriptContext();
- context.setBindings(bindings, ScriptContext.GLOBAL_SCOPE);
- context.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
- engine.setContext(context);
- String uri = request.getRequestURI();
- String contextPath = request.getContextPath();
- //将requestURI中的contextPath替换掉
- if(contextPath!=null&&contextPath.trim().length()>0){
- uri = uri.replaceAll(contextPath,"");
- }
- //根据requestURI取得fx文件的绝对地址 我们把fx文件放在站点的 WEB-INF下的 jfx目录下。
- String filePath = this.realPath + "WEB-INF"+ File.separator +"jfx" + uri;
- File jfxFile = new File(filePath);
- if(!jfxFile.exists()){
- response.sendError(404);
- }else{
- InputStreamReader reader = new InputStreamReader(new FileInputStream(jfxFile));
- engine.eval(reader);
- reader.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- System.out.println("... end");
- }
- public void init() throws ServletException {
- this.realPath = this.getServletContext().getRealPath("/");
- }
- }
web.xml
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <servlet>
- <servlet-name>FXServlet</servlet-name>
- <servlet-class>net.teamhot.jfxweb.FXServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>FXServlet</servlet-name>
- <url-pattern>*.fx</url-pattern>
- </servlet-mapping>
- </web-app>
Hello.fx
- import java.lang.System;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.PrintWriter;
- //接受从java中传递过来的参数
- var request:HttpServletRequest = REQUEST;
- var response:HttpServletResponse = RESPONSE;
- var name = request.getParameter("name");
- var out:PrintWriter = response.getWriter();
- var template = "Hello World!{if name ==null then 'guest' else name}";
- out.print(template);
运行:http://localhost:8080/jfx/Hello.fx
结果:Hello World!guest
运行:http://localhost:8080/jfx/Hello.fx?name=jolestar
结果:Hello World!jolestar
注意:本程序需要tomcat在jdk6环境下运行,如果还是提示找不到javax.script.ScriptEngine,请将jdk6 lib 下面的rt.jar中的javax.script包抽取出来,重新打包后放到 tomcat common lib 下面。
这个程序没有考虑效率问题。其实这样的事情应该由容器完成,本人只是做了个小小的实验。
评论
3 楼
einsteinm
2008-06-30
将javafx当作服务器端脚本了啊????有优势吗?
2 楼
差沙
2007-07-30
有点意思呀?抽空分析一下javfx的优势.
1 楼
galaxystar
2007-07-30
楼主是把javafx当作了jsp或velocity等表示层html渲染技术了.
javafx效率不知道高不高?
不过例子不错.
希望楼主分析一下javafx的优势?
javafx效率不知道高不高?
不过例子不错.
希望楼主分析一下javafx的优势?
发表评论
-
Java String intern
2009-01-14 16:31 0http://www.codingdiary.com/deve ... -
Spring自动装配(autowire)导致quartz不能运行
2008-12-18 20:24 6795在spring中配置了一个简单的quartz任务,结果报错: ... -
ActiveMQ的一个问题
2008-09-22 17:58 4171安装了activemq,然后要配置成数据库持久化的。 参考文档 ... -
四个有害的java习惯
2008-07-30 19:46 8067本文不算严格意义上的翻译,算是该文章的摘要以及读后感。 文 ... -
Dspace架设经验
2008-04-09 00:56 30191.Dspace是什么? dspace.org ... -
struts2的时间格式转换问题
2008-03-21 11:50 8867struts2提供了一个时间标签:<s:date ... -
Java Web实时会议解决方案
2008-02-28 22:48 7030Java solutions profile: Jav ... -
struts2 checkboxlist 的一个问题
2008-01-30 13:07 9653用struts2的checkboxlist遇到一个问题。 ... -
http://jroller.com/eyallupu/entry/hibernate_exception_simult
2007-12-01 18:54 58http://jroller.com/eyallupu/ent ... -
Java SE 6.0
2007-07-05 14:35 39HTTP 增强 http://www.ibm.com/deve ... -
用ReflectionFactory实现不调用构造参数创建对象
2007-03-19 10:20 2859那天在sun的论坛上漂着,不经意发现了一篇帖子,大概 ... -
swt
2007-03-11 18:06 126widget基础 StyledText Widget ww ... -
JMS
2007-03-07 10:44 2721Geronimo 中 JMS、MDB 和 ActiveMQ 的 ... -
Hadoop
2007-03-07 10:29 41http://www.blogjava.net/calvin/ ... -
java编程奇怪错误收集
2007-03-01 21:34 29481.org.xml.sax.SAXParseException ...
相关推荐
JavaFX SDK 11.0.2 是一个用于开发富客户端应用程序的工具包,它在Java 11及更高版本中不再作为标准JDK的一部分。这个独立的SDK提供了必要的库和工具,使得开发者能够在Java平台上构建具有丰富图形用户界面(GUI)的...
JavaFX 是一个用于构建桌面、移动和嵌入式设备上富客户端应用的开源图形用户界面(GUI)工具包。它是Java平台的一部分,提供了一系列高级特性,包括2D和3D图形处理、媒体支持、CSS样式以及强大的数据绑定机制。本...
javafx
JavaFX 是一个用于开发桌面应用程序的Java库,它提供了丰富的用户界面组件和强大的图形功能。SpringBoot 是一个基于 Spring 框架的轻量级启动器,它简化了配置并帮助快速搭建应用。MyBatis 是一个优秀的持久层框架,...
最新JavaFx 2.0 電子書 In Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology, Jim Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, and Johan Vos show you how you can use the JavaFX ...
JavaFX API文档。Sun公司已于2008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发互联网应用程序(RIA)。该产品于2007年5月在JavaOne大会上首次对外公布。JavaFX技术主要应用于创建Rich ...
【JavaFX 教程】 JavaFX 是一个用于创建桌面、移动和嵌入式系统的富客户端应用的Java平台。本教程将深入讲解如何使用JavaFX 8进行应用开发,特别是涉及Scene Builder工具,以及应用程序的打包和部署。Scene Builder...
JavaFX 使用指南 JavaFX 是一个基于 Java 语言的软件平台,用于开发桌面应用程序、移动应用程序和网络应用程序。它提供了一个统一的编程模型,可以跨平台运行,具有高清晰度的图形用户界面和多媒体支持。 JavaFX ...
JavaFX是一种强大的Java库,用于构建桌面、移动和嵌入式系统的富客户端应用程序。它提供了丰富的用户界面组件和高级图形功能,使得开发者可以创建出美观、互动性强的应用程序。在这个"javafxѧϰ"压缩包中,很可能...
JavaFx登录跳转完整教程含源码 本教程将指导读者如何使用JavaFx创建一个完整的登录跳转系统,包括登录页面的设计、验证账号密码、跳转到应用程序的首页等步骤。 知识点1:JavaFx简介 JavaFx是Oracle公司推出的一...
### JavaFX 2.0 的 FXML 语言高级教程 #### 概述 JavaFX 2.0 引入了一种新的声明性标记语言——FXML(发音为 “fizz-le”),这是一种基于 XML 的语言,专门用于定义应用程序的用户界面。通过使用 FXML,开发者...
JavaFX 是一个用于创建桌面应用、移动应用和Web应用的开放源代码图形用户界面(GUI)工具包。它提供了一套丰富的UI控件、2D和3D图形处理能力,以及媒体播放支持,使得开发者可以构建出具有现代感且交互性强的应用...
JavaFX是Oracle公司推出的用于构建桌面、Web以及移动设备上富客户端应用的平台,它提供了丰富的用户界面组件和强大的图形功能。JavaFX 2.2.3是该平台的一个版本,它增强了性能、稳定性和兼容性,使得开发者可以更加...
JavaFX是Java平台上的一个强大的富客户端应用开发框架,它为构建桌面、移动和Web应用程序提供了丰富的图形用户界面(GUI)工具集。标题中的"javafx-11.0.2 jar.rar"指的是JavaFX 11.0.2版本的库文件,这些文件被压缩...
JavaFX是一种用于构建桌面、移动和嵌入式设备上的富客户端应用程序的框架,自Java 7版本开始成为标准的一部分。这个“简单的JavaFX登录”项目是利用JavaFX库创建的一个基本用户登录界面,旨在帮助开发者了解如何在...
JavaFx做界面VLC做视频处理,请看源码
JavaFX PDF阅读软件是一款基于JavaFX技术开发的PDF文档查看应用程序。它利用开源库icepdf来解析和渲染PDF文档,为用户提供一个用户友好的界面来查看和操作PDF文件。下面我们将详细探讨JavaFX、icepdf以及如何使用...
JavaFX是一种用于构建桌面、移动和嵌入式设备上的富互联网应用程序(Rich Internet Applications, RIA)的Java库。它是Oracle公司推出的,旨在提供一种更简单、更强大的方式来创建具有丰富图形用户界面的应用程序。...
JavaFX是一种强大的、基于Java的富客户端应用开发框架,它为创建桌面、移动和Web应用程序提供了丰富的图形用户界面(GUI)工具集。本项目“JavaFx开发Windows画图板工具”旨在模仿Windows操作系统内置的画图应用,为...
JavaFX是Java平台上的一个强大的用户界面工具包,用于创建桌面、移动和Web应用程序。它提供了丰富的图形和媒体功能,支持2D和3D渲染、CSS样式以及自定义控件。这个压缩包包含了一些官方提供的JavaFX源码示例,非常...