JAVA教程之J2ME收集编程和收集游戏的完成
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.编程|收集 弁言J2ME(Java2MicroEdition)是Java2的一个构成部分,是一种高度优化的Java运转情况,次要针抵消费类电子设备的,比方蜂窝德律风、可视德律风、数字机顶盒和汽车导航体系等等。即J2ME是为消耗电子产物和手持设备量身定制的Java公用版本。
J2ME的呈现使开辟跨平台的消耗类电子产物的使用软件成为大概。Java言语的与平台有关的特征移植到小型电子设备上,同意挪动无线设备之间共享使用程序。它供应了基于HTTP的初级Internet协定,使挪动德律风能以Client/Server体例间接会见Internet的全体信息,从而使得分歧的Client会见分歧的资本。
跟着收集手艺的开展,在未来的无线通讯时期中,大批的收集使用程序将被开辟出往复满意无线挪动通信的请求,而要充实的发扬无线挪动通信设备的通讯才能,J2ME收集编程就变得尤其主要。
1、利用Tomcat搭建Web服务器
http://www.alixixi.com/UploadPic/2007-7/20077711230692.bmp
收集使用模子
尽年夜多半的收集使用都是将数据信息保留到DBServer(数据库服务器),经由过程WebServer和谐各类客户真个哀求与呼应,存取数据库中的数据。数据库服务器和Web服务器多是收集中的1台或多台的设备;客户端能够经由过程网际中的通用协定(如http协定)对服务器端举行会见,客户端大概是pc上的web扫瞄器,大概是挪动设备,只需能撑持收集通信的协定就应当可以准确猎取服务器真个资本。
我们起首先容一下利用Tomcat搭键web服务器,在安装Tomcat5。0之前起首要下载
j2sdk、Tomcat5.0的安装文件
要筹办的安装文件
第1步安装j2sdk进进接待画面
j2SE安装界面1
第2步承受相干协定条目,然后选择Next
j2SE安装界面2
第3步选择安装路径,默许为c:j2sdk1.4.2_05,这里我们稳定,选择Next,(这个路径很主要,假如我们改动了,必定要记着)。
j2SE安装界面3
第4步体系会主动拷贝文件
http://www.alixixi.com/UploadPic/2007-7/20077711231632.JPG
j2SE安装界面4
第5步安装完成单击finish。
j2SE安装界面5
j2SE安装以后的目次布局
第6步安装Tomcat5.0,起首进进接待界面,单击Next。
http://www.alixixi.com/UploadPic/2007-7/20077711231694.JPG
Tomcat安装界面1
第7步承受相干协定条目,然后选择Next
0Tomcat安装界面2
第8步选择完整安装Full,然后选择Next
http://www.alixixi.com/UploadPic/2007-7/20077711231238.JPG
1Tomcat安装界面3
第9步断定安装目次,这里我们断定为C:Tomcat5.0,然后选择Next
http://www.alixixi.com/UploadPic/2007-7/20077711231284.JPG
2Tomcat安装界面4
第10步断定Web服务器办理员的用户名和暗码和默许的端口,,然后选择Next
用户名admin
暗码123(要记着该暗码用于对服务器的各类办理)
默许端口8080
http://www.alixixi.com/UploadPic/2007-7/20077711231923.JPG
3Tomcat安装界面5
第11步断定java假造机的地点路径,,然后选择Next
路径C:j2sdk1.4.2_05(和我们之前安装JDK的路径要分歧)
4Tomcat安装界面6
第12步体系主动拷贝文件。
5Tomcat安装界面7
第13步安装完成,体系提醒是不是即刻运转,单击Finish,我们会在屏幕的右下角看到Tomcat5.0的小图标。
6Tomcat安装界面7
第14步双击屏幕右下角Tomcat5.0图标,体系会弹出Tomcat运转窗口,在这个窗口中单击Start开启服务,到此Tomcat5.0安装完成,能够经由过程再Web扫瞄器中输出http://127.0.0.1:8080检测到接待的画面
http://www.alixixi.com/UploadPic/2007-7/20077711232116.JPG
7Tomcat安装界面8
8Tomcat接待画面
安装完成Tomcat今后,上面的事情就是要把磁盘上的文件夹共享为互联网中的假造目次,用于客户真个会见。我们在D:创立以下的文件夹布局:
D:mygameWeb(这个目次将作为对内部的假造目次用来寄存共享的各类资本)
http://www.alixixi.com/UploadPic/2007-7/20077711232959.JPG
9假造目次布局
在扫瞄器中单击页面左上第三项TomcatManager,这是体系会弹出一个窗口请求我们输出Tomcat办理的用户名和暗码,输出用户名admin暗码123后,按断定进进Web服务器办理页面。
0用户办理上岸窗口
http://www.alixixi.com/UploadPic/2007-7/20077711232130.JPG
1Tomcat办理窗口
在办理界面中的Deploy面板我们输出以下信息:
ContextPath(optional):/515game(假造目次的称号)
XMLConfigurationfileURL:
WARorDirectoryURL:file:d:/mygameWeb(实在的文件夹注重格局和巨细写不要错)
填写完成今后单击Deploy公布假造目次
半途而废,我们能够把资本放到d:mygameWeb这个目次上面经由过程
http://IP地点:8080/515game/资本称号就能够会见这个服务器上的资本了,
如:http://127.0.0.1:8080/515game/myweb.html
http://127.0.0.1:8080/515game/back0.png
http://127.0.0.1:8080/515game/kk.wav
假设这台主机在公网的IP地点为221.196.125.11在互联网中能够过以下地点来会见:
http://221.196.125.11:8080/515game/myweb.html
http://221.196.125.11:8080/515game/back0.png
http://221.196.125.11:8080/515game/kk.wav
在j2me中供应了会见收集的相干类,封装到了javax.microedition.io内里供应了相干类,上面我们经由过程实例先容假如经由过程GCF来让j2me的客户端猎取Web服务器缎的资本。
<P> 2、从Web猎取笔墨信息
importjavax.microedition.midlet.*;
importjavax.microedition.io.*;
importjava.io.*;
importjavax.microedition.lcdui.*;
publicclassgetHttp
extendsMIDlet{
publicvoidstartApp(){
try{
//翻开收集毗连
Stringurl="http://127.0.0.1/515game/myweb.html";
StreamConnectionsc=(StreamConnection)Connector.open(url);
//读取数据
InputStreamis=sc.openInputStream();
inttmp=0;
Stringget="";
while(tmp!=-1){//-1代表停止
tmp=is.read();
get=get+(char)tmp;
}
is.close();
Formf=newForm(url);
//办理中文成绩
Stringchinese=newString(get.getBytes("iso8859-1"),"utf-8");
f.append(chinese);
Display.getDisplay(this).setCurrent(f);
//封闭收集毗连
sc.close();
}
catch(Exceptione){}
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
}
3、从Web猎取图片信息
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
importjavax.microedition.io.*;
importjava.io.*;
publicclasstestPic
extendsMIDlet{
publicvoidstartApp(){
try{
//翻开收集毗连
Stringurl="http://127.0.0.1/515game/back0.png";
StreamConnectionsc=(StreamConnection)Connector.open(url);
//猎取图片
InputStreamis=sc.openInputStream();
Imageim=Image.createImage(is);//该办法为MIDP2.0办法
Formf=newForm(url);
f.append(im);
Display.getDisplay(this).setCurrent(f);
//封闭毗连
sc.close();
}
catch(Exceptione){}
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
}
4、从Web猎取多媒体信息
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;
importjavax.microedition.io.*;
importjava.io.*;
importjavax.microedition.media.*;
publicclassgetMusic
extendsMIDlet{
publicvoidstartApp(){
try{
//翻开收集毗连
Stringurl="http://127.0.0.1/515game/kk.wav";
StreamConnectionsc=(StreamConnection)Connector.open(url);
//猎取声响
InputStreamis=sc.openInputStream();
Playerp1=Manager.createPlayer(is,"audio/x-wav");
p1.start();
//封闭收集毗连
sc.close();
System.out.println("soundisplay");
}
catch(Exceptione){
e.printStackTrace();
}
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
}
5、基于http的用户上岸体系完成
服务器端程序
checkuser.jsp这个文件放到d:/mygameWeb目次上面
<%
//失掉用户名
Stringname=request.getParameter("username");
//失掉暗码
Stringpass=request.getParameter("password");
if(name.equals("ldh"))
{
if(pass.equals("zhm"))
{
out.print("welcome");
}
else
{
out.print("passworderror");
}
}
else
{
out.print("usernameerror");
}
%>
客户端程序
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
importjavax.microedition.io.*;
importjava.io.*;
publicclasslogoIN
extendsMIDlet
implementsCommandListener,Runnable{
publicFormf;
publicTextFielduser;//用户名
publicTextFieldpass;//暗码
publicCommandc1;
publiclogoIN(){
f=newForm("传奇天下用户上岸");
user=newTextField("用户名","",10,TextField.ANY);
pass=newTextField("暗码","",8,TextField.PASSWORD);
f.append(user);
f.append(pass);
c1=newCommand("断定",Command.SCREEN,1);
f.addCommand(c1);
f.setCommandListener(this);
Display.getDisplay(this).setCurrent(f);
}
publicvoidstartApp(){}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
publicvoidcommandAction(Commandc,Displayabledd){
Threadt=newThread(this);
t.start();//启动线程保持收集
}
//完成收集哀求
publicvoidrun(){
try{
//翻开收集
Stringurl="http://127.0.0.1/515game/checkuser.jsp?username="+
user.getString()+"&password="+pass.getString();
//猎取数据
StreamConnectionsc=(StreamConnection)Connector.open(url);
InputStreamis=sc.openInputStream();
inttmp=0;
Stringget="";
while((tmp=is.read())!=-1){
get=get+(char)tmp;
}
Formf2=newForm("上岸了局");
f2.append(get);
Display.getDisplay(this).setCurrent(f2);
//封闭收集
sc.close();
}
catch(Exceptione){}
}
}
6、一个收集游戏实例
上面我们经由过程一个收集猜代价的游戏实例来讲明怎样经由过程J2me同服务器端互换数据。
这是一个收集版商品竞猜的实例,客户端输出商品代价,在服务器端卖力游戏逻辑的处置。
服务器端代码:
Guess.jsp这个文件放到d:/mygameWeb目次上面
<%
Stringsjg=request.getParameter("jg");
intjg=(int)(Math.random()*10);
intuserjg=Integer.parseInt(sjg);
if(userjg>jg)
{
out.println("sorrydale");
}
if(userjg<jg)
{
out.println("sorryxiaole");
}
if(userjg==jg)
{
out.println("right");
}
%>
J2me客户端代码:
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
importjavax.microedition.io.*;
importjava.io.*;
publicclassGuessGame
extendsMIDlet
implementsCommandListener,Runnable{
publicFormf,f2;
publicTextFieldtf1;
publicDisplayd;
publicCommandc1,c2;
publicGuessGame(){
f=newForm("商品竞猜");
f2=newForm("竞猜了局");
c2=newCommand("前往",Command.SCREEN,1);
f2.addCommand(c2);
f2.setCommandListener(this);
tf1=newTextField("请输出商品代价1-9","",1,TextField.NUMERIC);
f.append(tf1);
c1=newCommand("断定",Command.SCREEN,1);
f.addCommand(c1);
f.setCommandListener(this);
d=Display.getDisplay(this);
}
publicvoidstartApp(){
d.setCurrent(f);
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanf){}
publicvoidcommandAction(Commandc,Displayabled){
if(c==c1){//启动收集哀求
(newThread(this)).start();
}
if(c==c2){
this.d.setCurrent(f);
}
}
publicvoidrun(){
try{
//翻开收集毗连
Stringurl="http://127.0.0.1/515game/Guess.jsp?jg="+tf1.getString();
StreamConnectionsc=(StreamConnection)Connector.open(url);
//猎取哀求了局
InputStreamis=sc.openInputStream();
inttmp=0;
Stringget="";
while((tmp=is.read())!=-1){
get=get+(char)(tmp);
}
for(inti=0;i<f2.size();i++){
f2.delete(i);
}
f2.append(get);
d.setCurrent(f2);
//封闭收集毗连
sc.close();
}
catch(Exceptione){}
}
}
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 Java 编程语言的风格十分接近C、C++语言。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
页:
[1]