iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何优化J2ME应用程序
  • 416
分享到

如何优化J2ME应用程序

2023-06-03 03:06:16 416人浏览 独家记忆
摘要

这篇文章主要介绍“如何优化J2ME应用程序”,在日常操作中,相信很多人在如何优化J2ME应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何优化J2ME应用程序”的疑惑有所帮助!接下来,请跟着小编一起来

这篇文章主要介绍“如何优化J2ME应用程序”,在日常操作中,相信很多人在如何优化J2ME应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何优化J2ME应用程序”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如果要说j2me应用程序和j2se应用程序有什么不同的地方的话,那就是他们各自被限制运行的环境。
很多J2ME系统的主要的瓶颈是存储和运行应用程序的可用内存数量。举例来说,当前许多MIDP设备,他们
限制给应用程序的内存数量就只有50K或更少,离可能要求兆级的基于服务端J2SE环境有段很长的距离。
由于你在开发中会很容易就遭遇这些限制,所以在这篇J2ME技术提示中,你会学到如何让你的应用程序占用最
少的内存。你将用这些技术减少MIDlet占用的空间,MIDlet只是显示一个文本框并且在其中内容被更改
的时候发出声音:
package com.j2medeveloper.techtips;

import Javax.microedition.lcdui.*;

public class BeforeSizeOptimization extends
  BasicMIDlet {

  public static final Command exitCommand =
  new Command( "Exit",
  Command.EXIT, 1 );

  public BeforeSizeOptimization(){
  }

  protected void initMIDlet(){
  getDisplay().setCurrent( new MainFORM() );
  }

  public class MainFoRM extends Form {
  public MainForm(){
  super( "MainForm" );

  addCommand( exitCommand );
  append( textf );

  setCommandListener( new CommandListener(){
  public void commandAction( Command c,
  Displayable d ){
  if( c == exitCommand ){
  exitMIDlet();
  }
  }
  }
  );

  setItemStateListener(
  new ItemStateListener() {
  public void itemStateChanged(
  Item item ){
  if( item == textf ){
  AlertType.INFO.playSound(
  getDisplay() );
  }
  }
  }
  );
  }

  private TextField textf =
  new TextField( "Type anything", null,
  20, 0 );

  }
}

尽管这个例子只演示了MIDlet,但是其中用到的技术可以用来优化任何J2ME程序。
注意上面演示的MIDlet要靠下面这个类:
package com.j2medeveloper.techtips;

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public abstract class BasicMIDlet extends MIDlet {

  private Display display;

  public BasicMIDlet(){
  }

  protected void destroyApp( boolean unconditional )
  throws MIDletStateChangeException {
  exitMIDlet();
  }

  public void exitMIDlet(){
  notifyDestroyed();
  }

  public Display getDisplay(){ return display; }

  protected abstract void initMIDlet();

  protected void pauseApp(){
  }

  protected void startApp()
  throws MIDletStateChangeException {
  if( display == null ){
  display = Display.getDisplay( this );
  initMIDlet();
  }
  }

}
你用J2ME Wireless Toolkit打包以后,这个MIDlet例子仅仅4K多一点。

减少size的第一步是通过减少应用程序功能来移除一些不必要的类。你的应用程序的每个特性都是真的必要的吗?
你的用户能否忍受没有铃声和哨声?让我们来建立最小版本的应用程序。注意到MIDlet例子已经是相当小的了。

第二步着眼于应用程序定义的内部类,特别是匿名类。记住每一个类文件都有一定相应的空间开支。甚至最微不足道的
类也需要成本:
  public class foo {
  // nothing here
  }
编译这个类,你可以发现你得到一个占用几乎200字节空间的class文件。一个匿名类一般用途是用来实现事件监听。
MIDlet例子定义了两个listener。一个简单优化就是让MIDlet的主类实现CommandListener和ItemStateListener
两个接口,删除里面的listener代码。记住多个对象可以使用相同的listener。如果需要区别开来,
可以传递参数给commanAction和itemStateChanged方法。

内部类也会通过其他方面膨胀代码,因为编译器必须产生不同的变量和方法来允许一个内部类访问封装类里面的私有信息。

第三步是最大程度使用内置的类。举个例子,在基于CLDC的程序中不要建立你自己的集合类。尽量使用内置的Hashtable
和Vector。设计MIDP应用也是一样。MIDlet例子定义了一个Form子类来创建它的主form,但它还能被很容易地直接创建:
  mainForm = new Form( "MainForm" );
  mainForm.addCommand( okCommand );
  mainForm.setCommandListener( listener );
这里没有对和错的问题,这只是需要考虑的一些简单的东西。

第四步是取消你应用程序的继承关系。你可能已经将代码分解成一个或多个抽象类,这是个被推荐的能提高代码重用
的OOD设计方法。也许会跟你学到的东西有抵触,但去简化继承层次更加说的过去。如果你的抽象类——可能来自其他项目——
只是被继承了一次,那简化继承关系就显得特别有理由。MIDlet例子扩展了BaicMIDlet类,但两个类很容易组合成一个。

第五步是缩短你的包名,类名,方法名和数据成员名。看上去这一步显得很愚蠢,但一个class文件保存了很多字符信息。
缩短他们的名字你会减少clas文件的size。这个办法节省的东西不会很多,但当遍及到多个类时他们会增加。包名特别
应该被缩短。因为MIDP应用程序完全是独立的,你能完全避免包名——不会有机会跟该设备其他类的名字冲突。MIDlet例子
可以从com.j2medeveloper.techtips 包里面移出来。

注意缩短名字不是你手工要做的那些东西,我们可以使用一个名叫“扰乱器”的工具来做。扰乱器的主要目的是
为应用程序“隐藏”代码,它反编译程序的时候使程序变成一些几乎无法阅读的东西。这个过程的另外一个作用就是减少了程序的size。
那上因为隐藏代码主要通过重新为方法和数据成员命名。这里有个开发源代码的扰乱器叫RetroGuard的免费工具来自
Http://www.retrologic.com,并且上面还有许多商业用的包。

最后,关注一些数组的初始化。(MIDlet例子没有做任何数组初始化,但这是程序很重要的一步)当编译完以后,一个数组初始化
代码像这样:
int arr[] = { 0, 1, 2, 3 };
实际产生的代码如下:
  arr[0] = 0;
  arr[1] = 1;
  arr[2] = 2;
  arr[3] = 3;
如果想研究的话,可以使用java2sdk一起发布的将字节代码分解成一个class的javap工具(使用-c参数)。你可能会惊讶和不满
你所看到的结果。两种可选的办法是(1)把数据编码到一个String里面,运行时解码到数组,或(2)将数据作为二进制文件保存
到程序包里面并在运行时用class loader的getReourceAsStream方法访问。

这里说的东西只是一些指导,并且在这里提到的不是每一步都适合每一个J2ME应用程序。然而,他们大部分都可以应用这个MIDlet例子。
MIDlet的优化版本如下:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class ASO extends MIDlet
  implements CommandListener,
  ItemStateListener {

  private Display  display;
  private Form  mainForm;
  private TextField mainFormTF =
  new TextField( "Type anything", null,
  20, 0 );

  public static final Command exitCommand =
  new Command( "Exit",
  Command.EXIT, 1 );

  public ASO(){
  }

  public void commandAction( Command c,
  Displayable d ){
  if( c == exitCommand ){
  exitMIDlet();
  }
  }

  protected void destroyApp( boolean unconditional )
  throws MIDletStateChangeException {
  exitMIDlet();
  }

  public void exitMIDlet(){
  notifyDestroyed();
  }

  public Display getDisplay(){ return display; }

  protected void initMIDlet(){
  mainForm = new Form( "MainForm" );
  mainForm.addCommand( exitCommand );
  mainForm.setCommandListener( this );
  mainForm.setItemStateListener( this );
  mainForm.append( mainFormTF );

  getDisplay().setCurrent( mainForm );
  }

  public void itemStateChanged( Item item ){
  if( item == mainFormTF ){
  AlertType.INFO.playSound( getDisplay() );
  }
  }

  protected void pauseApp(){
  }

  protected void startApp()
  throws MIDletStateChangeException {
  if( display == null ){
  display = Display.getDisplay( this );
  initMIDlet();
  }
  }
}

到此,关于“如何优化J2ME应用程序”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 如何优化J2ME应用程序

本文链接: https://www.lsjlt.com/news/232536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何优化J2ME应用程序
    这篇文章主要介绍“如何优化J2ME应用程序”,在日常操作中,相信很多人在如何优化J2ME应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何优化J2ME应用程序”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-03
  • 如何优化J2ME程序大小
    这篇文章主要讲解了“如何优化J2ME程序大小”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何优化J2ME程序大小”吧!如果说j2me和j2se有什么最大的区别,那就是他们运行环境的不同.J...
    99+
    2023-06-03
  • 如何探究开发J2ME应用程序准则
    本篇文章给大家分享的是有关如何探究开发J2ME应用程序准则,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。和大家重点讨论一下开发J2ME应用程序...
    99+
    2024-04-02
  • 教你如何优化 Vue.js 应用程序
    目录选择框架Vue Composition API导入依赖代码分割懒加载异步组件分割API请求有条件加载组件CSS完善加载状态取消API请求Stale While Revalidat...
    99+
    2023-02-17
    Vue.js 应用程序 优化 Vue.js 应用程序
  • 如何优化Vue js应用程序的性能
    这篇文章主要为大家展示了“如何优化Vue js应用程序的性能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何优化Vue js应用程序的性能”这篇文章吧。一、介绍VueJS 是开发网站最受欢迎、...
    99+
    2023-06-22
  • 如何利用shell脚本优化ASP应用程序?
    ASP(Active Server Pages)是一种基于服务器端的网页应用程序框架,它可以通过脚本语言(如VBScript、JScript等)来生成动态的网页内容。虽然ASP的开发效率很高,但在高负载情况下,ASP应用程序的性能往往无法...
    99+
    2023-07-27
    缓存 shell 异步编程
  • 如何调用OTA来发布J2ME程序
    如何调用OTA来发布J2ME程序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。OTA是OverTheAir的简写,也就是通过网络下载,这是主要...
    99+
    2024-04-02
  • 如何优化Go语言Websocket应用程序性能
    在现代实时 Web 应用程序开发中,WebSocket 已经成为了一种非常受欢迎的协议。 在使用 WebSocket 编写应用程序时,我们需要考虑它的性能优化,以确保我们的应用程序能够快速和准确地响应客户端请求。在本文中,我们将讨论如何优化...
    99+
    2023-12-18
    Go语言 websocket 优化性能
  • 如何使用C++优化Web应用程序的性能?
    优化web应用程序性能的c++++技术:使用现代编译器和优化标志避免动态内存分配最小化函数调用利用多线程使用高效的数据结构实战案例显示:优化技术可显著提升性能:执行时间减少20%内存开销...
    99+
    2024-05-12
    c++ 性能优化 并发请求
  • Python中的NumPy API:如何优化Spring应用程序?
    在Web应用程序的开发过程中,需要考虑很多因素,比如性能、可维护性和可扩展性等。在这些因素中,性能是最为重要的一个因素。在开发过程中,我们需要使用一些工具和技术来优化应用程序的性能。其中,NumPy API是Python中一个非常强大的工...
    99+
    2023-09-26
    api numpy spring
  • 如何利用numpy优化ASP应用程序的性能?
    在ASP应用程序中,性能优化一直是一个非常关键的问题。numpy是一个强大的数学库,可以帮助优化ASP应用程序的性能。本文将介绍如何利用numpy来优化ASP应用程序的性能。 一、numpy简介 numpy是一个基于Python的科学计算库...
    99+
    2023-11-07
    异步编程 自然语言处理 numpy
  • 如何在实时环境中优化ASP应用程序?
    ASP(Active Server Pages)是一种常用的Web开发技术,它可以生成动态Web页面。然而,当ASP应用程序在实时环境中运行时,可能会遇到一些性能瓶颈。在本文中,我们将探讨如何在实时环境中优化ASP应用程序。 使用缓存 ...
    99+
    2023-08-10
    apache 容器 实时
  • Spring 中如何应用 load 算法优化程序性能?
    Spring 是一个非常流行的 Java 应用框架,提供了很多便利的功能来帮助开发人员快速构建高质量的应用程序。在开发过程中,我们经常需要处理大量数据或者进行复杂的计算操作,这些操作会对程序的性能产生很大的影响。为了提高程序的性能,我们可以...
    99+
    2023-10-15
    load spring 编程算法
  • Java应用程序如何利用Shell脚本优化缓存?
    在Java应用程序中,缓存是非常重要的。缓存可以提高应用程序的性能,减少网络延迟和IO操作。然而,缓存也会占用大量的内存,导致应用程序变慢。为了解决这个问题,我们可以使用Shell脚本来优化缓存。本文将介绍如何使用Shell脚本来优化缓存...
    99+
    2023-09-06
    shell 缓存 git
  • 如何使用Windows索引优化ASP和Django应用程序?
    ASP和Django是两个广泛使用的Web开发框架。在开发Web应用程序时,一个常见的问题是如何使应用程序的查询尽可能快地返回结果。使用Windows索引是一个非常有效的方法来解决这个问题。在本文中,我们将介绍如何使用Windows索引来...
    99+
    2023-08-24
    django windows 索引
  • 如何使用PATH API优化PHP应用程序的性能?
    PHP是一种广泛使用的编程语言,它以其易于学习和使用的特性而受到开发人员的欢迎。然而,在处理大量请求时,PHP应用程序的性能可能会受到影响。在这种情况下,可以使用PATH API来优化PHP应用程序的性能。 PATH API是PHP的一个扩...
    99+
    2023-10-25
    开发技术 path api
  • 如何用OTA下载本机J2ME程序至手机
    本篇文章为大家展示了如何用OTA下载本机J2ME程序至手机,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。J2ME(Java2MicroEdition)是Java2的...
    99+
    2024-04-02
  • 如何在容器中优化 Go 应用程序的响应速度?
    当今互联网应用的高可用性和高性能是必不可少的,特别是对于需要快速响应的应用程序,如何在容器中优化 Go 应用程序的响应速度成为了一项非常重要的任务。本文将介绍一些优化 Go 应用程序在容器中的方法,以提高其响应速度。 1. 使用正确的基础镜...
    99+
    2023-09-07
    npm 容器 响应
  • 如何在Java中设置索引来优化应用程序?
    Java是一种面向对象的编程语言,广泛应用于开发各种应用程序。在开发Java应用程序的过程中,如何设置索引以提高程序的性能是一个非常重要的问题。本文将介绍如何在Java中设置索引来优化应用程序。 一、什么是索引? 索引是一种数据结构,用于加...
    99+
    2023-08-22
    path 打包 索引
  • Apache 服务器如何优化 Django 应用程序的性能?
    Django 是一个流行的 Python Web 框架,它提供了许多强大的功能,可以帮助开发者快速地构建高性能的 Web 应用程序。然而,为了让 Django 应用程序具有更好的性能,我们需要对其进行优化。在本文中,我们将介绍如何使用 A...
    99+
    2023-08-09
    并发 apache django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作