Archive for the ‘Java’ Category

Install Java ME SDK 3.0

在安装完 Java ME SDK 3.0,并试图启动,总是提示 connection refused,这就是 windows 防火墙在搞鬼,阻挡了对特定端口的访问。
把 Java ME SDK Device Manager 加到防火墙的允许名单内,就可以顺利启动 Java ME SDK。

By javafuns on March 2, 2010 at 22:22 · Views: 40 · Permalink · Leave a comment
Categorized in: Java · Tagged with: ,

Mockups For Desktop

这个工具可以用来模拟创建界面,非开源,但也有免费版,只是功能要少一些。

By javafuns on January 28, 2010 at 11:37 · Views: 97 · Permalink · Leave a comment
Categorized in: Java

应该使用 char[] 保存 Java 密码

以下内容引用《Java安全性, 第一部分: 密码学基础》:
存储/删除密码。如果密码是存储在 Java String 对象中的,则直到对它进行垃圾收集或进程终止之前,密码会一直驻留在内存中。即使进行了垃圾收集,它仍会存在于空闲内存堆中,直到重用该内存空间为止。密码 String 在内存中驻留得越久,遭到窃听的危险性就越大。
更糟的是,如果实际内存减少,则操作系统会将这个密码 String 换页调度到磁盘的交换空间,因此容易遭受磁盘块窃听攻击。
为了将这种泄密的可能性降至最低(但不是消除),您应该将密码存储在 char 数组中,并在使用后对其置零。(String 是不可变的,所以无法对其置零。)
.

By javafuns on January 28, 2010 at 10:40 · Views: 91 · Permalink · Leave a comment
Categorized in: Java · Tagged with: 

SSL协议基础知识(转载)

原文:http://210.40.7.188/NEW/SSL-SET/0_02.htm
第二章    SSL协议基础知识
2.1 SSL协议历史
1994年,网景公司设计了安全套接层(SSL)协议,最初,仅仅是为了在web浏览器和web服务器之间安全地传输私人数据如信用卡卡号,密码等。在1994年底,网景推出了SSL版本2,并第一次载入了一个商业浏览器——Netscape Navigator。1995推出了版本3,在1996年,一个国际标准组织(IETF)接管了SSL的工作,并将SSL协议重命名为安全传输层(TLS),它是建立在SSLV3基础之上的。在1999年,IETF推出TLS的版本1.0 (The TLS Protocol, Version 1.0, RFC 2246)。
2.2 SSL协议简介
安全套接层协议(SSL,Security Socket Layer)是网景(Netscape)公司提出的基于WEB应用的安全协议,它是一种在两台机器之间提供安全通道的协议。它具有保护传输数据以及识别通信机器的功能。安全通道是透明的,意思是说它对传输的数据不加变更。客户与服务器之间的数据是经过加密的,一端写入数据完全是另一端读取的内容。透明性使得几乎所有基于TCP的协议稍加改动就可以在SSL上运行,非常方便。
SSL安全协议主要提供三方面的服务:
(1)  认证用户和服务器, 使得它们能够确信数据将被发送到正确的客户机和服务器上;
(2)  加密数据以隐藏被传送的数据;
(3)  维护数据的完整性, 确保数据在传输过程中不被改变。
在数据传播之前,加密技术通过将数据转变成看起来毫无意义的内容来保护数据不被非法使用。其过程是:数据在一端 (客户端或者服务器端) 被加密,传输,再在另一端解密。

By javafuns on December 7, 2009 at 14:24 · Views: 71 · Permalink · Leave a comment
Categorized in: Java · Tagged with: , ,

Java Annotations

原文:http://java.sun.com/javase/6/docs/technotes/guides/language/annotations.html
许多 APIs 需要模板代码. 例如, 为了编写 JAX-RPC web 服务, 你必须提供一对接口和实现. 这种模板代码其实可以由工具自动生成, 如果程序使用了注释进行修饰以指示哪些方法可远程访问.
其它 APIs 需要有与程序一起的额外附属文件. 例如 JavaBeans 需要一个与 bean 一同存在的 BeanInfo 类, 而 Enterprise JavaBeans (EJB) 需要一个 部署描述符. 如果这些文件中的信息随同程序在一块会更加方便, 也会不易出错.
The Java platform 已经有各种特定的 annotation 机制. 例如 transient 修饰符是一个特定 annotation 用于指示一个域应该在序列化时忽略, @deprecated javadoc tag 用于指示该方法不应该再使用了. 到了 Java 5.0, 平台具有常规用途的 annotation (也称之为 metadata) 设施, 允许你定义和使用自己的 annotation types. 该设施提供的语法可声明 annotation types, 对声明进行注释, 读取 annotations [...]

By javafuns on December 1, 2009 at 22:43 · Views: 97 · Permalink · Leave a comment
Categorized in: Java · Tagged with: ,

Java 中的 Properties

Java 中使用 Properties 类代表一个属性集合。相对于我们通常的用法,Properties其实还有其它很多很有意思的使用方式。
构造方法:
Properties 有2种构造方法,其中之一用于创建一个无默认值的属性集合,另外一个用于创建一个带有默认值的属性集合。
Properties(Properties defaults)
例如,当调用 properties 的 getProperty(String key) 方法时,首先在属性集合中查找,如果未找到,则在默认集合中查找,如果还未找到,则返回 null。
加载属性集合:
常用的是通过 load(InputStream inStream) 或 load(Reader reader) ,不过也可以加载 XML 文件 loadFromXML(InputStream in)
另外请参考《巧妙装载你的properties》
存储属性集合:
与加载方法相对应,存储方法有 store(OutputStream out, String comments),store(Writer writer, String comments),特别是,也可以存储为 XML:storeToXML(OutputStream os, String comment) or storeToXML(OutputStream os, String comment, String encoding)
属性文件格式:
属性以行为单位,行分为2种:自然行和逻辑行。自然行是指单独的一行,行尾是以回车、换行或者回车加换行作为结尾。而逻辑行则是由多个自然行组成,自然行行尾以 \ 表示该行并未结束。如:
fruits=apple, banana, pear, \
cantaloupe, watermelon, \
kiwi, mango
fruits属性值是 apple, banana, pear, cantaloupe, watermelon, kiwi, mango
键包含行中下列区间内的所有字符:从首个非空白字符开始,直到(但不包括)首个非转义的 ‘=’、 ‘:’ 或非行结束符的空白字符。
所以,属性的 [...]

By javafuns on November 18, 2009 at 22:08 · Views: 113 · Permalink · Leave a comment
Categorized in: Java · Tagged with: 

What’s the differences between ClassNotFoundException and NoClassDefFoundError

坦白说,这两者之间有什么区别,以前没有去特意留意过。前些天,QA小姑娘问到我 NoClassDefFoundError 这个错误,我就顺便对比了一下这两者。
从 Java API 文档中,我们其实可以看出一些端倪。
ClassNotFoundException:
文档中写到:
当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常:

Class 类中的 forName 方法。
ClassLoader 类中的 findSystemClass 方法。
ClassLoader 类中的 loadClass 方法。

但是没有找到具有指定名称的类的定义。
显然,这些方法在编译期是不会检查Class定义是否存在,而只会在 runtime 期间抛出这个异常。
NoClassDefFoundError
当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用 new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。
当前执行的类被编译时,所搜索的类定义存在,但无法再找到该定义。
也就是,该类在编译时还是存在并且能找到,但在运行期却找不到对应的class导致加载失败,抛出了该异常。

By javafuns on November 12, 2009 at 22:15 · Views: 147 · Permalink · Leave a comment
Categorized in: Java · Tagged with: 

Class and ClassLoader in Java

(以下摘自 Java API 中文文档)
关于 Class
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。

By javafuns on November 12, 2009 at 21:58 · Views: 141 · Permalink · Leave a comment
Categorized in: Java · Tagged with: 
  • Highest Rated

  • My PicasaPhotos

    IMG_0657.JPG

    IMG_0565.JPG

    IMG_0518.JPG

  • RSS My del.icio.us

  • My RSS