博文

J2ME Polish学习心得(2009-11-04 00:58:00)

摘要:  最近在学习j2me,但没多久就发现很多头痛的问题,比如不同设备的不同硬件特性,jar和jad的自动打包,debug的困难等等。但后来我发现这个明为j2me plish的项目,发现他简直就是所有j2me编程折梦寐以求的东西,所以介绍给大家。        j2me polish是德国人的一个开源项目,主页是:http://www.j2mepolish.org/,类似于一个java开发环境的插件。第一篇先介绍一下它的设备优化功能(device optimization)。 比如这种经常遇到的情况,你的midlet需要发出些声音,你知道支持mmapi或midp2.0设备可以用如下方法: inputstream is = getclass().getresourceasstream("/mymid.mid"); player player = manager.createplayer(is, "audio/midi"); player.realize(); player.start();      但目前mdip1.0的手机还很多,很多手机有自己的api,比如在nokia ui中,可以这样: sound a=new sound(400,1000); a.setgain(100); a.play(1);       如果你要是你的程序在这两种手机上都能用,怎么办呢,难道维护两套源代码?这会非常麻烦的。所以,我就想如果java里有类似c++的编译预处理就好了,可以这样来: #if 设备支持mmapi 或 midp2.0 //do something here #elif 设备支持nokia ui       //do something diference here            #endif 然后编译器能自动产生针对不同设备的class文件就好了。这样解决方案可为完美,而j2me polish就可以帮你做到这一......

阅读全文(1951) | 评论:0

J2ME中使用TextField实现表单界面代码实战(2009-11-03 12:12:00)

摘要:  J2ME中使用TextField实现表单界面代码实战 收藏
本例主要借助Form和TextBox显示。 代码如下: /**
 * @作者 Jcuckoo
 * @创建日期 2008-11-18
 * @版本 V 1.0
 */
public class TextFieldMIDlet extends MIDlet implements CommandListener{
 //声名
 private Display display;
 
 private Form myform;
 private TextField userName;
 private TextField userPwd;
 private TextField email;
 private TextField number;
 private TextField value;
 private TextField telnum;
 
 private TextBox showMessage;
 private Command saveCommand;
 private Command backCommand;
 private Command exitCommand;
 
 public TextFieldMIDlet() {
  display=Display.getDisplay(this);
  myform=new Form("TextField实例测试");
 
  userName=new TextField("姓名:","",20,TextField.ANY);
  userPwd=new TextField("密码:","",20,TextField.PASSWORD);
  email=new TextField("E......

阅读全文(2958) | 评论:0

[转] J2ME polish使用心得  2(2009-11-03 00:04:00)

摘要:J2ME polish使用心得一(介绍j2mepolish) 收藏
1.简介
2.特色
2.1 预处理(Preprocessing)
2.2 手机数据库
2.3 高级UI
2.4 资源文件
2.5 其它 
3.安装j2mepolish
3.1 下载
3.2 安装
3.3 运行例子
4.新建第一个工程
5.小结 1.简介
近来在公司用j2mepolish开发了一个j2me的application,对j2mepolish的使用有所得,在此用这一系列文章记下对j2mepolish的心得,希望与大家共同交流进步。
j2mepolish是德国的一个open source,致力于使j2me的开发得更快捷和方便,它的强大之处体现在只需要一套代码就可以兼容尽可能多的手机platform。 2.特色
经过使用及介绍,j2mepolish具有以下特色
2.1 . 预处理(Preprocessing)
j2mepolish使用了一系列预处理指令(Preprocessing Directives),例如在代码中 //#if {test}
   System.out.println("is test mode");
//#else
   System.out.println("is not test mode");
//#endif
当在build.xml中执行"ant emulator”时,运行到这段代码的时候就会输出"is test mode",因为这里{test}的值为true; 直接执行"ant",{test}值为false,则会输出"is not test mode"(这是因为在build.xml中,target为"emulator"时,把test设为了true,后面有详细解释)
在使用这种预处理的方式下,j2mepolish提供了可以兼容各个手机platform的方法,例如如果手机支持MMAPI,我们则播放一段music(不管从网络还是手机本地) //#if polish.api.mmapi
Player player = Manager.createPlayer(url);......

阅读全文(2647) | 评论:0

J2ME polish使用心得(2009-11-02 23:56:00)

摘要:    1.简介
2.特色
  2.1 预处理(Preprocessing)
  2.2 手机数据库
  2.3 高级UI
  2.4 资源文件
  2.5 其它 
3.安装j2mepolish
  3.1 下载
  3.2 安装
  3.3 运行例子 
4.新建第一个工程
5.小结 1.简介
  近来在公司用j2mepolish开发了一个j2me的application,对j2mepolish的使用有所得,在此用这一系列文章记下对j2mepolish的心得,希望与大家共同交流进步。
  j2mepolish是德国的一个open source,致力于使j2me的开发得更快捷和方便,它的强大之处体现在只需要一套代码就可以兼容尽可能多的手机platform。 2.特色
  经过使用及介绍,j2mepolish具有以下特色
  2.1 .  预处理(Preprocessing)
  j2mepolish使用了一系列预处理指令(Preprocessing Directives),例如在代码中 //#if {test}
   System.out.println("is test mode");
//#else
   System.out.println("is not test mode");
//#endif
 当在build.xml中执行"ant emulator”时,运行到这段代码的时候就会输出"is test mode",因为这里{test}的值为true; 直接执行"ant",{test}值为false,则会输出"is not test mode"(这是因为在build.xml中,target为"emulator"时,把test设为了true,后面有详细解释)
  在使用这种预处理的方式下,j2mepolish提供了可以兼容各个手机platform的方法,例如如果手机支持MMAPI,我们则......

阅读全文(2538) | 评论:0

J2ME -- 实现短信发送界面(2009-10-30 00:44:00)

摘要:  package Prj7_1; import java.io.IOException; import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException; public class MessageMIDlet extends MIDlet implements CommandListener, ItemStateListener{
 
 private Form welcomeForm = new Form("欢迎使用...");
 private Display dis;
 /**************** 欢迎界面  ********************/
 private Command cmdExit = new Command("退出程序",Command.BACK,1);
 private Comm......

阅读全文(2657) | 评论:1

推荐几本学习java的书(2009-10-26 00:28:00)

摘要:  推荐几本学习java的书 作者:子晨 发布于:2008年09月28日 12:35 Thanking in Java(Java 编程思想)
Sun JDK 上下 《精通JSP-Web开发技术与典型应用》
Eclipse3.2+JDK1.5+Tomcat5.5 一、入门
《Java 2从入门到精通》- 推荐
《Thinking in Java》- 强烈推荐*
O’reilly的Java编程基础系列 - 参考*

二、进阶
《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当做手册来查阅)
《O’reilly-Java IO》- 推荐* (包含Java IO编程的各个方面)
《O’reilly-Database Programming with JDBC》- 推荐* (JDBC编程)
《O’reilly-Java Programming with Oracle JDBC》- 参考* 三、Java Web编程
《O’reilly-Java Server Pages》- 强烈推荐*
《O’reilly-Java Servlet Programming》- 非常推荐*
《O’reilly-Jakarta Struts》- 推荐* (Java Web编程的一个MVC实现框架Struts的书) 四、EJB编程
《J2EE应用与BEA Weblogic Server》- 强烈推荐
《Mastering EJB 2.0》- 非常推荐*
《Enterprise Java Bean》- 推荐* 五、Java XML编程
《O’reilly-Java and XML》- 推荐*
《O’reilly-Java and SOAP》- 参考* (Java的SOAP编程) 六、设计模式
《Core J2EE Patterns》- 强烈推荐* (J2EE设计模式,设计企业应用软件必备参考书)
《EJB Design Patterns》- 推荐* 七、其它
《O’reilly Ant - The Definitive Guide》- 推荐* (Ant是一种功能非常强大的Java工具) Note......

阅读全文(4351) | 评论:0

深入理解abstract class和interface(2009-10-20 11:10:00)

摘要:  abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。 

理解抽象类 

abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法,请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢? 

在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。 

在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽......

阅读全文(1216) | 评论:1

Java中的String数据类型(2009-10-11 21:27:00)

摘要:      Java中的String数据类型    1. 首先String不属于8种基本数据类型,String是一个对象。   因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。   2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;   3. String str=”kvill”;
String str=new String (“kvill”);的区别:   在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。   常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。   看例1: String s0=”kvill”;
String s1=”kvill”;
String s2=”kv” + “ill”;
System.out.println( s0==s1 );
System.out.println( s0==s2 ); 
  结果为: true
true 
  首先,我们要知道Java会确保一个字符串常量只有一个拷贝。   因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。   所以我们得出s0==s1==s2;   用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。   看例2: String s0=”kvill”;
String s1=new String(”kvill”);
String s2=”kv” + new String(“ill”);
Sys......

阅读全文(1091) | 评论:0

显示日历(2009-09-24 19:04:00)

摘要:      import javax.swing.JOptionPane;
public class PrintCalendar {
 public static void main(String[] args)
 {
  String stringYear = JOptionPane.showInputDialog("Input the year(e.g. 2009):");
  int year = Integer.parseInt(stringYear);
  String stringMonth = JOptionPane.showInputDialog("Input the month:");
  int month = Integer.parseInt(stringMonth);
  
  printMonth(year,month);
 }
 
 static void printMonth(int year,int month)
 {
  printMonthTitle(year,month);
  printMonthBody(year,month);
 }
 
 static void printMonthTitle(int year,int month)
 {
  System.out.println("       "+getMonthName(month)+" "+year);
  System.out.println("------------------------------");
  System.out.println(" Sun Mon Tue Wed Thu Fri Sat ");
......

阅读全文(1222) | 评论:0

Eclipse入门: Eclipse的使用简介及插件开发(2009-09-06 23:08:00)

摘要:http://www.ibm.com/developerworks/cn/java/l-eclipse/index.html   Eclipse 是替代IBM Visual Age for Java(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。目前,Eclipse已经开始提供C语言开发的功能插件。更难能可贵的是,Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。也就是说未来只要有人需要,就会有建立在Eclipse之上的COBOL,Perl,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat服务器插件。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。 虽然目前Eclipse项目还没有最后完成,但从已有的版本中已经能领略到Eclipse设计主导思想和主要功能特点。现在就了解Eclipse不但能使广大程序员对这款业界期望很高的IDE能一睹为快,更为重要的是如果能参加到Eclipse项目的开发中或是阅读它的开放源代码,这对广大程序员来说无疑是一个千载难逢的提高编程水平的好机会。Eclipse计划提供多个平台的版本,象Windows,Linux,Solaris,HP-UX和AIX,以下只介绍Windows版本。本文第一部分先介绍Eclipse的基本使用方法。第二部分介绍如何进行Eclipse的插件开发。 一.Eclipse简介 Eclipse是开放源代码的项目,你可以到 www.eclipse.org去免费下载Eclipse的最新版本,一般Eclipse提供几个下载版本:Release,Stable Build,Integration Build和Nightly Build,建议下载Release或Stable版本,笔者用的是Build20020125(Stable版本)。Eclipse本身是用Java语言编写,但下载的压缩包中并不包含Java运行环境,需要用户自己另行安装JRE,并且要在操作系统的环境变量中指明JRE中bin的路......

阅读全文(1695) | 评论:2