`
smartinvoke
  • 浏览: 107138 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

smartinvoke入门系列2——smartinvoke轻松上手

阅读更多



 简介:

本篇为smartinvoke开发系列的第一篇,主要让大家对smartinvoke有一个整体的认识,能够开发出简单独立的smartinvoke可运行桌面程序。

创建SmartInvoke项目:

依次选择Eclipse菜单栏中的 :文件 -> 新建 -> 其他 打开新建对话框,找到smartinvoke节点,选择New Project 节点,打开新建smartinvoke项目对话框,如下:

 

 

Project name 为项目名称;我们在这里输入:First

Main package 为项目入口类所在包名;我们在这里输入:cn.first

Class name 为项目入口类的类名称;我们在这里输入:FirstWin

 

输入完毕后点击完成,你会发现项目列表中新创建了两个项目,一个为Java类型项目,一个为Flex web application类型项目,结构如下图:




 
 

 

 

这两个项目构成了一个完整的smartinvoke项目First,它由Java类型项目FirstFlex类型项目First_构成。Flex项目名称由Java项目名称加下划线”_”构成。通过这种项目名称的约定规则,smartInvoke IDE 将这两个项目关联在一起了。

这样一来,当调试或运行First_项目的FirstWin.mxml时,eclipse 不再是调用本机浏览器加载对应的swf了,而是调用关联的Java项目的入口类cn.first. FirstWin加载该swf。这样就实现了smartinvoke项目的开发与调试。Java项目First中的cn.first. FirstWin类是整个smartinvoke项目的入口类,它的main方法最先由jre调用执行。同时该类还控制着程序首先加载的swf文件的路径,程序打开主窗口的样式等。

 

通过将一个smartinvoke项目分割为两个相互关联的Java类型项目与Flex项目构成,这样使得程序的功能分工更加明确,Java负责逻辑,Flex负责界面显示。JavaFlex通信细节交由smartinvoke 完成。这样可以大大提高开发效率与代码的复用率。

 

创建服务类型(Service Class Type)实现Flex调用Java

这里的服务类型即实现了cn.smartinvoke.IServerObject接口的Java类,通过smartinvoke,该类的public 方法可以被Flex直接访问到。

点击eclipse 工具栏上的图标

 
打开Create new smartinvoke type 对话框如下图所示:



 

 

 

点击完成后,会在First项目的cn.first包中新建一名称为ServiceTest的类。内容如下:

package cn.first;

 import cn.smartinvoke.IServerObject;

 import cn.smartinvoke.ide.declare.AServiceType;

 @AServiceType

 public class ServiceTest implements IServerObject {

 public ServiceTest() {

        //smarinvoke will call this default constructure.

 }

 public void gc(){

     //when this service object not be used smartinvoke call this method free memory.

 }

}

然后我们在ServiceTest类中添加一简单的方法供Flex调用,如下:

public String hello(String info){

     System.out.println(info);

     return "hello Flex I'm java";

 }

 

我们会发现在ServiceTest类的申明处添加了@AServiceType注解,该注解的作用是告诉eclipse 可以将该类翻译成Flex可以直接调用的as代码。只有标记了@AServiceType注解的类eclipse才将其翻译为对应的as代码,所以如果想自定义一些调用逻辑可以将该注解注释掉。我们可以在关联的Flex项目First_的对应源代码目录cn/first下发现ServiceTest.as类,内容如下:

 

package cn.first{

import cn.smartinvoke.RemoteObject;

[RemoteClass(alias="cn.first.ServiceTest")]

public class ServiceTest extends RemoteObject{

 public static function CreateInstance0():ServiceTest{

var instance:ServiceTest=new ServiceTest();

instance.createRemoteObject(arguments);

return instance;

 }

 public function hello(info:String):String{

  var ret:Object=this.call('hello',arguments);

 return ret as String;

 }

}

}

 

细心观察下会发现ServiceTest.as类的方法与ServiceTest.javapublic 方法是一一对应的。

Flex调用ServiceTest.as类中的hello方法时,其实是去调用对应的ServiceTest.java服务类中的hello方法,并获得对应返回值。

所以我们把ServiceTest.as类叫做:代理类型(Remote Class Type)。所有的代理类都继承了cn.smartinvoke.RemoteObject类。

 

修改First_项目的FirstWin.mxml文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>

<si:SIApplication xmlns:mx="http://www.adobe.com/2006/mxml"

     xmlns:si="http://smartinvoke.cn" creationComplete="init()"

     layout="absolute" fontSize="12">

     <mx:Script>

        <![CDATA[

            import cn.first.ServiceTest;

           

            import mx.controls.Alert;

           private function init():void{

               //创建对应的java服务类型对象         

               var serv:ServiceTest=ServiceTest.CreateInstance0();

               //调用java服务对象上的方法

               var res:String=serv.hello("Hello Java I'm Flex");

              

               Alert.show(res);

               //当我们不再使用该对象后,回收该服务对象的资源

               serv.gc();

           }

        ]]>

     </mx:Script>

</si:SIApplication>

       

和普通flex web applicationch程序运行方式一样,右键FirstWin.mxml将该文件运行为web应用程序就可以看到程序运行效果了。

细心的同学会发现这里的FirstWin.mxml并没有继承自mx.core.Application而是继承自:cn.smartinvoke.gui.SIApplicationSIApplication类,它封装了与Java通信的细节,使得SIApplication具有了访问Java对象的能力。在SmartInvoke中所有的窗口类都应该继承自SIApplication类。

  • 大小: 22.3 KB
  • 大小: 15.2 KB
  • 大小: 802 Bytes
  • 大小: 27.8 KB
分享到:
评论
3 楼 gyx376987739 2011-03-28  
楼主能留个联系方式吗?最近在看个东西,感觉很不错。中间也碰到不少问题。我的qq:376987739,邮箱376987739@qq.com。加个好友,交流交流可以吗?
2 楼 smartinvoke 2011-03-14  
smartinvoke项目分为两个子项目,第一个为java项目,第二个为flex项目,flex项目的名称以java项目名称加下划线"_"的形式,根据你的描述,感觉你没有遵循这个规则呢
1 楼 gyx376987739 2011-03-14  
我安装成功了,但是java项目里没有swc 程序报错,是怎么回事?
报这个错误
Illegal type of archive for required library: 'C:\Program Files\Adobe\Adobe Flash Builder 4\cn.smartinvoke.libs\libs\cn.smartinvoke.core.swc' in project 'first'

这个目录下是有swc这个文件的,但是在项目first下 reference library下面只有4个jar,没有swc。请楼主帮忙解答下

相关推荐

    通过SmartInvoke运用java与flex轻松构建cs程序.doc

    ### 通过SmartInvoke运用Java与Flex轻松构建CS程序 #### 概述 本文旨在介绍如何利用SmartInvoke技术结合Java和Flex构建高效的客户端-服务器(CS)应用程序。文章着重讲解了SmartInvoke的基础设置、项目创建流程及...

    cn.smartinvoke.ide

    2. **IDE(集成开发环境)**:一个IDE是程序员用来编写、调试和测试代码的软件工具。cn.smartinvoke.ide提供了一个集中的工作空间,其中包含了编辑器、调试器、版本控制工具等,以提高开发效率。它可能还具有项目...

    SmartInvoke库和示例

    在Java和C#的集成上,SmartInvoke库提供了灵活的API,使得开发者可以轻松地在两种语言之间传递数据和调用方法。例如,Java开发者可以创建服务端接口,这些接口在Flex客户端被调用,就像调用本地函数一样简单。同样,...

    C#与flex交互

    2. **项目配置**: - **Flex项目配置**: - **新建项目**:创建一个Flex项目,选择适当的Flex SDK和Flash Player版本。 - **设置构建路径**:确保库路径包含了所有必要的库文件,如Flex SDK的lib目录。 - **编辑...

    mybatis-3.0.5.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    SQLite3的使用+API接口的调用

    SQLite3的使用+API接口的调用(c/c++、Qt)

    aws-java-sdk-s3-1.12.246.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    基于混沌-高斯变异-麻雀搜索算法的BP神经网络优化(CGSSA-BP)在电厂运行数据回归预测中的应用(含优化前后对比)MATLAB代码

    内容概要:本文介绍了如何使用混沌-高斯变异-麻雀搜索算法(CGSSA)优化BP神经网络来进行电力行业的回归预测。主要内容包括数据准备、BP神经网络构建、CGSSA优化过程、以及优化前后效果对比。通过MATLAB代码实现,展示了如何读取EXCEL数据并进行训练和测试,最终通过图表和误差指标对比优化前后的预测效果。 适用人群:适用于具有一定MATLAB编程基础和技术背景的研究人员、工程师,特别是从事电力数据分析和机器学习领域的专业人士。 使用场景及目标:① 对电厂运行数据进行精准回归预测,辅助电厂运维规划和能源分配优化;② 提供详细的代码实现和优化方法,帮助用户理解和应用CGSSA优化BP神经网络的技术。 其他说明:文中提供了完整的代码示例,包括主程序、数据划分、BP神经网络预测、CGSSA-BP神经网络预测和结果对比等功能模块。此外,还讨论了一些优化技巧和注意事项,如数据归一化、隐藏层节点选择等。

    第三方浏览器下载包.apk

    第三方浏览器下载包.apk

    嵌入式系统开发_ARM11架构_Linux操作系统_QT48开发环境_QTCreator工具_人脸识别算法_商业保密技术_QML界面开发_视频嵌入技术_跨平台移植_基于上海高校.zip

    嵌入式系统开发_ARM11架构_Linux操作系统_QT48开发环境_QTCreator工具_人脸识别算法_商业保密技术_QML界面开发_视频嵌入技术_跨平台移植_基于上海高校

    宠物领养救助系统 - Java课程设计/毕业设计项目 - SpringBoot+Vue+MySQL宠物领养平台

    宠物领养救助系统是基于SpringBoot+MyBatisPlus+Vue+MySQL开发的Java项目,适合作为Java课程设计、毕业设计或期末大作业。技术涵盖前后端开发,帮助初学者快速掌握Java全栈技能。采用IDEA开发,代码规范,易于二次扩展,是Java学习者的理想实战项目!

    winmm钢琴程序代码QZQ.txt

    winmm钢琴程序代码QZQ

    scratch少儿编程逻辑思维游戏源码-狗狗变形者.zip

    scratch少儿编程逻辑思维游戏源码-狗狗变形者.zip

    thymeleaf-2.0.8.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    基于回声状态网络(ESN)的数据分类预测算法实现与Matlab代码实践

    内容概要:本文详细介绍了基于回声状态网络(ESN)的数据分类预测方法及其Matlab实现。首先简述了ESN的基本概念,强调其作为特殊递归神经网络的特点,即储备池连接权值固定不变。接着逐步展示了从数据准备、ESN模型构建、训练到预测的具体步骤,包括参数设置、状态更新规则、输出层训练方法等。文中还探讨了各部分代码的作用及意义,并提供了调参建议,如谱半径、泄漏率等参数的选择依据。此外,作者分享了自己在实验过程中的一些经验和心得,指出ESN在处理时间序列分类任务方面的优势。 适合人群:对递归神经网络特别是ESN感兴趣的科研工作者、学生以及有一定编程基础并想深入了解ESN机制的研究人员。 使用场景及目标:适用于需要进行时间序列数据分析和分类的应用场合,如金融趋势预测、语音识别等领域。通过学习本文提供的完整流程,读者可以掌握如何利用ESN解决实际问题,并能够根据自身需求调整模型参数以获得更好的性能。 其他说明:文中不仅给出了完整的Matlab代码示例,而且针对每一环节进行了详细的解释,帮助读者更好地理解ESN的工作原理和技术细节。同时提醒读者注意某些关键参数的调节范围,以便于在实际项目中取得理想的效果。

    威纶通触摸屏一机多屏程序

    内容概要:本文深入介绍了威纶通触摸屏一机多屏程序及其与FX3U系列PLC和MODBUS通讯的集成应用。首先,文章阐述了系统的硬件架构,即一个FX3U系列PLC搭配四个MT6051ip触摸屏的工作原理。接着,详细解析了威纶通模板的特点,特别是梯形图的详尽注释,便于理解和维护。此外,文章还探讨了PLC与上位机的MODBUS通讯设置,包括波特率、数据位、停止位等参数的具体配置方法。最后,强调了该系统的学习意义和借鉴价值,适用于新手和资深工程师。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是那些希望深入了解PLC、触摸屏和MODBUS通讯的人群。 使用场景及目标:①帮助工程师快速掌握威纶通触摸屏的一机多屏配置;②提高PLC与触摸屏、上位机之间的通讯效率;③优化中小型企业生产线的监控系统,提升生产效率和稳定性。 其他说明:文中提供的实例和代码片段有助于读者更好地理解和实践相关技术,同时附带了一些实用的小技巧,如心跳检测和双看门狗设计,增强了系统的可靠性和容错能力。

    无人机航测_大疆航线规划_KMZ文件生成与解析_基于JavaXStream注解的DJIPilot2兼容航线文件处理工具_支持航点飞行建图航拍等多种任务模板_包含航线高度速度航向角失.zip

    无人机航测_大疆航线规划_KMZ文件生成与解析_基于JavaXStream注解的DJIPilot2兼容航线文件处理工具_支持航点飞行建图航拍等多种任务模板_包含航线高度速度航向角失

    Matlab蒙特卡洛模拟求解复杂模型可靠度近似解

    内容概要:本文详细介绍了蒙特卡洛方法在工程可靠度计算中的应用,特别是在处理涉及多种概率分布参数的情况下。首先展示了基本的Matlab实现,如生成正态分布和极值分布的随机样本,并通过极限状态函数判断结构的安全性。接着讨论了处理相关变量的有效方法——拉丁超立方抽样,以及进一步提高计算效率的重要抽样法。此外,还探讨了并行计算和置信区间的计算,确保结果的准确性。最后强调了蒙特卡洛方法在解决复杂可靠度问题中的优越性和实用性。 适合人群:从事工程可靠度分析的研究人员和技术人员,以及对数值模拟感兴趣的工程师。 使用场景及目标:适用于需要评估结构或其他系统的可靠性的场合,尤其是在无法获得解析解的情况下。目标是提供一种简单有效的数值方法来估算失效概率和可靠度。 其他说明:文中提供了大量具体的Matlab代码示例,帮助读者更好地理解和应用蒙特卡洛方法。同时提醒使用者注意计算资源的合理分配,以平衡精度和效率。

    人力资源管理系统 - Java课程设计 - 毕业设计 - 期末大作业 - SpringBoot+Vue项目 - 初学者实战

    基于SpringBoot+MyBatisPlus+Vue+MySQL的人力资源管理系统,专为Java课程设计、毕业设计及期末大作业打造。采用主流技术栈(Idea开发),适合Java初学者快速上手,提供完整源码与文档,助力高效完成学习任务!

Global site tag (gtag.js) - Google Analytics