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类型项目First与Flex类型项目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负责界面显示。Java与Flex通信细节交由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.java类的public 方法是一一对应的。

当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.SIApplication,SIApplication类,它封装了与Java通信的细节,使得SIApplication具有了访问Java对象的能力。在SmartInvoke中所有的窗口类都应该继承自SIApplication类。

2025年12月GESP真题及题解(C++一级): 小杨的爱心快递 阅读详情

相关推荐

混沌系统在图像加密中的应用(随机性测试之FIPS 140-2测试和SP800-22测试)

本节内容我们将学习混沌序列的随机性测试,那么前面讲了,混沌系统产生的随机序列,它的随机性到底好不好,除了看相图、分岔图、指数图以外,还有一个非常重要的指标,那就是FIPS 140-2测试和SP800-22测试。(1)保证密码学模块的安全性:密码学模块在加密和解密敏感信息时使用随机数生成器来增加对手动解密和猜测攻击的抵抗力。通过进行FIPS 140-2测试,可以验证密码学模块是否符合安全标准,确保其实施和设计的安全性,以有效地保护敏感信息。

weixin_42207434的博客 2085

关于smartinvoke开发工具的操作

关于开发工具的安装:          在http://smartrcp.org/invoke/?page_id=16下载完cn.smartinvoke.ide.zip文件后,解压后得到: cn.smartinvoke.ide.jar cn.smartinvoke.ide.parse.jar cn.smartinvoke.ide.update.jar cn.smartinvok...

smartinvoke的专栏 220

从TM1到TM9:手把手教你用Wireshark抓包分析LTE下行调度与传输模式切换

本文详细解析了如何使用Wireshark抓包分析LTE下行调度中的传输模式切换,从TM1到TM9的动态调整过程。通过实战案例,包括小区边缘移动、高速场景和多用户调度,揭示eNodeB如何基于信道质量指标(如RSRP、SINR)动态切换传输模式,并提供关键信令解析和优化建议,助力网络工程师提升LTE网络性能。

weixin_42651748的博客 315

smartinvoke入门系列1——smartinvoke的安装

首先确保你已正确安装了flash builder4的插件版,不是插件版的同学可以安装插件版,或者添加Java开发工具JDT插件到你的flash builder中。   然后到http://smartrcp.googlecode.com/files/cn.smartinvoke.ide.zip下载smartinvoke开发工具,下载完毕后解压该zip文件后,将得到的所有jar文件拷贝到flash...

smartinvoke的专栏 223

部署资源管理系统chemx

资源管理系统的部署教程

weixin_40784215的博客 822

emir分析RC corner如何选择

power analysis阶段 RC corner的选择

weixin_61954252的博客 3593

smartinvoke入门系列10——多窗口的实现与互调

SmartInvoke还可以轻松的帮助你实现多窗口的功能。窗口之间可以方便的互调。首先我们点击eclipse工具栏上的图标:  打开新建对话框,输入如下内容:   点击完成后eclipse会在First_项目下新建一个SubWin.mxml文件。如下图:   我们在SubWin.mxml文件中添加一公共方法供FirstWin调用。内容如下:            public f...

smartinvoke的专栏 270

PT静态时序分析实战:从基础命令到高级报告解析

本文详细介绍了PT(PrimeTime)静态时序分析(STA)的实战技巧,从基础命令如pt_shell和report_timing的使用,到高级报告解析与问题排查。通过丰富的实例和脚本示例,帮助工程师快速掌握时序分析的核心技能,提升芯片设计验证效率。

weixin_29289821的博客 954

smartinvoke中文API及演示程序

java部分API: http://smartrcp.org/doc/java/   Flex部分API: http://smartrcp.org/doc/flex/   示例程序 下面所介绍的示例程序都可以从http://smartrcp.googlecode.com/files/demos.zip下载到。 SmartInvoke媒体播放器,可以播放flex所支持的媒体格式。它...

smartinvoke的专栏 247

GAMES101作业3-遇到的各种问题及解决方法

记录在做作业3时遇到的一些坑!以及最后的解决办法。

qq_41835314的博客 6817

华为OD机考双机位C卷 - 文件存储系统的排序(Java & Python & JS & GO & C++ & C)

华为OD机考双机位C卷 - 文件存储系统的排序, 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 780

通过SmartInvoke运用java与flex轻松构建cs程序(两分钟轻松上手)

 原文地址http://smartinvoke.cn/pages/disArticel.jsp?id=13大家都知道flex的web application不能操作和访问本地文件,我们今天就通过 smartInvoke让flex可以轻松的访问到本地文件。 一:在java应用程序中创建一操作本地文件的test.CFile类,创建几个对文件进

smartinvoke的专栏 633

Burpsuite系列安全渗透--自动扫描生成h5报告

第一章简述 Burpsuite是基于Java的用于web安全的工具,能够进行爬虫、代理、编码、密码爆破等任务,并支持对XSS漏洞、文件包含等漏洞的主动扫描或被动扫描。burpsuite2.0具体分为以下11个模块: Dashboard(仪表盘)——显示任务、实践日志等。 Target(目标)——显示目标目录结构的的一个功能。 Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。 Intruder(...

魔都虫师的博客 2890

通过SmartInvoke运用java与flex轻松构建cs程序(理解SmartInvoke的运行原理)

 三种对象(理解这三种对象的概念是掌握SmartInvoke的关键):  服务对象:      即实现了IServiceable接口或注册到ITypefactory字典标记为服类型的类;  代码实现如下:view plaincopy to clipboardprint?

smartinvoke的专栏 532

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

通过SmartInvoke运用java与flex轻松构建cs程序(数据类型的传递)

flex与java基本类型对照关系如下: SmartInvoke对以下所列的基本数据类型做了特殊处理,提高了调用的效率, 这里要着重说下数组(Object[]),链表(LinkedList),与哈希字典(Hashtable) 这三种集合类型,虽然说它们是SmartInvoke的内置数据类型,但是可以用来存储任何 数据类型。  Java类型  flex类型 Boolean B...

smartinvoke的专栏 109

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

应用java与flex轻松构建cs程序

今天发现SmartInvoke这一好东西,拿过来与大家分享分享!   原文地址 http://smartinvoke.cn/pages/document.jsp   通过它可以轻松的实现java与flex在本地的互相调用,利用java与flex构建强大的CS程序不是梦。 原文如下: ================================================   ...

189

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

通过SmartInvoke运用java与flex轻松构建cs程序(捕获鼠标键盘事件)

 通过实现flashPlayer activeX的消息钩子可以很轻松的屏蔽掉flex的系统右键菜单,从而实现自己的右键菜单。当然这个消息钩子也会监听到键盘消息,从而你可以很轻松的实现自己的键盘事件。代码如下:view plaincopy to clipboardprint?  //将flash控件添加到窗体  this.f

smartinvoke的专栏 464

通过SmartInvoke运用java与flex轻松构建cs程序(映射服务类型与异种平台类型对应规则)

  本篇首先介绍   怎样将没有实现IServiceObject接口的类映射为服务类。 然后介绍   怎样修改默认的类型对应规则。   映射服务类型: 如果Java中的test.CFile类没有实现IServiceObject接口,而我们又 要flex的test.CFile代理类实例访问到该test.CFile类实例。

smartinvoke的专栏 555

使用java与flex轻便构建cs程序

 今日发现SmartInvoke这一好东西,拿过来与大伙分享分享! 原稿地址 http://smartinvoke.cn/pages/document.jsp 透过它可以轻巧的兑现java与flex在本土的相互调用,利用java与flex构建强大的CS程序不是梦。原稿如次:================================================ 

liangdiwei的专栏 447

通过SmartInvoke运用java与flex轻松构建cs程序(映射服务类型与异种平台类型对应规则)...

本篇首先介绍   怎样将没有实现IServiceObject接口的类映射为服务类。 然后介绍   怎样修改默认的类型对应规则。 映射服务类型: 如果Java中的test.CFile类没有实现IServiceObject接口,而我们又 要flex的test.CFile代理类实例访问到该test.CFile类实例。 在Java中...

smartinvoke的专栏 153

smartinvoke入门系列4——Java与Flex传递复杂类型

在Flex调用Java方法时,不仅可以传递基本数据类型,而且可以传递自定义复杂的数据类型。在这里我们把这种类型称作Bean Class Type,它的作用类似于J2EE里的Bean Class,只起着组织复杂数据的作用。 在eclipse 工具栏上点击 在Flex调用Java方法时,不仅可以传递基本数据类型,而且可以传递自定义复杂的数据类型。在这里我们把这种类型称作Bean Class Typ...

smartinvoke的专栏 176

关于smartinvoke开发工具的操纵

关于开发工具的安装: 入门视频教程:http://v.youku.com/v_show/id_XMTY1MzAxNDg4.html入门文档教程:http://smartinvoke.group.iteye.com/group/wiki/3026-smartinvoke-java-flex 在http://smartrcp.org/invoke/?page_id=16下载完cn.smarti

乱世情郎 631

smartinvoke入门系列9——窗口类型FlashShell与事件

SmartInvoke使用cn.smartinvoke.gui.shell.FlashShell类管理应用程序打开的窗口,通过该对象,用户可以设置窗口的标题,位置,大小,是否可以,透明度等属性,还可以监听窗口的 CShellEvent.Event_Activated,CShellEvent.Event_Closed,CShellEvent.Event_Deactivated, CShellEve...

smartinvoke的专栏 279

smartrcp入门视频系列一(hello world)

    swf文件下载地址:http://smartrcp.googlecode.com/svn/org.smartrcp.demo/src/vedios/vedio1.swf

smartinvoke的专栏 190

Adobe AIR这个鸡肋,我有话说

背景: 大约在09年的下半年用Adobe AIR技术做公司的BI系统,因为看重它在图表,地图上的优势。 刚刚开始还比较顺利,界面漂亮,与后台服务器交互有AMF。一起都是那么的顺利,可随着项目 的扩大,代码的增加,问题就暴露出来了,表现在:   1:内存占用非常大     随着打开模块数量的增加,使用时间的增长,程序占用的内存不断发展壮大,一般都保持在  700MB到1GB多,一般的...

smartinvoke的专栏 462
上一篇: smartinvoke入门系列1——smartinvoke的安装
下一篇: smartinvoke入门系列3——程序的打包与单独运行
smartinvoke
博客等级 码龄17年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值