文章分类

站点统计

  • 分类总数: 13 个
  • 文章总数: 145 篇
  • 评论总数: 35 条
  • 附件总数: 59 个
  • 建站日期: 2008-08-18
  • 访问总数: 388175 人次
  • RSS订阅: 文章|评论

AWT、SWING与SWT、JFACE比较

Admin 于 2008-10-19 22:52:59 发表Java

AWT和SWT实现原理不同:AWT控件相当于是一笔一画绣出来的,参加java.awt.Component.paint(Graphics g),性能差;而SWT调用了操作系统后台原生库,org.eclipse.swt.widgets.Control类型中就没有类似的paint方法 了,但是有一个接口org.eclipse.swt.graphics.Drawable。实现原理的不同带来了性能和用户视觉的差异。

SWING是基于AWT提供的MVC不完全实现,JFACE是基于SWT提供的MVC不完全实现。两者的核心作用都是提供了viewer和模型封装的概 念,从设计实现层面看,SWING更加唯美一些,JFACE则更加侧重于实用。SWING和JFACE两者都偏重于行为控制上下文,而对UI数据(例如, 一个文本框控件中的内容)的管理都没有做太多的设计。JFACE中略有改进,提供了setData的概念。JFACE是为了Eclipse而生的,虽然后 来 RCP出来了,又做了其他的包装宣传,典型的体现就是提供了JFace Text Framework和其他一些用户构建Eclipse元素的UI支持,也提供了一些系统资源管理(ImageRegsitry、 ResourceManager等)等附加功能。

SWING框架与代码很优美,但效率低,特别是高级控件如各种选择框超慢,与Windows本身不协调,使用体验差;而且再怎么使用LookAndFeel,还是不美观,总是感觉画的不清晰。

被阅1150次, 0票AWT SWING SWT JFACE 发表评论

通过SMSLib库实现Java程序发送短信

Admin 于 2008-10-15 02:31:57 发表Java

SMS(Short Messaging Service)即短消息业务,是由Etsi所制定的一个规范(GSM 03.40 和 GSM03.38)。当使用其7-bits编码时,可以发送最多160个字符;使用8-bit编码,最多可以发送140个字符,通常无法直接通过手机显 示;还有用16-bit编码时,最多70个字符,被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。

目前程序中发送短信大致有三种途径:
1、 向当地的电信部门申请网关,不需要额外的设备,利用对方提供的API调用程序发送短信,适用于大型的通信公司。
2、 借助像GSM MODEM之类的设置(支持AT指令的手机也行),通过数据线连接电脑来发送短信,这种方法比较适用于小公司及个人。要实现这种方式必须理解串口通信、AT指令、短信编码、解码。
3、 利用网站实现,由网站代发短信数据,对网站依赖性太高,对网络的要求也比较高,不适于进行项目开发。
 
本文选择了AT命令方式作为讲解。

所谓AT,即Attention。AT命令集是从Terminal Equipment或Data Terminal Equipment向Terminal Adapter或Data Circuit Terminating Equipment发送的,通过TA、TE发送AT命令来控制Mobile Station的功能与GSM网络业务进行交互。我们可以通过AT命令进行呼叫短信、电话本、数据业务、补充业务、传真等方面的控制。 由于AT指令操作是非常之简单的,我们完全可以自己写组件完成相关操作,而且针对联通、移动、小灵通等不同的服务需求,自制组件反而更容易控制及扩充。

在Java编程中可以通过Java Comm进行手机与电脑的串口通讯,并通过AT指令控制手机操作。在Google code上有个SMSLib项目,是一个以AT指令实现手机操作的组件(http://code.google.com/p/smslib/downloads/list)。
SMSLib使用示例如下:

  1. package org.test; 
  2.  
  3. import org.loon.framework.test.sms.SMS; 
  4. import org.loon.framework.test.sms.SMSImpl; 
  5.  
  6. public class SendManager { 
  7.     public static void main(String[] args) throws Exception { 
  8.         SMS sms = new SMSImpl(); 
  9.         sms.begin(); // 与默认手机端口建立通讯 
  10.          
  11.         sms.getDriver().sendMessage("13012345600" 
  12.             ,"短信内容,默认使用pdu模式,7-bit编码");//13012345600为目标手机号码 
  13.          
  14.         sms.end();// 关闭通讯 
  15.     } 

 

被阅3207次, 1票短信 SMSLib 发表评论

HSQLDB简介和基本使用

Admin 于 2008-10-05 07:18:11 发表Java

       Hsqldb是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的。具有Server模 式,进程内模式(In-Process)和内存模式(Memory-Only)三种。运行Hsqldb需要hsqldb.jar包, 它包含了一些组件和程序。每个程序需要不同的命令来运行。它位于项目的lib目录下,目前的版本是1.8.0.5。官方的下载地址 是:http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_8_0_5.zip?download
        在介绍这些模式之前我们需要了解一些Hsqldb所涉及的一些文件。每个Hsqld数据库包含了2到5个命名相同但扩展名不同的文件,这些文件位于同一个目录下。例如,名位"test"的数据库包含了以下几个文件:

  • test.properties
  • test.script
  • test.log
  • test.data
  • test.backup

  properties文件描述了数据库的基本配置。 script文件记录了表和其它数据库对象的定义。log文件记录了数据库最近所做的更新。data文件包含了cached(缓冲)表的数据,而backup文件是将data文件压缩备份,它包含了data文件上次的最终状态数据。所有这些文件都是必不可少的,千万不可擅自删除。但如果你的数据库没有缓冲表(cached table),test.datatest.backup文件是不会存在。

  接下来我们对Hsqldb的三种模式进行简单介绍,同时包括部分工具的启动的方式

一、 Server模式 

 Server模式提供了最大的可访问性。应用程序(客户端)通过HsqldbJDBC驱动连接服务器。在服务器模式中,服务器在运行的时候可以被指定为最多10个数据库。根据客户端和服务器之间通信协议的不同,Server模式可以分为以下三种:

1 Hsqldb Serve

  这种模式是首选的也是最快的。它采用HSQLDB专有的通信协议。启动服务器需要编写批处理命令。Hsqldb提供的所有工具都能以java class归档文件(也就是jar)的标准方式运行。假如hsqldb.jar位于相对于当前路径的../lib下面。我们的命令将这样写:

  java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 demoDB

  现在你可能会疑惑,[-database.0 ] [dbname.0]为什么在后面加[0]_... ...我们不是在前面说服务模式运行的时候可以指定10个数据库吗,如有多个数据库,则继续写命令行参数-database.1 aa -dbname.1 aa -database.2 bb-dbname.2 bb ... ...

  新建文本文件保存上面命令,文件名可以随意,将后缀名改成bat,然后直接执行批处理文件即可。在以后介绍的执行启动工具的命令采用同样方法。

  上面启动服务器的命令启动了带有一个(默认为一个数据库)数据库的服务器,这个数据库是一个名为"mydb.*"文件,这些文件就是mydb.Propertiesmydb.scriptmydb.log等文件。其中demoDBmydb的别名,可在连接数据库时使用。

2 Hsqldb Web Server

   这种模式只能用在通过HTTP协议访问数据库服务器主机,采用这种模式唯一的原因是客户端或服务器端的防火墙对数据库对网络连接强加了限制。其他情况下,这种模式不推荐被使用。

 运行web服务器的时候,只要将刚才命令行中的主类(main class)替换成:org.hsqldb.WebServer

3 Hsqldb Servlet

    这种模式和Web Server一样都采用HTTP协议,当如TomcatResinservlet引擎(或应用服务器)提供数据库的访问时,可以使用这种模式。但是Servlet模式不能脱离servlet引擎独立启动。为了提供数据库的连接,必须将HSQLDB.jar中的hsqlServlet类放置在应用服务器的相应位置。

  Web ServerServlet模式都只能在客户端通过JDBC驱动来访问。Servlet模式只能启动一个单独的数据库。请注意做为应用程序服务器的数据库引擎通常不使用这种模式。

连接到以Server模式运行的数据库

  HSQLDB服务器运行时,客户端程序就可以通过hsqldb.jar中带有的HSQLDB JDBC Driver连接数据库。

java 代码
  1. try
  2.     Class.forName("org.hsqldb.jdbcDriver") ; 
  3. }catch(ClassNotFoundException e){ 
  4.     e.printStackTrace(); 
  5. Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb""sa"""); 

   hsqldb的默认用户是sa密码为空。修改默认密码的方法我们将在工具使用部分做出介绍。

 二、 In-Process模式

  In-Process模式又称Standalone模式。这种模式下,数据库引擎作为应用程序的一部分在同一个JVM中运行。对于一些应用程序来说, 这种模式因为数据不用转换和通过网络的传送而使得速度更快一些。其主要的缺点就是默认的不能从应用程序外连接到数据库。所以当应用程序正在运行的时候,你不能使用类似于Database Manager的外部工具来查看数据库的内容。在1.8.0版本中,你可以从同一个JVM的一个线程里面来运行一个服务器实例,从而可以提供外部连接来访问你的In-Process数据库。

  推荐的使用In-Process模式方式是:开发的时候为数据库使用一个HSQLDB 服务器实例,然后在部属的时候转换到In-Process内模式。

  一个In-Process模式数据库是从JDBC语句开始启动的,在连接URL中带有指定的数据库文件路径作为JDBC的一部分。例如,假如数据库名称为testdb,它的数据库文件位于与确定的运行应用程序命令相同的目录下,下面的代码可以用来连接数据库:

  Connection c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", "");

    数据库文件的路径格式在Linux主机和Windows主机上都被指定采用前斜线("/")。所以相对路径或者是相对于相同分区下相同目录路径的表达方式是一致的。使用相对路径的时候,这些路径表示的是相对于用于启动JVM的shell命令的执行路径。

三、Memry-Only数据库


Memory-Only数据库不是持久化的而是全部在随机访问的内存中。因为没有任何信息写在磁盘上。这种模式通过mem:协议的方式来指定:

        Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:dbName", "sa", "");

你也可以在server.properties中指定相同的URL来运行一个Memory-Only(仅处于内存中)服务器实例。

注意事项:当一个服务器实例启动或者建立一个in-process数据库连接的时候,如果指定的路径没有数据库存在,那么就会创建一个新的空的数据 库。这个特点的副作用就是让那些新用户产生疑惑。在指定连接已存在的数据库路径的时候,如果出现了什么错误的话,就会建立一个指向新数据库的连接。为了解 决这个问题,你可以指定一个连接属性ifexists=true只允许和已存在的数据库建立连接而避免创建新的数据库,如果数据库不存在的 话,getConnection()方法将会抛出异常。

 四、 工具的使用


   Hsqldb提供的主要的工具类:

  • org.hsqldb.util.DatabaseManager 
  • org.hsqldb.util.DatabaseManagerSwing 
  • org.hsqldb.util.Transfer 
  • org.hsqldb.util.QueryTool 
  • org.hsqldb.util.SqlTool


其中DatabaseManage和Sql Tool,只能用命令行参数来运行。你可以在命令行后面加上参数-?来查看这些工具可用的参数列表。其他工具可以通过DatabaseManager的主界面启动,便于交互式操作。

为了便于操作,我们同样把这些工具启动的命令做成批处理文件。方法和前面我们所介绍的创建启动服务模式命令的方法一样。在这里我们再强调一次hsqldb.jar的位置,因为所有启动命令都是参照hsqldb.jar的位置编写的

如果您觉得麻烦你也可以采用绝对路径编写命令。

现在我们一起运行AWT版本的DatabaseManager工具,hsqldb.jar位于相对于当前路径的../lib下面,命令如下:

Java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager

将命令保存为后缀名为bat的批处理文件,保存为DatabaseManager.bat,也可根据个人习惯命名。执行DatabaseManager.bat你将看到如下画面:。

         现在对这个简洁的登录界面做个简单的介绍*_*

  • Recent:选择你最近的登录方案,[可选] 
  • Setting Name:本次登录方案名称,如果本次登录成功,那么等你下次登录的时候在Recent下拉列表中将看到你的成功登录方案[可选] 
  • Type:登录模式,其中包括In-Memory模式、Standalone(In-process)模式、Server模式、WebServer模式... ...[必选] 
  • Driver:连接数据库的驱动程序[必选] 
  • URL:连接数据库的URL[必选] 
  • User:用户名[必选] 
  • Password:密码[ 除非密码为空]


注:如果Type项选择Server模式或者WebServer模式需要你事先启动与之对应的服务模式。而Standalone(In- process)默认是不支持DatabaseManager连接的,具体原因我们已经在前面解释过。至于In-Memory可以随意登录,所有的操作数 据都不会记录在本地磁盘。而Type还有很多其他选项,具体的用法可以参考官方文档,位置在hsqldb目录\doc\guide\ guide.pdf。

如果你想运行DatabaseManagerSwing也很简单,相信你已经想到了。我们只需要把启动DatabaseManager命令修改成:
Java -cp ../lib/hsqldb.jar org.hsqldb.util. DatabaseManagerSwing

两种工具的操作方法类似,这里就不再赘述。

        差点忘记,前面我说过要给出修改sa用户密码的方法。最后再占用大家一点点时间。当你用SA通过DatabaseManager登录成功后会出现如下界面:

      在右上方的空白区域输入set password "newpassword" 点击执行即可。

到这里我们对Hsqldb的简单介绍就结束了。

 

被阅817次, 0票HSQLDB 发表评论

NanoHTTPD example

Admin 于 2008-10-04 09:41:45 发表Java

被阅842次, 0票NanoHTTPD 发表评论

NanoHTTPD version 1.11

Admin 于 2008-10-04 09:40:10 发表Java

被阅811次, 0票NanoHTTPD 发表评论

介绍一个小巧的Wiki系统:More wiki in a jar

Admin 于 2008-10-04 04:00:12 发表Java

More wiki in a jar 是一个在Wiki in a jar改进的、使用Java编写的小巧的Wiki系统,在一个不足100K的Jar包中提供了WebServer与Wiki引擎的功能:

  1. 开发本意是想实现一个可以使用U盘携带PIM(Personal Information Manager ),用于管理个人知识与联系人。
  2. 支持vcard(vcf)联系人格式。
  3. 内容使用基于维基百科的语法,并使用文本文件存放。
  4. 提供搜索功能

 使用方法:

  1. 下载
  2. 解压,并运行bin/start.cmd或bin/start.sh(linux)
  3. 在打开的浏览器页面中参照提示进行编辑与设置

作者使用Eclipse管理源代码,可以很方便地按照自己的需求修改程序功能。特别适合程序员作为个人知识管理工具使用。

被阅870次, 0票Wiki 发表评论

JMagick介绍及高质量缩略图生成

Admin 于 2008-09-20 17:22:45 发表Java

JMagick是ImageMagick的Java版的开源接口,通过Java Native Interface(JNI)包装了ImageMagick的API。JMagick并没有以OO的形式对ImageMagick API进行重新封装,只是简单地添加了Java接口供Java程序调用。目前,JMagick只实现了ImageMagick API的一个子集,以LGPL形式进行开源发布。网站:http://www.jmagick.org/index.html,文档:http://downloads.jmagick.org/jmagick-doc/

1、在http://downloads.jmagick.org/6.3.9/下载jmagick-win-6.3.9-Q8.zip和ImageMagick-6.3.9-0-Q8-windows-dll.exe。
2、安装 ImageMagick-6.3.9-0-Q8-windows-dll.exe。
3、将安装目录下 “C:\Program Files\ImageMagick-6.3.9-Q8\ ”(按自己所安装的目录找) 下的所有dll文件 copy 到系统盘下的 “C:\WINDOWS\system32\”文件夹里。
4、配置环境变量:再环境变量path里添加新的值 “C:\Program Files\ImageMagick-6.3.9-Q8”。
5、解压jmagick-win-6.3.9-Q8.zip,将 jmagick.dll 复制到系统盘下的 “C:\WINDOWS\system32\”目录和jdk的bin目录(例“E:\Java\jdk1.5.0_10\bin”)里各一份 。
6、将 jmagick.jar 复制到Tomcat下的lib目录里和所使用项目的WEB-INF下lib目录各一份。
7、例子:

被阅1877次, 1票JMagick 发表评论

精简出最小 jre

Admin 于 2008-09-13 18:40:31 发表Java

被阅1031次, 0票JRE 发表评论
1 / 2 / 12 | « 1 2 » |
Powered by MiniBoke v2.0.0.8 Build 0828

Copyright © 2008 开源吧!. All rights reserved.

粤ICP备07500939号