易截截图软件、单文件、免安装、纯绿色、仅160KB

Java 插件工程开发的概念

假设一个photoshop工程,对照片可以有很多种风格效果的装饰,有一些装饰效果photoshop开发组可以自己开发并且放在发布版本里面发布。那么大家都可以使用这种效果。但是如果用户想开发自己的装饰效果怎么办? 难道跑到ps开发组去,把自己的代码给人家,让人家把自己的代码放进人家的ps大工程里面,编译然后发布到下面一个新的发布版本里面吗,公布给社会嘛?如果人家不同意怎么办? 那自己开发的岂不是白费,可扩展性岂不是太差了?
那么在这种情况下,便出现了插件工程的开发概念。ps开发组设计好一种支持效果装饰功能的接口。把这个接口公布给社会,所有个体用户可以都扩展这个接口,实现里面规定的方法。在ps主程序里面提供了一些使用这些接口方法的代码。然后可以把任何实现了这个接口的类加载到主程序中,并且运行在接口里面定义好的方法。那么用户自己实现了接口里面定义好的方法,实现好自己设计的装饰效果,就可以被主程序加载,并且对照片进行用户自己的定义的装饰效果。
那么这些独立的装饰效果就可以被理解为独立的插件工程,可以都由社会各个独立的团体自己开发,只需要到时候在自己电脑上把自己的插件工程跟主程序连接起来,就可以使用自己设计的插件了。而在photoshop方面,开发组只需要定义好接口,只需要负责自己的主程序,也不需要把社会上所有的开发的插件都加到主程序里面全部一次性的编译,并且发布。 这样就极大化的支持了开发的自由性。
支持插件开发概念的主要技术则主要是依靠Java的动态类加载功能,以及类的动态绑定技术。
通过一个例子也许更好的能解释所有东西。
首先建立一个interface类,然后导出成一个jar包。在主程序和插件程序中都把这个jar当成类库加入。
package printInterface;
public interface MyActionInterface {
    public void print();
}
导出jar文件名叫做interface.jar
然后在插件工程里面实现这个接口,并且也导出一个jar包,拷贝到跟主程序main方法类的同一文件夹中,一般class文件都在bin文件夹中
public class MyAction implements printInterface.MyActionInterface {
    @Override
    public void print() {
        System.out.println("Now you have used my Plug-in");
    }
}
导出jar包名叫myActionPlug-in.jar
下面是主程序,在其中动态加载了插件工程,如果插


相关文档:

针对java加密防止反编译的办法

    众所周知,java开发语言提供了很方便的开发平台,开发出来的程序很容易在不同的平台上被移植,现在越来越多的人使用它来开发软件,与.net语言并驾齐驱。
    Java有它方便的一面,同时也给开发者带来了一个不小的烦恼,就是保护程序代码变得困难,因为java语言编译和代码执行的特 ......

Java and XML_读书笔记_2010 05 19

2010-05-19
七、转换XML
l  可扩展样式表语言(XSL),被定义成了一种表示样式表的语言。是管理怎样从格式A转换一个文档到格式B的规范语言。该语言组件用于管理转换结构中的处理和身份验证
n  XSL是一种用来转换XML文档的语言。
n  XSL是一个用来指定XML文档格式的词汇库。
l  XSL和树形描述:这 ......

Java事务

通常的观念认为,事务仅与数据库相关。
 
事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的 ......

java socket例子

Server端: 
package test.bwl;   
  
import java.io.DataInputStream;   
import java.io.DataOutputStream;   
import java.io.IOException;   
import java.net.ServerSocket;   
import java.net.Socket; &nbs ......

java学习小记二

最近一直纠结于Java的IO中,刚开始看的一头雾水,各种Stream,各种Reader,各种Buffer。headache!
1,总的来说就包括InputStream 和 OutputStream 两个,具体应该用不到,都是用他们的派生类。
2,File 类的Object 可以是一个文件,也可以是一个directory/path。
3,Stream 是面向low-level的,而Reader/Writer是面向ch ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号