仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 594|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA教程之J2ME收集编程和收集游戏的完成

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.编程|收集  弁言

  J2ME(Java2MicroEdition)是Java2的一个构成部分,是一种高度优化的Java运转情况,次要针抵消费类电子设备的,比方蜂窝德律风、可视德律风、数字机顶盒和汽车导航体系等等。即J2ME是为消耗电子产物和手持设备量身定制的Java公用版本。

  J2ME的呈现使开辟跨平台的消耗类电子产物的使用软件成为大概。Java言语的与平台有关的特征移植到小型电子设备上,同意挪动无线设备之间共享使用程序。它供应了基于HTTP的初级Internet协定,使挪动德律风能以Client/Server体例间接会见Internet的全体信息,从而使得分歧的Client会见分歧的资本。

  跟着收集手艺的开展,在未来的无线通讯时期中,大批的收集使用程序将被开辟出往复满意无线挪动通信的请求,而要充实的发扬无线挪动通信设备的通讯才能,J2ME收集编程就变得尤其主要。

  1、利用Tomcat搭建Web服务器

  [img=372style=,243alt=]http://www.alixixi.com/UploadPic/2007-7/20077711230692.bmp[/img]
  收集使用模子

  尽年夜多半的收集使用都是将数据信息保留到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步体系会主动拷贝文件

  [img=432style=,325alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231632.JPG[/img]
  j2SE安装界面4

  第5步安装完成单击finish。

  

  j2SE安装界面5

  

  j2SE安装以后的目次布局

  第6步安装Tomcat5.0,起首进进接待界面,单击Next。

  [img=430style=,325alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231694.JPG[/img]
  Tomcat安装界面1

  第7步承受相干协定条目,然后选择Next

  

  0Tomcat安装界面2

  第8步选择完整安装Full,然后选择Next

  [img=439style=,337alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231238.JPG[/img]

  1Tomcat安装界面3

  第9步断定安装目次,这里我们断定为C:Tomcat5.0,然后选择Next

  [img=429style=,329alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231284.JPG[/img]
  2Tomcat安装界面4

  第10步断定Web服务器办理员的用户名和暗码和默许的端口,,然后选择Next

  用户名admin

  暗码123(要记着该暗码用于对服务器的各类办理)

  默许端口8080

  [img=417style=,318alt=]http://www.alixixi.com/UploadPic/2007-7/20077711231923.JPG[/img]

  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检测到接待的画面

  [img=368style=,347alt=]http://www.alixixi.com/UploadPic/2007-7/20077711232116.JPG[/img]
  7Tomcat安装界面8

  

  8Tomcat接待画面

  安装完成Tomcat今后,上面的事情就是要把磁盘上的文件夹共享为互联网中的假造目次,用于客户真个会见。我们在D:创立以下的文件夹布局:

  D:mygameWeb(这个目次将作为对内部的假造目次用来寄存共享的各类资本)

  [img=500style=,421alt=]http://www.alixixi.com/UploadPic/2007-7/20077711232959.JPG[/img]
  9假造目次布局

  在扫瞄器中单击页面左上第三项TomcatManager,这是体系会弹出一个窗口请求我们输出Tomcat办理的用户名和暗码,输出用户名admin暗码123后,按断定进进Web服务器办理页面。

  

  0用户办理上岸窗口

  [img=603style=,426alt=]http://www.alixixi.com/UploadPic/2007-7/20077711232130.JPG[/img]
  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是必须加以改进的。
乐观 该用户已被删除
沙发
 楼主| 发表于 2015-1-20 19:01:39 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-22 19:55:56 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若相依 该用户已被删除
地板
发表于 2015-1-26 23:54:51 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
变相怪杰 该用户已被删除
5#
发表于 2015-2-4 21:41:44 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
深爱那片海 该用户已被删除
6#
发表于 2015-2-5 09:44:26 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-2-5 17:25:16 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
小妖女 该用户已被删除
8#
发表于 2015-2-13 00:47:50 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
兰色精灵 该用户已被删除
9#
发表于 2015-3-3 11:42:55 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-9 10:21:31 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
老尸 该用户已被删除
11#
发表于 2015-3-23 02:53:22 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 17:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表