Tuesday, November 4, 2008 | | 0 comments

J2ME- implementing DiscoveryListener

DiscoveryListener interface should be implemented for any bluetooth program written in Java.

Following are the methods that should be overridden while implementing the DiscoveryListener.

  1. public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass)  -  A device is discovered
  2. public void inquiryCompleted(int param) - Inquiry for bluetooth enabled and discoverable is completed
  3. public void serviceSearchCompleted(int transID, int respCode)  -  search for services of a discovered device completed
  4. public void servicesDiscovered(int transID,ServiceRecord[] serviceRecord) -  a service is discovered for the device

Wednesday, September 10, 2008 | | 0 comments

Bluetooth in J2ME

Bluetooth is a very short range radio technology allowing the communication between devices which are in close physical proximity. When bluetooth is used to form a small network between bluetooth enabled systems, it is called a PAN or Personal Area Network.
  •  A Bluetooth network can have one master device and upto 7  slave devices. Such a personal area network is called piconet.
  • The term Device refers to a discoverable entity in the piconet.
  • The process of discovering devices is called Inquiry.
  • Each device in a network is assigned a UUID -  Universally Unique IDentifier. A unque randomly generated number of 128 bits identfying the device.
  • SADP - Service Application Device Profile enables the applications that runs on bluetooth devices to discover services on the device.
  • JSR 82 is the bluetooth JSR
  • javax.bluetooth is the package for bluetooth in JAVA.

| | 0 comments

J2ME Display

  • The devices display is seen as an instance of Display class in MIDP or CLDC profile.
  •  The bit depth should be atlaest one. A bit depth of one can have 2 colors.Black and white. A bit  depth of 2 can have four and so on...So an n bit display willl allow 2^N colors.
  • javax.microedition.lcdui and javax.microedition.lcdui.game packages manage the display.
  • Contents of display are changed by passing Displayable() instances to setCurrent() method of Display.
  • public void startApp() {
    Display d = Display.getDisplay(this);
    // ...
    } // this is a typical program to start Display in the startApp() method.

| | 0 comments

J2ME Jargon

J2ME we know is the mobile version of JAVA. A long list of terms is associated to J2ME which a J2SE programmer is not likely to be aware of... Here is a list which of course, needs addition:

  1. J2ME - Java 2 micoedition, the version of JAVA designed specifically for micro devices like PDA,Cellphones,Set top boxes etc. 
  2. Configuration and profiles : Check this post about configurations and profiles
  3. CDC - Common device configuration - a set of rules defining a set of devices to be used under this scheme.
  4. CLDC - Common Limited Device Configuration - a more limited CDC - specifically for PDAs and phones
  5. MIDP - Mobile Information Device profile - A more specific CLDC which narrows down the devices under CLDC to a limited set of mobile phones and PDAs by limiting memory, screen size etc.
  6. JCP- Java Community Process - a community to standardize the usage of JAVA.
  7. JSR - Java Specification Requests - A list and specifications of configurations and profiles in J2ME. Visit www.jcp.org
  8. KVM - a small Virtual Machine of JAVA used in CLDC implementations. K stands for data transferred in Kilo Bytes.
  9. Foundation Profile - A specification for devices which support a networked J2ME enviornment. It does not support user interface. User interfaces and other support is built on top of this profile.
  10. PDAP -  A PDA profile
  11. JTWI - Java Technology for Wireless Industry. A technology which attempts to standadise the J2ME technology.
  12. WORA - (Write Once Read Anywhere) The Java mantra which extends even to J2ME speaking of the platform independence.
  13. Platform fragmentation - A problem associated with J2ME applications which can not be completely solved. WORA is not fully satisfied in J2ME since differenet devices use different device specific APIs. So different versions of same program need to be specified for different platforms.
  14. J2MEWTK - Java 2 Micro Edition Wireless ToolKit
  15. Preverify - An entirely new step in the process of building J2ME applications. Bytecode verification is divided into two, one being that of preverification, so that only a lightweight second verification is requireed before loading classes actually.
  16. Manifest file - A file inside Java Archive which describes the content of that archive. In J2ME additional manifest information is added to manifest file describing MIDP runtime enviornment.
  17. Obfuscator-  A tool for minimizing the size of JAR file.
  18. Proguard- An obfuscator.
  19. Ant - A powerfull build scripting tool. Can be sued for automating the build process of MIDlet suits. Opensource, similar to 'make' and a part of Apache project.

Tuesday, September 9, 2008 | | 0 comments

J2ME - Configurations and Profiles

In general, the whole J2ME can be divided into two. Configurations and Profiles.

Configurations are the a set of specifications defined for a kind of device whose constrains are memory and processing capability. CDC(Connected Device Configuration) and CLDC(Connected Limited Device Configuration). Usually a minimum and maximum amount of memory elements like ROM or RAM is specified as configuration.

The term Profile is more specific. A family of devices which come under a particular category in a "Device" is called a profile. It is build on top of a configuration. It specifies a set of APIs for the application development of that family. MIDP or Mobile Information Device Profile is the example. MIDP comes under CLDC. It specifies additional memory constrains, screen size, network connection and input mode which are not specified by CLDC.

| | 0 comments

J2ME - A quick introduction

J2ME or Java 2 micro edition (Also known as Java 2 Mobile Edition) is the version of Java for micro devices. The term micro devices include Mobiles, Handhelds, Palm PCs, embedded systems or even smart cards. So Java is like this J2SE - J2EE - J2ME each with its own specific uses.

J2ME combines a less resourceful JVM and a small set of JAVA apis oriented and designed specifically to develop mobile application for mobile devices. J2ME applications are also called MIDlets, like applets in J2SE and servelets in J2EE (similarity is mostly in name only).


Sunday, September 7, 2008 | | 0 comments

Why implementing runnable is better than extending thread?

We all know that there is two ways to implement threading in Java. And everyone say that implementing runnable is better than extending thread. Why is it so? Simple answer...A Java class can extend only one class( Hybrid or Hierarchical inheritance is not supported) but it can implement any number of interfaces. Thus if we extend Thread in a class which require to be an applet or form, it is not possible.
So always implement runnable.